OpenFOAM v-2012 singleGraph 提取一条线上的数据出错
-
各位老师好,求助
我使用v-2012版本自带的singleGraph工具,提取半槽道流中,一条从壁面开始,垂直于壁面的线上的数据,想看速度剖面。但是不成功,报错信息如下:Starting time loop Fatal error in PMPI_Recv: Message truncated, error stack: PMPI_Recv(171)....................: MPI_Recv(buf=0x7ffd0114aa70, count=1, MPI_BYTE, src=0, tag=1, MPI_COMM_WORLD, status=0x7ffd0114a8f0) failed MPIDI_CH3U_Receive_data_found(131): Message from rank 0 and tag 1 truncated; 44 bytes received but buffer size is 1
singleGraph的代码如下:
\*---------------------------------------------------------------------------*/ start (0.4 0.01 -0.1); end (0.4 0.01 0.1); fields (nut U); // Sampling and I/O settings #includeEtc "caseDicts/postProcessing/graphs/sampleDict.cfg" // Override settings here, e.g. setConfig { type midPoint; // midPoint, midPointAndFace uniform axis distance; // x, y, z, xyz, distance nPoints 2500; } // Must be last entry #includeEtc "caseDicts/postProcessing/graphs/graph.cfg" // Override settings writeControl adjustableRunTime; writeInterval 2e-3; // ************************************************************************* //
也尝试过修改setConfig中的type,但是三种方式都是报错。修改start点和end点也无法解决问题。
看报错信息是和MPI并行有关,但是不太懂。
我的网格是用ICEM画的,网格量是1713万,在壁面处有边界层加密,使用scotch方法分成了12块,打算用工作站先跑着,看能不能算出湍流。
请各位老师指点一二。sampleDict.cfg
interpolationScheme cellPoint; setFormat raw; setConfig { type uniform; // midPoint, midPointAndFace axis distance; // x, y, z, xyz nPoints 100; }
graph.cfg
type sets; libs ("libsampling.so"); writeControl writeTime; sets ( line { $setConfig; start $start; end $end; } );
-
@学流体的小明 在 OpenFOAM v-2012 singleGraph 提取一条线上的数据出错 中说:
串行是可以运行的,不会报错。
但是会有警告……--> FOAM Warning : The search for an edge-connected face and tet-point failed. From void Foam::particle::changeFace(Foam::label) in file particle/particle.C at line 329. --> loading function object 'singleGraph' wallShearStress wallShearStress: processing all wall patches
下面的壁面剪切力的工具是正常输出了数据,但是singleGraph没有。
-
更新一下
发现了问题的源头,是网格的问题。
我使用ICEM画网格,或者OpenFOAM的blockMesh工具画网格,都是先画背景网格,然后对近壁面进行多次加密。加密是八叉树类型的加密,所以在网格尺寸变化的地方,大网格的尺寸直接是小网格的二倍。这样的网格确实不好,可能一些拓扑结构上的不好导致了singleGraph程序进行插值时找不到插值的基点。
解决办法:
举例说距离壁面0~1的网格尺寸是1,1~2的网格尺寸是2,那么就使用singleGraph在0~1这个范围内提取一条线,在1~2再提取一条线,这时的type可以是uniform,也可以是midPoint或者midPointAndFace。一句话,就是分段提取信息。
我是重新画了网格, 老师说之前画的这网格根本不能用