天天看点

输出Tecplot格式的数据文件

Tecplot输出文件格式

如果想将你的云图数据输出,对于整块的块状结构数据,我的输出方法如下:

#include <fstream>
string fileName;//你的文件名
int x0,x1,y0,y1,z0,z1;//你储存数据的三维数组对应的下限和上限
//你X,Y,Z所对应的格点数量
int Grid_X=x1-x0+1;
int Grid_Y=y1-y0+1;
int Grid_Z=z1-z0+1;
ofstream fout;
fout.open(fileName+".dat", ios::ate); 
fout << "TITLE = \"contour\"\nvariables = \"x\", \"y\", \"z\", \"value\"\nZone I = " << Grid_Z << ", J = " << Grid_Y << ", K = " << Grid_X << " F = POINT" << endl;
for (int i = domain.x0; i <= domain.x1; i++){
	for (int j = domain.y0; j <= domain.y1; j++){
		for (int k = domain.z0; k <= domain.z1; k++){
			fout << i << "\t" << j << "\t" << k << "\t" << value[i][j][k] << endl;
		}
	}
}
fout.close();
           

标签 I、J、K 对应于你 Z、Y、X 所对应格点数量,循环嵌套对应的就是从最外层到最内层为 x、y、z,这个千万不要错,错了,当你Z、Y、X 所对应格点数量不同时,就会错误,一样的时候是看不出来的。

如果是二维的,标签 I、J 对应于 Y、X 循环嵌套对应从最外层到最内层为 x、y 。

标签“ F = POINT ”很重要,是说明,按照tecplot中的POINT形式读取数据。也就是一行一个点,x y z value。

此外还有一个标签叫做 “ F = BLOCK ”,一般用于离散块数据的输出,如果没记错的话,是对应于标签,同一个标签一起输出,然后再对应输出下一个标签的值。虽然不会有循环嵌套顺序的问题,但一定要对应好,第一个标签块的第一个数据对应第二个标签块的第一个数据,虽然输出方式有改变,但对应不能变,否则就乱套了。。。

继续阅读