rhoSimpleFoam算例初始值及边界问题
-
报错:
--> FOAM FATAL IO ERROR: Cannot find patchField entry for far
系统信息:win10,VMware Ubantu20.04,openFoam 7
网格:pointwise 三维C-H网格
边界:inlet,outlet,far(右侧外边界),wing,sym
OF刚上手,想计算个机翼。
我拷贝二维的naca0012算例 $FOAM_TUTORIALS/compressive/aerofoilNACA0012,根据近期学习,我的理解是只要把常规二维算例中frontAndback的empty边界条件(对应我算例的far和sym)改为相应的patch和symmetry即可。
其中我发现的一个问题是,tutorial算例/0的初始值文件(贴出U,其他类似)设置方式为:FoamFile { version 2.0; format ascii; class volVectorField; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Uinlet (250 0 0); dimensions [0 1 -1 0 0 0 0]; internalField uniform $Uinlet; boundaryField { freestream { type freestreamVelocity; freestreamValue uniform $Uinlet; value uniform $Uinlet; } wall { type noSlip; } #includeEtc "caseDicts/setConstraintTypes" }
区别于常规的结构:
boundaryField { 名称1 { type 类型; } 名称2 { type 类型; } }
看了半天,我的理解是patch类型边界就是freestream类型,由于机翼或翼型计算外流,上下前后自由流条件相同,就不用常规写法,一个个写了。
于是,我检查了/0下文件,所有文件都是这个结构写的,我就没啥改动,直接运行了。。。
结果出现报错:--> FOAM FATAL IO ERROR: Cannot find patchField entry for far file: /mnt/hgfs/openfoam/sharerun/testwing/0012noswpc9/0/p.boundaryField from line 27 to line 74. From function void Foam::GeometricField<Type, PatchField, GeoMesh>::Boundary::readField(const Foam::DimensionedField<TypeR, GeoMesh>&, const Foam::dictionary&) [with Type = double; PatchField = Foam::fvPatchField; GeoMesh = Foam::volMesh] in file /home/rebel/OpenFOAM/OpenFOAM-7/src/OpenFOAM/lnInclude/GeometricBoundaryField.C at line 188. FOAM exiting [1]+ 退出 1 rhoSimpleFoam > log.rhoSimpleFoam
Google了半天,发现一般这种error都是缺分号造成的。。
可是我p文件就是没改动的那种啊。。。FoamFile { version 2.0; format ascii; class volScalarField; object p; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // pOut 1e5; dimensions [1 -1 -2 0 0 0 0]; internalField uniform $pOut; boundaryField { freestream { type freestreamPressure; freestreamValue uniform $pOut; } wall { type zeroGradient; } #includeEtc "caseDicts/setConstraintTypes" }
我又把tutorials naca0012 跑了一遍,真的没问题啊!
无奈之下,来论坛提问,请大佬们指点一下。万分感谢!!!
-
@东岳 老师,help me.
-
突然反应,可能是那种方式对sym不可用,我赶紧去试试
-
@RebelYoung 还是不行。。。。相同报错
-
我好像发现什么了,这个结构是一样的,不过tutorial case里obj生成polyMesh中,有分组。。。
( aerofoil { type wall; inGroups List<word> 1(wall); nFaces 120; startFace 31760; } inlet { type patch; inGroups List<word> 1(freestream); nFaces 200; startFace 31880; } outlet { type patch; inGroups List<word> 1(freestream); nFaces 160; startFace 32080; } back { type empty; inGroups List<word> 1(empty); nFaces 16000; startFace 32240; } front { type empty; inGroups List<word> 1(empty); nFaces 16000; startFace 48240; } )
所以,/0下文件头上freestream不是类型名,是边界(组)名。。。
感觉这个地方有误导性,导致我以为文件结构不同。。。
建议改个组名!