内存和未知问题
-
求解器编译正常,但是在求解算例的过程,出现下面的提示,但是它还可以继续求解。知道读取到createFields中的重力加速度这里,显示内存问题。之前没有遇到这样的问题,请有经验的老师们分享一下~
-
@李东岳 谢谢东岳老师的回复~第一个问题终于解决啦~
不过第二个segmentation fault现在还没有找到解决的办法。
我了解到的可能存在的问题有:
网格质量不好:已经提高snappyHexMesh网格质量;
版本问题https://blog.csdn.net/weixin_38909635/article/details/105792556
openmpi:但是单核运算也出现同样的错误,只是单核运算的时候可以读取到turbulence结束,但是多核只能读取到turbulence前面。
我在snappyHexMesh之后,polyMesh中的boundary并不会产生新的边界面,我怀疑是不是这里出了问题。我把我的case贴在下面,有经验的老师们可以帮忙看一下~
链接:https://pan.baidu.com/s/1OhRKGM2zqir22WyziHVS9A
提取码:1111 -
@李东岳 网格问题已经解决了~我推测是我在snappyHexMesh中将介质区域设置成了faceZone,而导致没有生成patch。
在正确的网格下运行,结果还是出现了上面的内存问题。我的求解器是在一位前辈的基础上修改的,因此我向他请教了这个问题。但是我不太懂他所说的它本身的求解器是不支持的湍流模型是什么意思,即使我已经在头文件进行了相应的引用也是不支持的吗?并且在相同的算例设置下,我运行了另一个求解器(也是包含湍流模型的)发现是可以正常运行的。请问老师这种一读取到(或者读取结束)turbulence就报错,还有什么原因导致。附有邮件: Thank you for your email. Currently the solver does not support turbulence models, which is why I suspect that your solver fails whenever you call any turbulence library in your solver. Please let me know if this knowledge fixes your issue. Best, Francisco
-
@hongjiewang 应该是在求解器层面,比如动量方程上,没有添加湍流粘度。如果你要加的话,需要1)去求解器里面增加湍流粘度,2)去求解器里面封闭湍流粘度
-
@李东岳 谢谢东岳老师~如果是老师所说的这个意思,湍流这部分之前我参考interCondensatingEvaporatingFoam这个求解器已经添加好了。运行算例会出现segmentation fault。
我刚才验证了一下是不是我添加的turbulence不对,所以我把求解器里所有涉及到turbulence的都注释掉,编译成功之后进行跑算例。结果发现在读取到差不多行数的时候,还是会报segmentation fault。就比如之前是读取到turbulence之后报错,现在是读取完g之后报错。这样是不是可以排除turbulence添加的问题。
基于上面的这个,我怀疑是单核导致,所以把核数增加到4,8,16分别运行还是会出现相同的错误。Info<< "Construct interface from alpha1 distribution\n" << endl; interfaceProperties interface ( alpha1, U, thermo->transportPropertiesDict() ); /*Info<< "Construct incompressible turbulence model\n" << endl; autoPtr<incompressible::turbulenceModel> turbulence ( incompressible::turbulenceModel::New(U, phi, thermo()) );*/ #include "readGravitationalAcceleration.H" #include "readhRef.H"
-
我调整了一下顺序,看有什么不同的输出。在读取interface和g中间添加一些本来是在后面才会读取到的变量(当然保证了这些变量是不会受顺序影响的)。结果发现,中间的这些变量都可以正常读取,最后又是卡在了g这个变量。
Info<< "Construct interface from alpha1 distribution\n" << endl; interfaceProperties interface ( alpha1, U, thermo->transportPropertiesDict() ); /*Info<< "Construct incompressible turbulence model\n" << endl; autoPtr<incompressible::turbulenceModel> turbulence ( incompressible::turbulenceModel::New(U, phi, thermo()) );*/ Info<< "Turbulent Prandtl number\n" << endl; dimensionedScalar Prt("Prt", dimless, thermo->transportPropertiesDict()); Info<< "kappaEff\n" << endl; volScalarField kappaEff ( IOobject ( "kappaEff", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), thermo->kappa() ); Info<< "Need to store rho for ddt(rhoCp, U)\n" << endl; volScalarField rhoCp ( IOobject ( "rhoCp", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), rho*thermo->Cp() ); //rhoCp.oldTime(); dimensionedScalar deltaX("deltaX", dimless, thermo->transportPropertiesDict()); dimensionedScalar gamma("gamma", dimless, deltaX.value()*0.75); dimensionedScalar epsilon("epsilon", dimless, deltaX.value()*3.5); dimensionedScalar deltaTau("deltaTau", dimless, deltaX.value()*0.1); dimensionedScalar dimChange ( dimensionedScalar("dimChange", dimLength, 1.0) ); dimensionedScalar sigma ( "sigma", dimMass/dimTime/dimTime, thermo->transportPropertiesDict() ); Info<< "MULES compressed flux is registered in case scalarTransport FO needs it\n" << endl; surfaceScalarField alphaPhi ( IOobject ( "alphaPhi", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), phi*fvc::interpolate(alpha1) ); #include "readGravitationalAcceleration.H" #include "readhRef.H" #include "gh.H"
错误显示:
Construct interface from alpha1 distribution Turbulent Prandtl number kappaEff Need to store rho for ddt(rhoCp, U) MULES compressed flux is registered in case scalarTransport FO needs it Reading g Segmentation fault (core dumped)
-
是否有老师可以提供帮助~一直卡在这里进行不下去~
-
@李东岳
老师,我把完整的createFields.H文件放在这个帖子上了,每一行都有Info输出。还是有一样的错误~
https://cfd-china.com/topic/4467/读取变量-segmentation-fault