OpenFOAM中处理奇异Singularity问题的一个小trick
-
U1Eqn = ( fvm::ddt(alpha1, rho1, U1) + fvm::div(alphaRhoPhi1, U1) - fvm::Sp(contErr1, U1) + phase1.turbulence().divDevRhoReff(U1) == - fvm::Sp(dragCoeff, U1) ); U1Eqn.relax();
这个是速度方程,在出现奇异问题的时候,OpenFOAM通过
- fvm::Sp(dragCoeff, U1)
保证有解,不过在极端的情况下-
OpenFOAM还是能解的,但求解器会输出Solving Singularity还是什么来着类似的信息,迭代次数0
-
另一种方式是解不了,主要问题嘞,是无法对其进行松弛,那做下面这个操作:
U1Eqn = ( fvm::ddt(alpha1, rho1, U1) + fvm::div(alphaRhoPhi1, U1) - fvm::Sp(contErr1, U1) + phase1.turbulence().divDevRhoReff(U1) //== //- fvm::Sp(dragCoeff, U1) ); U1Eqn.relax(); U1Eqn += fvm::Sp(dragCoeff, U1);
就可以解决啦
-