在YouTube上看到Sharcnet HPC这个人的介绍paraview写入流场格式的视频。很简单,基本上不用什么额外的格式。在此尝试了一下。
操作
1 自己准备一个流场
其实就一列,就是数组a,用c++ 写出到二进制文件aaa.raw
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
const int n=20;
const int dim=2*n+1;
float *a;
a=(float *)malloc(dim*dim*dim*sizeof(float));
for (int i = -n; i <= n; i++)
{
for (int j = -n; j <= n; j++)
{
for (int k = -n; k <= n; k++)
{
a[((k+n)*dim+(j+n))*dim+i+n]=i+j+k;
printf("i=%d j=%d k=%d index=%d value=%d\n",i,j,k,((k+n)*dim+(j+n))*dim+i+n), i+j+k;
}
}
}
FILE *fp =fopen("aaa.raw","wb");
fwrite(a,sizeof(float),dim*dim*dim,fp);
printf("end\n");
free(a);
fclose(fp);
}
编译运行得到aaa.raw
注意文件拓展名为raw
2 paraview读入并设置格式
类型选Image Reader
设置如下
- 类型选float
- 大小端选小端
- 维度选3维
- data extent输入40 40 40 (0-41是41个数,我们写入的流场是节点值而非网格值)
apply
用imageFile着色,展示surface
最后的结果如下
附录 youtube 上原本的代码和流场
上面的都是我自己写的,原视频博主的流场要复杂一些,他的代码如下(吐槽一句他的中式英语)
他的设置如下(和我基本一样)
展示的流场如下
参考
殷维杰的博客
https://www.cnblogs.com/Jay-CFD/p/11557836.html
YouTube视频地址 Sharcnet HPC
https://youtu.be/yexB3W2FYM0?t=2601