- Language: Chinese
- UTF8 4空格缩进 大括号对齐
- C++23
- Tecplot 360 EX 2022 R1
接上一篇文章,在这里放上tecplot导入dat和plt数据文件的格式要求,给出了简单的示例代码。
先说一下,dat是Tecplot Data Loader。
这里我导入的文件格式如下:
红框内的是“数据抬头”,就是告诉tecplot我想要怎样绘制图形。
Title= 设定名称,任意设置
variables= “x”,“y” 给定有几个坐标 “T” 绘制的数据
zone 绘制区域 f=fepoint绘制类型
通过数据抬头,你可以将你的数据绘制成线型图,柱状图以及彩色的云图等等。对这一部分感兴趣的可以看这篇博客:1-学习tecplot360 - 猪冰龙 - 博客园 (cnblogs.com)
基础出图的教程可以看这个:科研小白SCI出图-part1-tecplot基础出图 - 知乎 (zhihu.com)
上面的数据出图如下:
类似的导入plt文件具体详细实现可以看这篇:[matlab数据转换为tecplot格式ASCII码格式下的plt文件]_fetetrahedron-CSDN博客
本博客只是贴出一小段自己的save_data以供参考和自己以后使用:
/*输出数据*/
/*函数第一个参数是为了命名,第二个参数是为了以后添加功能,比如选择输出哪些数据,
第三个参数是选择输出dat文件的位置。
如果不能在目标文件夹创建文件(比如你没创建那么一个文件夹的话),就在当前目录输出文件
强烈建议自己对输入输出文件创立文件夹,而不是直接输出在程序同级目录
*/
int sava_data(int OutPut_step,int di=2,string local_string = "./OutPut_data/data")
{
ofstream f1;
string f_name = local_string + to_string(OutPut_step) + ".dat";
//cout<<f_name<<endl;
f1.open(f_name, ios::app);
//如果无法在指定路径创建或打开文件,则直接在main同级目录下生成data文件
if (!f1)
{
std::cerr << "error:can't creat/open -- " << f_name << std::endl;
f1.open("data"+ to_string(OutPut_step)+".dat", ios::app);
//数据抬头
f1 << R"(Title="contour")"<<endl;
f1 << R"(variables ="x", "y", "T")"<< endl;
f1 << R"(Zone I = 100, J = 100 F = POINT)"<< endl;
//按列输入数据
for (int j = 0; j < m; j++)
{
for (int i = 0; i < n; i++)
{
f1 << i << "\t" << j << "\t" << rho[i][j] << endl;
}
}
return 1;
}
else
{
//数据抬头
f1 << R"(Title="contour")"<<endl;
f1 << R"(variables ="x", "y", "T")"<< endl;
f1 << R"(Zone I = 100, J = 100 F = POINT)"<< endl;
//按列输入数据
for (int j = 0; j < m; j++)
{
for (int i = 0; i < n; i++)
{
f1 << i << "\t" << j << "\t" << rho[i][j] << endl;
}
}
}
f1.close();
//cout<<"end"<<endl;
return 0;
}
输出plt文件代码,这个比上一个简略:
void save_data(int iter)
{
ostringstream f1;
f1 << "fpcTecplot_" << iter << ".plt";
f1 << scientific;
f1.precision(4);
ofstream out(f1.str().c_str());
//数据抬头
out << "VARIABLES = \"X\"\n";
out << "\"Y\"" << endl;
out << "\"arho\"" << endl;
out << "\"brho\"" << endl;
out << "\"au\"" << endl;
out << "\"av\"" << endl;
out << "\"bu\"" << endl;
out << "\"bv\"" << endl;
out << "\"U\"" << endl;
out << "\"V\"" << endl;
out << "\"P\"" << endl;
out << "ZONE T=\"G1\" " << "I=" << NX + 1 << ',' << ' ' << "J=" << NY + 1 << endl;
out << "DT=(SINGLE SINGLE SINGLE SINGLE SINGLE SINGLE SINGLE)" << endl;
for (int j = 0; j <= NY; j++)
for (int i = 0; i <= NX; i++)
{
out << i << '\t' << j << '\t' << arho[i][j] << '\t' << brho[i][j] << '\t' << au[i][j] << '\t' << av[i][j] << '\t'
<< bu[i][j] << '\t' << bv[i][j] << '\t' << u[i][j] << '\t' << v[i][j] << '\t'
<< (arho[i][j] + brho[i][j]) / 3. + Gc / 3. * arho[i][j] * brho[i][j] << endl;
}
}
'\t' << v[i][j] << '\t'
<< (arho[i][j] + brho[i][j]) / 3. + Gc / 3. * arho[i][j] * brho[i][j] << endl;
}
}