@cccrrryyy 编译solver的时候直接报错,显示没定义
Exthan
帖子
-
-
@cccrrryyy 请问如何在.c文件中调用mu.nu这些量呢?还有网格,代码是如何表现,我试了调用,但总是报错,显示未定义,但是我已经在creatFields定义场了。
-
@cccrrryyy 我在.C文件中直接使用了
Prt.write(),结果生成的文件
打开之后却都是边界条件,这是什么原因?
-
@cccrrryyy 你好,我刚在湍流模型里面Info,但是结果并未输出,您说的在.C文件中直接输出要如何写?我看了之前的OF文件读取,但是并不理解。
如果直接在.c中如上图输入,编译显示Prt无定义,请问该如何输出 -
@cccrrryyy
源文件在src/TurbulenceModels/compressible/EddyDiffusivity
我不知道如何传输文件。我可以把我的文件发送给你。这是我改写的Prt
-
@cccrrryyy 老师,不可压缩里通常是在solver里面直接用新的alpha+alphat来代替原来的alphaEff。可压缩哪种方便点,我的prt与mut,mu,nu,alpha,有关.所以感觉在eddyDiffusivity文件中修改更为方便。但是编译后,如何去查看是否调用新的prt,我在solver/creatFields中IOonbject了Prt,但并未生成文件,而且externalWallHeatFlux在映射生成温度T文件时候,也出错了。请问除了修改EddyDiffusivity文件是否还需要修改其他地方?2.如果想要判断新Prt是否成功读入应如何查看?
-
@cccrrryyy 你好,我将EddyDiffusivity里将dimensionedScalar Prt改成了volScalarField Prt,修改完成之后,编译也完成,但是想查看新的Prt是否参与计算,所以想输出结果查看,可在reconstruct算例时出现错误,错误信息是T的边界条件segmentation(如下图)
请问修改完EddyDiffusivity文件之后,是否还需要修改其他地方呢? -
@李东岳 输出的最大最小Prt均为同一个值,并没有变化。存在情况1:新prt模型失效;2:流场刚好都在一个判断条件下。所以如何将Prt以一个文件形式输出?
在solver里面加入可以输出吗?Prt = tranport.Prt();
-
@cresendo 是的,之前调用值不正确?
-
@cresendo 是的,这部分修改已经完成了。将湍流普朗特数从标量改为场量之后,湍流模型调用好像并没有用这个新的湍流普朗特数?请问还需要修改其他地方吗?
-
@exthan
如何取volScalar 场量的值?并与标量进行大小比较? -
@李东岳 老师,求指导
-
@cresendo 是的,如何让场量里的对应值相除呢,就是取场量每个位置的值进行相除运算呢?
forAll(Prt_,celli){ if (this->nut()(celli)/ this->transport_.nu()(celli) < scalar(0.2)) ...
错误信息是个temp
.
应该如何修改 才能进行比较? -
@李东岳 老师,请问如果一个场量要与一个标量比较大小,该如何比较?
if (this->nut() / this->transport_.nu() < scalar(0.2))
-
@zhouxu 我做的是变物性,pr是会变的
-
在修改变物性的湍流模型时需要在eddyDiffusivity中调取分子普朗特数Pr,分子普朗特数如何调取?
Prt_ = 0.8+ (*this->transport_.nu())/(*this->alpha())
尝试了直接调取分子Pr((*this->transport_.nu())和nu/alpha,都提示错误(*重载)
请问该如何调用和提取? -
@微凉风 请问湍流普朗特数如何修改的?
-
@微凉风 这是计算变物性吗?
-
@cccrrryyy 我现在遇到的问题是能量方程直接用的有效的alphaEff,如果我create一个新变量,但是关于新变量的定义在哪定义呢?是在能量方程定义嘛?但是仍然要去更改alphaEff里面的Prt才行。
-
@cccrrryyy 定义变量名必须不能重名,然后能量方程的prt更改成新变量名?老师你有类似的模板嘛?
-
@袁宝强 我记得可压缩求解器里面有个可压缩系数,psi,不知道是否有用
-
@cccrrryyy 您好,我在更改kOmegaSST模型中的湍流普朗特数找到其湍流Prt调用的在EddyDiffusivity文件。
template<class BasicTurbulenceModel> 31 void Foam::EddyDiffusivity<BasicTurbulenceModel>::correctNut() 32 { 33 // Read Prt if provided 34 Prt_ = dimensioned<scalar>::lookupOrDefault 35 ( 36 "Prt", 37 this->coeffDict(), 38 1.0 39 ); 41 alphat_ = this->rho_*this->nut()/Prt_; 42 alphat_.correctBoundaryConditions(); 43 }
// Cannot read Prt yet 74 Prt_("Prt", dimless, 1.0),
这里的1.0指的是给定的Prt默认值是1.0嘛?如果将Prt更改成多条件判别式是将1.0直接更改为判定语句嘛?如果在这个文件夹下更改,是不是对于两处都要进行更改?
-
@b占余文乐 哈哈,我也关注啦
-
如果不是cyclic边界条件,速度U文件夹进口边界给fixedValue,value给定(Ux Uy Uz),在温度T文件夹设置fixedValue,value=多少K
-
@shampoo 我用网格Cell取过,也有用Cloud取边界实际值,均不对
-
@shampoo 是因为我用postProcess取值发现边界的速度本应为0,但是非0,其次边界温度本应等于fixedValue,但也不等,所以就很疑惑
-
@shampoo 不是圆弧
-
@shampoo 你好,我想算个半径为0.35的圆管,壁面等温,top面其实就是圆柱面,下壁面也就是对称轴所以应该设为symmetry,之所以用symmetry是因为在makeAxisMesh中定义的,如果用blockMeshDict则是empty,两者对对称轴生成的网格数都是0,这样对于top面,类型为Wall,确实可以用fixedValue边界,但是插值发现壁面处的温度不是固定的温度,而且用foamMeshToFluent发现,网格是个楔形网格,不是圆弧,也就是说径向上的尺寸最大不是0.35,如果整个楔形为5°,一般是2.5°,那最大的y应该只是0.35*cos2.5°,边界条件y=0.35的圆柱面的边界如何跟它对应呢?
-
@dzw05 @浪迹天大 两位老师好,上一个问题已经解决,我觉得应该是网格质量问题导致,目前已经checkMesh通过了,但还有个问题,想请老师们指导。我首先用blockMesh画了一个前后面empty的2D网格,下底面刚好在x轴上,然后绕x轴旋转成一个圆柱,所以将旋转轴设置为了(1 0 0),将上边界设置为了center,最后生成的几何原先empty的frontAndBack变成了frontAndBack_pos和frontAndBack_neg, bottom面由于变成了对称轴所以face就为0(即一条线),top面就变成了圆柱体的外表面,但是因为将其边界类型设为了symmetryPlane,所以如果想实现等热流或者等温,边界条件该如何给定?在哪改?
-
@shampoo @LYD @D-Benjamin 我在OF5上下载了Benjamin的OF7版本的makeAxialMesh,编译通过也没报错,网格生成时有warnning,但是不是链接中指出的Either correct the patch or split it into planar parts,该warnning会在计算的时候出现,请指出的错误
makeAxialMesh -overwrite时Create time --> FOAM Warning : From function void *Foam::dlOpen(const Foam::fileName &, bool) in file POSIX.C at line 1210 dlopen error : /home2/snst/gzh1/OpenFOAM/gzh1-5.0/platforms/linux64IccDPInt32Opt/lib/libtabularThermophysicalModels.so: undefined symbol: _ZTIN4Foam29mixedEnergyFvPatchScalarFieldE --> FOAM Warning : From function bool Foam::dlLibraryTable::open(const Foam::fileName &, bool) in file db/dynamicLibrary/dlLibraryTable/dlLibraryTable.C at line 105 could not load "libtabularThermophysicalModels.so" Create mesh for time = 0 Plane of the grid: (0 0 1) (0.5 0.000169685 5.95636e-21) The rotation-axis: ((0 0 0) (1 0 0)) Creating wedge with an opening angle of 5 degrees Projecting nodes Radius to axis: min = 0 max = 0.00035 Calculated Distance of center to axis is 0.000350333 Distance of axis to patch is 0.000350333 -> not changing the patch type Splitting patch frontAndBack Copying patches Creating Patches Creating Pos-patch Creating Neg-patch Changing patches Changing patch types Changing frontAndBack_pos to wedge Changing frontAndBack_neg to wedge Writing mesh to time 0 End Now use collapseEdges to clean grid
--> FOAM Warning : From function void *Foam::dlOpen(const Foam::fileName &, bool) in file POSIX.C at line 1210 dlopen error : /home2/snst/gzh1/OpenFOAM/gzh1-5.0/platforms/linux64IccDPInt32Opt/lib/libtabularThermophysicalModels.so: undefined symbol: _ZTIN4Foam29mixedEnergyFvPatchScalarFieldE --> FOAM Warning : From function bool Foam::dlLibraryTable::open(const Foam::fileName &, bool) in file db/dynamicLibrary/dlLibraryTable/dlLibraryTable.C at line 105 could not load "libtabularThermophysicalModels.so" Create mesh for time = 0 Reading collapseDict Time = 0 Read faceSet indirectPatchFaces with 0 faces Merging: edges with length less than 1e-06 metres edges split by a point with edges in line to within 179 degrees Minimum edge length reduction factor = -1 Face collapsing is on Initial face length factor = -1 Control mesh quality = false Selectively disabling wanted collapses until resulting quality satisfies constraints in system/meshQualityDict Outer Iteration = 0 "Edge Filter Factor": min = 1e-06 av = 1e-06 max = 1e-06 484693 / 484693 elements used Inner iteration = 0 Collapsing 4503 small edges Collapsing 0 in line edges Uncollapsed edges = 4502 / 484693 Uncollapsed edges = 0 / 484693 Collapsing 1 edges after synchronisation and PointEdgeWave Number of points : 195130 Not visited : 0 Not collapsed : 195128 Collapsed : 2 Collapsing 0 cells Apply changes to the current mesh Inner iteration = 1 Collapsing 4502 small edges Collapsing 0 in line edges Uncollapsed edges = 4502 / 484692 Uncollapsed edges = 0 / 484692 Collapsing 0 edges after synchronisation and PointEdgeWave Writing collapsed mesh to time 0 ExecutionTime = 1.68 s ClockTime = 1 s
运行时
--> FOAM Warning : From function void Foam::wedgePolyPatch::calcGeometry(Foam::PstreamBuffers &) in file meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.C at line 70 Wedge patch 'frontAndBack_pos' is not planar. At local face at (0.999667 0.000347009 1.51363e-05) the normal (-7.75524e-19 -0.043578 0.99905) differs from the average normal (1.35466e-08 -0.0435779 0.99905) b y 6.36941e-15 Either correct the patch or split it into planar parts SIMPLE: convergence criteria field p_rgh tolerance 1e-05 field U tolerance 1e-06 field h tolerance 1e-09 field "(k|epsilon|omega)" tolerance 1e-07 Reading thermophysical properties Selecting thermodynamics package { type hTabularThermo;
-
@Samuel-Tu Lib那改到Foam_USER_Libbin
-
@cccrrryyy
第82行有个浮点溢出Pstream initialized with: 78 floatTransfer : 0 79 nProcsSimpleSum : 0 80 commsType : nonBlocking 81 polling iterations : 0 82 sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). 83 fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10) 84 allowSystemOperations : Allowing user-supplied system call operations 85 86 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 87 Create time
-
@cccrrryyy 热物性库修改过,湍流未做修改,热物性库做过层流验证是可以的。因为是在超算计算,所以错误信息和输出信息是分开的
SIMPLE: convergence criteria field p tolerance 0.001 field U tolerance 0.0001 field e tolerance 0.001 field "(k|epsilon|omega)" tolerance 0.001 Reading thermophysical properties Selecting thermodynamics package { type heTabularThermo; mixture pureMixture; transport tabular; thermo hTabular; equationOfState tabularEOS; specie specie; energy sensibleInternalEnergy; } Reading field T Reading field U Reading/calculating face flux field phi pressureControl pMax 1.76e+07 pMin 880000 Creating turbulence model Selecting turbulence model type RAS Selecting RAS turbulence model kOmegaSST Selecting patchDistMethod meshWave RAS { RASModel kOmegaSST; turbulence on; printCoeffs on; alphaK1 0.85; alphaK2 1; alphaOmega1 0.5; alphaOmega2 0.856; gamma1 0.555556; gamma2 0.44; beta1 0.075; beta2 0.0828; betaStar 0.09; a1 0.31; b1 1; c1 10; F3 false; } No MRF models present No finite volume options present Starting time loop Time = 1 GAMG: Solving for Ux, Initial residual = 1, Final residual = 0.0680002, No Iterations 1 GAMG: Solving for Uy, Initial residual = 1, Final residual = 0.0275716, No Iterations 2 GAMG: Solving for e, Initial residual = 1, Final residual = 0.0497346, No Iterations 1 GAMG: Solving for p, Initial residual = 1, Final residual = 0.0902438, No Iterations 32 time step continuity errors : sum local = 1340.36, global = -1154.13, cumulative = -1154.13 GAMG: Solving for omega, Initial residual = 0.150676, Final residual = 0.0121053, No Iterations 4 GAMG: Solving for k, Initial residual = 1, Final residual = 0.0852085, No Iterations 1 ExecutionTime = 0.29 s ClockTime = 1 s Time = 2 GAMG: Solving for Ux, Initial residual = 0.998917, Final residual = 0.01403, No Iterations 1 GAMG: Solving for Uy, Initial residual = 0.951893, Final residual = 0.0298228, No Iterations 1 GAMG: Solving for e, Initial residual = 0.97607, Final residual = 0.00132126, No Iterations 1 GAMG: Solving for p, Initial residual = 0.00465283, Final residual = 0.000414147, No Iterations 2 time step continuity errors : sum local = 555474, global = 91950.9, cumulative = 90796.8 =================================================================================== = BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES = PID 7683 RUNNING AT node295 = EXIT CODE: 8 = CLEANING UP REMAINING PROCESSES = YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
-
错误log,稍微删减了一点
[2] #0 [4] #0 [6] #0 [9] #0 [11] #0 [7] #0 [12] #[14] #0 [17] #0 [15] 0 [21] [22] [23] #0 [19] #[20] #0 #0 #0 0 #0 Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)[10] #0 Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&) at ??:? [2] #1 Foam::sigFpe::sigHandler(int) at ??:? [4] #1 Foam::sigFpe::sigHandler(int) at ??:? [6] #1 Foam::sigFpe::sigHandler(int) at ??:? [7] #1 Foam::sigFpe::sigHandler(int) at ??:? [9] #1 Foam::sigFpe::sigHandler(int) at ??:? [10] #1 Foam::sigFpe::sigHandler(int) at ??:? [11] #1 Foam::sigFpe::sigHandler(int) at ??:? [2] #2 ? at ??:? [4] #2 ? at ??:? [6] #2 ? at ??:? [7] #2 ? at ??:? [9] #2 ? at ??:? [10] #2 ? at ??:? [11] #2 ? at ??:? at ??:? at ??:? [12] #1 at ??:? [23] #1 [19] #1 Foam::sigFpe::sigHandler(int) at ??:? at ??:? [17] #1 Foam::sigFpe::sigHandler(int)Foam::sigFpe::sigHandler(int) at ??:? [20] #1 Foam::sigFpe::sigHandler(int) at ??:? [21] #1 Foam::sigFpe::sigHandler(int) at ??:? [22] #1 Foam::sigFpe::sigHandler(int)Foam::sigFpe::sigHandler(int)[14] #1 Foam::sigFpe::sigHandler(int)[15] #1 Foam::sigFpe::sigHandler(int) in "/lib64/libpthread.so.0" in "/lib64/libpthread.so.0" in "/lib64/libpthread.so.0" in "/lib64/libpt in "/lib64/libpthread.so.0" in "/lib64/libpthread.so.0" hread.so.0" in "/lib64/libpthread.so.0" [11] #3 [10] #3 [4] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int)Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int)[2] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int)[6] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int)[7] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int)Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int)[9] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) at ??:? at ??:? at ??:? [9] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [10] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [11] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [7] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const[2] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [4] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const[6] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [2] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [4] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [6] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [7] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [9] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [10] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [11] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [2] #6 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const at ??:? [4] #6 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const at ??:? [6] #6 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const at ??:? [7] #6 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const at ??:? [9] #6 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const at ??:? [10] #6 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const at ??:? [11] #6 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const at ??:? [12] #2 ? at ??:? [14] #2 ? at ??:? [15] #2 ? at ??:? [17] #2 ? at ??:? [19] #2 ? at ??:? [20] #2 ? at ??:? [21] #2 ? at ??:? [22] #2 ? at ??:? [23] #2 ? at ??:? at ??:? at ??:? at ??:? at ??:? at ??:? at ??:? [2] #7 [4] #7 Foam::fvMatrix<double>::solveSegregated(Foam::dictionary const&)[6] #7 [7] #7 Foam::fvMatrix<double>::solveSegregated(Foam::dictionary const&)[9] #7 Foam::fvMatrix<double>::solveSegregated(Foam::dictionary const&)[10] #7 Foam::fvMatrix<double>::solveSegregated(Foam::dictionary const&)[11] #7 Foam::fvMatrix<double>::solveSegregated(Foam::dictionary const&)Foam::fvMatrix<double>::solveSegregated(Foam::dictionary const&)Foam::fvMatrix<double>::solveSegregated(Foam::dictionary const&) in "/lib64/libpthread.so.0" [12] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [14] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" in "/lib64/libpthread.so.0" [17] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [19] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [20] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [21] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [22] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [23] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int)[15] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) at ??:? [2] #8 at ??:? [4] #8 at ??:? [6] #8 at ??:? [7] #8 at ??:? [9] #8 at ??:? [10] #8 at ??:? [11] #8 Foam::fvMatrix<double>::solve(Foam::dictionary const&)Foam::fvMatrix<double>::solve(Foam::dictionary const&)Foam::fvMatrix<double>::solve(Foam::dictionary const&)Foam::fvMatrix<double>::solve(Foam::dictionary const&)Foam::fvMatrix<double>::solve(Foam::dictionary const&)Foam::fvMatrix<double>::solve(Foam::dictionary const&)Foam::fvMatrix<double>::solve(Foam::dictionary const&) at ??:? [2] #9 at ??:? [4] #9 at ??:? [6] #9 at ??:? [7] #9 at ??:? [9] #9 at ??:? [10] #9 at ??:? [11] #9 Foam::fvMatrix<double>::solve()Foam::fvMatrix<double>::solve()Foam::fvMatrix<double>::solve()Foam::fvMatrix<double>::solve()Foam::fvMatrix<double>::solve()Foam::fvMatrix<double>::solve()Foam::fvMatrix<double>::solve() at ??:? [2] #10 Foam::SolverPerformance<double> Foam::solve<double>(Foam::tmp<Foam::fvMatrix<double> > const&) at ??:? [4] #10 Foam::SolverPerformance<double> Foam::solve<double>(Foam::tmp<Foam::fvMatrix<double> > const&) at ??:? [6] #10 Foam::SolverPerformance<double> Foam::solve<double>(Foam::tmp<Foam::fvMatrix<double> > const&) at ??:? [7] #10 Foam::SolverPerformance<double> Foam::solve<double>(Foam::tmp<Foam::fvMatrix<double> > const&) at ??:? [9] #10 Foam::SolverPerformance<double> Foam::solve<double>(Foam::tmp<Foam::fvMatrix<double> > const&) at ??:? [10] #10 Foam::SolverPerformance<double> Foam::solve<double>(Foam::tmp<Foam::fvMatrix<double> > const&) at ??:? [11] #10 Foam::SolverPerformance<double> Foam::solve<double>(Foam::tmp<Foam::fvMatrix<double> > const&) at ??:? [12] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [14] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [15] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [17] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [19] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [20] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [21] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [22] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [23] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [2] #11 Foam::kOmegaSST<Foam::eddyViscosity<Foam::RASModel<Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > > >, Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > >::correct() at ??:? [4] #11 Foam::kOmegaSST<Foam::eddyViscosity<Foam::RASModel<Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > > >, Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > >::correct() at ??:? [6] #11 Foam::kOmegaSST<Foam::eddyViscosity<Foam::RASModel<Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > > >, Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > >::correct() at ??:? [7] #11 Foam::kOmegaSST<Foam::eddyViscosity<Foam::RASModel<Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > > >, Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > >::correct() at ??:? [9] #11 Foam::kOmegaSST<Foam::eddyViscosity<Foam::RASModel<Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > > >, Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > >::correct() at ??:? [10] #11 Foam::kOmegaSST<Foam::eddyViscosity<Foam::RASModel<Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > > >, Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > >::correct() at ??:? [11] #11 Foam::kOmegaSST<Foam::eddyViscosity<Foam::RASModel<Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > > >, Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > >::correct() at ??:? [2] #12 at ??:? [4] #12 at ??:? [6] #12 at ??:? [7] #12 at ??:? [9] #12 at ??:? [10] #12 at ??:? [11] #12 ??????? at ??:? [2] #13 __libc_start_main at ??:? [4] #13 __libc_start_main at ??:? [6] #13 __libc_start_main at ??:? [7] #13 __libc_start_main at ??:? [9] #13 __libc_start_main at ??:? [10] #13 __libc_start_main at ??:? [11] #13 __libc_start_main in "/lib64/libc.so.6" [2] #14 in "/lib64/libc.so.6" [4] #14 in "/lib64/libc.so.6" [6] #14 in "/lib64/libc.so.6" [7] #14 in "/lib64/libc.so.6" [9] #14 in "/lib64/libc.so.6" [10] #14 in "/lib64/libc.so.6" [11] #14 ??????? at ??:? at ??:? at ??:? at ??:? at ??:? at ??:? at ??:? at ??:? [17] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? at ??:? at ??:? at ??:? at ??:? [14] [19] ##[22] #5 5 5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) constFoam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) constFoam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const[23] #5 [15] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) constFoam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [20] # at ??:?5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const[21] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [12] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const
-
@cccrrryyy 感谢.下面是我的checkMesh和输出log文件,稍后贴出完整e.log文件
Patch Faces Points Surface topology frontAndBack 80000 82082 ok (non-closed singly connected) top 1000 2002 ok (non-closed singly connected) bottom 1000 2002 ok (non-closed singly connected) inlet 40 82 ok (non-closed singly connected) outlet 40 82 ok (non-closed singly connected) Checking geometry... Overall domain bounding box (0 0 0) (0.1 0.004 0.001) Mesh has 2 geometric (non-empty/wedge) directions (1 1 0) Mesh has 2 solution (non-empty) directions (1 1 0) All edges aligned with or perpendicular to non-empty directions. Boundary openness (-2.78353e-18 -1.04095e-15 -1.31454e-15) OK. Max cell openness = 1.65436e-16 OK. Max aspect ratio = 1 OK. Minimum face area = 1e-08. Maximum face area = 1e-07. Face area magnitudes OK. Min volume = 1e-11. Max volume = 1e-11. Total volume = 4e-07. Cell volumes OK. Mesh non-orthogonality Max: 0 average: 0 Non-orthogonality check OK. Face pyramids OK. Max skewness = 9.29949e-13 OK. Coupled point location match (average 0) OK. Mesh OK. End
输出log文件
Starting time loop Time = 1 GAMG: Solving for Ux, Initial residual = 1, Final residual = 0.0680002, No Iterations 1 GAMG: Solving for Uy, Initial residual = 1, Final residual = 0.0275716, No Iterations 2 GAMG: Solving for e, Initial residual = 1, Final residual = 0.0497346, No Iterations 1 GAMG: Solving for p, Initial residual = 1, Final residual = 0.0902438, No Iterations 32 time step continuity errors : sum local = 1340.36, global = -1154.13, cumulative = -1154.13 GAMG: Solving for omega, Initial residual = 0.150676, Final residual = 0.0121053, No Iterations 4 GAMG: Solving for k, Initial residual = 1, Final residual = 0.0852085, No Iterations 1 ExecutionTime = 0.29 s ClockTime = 1 s Time = 2 GAMG: Solving for Ux, Initial residual = 0.998917, Final residual = 0.01403, No Iterations 1 GAMG: Solving for Uy, Initial residual = 0.951893, Final residual = 0.0298228, No Iterations 1 GAMG: Solving for e, Initial residual = 0.97607, Final residual = 0.00132126, No Iterations 1 GAMG: Solving for p, Initial residual = 0.00465283, Final residual = 0.000414147, No Iterations 2 time step continuity errors : sum local = 555474, global = 91950.9, cumulative = 90796.8 =================================================================================== = BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES = PID 7683 RUNNING AT node295 = EXIT CODE: 8 = CLEANING UP REMAINING PROCESSES = YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
-
@东岳 感谢老师回复,这套网格可能稍微大一些,算例中还加有其他的库。我使用相同的设置对二维的平板也进行了计算,除了说除数为0外,下面的原因和求解器有关吗?
5] #0 [7] #0 [8] #0 [9] #0 [10] #0 [11] #0 [12] #0 [13] #0 [14] #0 [15] #0 [17] #0 [18] #0 [19] #0 [20] #0 [22] #0 [23] #0 Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&) at ??:? [5] #1 Foam::sigFpe::sigHandler(int) at ??:? [7] #1 Foam::sigFpe::sigHandler(int) at ??:? [8] #1 Foam::sigFpe::sigHandler(int) at ??:? [9] #1 Foam::sigFpe::sigHandler(int) at ??:? [10] #1 Foam::sigFpe::sigHandler(int) at ??:? [11] #1 Foam::sigFpe::sigHandler(int) at ??:? [5] #2 ? at ??:? [7] #2 ? at ??:? [8] #2 ? at ??:? [9] #2 ? at ??:? [10] #2 ? at ??:? [11] #2 ? in "/lib64/libpthread.so.0" [5] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [7] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [8] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [9] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [10] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [11] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) at ??:? [12] #1 Foam::sigFpe::sigHandler(int) at ??:? [13] #1 Foam::sigFpe::sigHandler(int) at ??:? [14] #1 Foam::sigFpe::sigHandler(int) at ??:? [15] #1 Foam::sigFpe::sigHandler(int) at ??:? [17] #1 Foam::sigFpe::sigHandler(int) at ??:? [18] #1 Foam::sigFpe::sigHandler(int) at ??:? [19] #1 Foam::sigFpe::sigHandler(int) at ??:? [20] #1 Foam::sigFpe::sigHandler(int) at ??:? [22] #1 Foam::sigFpe::sigHandler(int) at ??:? [23] #1 Foam::sigFpe::sigHandler(int) at ??:? [5] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [7] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [8] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [9] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [10] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [11] #4 Foam::GaussSeidelSmoother::smooth(Foam::Field<double>&, Foam::Field<double> const&, unsigned char, int) const at ??:? [5] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [7] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [8] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [9] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [10] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [11] #5 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const at ??:? [7] #6 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const at ??:? [8] #6 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const at ??:? [9] #6 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, un[11] #2 ? in "/lib64/libpthread.so.0" [5] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [7] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [8] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [9] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [10] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib64/libpthread.so.0" [11] #3 Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) at ??:? [12] #1 Foam::sigFpe::sigHandler(int) at ??:? [13] #1 Foam::sigFpe::sigHandler(int) at ??:? [14] #1 Foam::sigFpe::sigHandler(int) at ??:? signed char) const at ??:?
-
等热流加热圆管流采用kOmegaSST模型在buoyantSimple和rhoSimple均进行了尝试,发散,虽然有类似贴,但仍未解决该问题。采用kEpsilon求解仍然发散,k,epsilon以及omega都采用公式进行估算,但仍然发散,请大家帮忙查看是否是边界问题:
alphat:copy自带算例,湍流prt默认,该如何改?有公式吗?object alphat; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -1 0 0 0 0]; internalField uniform 0; boundaryField { heatflux { type compressible::alphatWallFunction; Prt 0.85; value uniform 0; } outlet { type calculated; value $internalField; } inlet { type calculated; value $internalField; }
k
heatflux { type kqRWallFunction; value uniform 0; } outlet { type zeroGradient; } inlet { type fixedValue; value uniform 2.5e-3; }
nut:查看资料显示对于不可压缩使用nut,对于可压缩则使用mut,但是使用mut系统报错,{查不到nut},不太清楚原因,求各位老师指导。
heatflux { type nutUWallFunction; value uniform 0; } outlet { type calculated; value uniform 0; } inlet { type calculated; value uniform 0; }
omega
heatflux { type omegaWallFunction; value uniform 0.12; } outlet { type zeroGradient; } inlet { type fixedValue; value uniform 0.12; }
p:这里给的是rhoSimple算例
heatflux { type fixedFluxPressure; } outlet { type fixedValue; value uniform 8.8e6; } inlet { type zeroGradient; }
T:这个地方有个Ta,一般出现在热辐射中,但是不给Ta就会报错,就给了个常温
heatflux { type externalWallHeatFluxTemperature; mode flux; q uniform 6000; Ta constant 300; kappaMethod fluidThermo; value $internalField; } outlet { type zeroGradient; } inlet { type fixedValue; value uniform 298.15; }
U
heatflux { type noSlip; } outlet { type zeroGradient; } inlet { type flowRateInletVelocity;; massFlowRate 0.001; extrapolateProfile yes; rho rho; rhoInlet 795.55; }
此外,还计算了kEpsilon模型,下面给出epsilon
heatflux { type epsilonWallFunction; value uniform 4e-06; } inlet { type fixedValue; value $internalField; } outlet { type zeroGradient; }
根据错误log文件,不太确定是否为离散格式存在的问题,下面贴出fvScheme和矩阵求解器
gradSchemes { default Gauss linear; } { default none; div(phi,e) bounded Gauss upwind; div(sigma) Gauss linear; div((nu*dev2(T(grad(U))))) Gauss linear; div((nuM*grad(U))) Gauss linear; div(phid,p) Gauss upwind; div(phi,Ekp) bounded Gauss upwind; div(phi,U) Gauss limitedLinear 1; div(phi,K) Gauss limitedLinear 1; div(phi,h) Gauss limitedLinear 1; div(phi,k) Gauss limitedLinear 1; div(phi,epsilon) Gauss limitedLinear 1; div(phi,omega) bounded Gauss limitedLinear 0.2; div((phi|interpolate(rho)),p) Gauss limitedLinear 1; div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; } wallDist { method meshWave; }
-
@王慧博 看样子你是在计算超临界水方面的。请问这个问题您是如何解决的?我在计算圆管等热流加热算例,采用kwSST和kEpsilon模型,尝试了buoyantSimpleFoam和rhoSipleFoam都发散,下面是我用rhoSimpleFoam计算kEpsilon的错误信息,不太明白是什么导致的发散或错误。
#0 Foam::error::printStack(Foam::Ostream&)[40] #0 Foam::error::printStack(Foam::Ostream&)[39] #0 Foam::error::printStack(Foam::Ostream&)[38] #0 Foam: :error::printStack(Foam::Ostream&)[37] #0 Foam::error::printStack(Foam::Ostream&)[36] #0 Foam::error::printStack(Foam::Ostream&)[35] #0 Foam::error::printS tack(Foam::Ostream&)[34] #0 Foam::error::printStack(Foam::Ostream&)[33] #0 Foam::error::printStack(Foam::Ostream&)[32] #0 Foam::error::printStack(Foam::Ost ream&)[31] #0 Foam::error::printStack(Foam::Ostream&)[30] #0 [11] #0 Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)[12] #0 Foam::error::printStack(Foam::Ostream&)[29] #0 [13] #0 Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)[14] #0 Foam::error:: printStack(Foam::Ostream&)[28] #0 [15] #Foam::error::printStack(Foam::Ostream&)0 Foam::error::printStack(Foam::Ostream&)[16] #0 Foam::error::printStack(Foa m::Ostream&)[27] #0 Foam::error::printStack(Foam::Ostream&)[25] #0 [17] #0 Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)[2 6] #0 Foam::error::printStack(Foam::Ostream&)[18] #0 Foam::error::printStack(Foam::Ostream&)[21] #0 Foam::error::printStack(Foam::Ostream&)[23] #0 Foam::e rror::printStack(Foam::Ostream&)[24] #0 Foam::error::printStack(Foam::Ostream&)[19] #0 Foam::error::printStack(Foam::Ostream&)[20] #0 Foam::error::printSta ck(Foam::Ostream&)[22] #0 Foam::error::printStack(Foam::Ostream&) at ??:? [36] #1 Foam::sigFpe::sigHandler(int) at ??:? [41] #1 Foam::sigFpe::sigHandler(int) at ??:? #2 ? in "/lib64/libpthread.so.0" [29] #3 Foam::multiply(Foam::Field<double>&, Foam::UList<double> const&, Foam::UList<double> const&) in "/lib64/libpthread.so.0" [28] #3 Foam::multiply(Foam::Field<double>&, Foam::UList<double> const&, Foam::UList<double> const&) at ??:? [37] #4 Foam::tmp<Foam::DimensionedField<double, Foam::volMesh> > Foam::operator*<Foam::volMesh>(Foam::tmp<Foam::DimensionedField<double, Foam::volMesh> > co nst&, Foam::DimensionedField<double, Foam::volMesh> const&) at ??:? [36] #4 Foam::tmp<Foam::DimensionedField<double, Foam::volMesh> > Foam::operator*<Foam::volMesh>(Foam::tmp<Foam::DimensionedField<double, Foam::volMesh> > co nst&, Foam::DimensionedField<double, Foam::volMesh> const&) at ??:? [35] #4 Foam::tmp<Foam::DimensionedField<double, Foam::volMesh> > Foam::operator*<Foam::volMesh>(Foam::tmp<Foam::DimensionedField<double, Foam::volMesh> > co nst&, Foam::DimensionedField<double, Foam::volMesh> const&) at ??:? [36] #5 Foam::RASModels::kEpsilon<Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > >::correct() at ??: ? [37] #5 Foam::RASModels::kEpsilon<Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > >::correct() at ??: ? 5 Foam::RASModels::kEpsilon<Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > >::correct()Foam::RASMode ls::kEpsilon<Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > >::correct()[41] #5 Foam::RASModels::kEp silon<Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > >::correct() at ??:? [30] #5 Foam::RASModels::kEpsilon<Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::CompressibleTurbulenceModel<Foam::fluidThermo> > > >::correct() at ??: ?
这里第一个错误应该是除数错误,下面的模型错误是什么导致,如果边界有问题的话也不会影响湍流模型?以及tmp(DimensionedField)是什么错误,也是边界错误吗?求助
-
可以用吗?如何解决,求分享
-
请问,你是在做变物性吗?我最近算的层流也遇见发散的问题,希望能多交流
-
@Exthan 不知道是边界条件设错了还是应该更换求解器
-
变物性?
-
@东岳 因为buiyantSimple是稳态的,而且计算发散,所以想着调小松驰因子,至于k.epsion其实可以删掉或者注释掉
-
计算结果速度ubar和连续性误差发散,温度会超过我给定的温度,导致密度也不符给定温度所对应的密度。求指导!
Time = 132 smoothSolver: Solving for h, Initial residual = 0.0187811, Final residual = 5.63294e-10, No Iterations 1 GAMG: Solving for p_rgh, Initial residual = 0.794388, Final residual = 0.233352, No Iterations 1000 Pressure gradient source: uncorrected Ubar = -0.399802, pressure gradient = -5.88632e+13 time step continuity errors : sum local = 7.41708e+09, global = -140114, cumulative = -847557 rho max/min : 118.845 20.83 ExecutionTime = 621.62 s ClockTime = 640 s Time = 133 smoothSolver: Solving for h, Initial residual = 0.0181793, Final residual = 6.69858e-10, No Iterations 1 GAMG: Solving for p_rgh, Initial residual = 0.789481, Final residual = 0.239609, No Iterations 1000 Pressure gradient source: uncorrected Ubar = 0.579449, pressure gradient = -1.19796e+15 time step continuity errors : sum local = 7.72821e+09, global = -121341, cumulative = -968897 rho max/min : 118.845 20.83 ExecutionTime = 644.5 s ClockTime = 663 s Time = 134 smoothSolver: Solving for h, Initial residual = 0.0175436, Final residual = 6.60026e-10, No Iterations 1 GAMG: Solving for p_rgh, Initial residual = 0.787433, Final residual = 0.241788, No Iterations 1000 Pressure gradient source: uncorrected Ubar = -0.218891, pressure gradient = -7.73639e+14 time step continuity errors : sum local = 7.86889e+09, global = 279932, cumulative = -688965 rho max/min : 118.845 20.83 ExecutionTime = 667.39 s ClockTime = 686 s
-
计算变物性周期性平板流,添加fvOptions文件设置周期性入口速度设定ubar
location "constant"; 14 object fvOptions; 15 } 16 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 17 18 momentumSource 19 { 20 type meanVelocityForce; 21 22 selectionMode all; 23 24 fields (U); 25 Ubar (0.0005 0 0); 26 }
0文件里设置边界条件如下
location "0"; 14 object T; 15 } 16 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 17 18 dimensions [0 0 0 1 0 0 0]; 19 20 internalField uniform 410; 21 22 boundaryField 23 { 24 back1 25 { 26 type cyclic; 27 } 28 29 front1 30 { 31 type cyclic; 32 } 33 34 bottom 35 { 36 type fixedValue; 37 value uniform 430; 38 } 39 40 top 41 { 42 type fixedValue; 43 value uniform 410; 44 } 45 46 out1 47 { 48 type cyclic; 49 } 50 51 in1 52 { 53 type cyclic; 54 } 55 }
location "0"; 14 object U; 15 } 16 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 17 18 dimensions [0 1 -1 0 0 0 0]; 19 20 internalField uniform (0 0 0); 21 22 boundaryField 23 { 24 back1 25 { 26 type cyclic; 27 } 28 29 front1 30 { 31 type cyclic; 32 } 33 34 bottom 35 { 36 type noSlip; 37 } 38 39 top 40 { 41 type noSlip; 42 } 43 44 out1 45 { 46 type cyclic; 47 } 48 49 in1 50 { 51 type cyclic; 52 }
3 location "0"; 14 object p_rgh; 15 } 16 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 17 18 dimensions [1 -1 -2 0 0 0 0]; 19 20 internalField uniform 8e6; 21 22 boundaryField 23 { 24 back1 25 { 26 type cyclic; 27 } 28 29 front1 30 { 31 type cyclic; 32 } 33 34 bottom 35 { 36 type fixedFluxPressure; 37 } 38 39 top 40 { 41 type fixedFluxPressure; 42 } 43 44 out1 45 { 46 type cyclic; 47 } 48 49 in1 50 { 51 type cyclic; 52 }
13 location "0"; 14 object p; 15 } 16 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 17 18 dimensions [1 -1 -2 0 0 0 0]; 19 20 internalField uniform 8e6; 21 22 boundaryField 23 { 24 back1 25 { 26 type cyclic; 15 } 17 20 internalField uniform 8e6; 21 22 boundaryField 23 { 24 back1 25 { 26 type cyclic; 27 } 28 29 front1 30 { 31 type cyclic; 32 } 33 34 bottom 35 { 36 type fixedFluxPressure; 37 } 38 39 top 40 { 41 type fixedFluxPressure; 42 } 43 44 out1 45 { 46 type cyclic; 47 } 48 49 in1 50 { 51 type cyclic; 52 }
层流计算,所以constant/turbulenceProperties设置为laminar,但没有设置laminar的参数,我看OF自带算例laminar中有设置参数,但对参数不太了解就没设
12 class dictionary; 13 object turbulenceProperties; 14 } 15 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 16 simulationType laminar;
参考channel395设置的离散格式及离散精度
class dictionary; 13 object fvSchemes; 14 } 15 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 16 17 ddtSchemes 8 FoamFile 9 { 10 version 2.0; 11 format ascii; 12 class dictionary; 13 object fvSchemes; 14 } 15 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 16 17 ddtSchemes 18 { 19 default steadyState; 20 } 21 22 gradSchemes 23 { 24 default Gauss linear; 25 } 26 27 divSchemes 28 { 29 default none; 30 31 div(phi,U) Gauss limitedLinear 1; 32 div(phi,K) Gauss limitedLinear 1; 33 div(phi,h) Gauss limitedLinear 1; 34 div(phi,k) Gauss limitedLinear 1; 35 // div(phi,epsilon) Gauss limitedLinear 1; 36 // div(phi,omega) bounded Gauss limitedLinear 0.2; 37 div((phi|interpolate(rho)),p) Gauss limitedLinear 1; 38 div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; 39 } 40 41 laplacianSchemes 42 { 43 default Gauss linear corrected; 44 } 45 46 interpolationSchemes 47 { 48 default linear; 49 } 50 51 snGradSchemes 52 { 53 default corrected; 54 } 55 56 wallDist 57 { 58 method meshWave; 59 }
13 location "system"; 14 object fvSolution; 15 } 16 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 17 18 solvers 19 { 20 p_rgh 21 { 22 solver GAMG; 23 tolerance 1e-7; 24 relTol 0.01; 25 smoother DICGaussSeidel; 26 27 } 28 29 "(U|h|k|epsilon|omega)" 30 { 31 solver smoothSolver; 32 smoother symGaussSeidel; 33 //preconditioner DILU; 34 tolerance 1e-8; 35 relTol 0.1; 36 } 37 } 38 39 SIMPLE 40 { 41 momentumPredictor no; 42 nNonOrthogonalCorrectors 0; 43 //pRefCell 0; 44 pRefPoint (0 0.002 0); 45 pRefValue 8.0e6; 46 47 residualControl 48 { 49 p_rgh 1e-8; 50 U 1e-8; 51 h 1e-8; 52 53 // possibly check turbulence fields 54 "(k|epsilon|omega)" 1e-7; 55 } 56 } 57 58 relaxationFactors 59 { 60 fields 61 { 62 rho 0.000007; 63 p_rgh 0.000001; 64 } 65 equations 66 { 67 U 0.00001; 68 h 0.00001; 69 "(k|epsilon|omega)" 0.7;
-
3D平板流边界如下,采用createPatch将流向与展向均为周期性,上下避免设置为壁面
13 location "constant/polyMesh"; 14 object boundary; 15 } 16 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 17 18 6 19 ( 20 bottom 21 { 22 type wall; 23 inGroups 1(wall); 24 nFaces 80000; 25 startFace 4679200; 26 } 27 top 28 { 29 type wall; 30 inGroups 1(wall); 31 nFaces 80000; 32 startFace 4759200; 33 } 34 front1 35 { 36 type cyclic; 37 inGroups 1(cyclic); 38 nFaces 40000; 39 startFace 4839200; 40 matchTolerance 0.0001; 41 transform unknown; 42 neighbourPatch back1; 43 } 44 back1 45 { 46 type cyclic; 47 inGroups 1(cyclic); 48 nFaces 40000; 49 startFace 4879200; 50 matchTolerance 0.0001; 51 transform unknown; 52 neighbourPatch front1; 53 } 54 in1 55 { 56 type cyclic; 57 inGroups 1(cyclic); 58 nFaces 800; 59 startFace 4919200; 60 matchTolerance 0.0001; 61 transform unknown; 62 neighbourPatch out1; 63 } 64 out1 65 { 66 type cyclic; 67 inGroups 1(cyclic); 68 nFaces 800; 69 startFace 4920000; 70 matchTolerance 0.0001; 71 transform unknown; 72 neighbourPatch in1; 73 } 74 )
-
gambit网格导入后checkMesh没问题,但是在polyMesh修改为周期性边界条件后的checkMesh会报错误,不知道这个error是否会影响计算?
-
解决了吗?最近在计算周期性的平板层流,感觉温度场和速度场传不进去
-
你好,请问如何将去添加超临界的物性?
rhoSimpleFoam:k-epsion 湍流Pr数
rhoSimpleFoam:k-epsion 湍流Pr数
rhoSimpleFoam:k-epsion 湍流Pr数
rhoSimpleFoam:k-epsion 湍流Pr数
rhoSimpleFoam:k-epsion 湍流Pr数
rhoSimpleFoam:k-epsion 湍流Pr数
rhoSimpleFoam:k-epsion 湍流Pr数
怎么把一个标量写成一个标量场
怎么把一个标量写成一个标量场
怎么把一个标量写成一个标量场
如何调用分子普朗特数?
怎么把一个标量写成一个标量场
怎么把一个标量写成一个标量场
怎么把一个标量写成一个标量场
怎么把一个标量写成一个标量场
如何调用分子普朗特数?
如何调用分子普朗特数?
使用kOmegaSST模型,感觉Omega算得不对
使用kOmegaSST模型,感觉Omega算得不对
rhoSimpleFoam:k-epsion 湍流Pr数
rhoSimpleFoam:k-epsion 湍流Pr数
请问,如何把热膨胀系数写进OpenFoam中?
rhoSimpleFoam:k-epsion 湍流Pr数
博士毕业快乐
初始条件设置求教
请问.msh的2维旋转轴对称网格如何转换到OpenFOAM
请问.msh的2维旋转轴对称网格如何转换到OpenFOAM
请问.msh的2维旋转轴对称网格如何转换到OpenFOAM
请问.msh的2维旋转轴对称网格如何转换到OpenFOAM
请问.msh的2维旋转轴对称网格如何转换到OpenFOAM
请问.msh的2维旋转轴对称网格如何转换到OpenFOAM
湍流模型接口
kEpsilon和kOmegaSST仍未解决
kEpsilon和kOmegaSST仍未解决
kEpsilon和kOmegaSST仍未解决
kEpsilon和kOmegaSST仍未解决
kEpsilon和kOmegaSST仍未解决
kEpsilon和kOmegaSST仍未解决
关于k-w SST湍流模型边界条件设置的疑惑
恒定热流密度
关于k-w SST湍流模型边界条件设置的疑惑
buoyangSimpleFoam计算周期性平板
OpenFOAM可压缩管流边界条件设置
buoyangSimpleFoam计算周期性平板
buoyangSimpleFoam计算周期性平板
buoyangSimpleFoam计算周期性平板
buoyangSimpleFoam计算周期性平板
网格导入后边界修改会出现error
openfoam里的自带求湍流的求解器可以用来算层流吗
圆管对流换热若干问题咨询