@李东岳
东岳老师您好!
因为对OpenFOAM的编程还不是很熟悉,目前我通过修改interIsoFoam做了三种尝试,想得到重力能随时间变化的效果,比如[g=sin(2 * M_PI * runTime.value)]。
过程中,我拷贝并修改~/application/solvers下的interIsoFoam文件夹后,将其命名为新的编译器,例如newinterIsoFoam。接下来陈述的三种方式都顺利编译成功,运行之前controlDoct我也有检查。
随后,我用damBreak案例来观察调整前后的情况,发现三种方式都没有使重力发生改变。依然是保持constant文件夹下的g [0, -9.81,0],能否请您再出山,指点指点又菜又爱玩OpenFOAM的我,谢谢东岳老师!
我用的版本是dyfluid.com无私的OpenFOAM-v1812
第一种尝试:
按照您在本贴中的上一次提示,我将interIsoFoam.C的while (pimple.loop())下添加代码如下:
起始于interIsoFoam.C 110行~
// --- Pressure-velocity PIMPLE corrector loop
while (pimple.loop())
{
g.component(1).value() = (-1)*runTime.value(); //***新加内容***
if (pimple.firstIter() || moveMeshOuterCorrectors)
.....
我从代码读出的效果应该是,Y轴负方向的值会随着pimple.loop的进行,g值从[0, 0, 0]变为[0, -2, 0],但运行之后,依然是保持constant文件夹下的g [0, -9.81,0]。
第二种尝试:
因为v1812现在的readGravitationalAcceleration.H好像 和数字版本 有一些不同
v版本的readGravitationalAcceleration.H是:
Info<< "\nReading g" << endl;
const meshObjects::gravity& g = meshObjects::gravity::New(runTime);
数字版本的readGravitationalAcceleration.H是:
Info<< "\nReading g" << endl;
uniformDimensionedVectorField g
(
IOobject
(
"g",
runTime.constant(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
)
);
我将数字版本的readGravitationalAcceleration.H,复制到v1812上也能正常编译通过,通过您在另一篇帖子的回复--定义加速度的phi
我对照着做了以下修改:
Info<< "\nReading g" << endl;
uniformDimensionedVectorField g
(
IOobject
(
"g",
runTime.constant(),
mesh,
IOobject::MUST_READ,
IOobject::NO_WRITE
);
while (piso.loop()) //***新加内容***
{
g.component(1).value() = (-1)*runTime.value(); //***新加内容***
}
);
运行之后,damBreak依然是保持constant文件夹下的g [0, -9.81,0]
第三种尝试:
我照着另一份帖子说的按照改UEqn.H的方式引入附加体积力,改了interIsoFoam.C旁边的UEqn.H
MRF.correctBoundaryVelocity(U);
# define omega 2 //***新加内容***
const dimensionedVector mySource("mySource", dimensionSet(1,-2,-2,0,0,0,0), 100*Foam::sin(M_PI*runTime.value()*omega)*vector(0,1,0)); //***新加内容***
//我粗略的考虑了水密度为1,因此直接把体积力的量纲用到了这里
fvVectorMatrix UEqn
(
fvm::ddt(rho, U) + fvm::div(rhoPhi, U)
+ MRF.DDt(rho, U)
+ turbulence->divDevRhoReff(rho, U)
==
fvOptions(rho, U)
+ mySource //***新加内容***
);
运行之后,damBreak依然是保持constant文件夹下的g [0, -9.81,0]。
实在是想了好久,三种方法都不行,当场心情就像溃坝一样damBreak!
请东岳老师出山!