buoyantBoussinesqPimpleFoam求解器只是在pimpleFoam求解器的基础上添加了布西内斯克近似的浮力项,感觉只要把pimpleFoam求解器搞明白,在pimpleFoam求解器的基础很容易修改处理,由于该求解器只在低版本的OF中存在,高版本的OF中已经融合到buoyantPimpleFoam中,但是由于该求解器比较复杂,所以我们还是得到buoyantBoussinesqPimpleFoam比较简单。
理论
理论部分参考东岳流体
源项添加参考博客
关于p_rgh的来由参考博客
这里面比较重要的是关于重力g的引入
#include "readGravitationalAcceleration.H"
#include "readhRef.H"
#include "gh.H"
volScalarField p
(
IOobject
(
"p",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
p_rgh + rhok*gh
);
压力p=p_rgh+rhok*gh
这里我们需要了解#include "gh.H"和#include "readGravitationalAcceleration.H"这两个函数的内容
Info<< "Calculating field g.h\n" << endl;
dimensionedScalar ghRef
(
mag(g.value()) > SMALL
? g & (cmptMag(g.value())/mag(g.value()))*hRef
: dimensionedScalar("ghRef", g.dimensions()*dimLength, 0)
);
volScalarField gh("gh", (g & mesh.C()) - ghRef);
surfaceScalarField ghf("ghf", (g & mesh.Cf()) - ghRef);
Info<< "\nReading g" << endl;
uniformDimensionedVectorField g
(
IOobject
(
"g",
runTime.constant(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
)
);
根据p_rgh的博客说明,我们可以变化g,使其随时间变化,这一步可以得到随时间变化的场力,文献中有这种操作,目前看起来只需要替换掉#include "readGravitationalAcceleration.H"这个函数,直接定义一个g即可。
但是又不能在"createFields.H"函数里直接修改,因为"createFields.H"不在主程序循环中,只是在程序开头调用了一下,此外#include "gh.H"也需要引进到主程序循环中。
看起来不是很难,找个时间修改一下。