非稳态计算向压力方程中添加源项
-
今天发现这个问题折腾了小半天也没解决,恳请大家帮忙分析一下:
非稳态计算过程中需要连续的向模型中注入流体,由于尺度的问题无法使用“显式”的入口,而是使用一个“隐式”的方法:添加一个体积源项到压力方程中实现注入;
体积源项定义:
volScalarField wellSource( IOobject("wellSource", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE), mesh, dimensionedScalar("Scalar", dimVol / dimTime, Zero) );
需要添加体积源项的网格对应的wellSource有数值,否则为零,注入量是一个固定不变的值。
整体求解流程类似PISOFoam 前后代码就没有列出来,压力方程源项添加如下:
fvScalarMatrix pEqn((fvm::laplacian(rTU, p) == fvc::div(phiHbyA))-(wellSource/mesh.V()));
但是在计算过程出现问题是:每一个时间步求解一次的压力方程后压力都会增加,对应的库朗数也一直增加(如下):
Courant Number mean: 0.000925584 max: 0.19292 Courant Number mean: 0.00103634 max: 0.331209 Courant Number mean: 0.00132796 max: 3.74959 Courant Number mean: 0.00177495 max: 4.40821 Courant Number mean: 0.00422436 max: 24.4105 Courant Number mean: 0.0173964 max: 47.9946 Courant Number mean: 0.0974709 max: 287.174 Courant Number mean: 0.679524 max: 1792.34 Courant Number mean: 39.8774 max: 147650 ........... Courant Number mean: 8.97372e+11 max: 6.71492e+15
看上去是每一个时间步的源项和上一个时间步的结果都在累加,从压力方程上每个时间步计算的过程来看的确也是这样的。
从物理过程的角度来说,连续的向模型中注入流体,每个时间步的压力方程都应该有源项存在的,如果源项大小不变,压力应该是稳态的,
不知道要如何避免这种压力不断增加的结果~,希望大家提提意见。
-
@Tong 在 非稳态计算向压力方程中添加源项 中说:
非稳态计算过程中需要连续的向模型中注入流体,
具体是什么过程?
由于尺度的问题无法使用“显式”的入口,而是使用一个“隐式”的方法:添加一个体积源项到压力方程中实现注入;
虽然看的不是很懂但是感觉很厉害
但是,你的代码看起来并不“老练”,你压力方程的源项,出现在动量方程中,倒是可以理解。但为何不直接加在动量方程中?即使加在压力方程中,直接一减
fvc::div(phiHbyA))-(wellSource/mesh.V())
看起来很粗暴的样子,最好换成通量话说回来,你这个应该是方程植入有问题。并且,你把源项放在压力方程中得到phi之后,速度需要进行减去或者加上
不是大问题,好好检查下你的方程和代码的一致性