非稳态计算向压力方程中添加源项
-
今天发现这个问题折腾了小半天也没解决,恳请大家帮忙分析一下:
非稳态计算过程中需要连续的向模型中注入流体,由于尺度的问题无法使用“显式”的入口,而是使用一个“隐式”的方法:添加一个体积源项到压力方程中实现注入;
体积源项定义:
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
看上去是每一个时间步的源项和上一个时间步的结果都在累加,从压力方程上每个时间步计算的过程来看的确也是这样的。
从物理过程的角度来说,连续的向模型中注入流体,每个时间步的压力方程都应该有源项存在的,如果源项大小不变,压力应该是稳态的,
不知道要如何避免这种压力不断增加的结果~,希望大家提提意见。
-
莫非只需要再第一个时间步添加源项,以后每个时间步只需要添加源项的改变量?
-
wellSource是常数吗?那mesh.V是什么参数?
-
@Tong 在 非稳态计算向压力方程中添加源项 中说:
非稳态计算过程中需要连续的向模型中注入流体,
具体是什么过程?
由于尺度的问题无法使用“显式”的入口,而是使用一个“隐式”的方法:添加一个体积源项到压力方程中实现注入;
虽然看的不是很懂但是感觉很厉害
但是,你的代码看起来并不“老练”,你压力方程的源项,出现在动量方程中,倒是可以理解。但为何不直接加在动量方程中?即使加在压力方程中,直接一减
fvc::div(phiHbyA))-(wellSource/mesh.V())
看起来很粗暴的样子,最好换成通量话说回来,你这个应该是方程植入有问题。并且,你把源项放在压力方程中得到phi之后,速度需要进行减去或者加上
不是大问题,好好检查下你的方程和代码的一致性
-
-
回复一下大家,问题实锤了。源项添加应该是没有问题的。
问题出在:fvm::laplacian(rTU, p)
中的rTU,因为在动量方程部分区域中添加了各向异性的达西阻力项,这一项是个对称张量场,如果换用各项同性的阻力场整个求解器就没有问题。应该计算达西阻力的时候出了点问题。
4/12