pimple算法简述
(2009-09-30 09:22:33)
标签:
openfoam研究教育 |
分类: OpenFOAM求解器说明 |
终于回国了,事情比较多,blog更新速度慢了些。
pimple的基本思想是:将每个时间步长内用simple稳态算法求解(也就是将每个时间步内看成稳态流动),时间步长的步进用piso算法来完成。
在有限容积离散中,时间项的离散仍采用的差分格式,这样做可以得到某个时间点的流场信息,而非某个时间步长的内的平均值。采用传统的piso算法求解变化较快的流动的时候,需要的时间步长较小(因为相邻两个时间点的流场不能差别太大,否则会发散),这样会造成求解的某种流动需要的耗时过长。 pimple算法将每个时间步长内看成一种稳态的流动(采用亚松驰来解决相邻两个时间段变化大的情况),当按照稳态的求解器求解到一定的时候,则采用标准的piso做最后一步求解。下面简单的将pimpleFoam流程
#include "fvCFD.H"
#include "singlePhaseTransportMode
#include "turbulenceModel.H"
int main(int argc, char *argv[])
{
}
tmp<fvVectorMatrix> UEqn
(
);
if (oCorr == nOuterCorr-1)
{
}
else
{
}
volScalarField rUA = 1.0/UEqn().A();
if (momentumPredictor)
{
}
else
{
}
压力方程
U = rUA*UEqn().H();
if (nCorr <= 1)
{
}
phi = (fvc::interpolate(U) & mesh.Sf())
adjustPhi(phi, U, p);
// Non-orthogonal pressure corrector loop
for (int nonOrth=0; nonOrth<=nNonOrthCorr;
nonOrth++)
{
}
#include "continuityErrs.H"
// Explicitly relax pressure for momentum corrector except for
last corrector
if (oCorr != nOuterCorr-1)
{
}
U -= rUA*fvc::grad(p);
U.correctBoundaryCondition
上面没有注释的请参看本站其他求解器的说明。