OpenFOAM中cyclicAMI周期边界在有边界层时出现问题
-
各位专家好,小弟最近用OpenFOAM计算三维圆柱绕流,提供了两个算例,一个可算的例子适合新手入门;一个出错的例子,出错原因仅仅因为将最小网格高度从第一个例子的0.001m变为0.00001m。这种对靠近壁面的边界层网格加密操作,在工程中经常需要,难以避免,烦请各位大神指教。
第一个例子的第一层网格高度(即最小网格高度)为0.001m,可以正常计算,该算例地址为 https://www.jianguoyun.com/p/DQL0lW8QgOLABxjSjroB
详细参数如下:
- 边界条件:圆柱wall,圆柱两端cyclicAMI周期边界,两周期边界间距为1,其余为远场边界patch;
- 求解器:可压缩流求解器HISA(使用git clone https://gitlab.com/hisa/hisa.git 下载,用./Allwmake安装);
- 网格绘制:Pointwise(能算的网格,最小网格高度0.001m;不能算的网格,最小高度0.00001m)。
具体操作如下:
//注意边界条件已设好,若未设好需额外用createPatch运行system/createPatchDict //网格尺寸缩放,这里已经缩放完了,所以都是1 transformPoints -scalle '(1 1 1)' //网格重新排序 renumberMesh -overwrite //添加周期边界 setSet faceSet AMI new patchToFace wall1 faceSet AMI add patchToFace wall2 quit setsToZones –noFlipMap //开始单核串行计算 hisa //开始多核并行计算 mpirun -np 4 hisa -parallel
第二个不能正常计算的算例,仅在同一套网格中加密第一层网格高度到0.00001m,算例设置同上,地址为 https://www.jianguoyun.com/p/DYRDSoMQgOLABxjxjroB 。在不使用renumberMesh -overwrite操作时,可以单核串行计算,但是并行时会出现下面的错误:
/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org \\ / A nd | Version: 6 \\/ M anipulation | \*---------------------------------------------------------------------------*/ Build : 6-76a8284120c3 Exec : hisa -parallel Date : May 02 2019 Time : 08:38:04 Host : "localhost.localdomain" PID : 37453 I/O : uncollated Case : /home/xters/Desktop/cylinder_bl nProcs : 4 Slaves : 3 ( "localhost.localdomain.37454" "localhost.localdomain.37455" "localhost.localdomain.37456" ) Pstream initialized with: floatTransfer : 0 nProcsSimpleSum : 0 commsType : nonBlocking polling iterations : 0 sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10) allowSystemOperations : Allowing user-supplied system call operations // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Overriding DebugSwitches according to controlDict cyclicAMI ; Create mesh for time = 0, region region0 Creating static mesh [1] cyclicAMIPolyPatch::calcTransforms : patch:wall1 Specified translation : (0 0 -1) [1] patch: wall1 [1] forwardT = 0() [1] reverseT = 0() [1] separation = 1((0 0 -1)) [1] collocated = 1(0) [1] [1] cyclicAMIPolyPatch::calcTransforms : patch:wall2 Specified translation : (0 0 1) [1] patch: wall2 [1] forwardT = 0() [1] reverseT = 0() [1] separation = 1((0 0 1)) [1] collocated = 1(0) [1] [2] cyclicAMIPolyPatch::calcTransforms : patch:wall1 Specified translation : (0 0 -1) [2] patch: wall1 [2] forwardT = 0() [2] reverseT = 0() [2] separation = 1((0 0 -1)) [2] collocated = 1(0) [2] [2] cyclicAMIPolyPatch::calcTransforms : patch:wall2 Specified translation : (0 0 1) [2] patch: wall2 [2] forwardT = 0() [2] reverseT = 0() [2] separation = 1((0 0 1)) [2] collocated = 1(0) [2] [3] cyclicAMIPolyPatch::calcTransforms : patch:wall1 Specified translation : (0 0 -1) [3] patch: wall1 [3] forwardT = 0() [3] reverseT = 0() [3] separation = 1((0 0 -1)) [3] collocated = 1(0) [3] [3] cyclicAMIPolyPatch::calcTransforms : patch:wall2 Specified translation : (0 0 1) [3] patch: wall2 [3] forwardT = 0() [3] reverseT = 0() [3] separation = 1((0 0 1)) [3] collocated = 1(0) [3] [0] cyclicAMIPolyPatch::calcTransforms : patch:wall1 Specified translation : (0 0 -1) [0] patch: wall1 [0] forwardT = 0() [0] reverseT = 0() [0] separation = 1((0 0 -1)) [0] collocated = 1(0) [0] [0] cyclicAMIPolyPatch::calcTransforms : patch:wall2 Specified translation : (0 0 1) [0] patch: wall2 [0] forwardT = 0() [0] reverseT = 0() [0] separation = 1((0 0 1)) [0] collocated = 1(0) [0] Steady-state analysis detected pseudoTime: tolerance = 1e-06 (1e-06 1e-06 1e-06) 1e-06 , relTol = 0 (0 0 0) 0 Local timestepping selected Reading thermophysical properties Selecting thermodynamics package { type hePsiThermo; mixture pureMixture; transport sutherland; thermo hConst; equationOfState perfectGas; specie specie; energy sensibleInternalEnergy; } AMI: Creating addressing and weights between 39880 source faces and 39880 target faces [3] cyclicAMIPolyPatch : wall1 constructed AMI with [3] srcAddress:9980 [3] tgAddress :9960 [3] [1] cyclicAMIPolyPatch : wall1 constructed AMI with [1] srcAddress:9980 [1] tgAddress :9960 [1] [2] cyclicAMIPolyPatch : wall1 constructed AMI with [2] srcAddress:9960 [2] tgAddress :9980 [2] AMI: Patch source sum(weights) min/max/average = 1, 1, 1 AMI: Patch target sum(weights) min/max/average = 1, 1, 1 [0] cyclicAMIPolyPatch : wall1 constructed AMI with [0] srcAddress:9960 [0] tgAddress :9980 [0] Viscous analysis detected Reading field U Creating turbulence model Selecting turbulence model type RAS Selecting RAS turbulence model SpalartAllmaras Selecting patchDistMethod meshWave RAS { RASModel SpalartAllmaras; turbulence on; printCoeffs on; sigmaNut 0.66666; kappa 0.41; Cb1 0.1355; Cb2 0.622; Cw2 0.3; Cw3 2; Cv1 7.1; Cs 0.3; } Creating flux scheme Selecting flux scheme AUSMPlusUp Initial pseudo Courant No: Min: 0.001 Mean: 0.001 Max: 0.001 Starting pseudotime iteration loop Time = 1 pseudoTime: iteration 1 Pseudo Courant No: Min: 0.001 Mean: 0.001 Max: 0.001 Pseudo deltaT: Min: 1.31771e-11 Mean: 4.2537e-08 Max: 4.91626e-08 Solving for (rho rhoU rhoE) [localhost:37456] *** An error occurred in MPI_Waitall [localhost:37456] *** reported by process [1120337921,3] [localhost:37456] *** on communicator MPI COMMUNICATOR 3 SPLIT FROM 0 [localhost:37456] *** MPI_ERR_TRUNCATE: message truncated [localhost:37456] *** MPI_ERRORS_ARE_FATAL (processes in this communicator will now abort, [localhost:37456] *** and potentially your MPI job) [localhost.localdomain:37448] 3 more processes have sent help message help-mpi-errors.txt / mpi_errors_are_fatal [localhost.localdomain:37448] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
使用renumberMesh -overwrite操作后,单核也会出错了,错误信息为:
/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org \\ / A nd | Version: 6 \\/ M anipulation | \*---------------------------------------------------------------------------*/ Build : 6-76a8284120c3 Exec : hisa Date : May 02 2019 Time : 08:40:54 Host : "localhost.localdomain" PID : 37564 I/O : uncollated Case : /home/xters/Desktop/cylinder_bl nProcs : 1 sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10) allowSystemOperations : Allowing user-supplied system call operations // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Overriding DebugSwitches according to controlDict cyclicAMI ; Create mesh for time = 0, region region0 Creating static mesh cyclicAMIPolyPatch::calcTransforms : patch:wall1 Specified translation : (0 0 -1) patch: wall1 forwardT = 0() reverseT = 0() separation = 1((0 0 -1)) collocated = 1(0) cyclicAMIPolyPatch::calcTransforms : patch:wall2 Specified translation : (0 0 1) patch: wall2 forwardT = 0() reverseT = 0() separation = 1((0 0 1)) collocated = 1(0) Steady-state analysis detected pseudoTime: tolerance = 1e-06 (1e-06 1e-06 1e-06) 1e-06 , relTol = 0 (0 0 0) 0 Local timestepping selected Reading thermophysical properties Selecting thermodynamics package { type hePsiThermo; mixture pureMixture; transport sutherland; thermo hConst; equationOfState perfectGas; specie specie; energy sensibleInternalEnergy; } #0 Foam::error::printStack(Foam::Ostream&) at ??:? #1 Foam::sigFpe::sigHandler(int) at ??:? #2 ? in "/lib64/libc.so.6" #3 Foam::surfaceInterpolation::makeWeights() const at ??:? #4 Foam::surfaceInterpolation::weights() const at ??:? #5 Foam::surfaceInterpolation::makeDeltaCoeffs() const at ??:? #6 Foam::surfaceInterpolation::deltaCoeffs() const at ??:? #7 Foam::fvPatch::deltaCoeffs() const at ??:? #8 Foam::fvPatchField<double>::snGrad() const at ??:? #9 Foam::heThermo<Foam::psiThermo, Foam::pureMixture<Foam::sutherlandTransport<Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy> > > >::heBoundaryCorrection(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>&) at ??:? #10 Foam::heThermo<Foam::psiThermo, Foam::pureMixture<Foam::sutherlandTransport<Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy> > > >::heThermo(Foam::fvMesh const&, Foam::word const&) at ??:? #11 Foam::psiThermo::addfvMeshConstructorToTable<Foam::hePsiThermo<Foam::psiThermo, Foam::pureMixture<Foam::sutherlandTransport<Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy> > > > >::New(Foam::fvMesh const&, Foam::word const&) at ??:? #12 Foam::autoPtr<Foam::psiThermo> Foam::basicThermo::New<Foam::psiThermo>(Foam::fvMesh const&, Foam::word const&) at ??:? #13 Foam::psiThermo::New(Foam::fvMesh const&, Foam::word const&) at ??:? #14 Foam::hisaModule::initialise() at ~/Desktop/hisa/src/modules/hisa/createFields.H:29 (discriminator 1) #15 ? at ??:? #16 __libc_start_main in "/lib64/libc.so.6" #17 ? at ??:? Floating point exception (core dumped)
-
@东岳 您好!cyclicAMI和renumberMesh之间还存在一些bug,我将cyclicAMI改为cyclic,还是类似的操作,就可以了。 需要注意的是:Pointwise导出含周期性边界的网格时,需要先将周期边界设置为patch,然后在openfoam中用createPatchDict将其设为cyclic,就能renumberMesh了。当遇到下面的错误时,提高boundary文件的matchTolerance的值就可以了,不过网格也不能太差。
--> FOAM FATAL ERROR : face 0 and 65 areas do not match by 0.000222148% -- possible face ordering problem From function cyclicFvPatch::makeWeights(scalarField& w) const in file meshes/fvMesh/fvPatches/derivedFvPatches/cyclicFvPatch/cyclicFvPatch.C at line 62.