@李东岳 在 Simple算法中通量phi的计算 中说:
也就是说在边界处phi是不正确的。不知道是我没有找到phi边界修正,
边界处的
phi
不需要计算,是用户给的。加入速度1m/s,乘以网格边界面积,就是phi
啊,并且不变。
如果是pressureInletVelocity 边界呢? 代码里可以看出pressureInletVelocity 需要用边界上的phi来更新出新的边界速度。如果是这种边界边界上的phi又应该如何确认呢?
@李东岳 在 Simple算法中通量phi的计算 中说:
也就是说在边界处phi是不正确的。不知道是我没有找到phi边界修正,
边界处的
phi
不需要计算,是用户给的。加入速度1m/s,乘以网格边界面积,就是phi
啊,并且不变。
如果是pressureInletVelocity 边界呢? 代码里可以看出pressureInletVelocity 需要用边界上的phi来更新出新的边界速度。如果是这种边界边界上的phi又应该如何确认呢?
@李东岳 这里我看先创建了湍流再创建了MRF区域所以说构造的时候还没有变成相对流量?但是如果phi是存在内存里的话,构造的时候传递了地址,实际上再动量方程中对phi有修正的话,湍流计算的时候也会相应的修正的吧。 我想把phi这个值给输出出来查看一下。李老师知道该怎么做吗?
@李东岳 李老师确认一下,意思就是动量方程里phi如果是相对流量,湍流里用到phi的地方也是相对流量吧?
如图所示的代码中,openfoam构造turbulence的时候用到了phi,想请问这个phi是不是和动量方程的phi是同一个?
cited:http://openfoamwiki.net/index.php/See_the_MRF_development
图为在旋转坐标系内解绝对速度的控制方程,其中 \vec \omega \times \vec U_i 这项称为科氏力,旋转坐标系内独有的力。他的效果如下面这个视频所示https://haokan.baidu.com/v?vid=4227630901810560602&pd=bjh&fr=bjhauthor&type=video
我的理解是可以将上面的式子理解为绝对速度产生组成的动量的输运方程,其中的通量是相对通量(\vec U_R \vec U_I),同时由于动量是一个矢量,因此在旋转坐标系中还受到科氏力的作用。等式坐标是压力的贡献,和由于运输的物理量U_I的扩散贡献。
因此,我在思考是不是诸如湍动能,湍流耗散率这些标量,也可以认为在旋转坐标系内,运输物理量为湍动能,湍流耗散率这些标量,通量为相对速度的通量,但是由于这些量都是标量,因此没有多的项需要添加。另外比如SA模型中的发生项需要计算到voricity的大小,此处的voricity是不是也应该用相对速度?
能不能将MRF理解为有一个新的速度场,该速度场是由绝对速度的速度场减去参考系的牵连速度得到的。该新的速度场运输了单位质量的流体,运输的物理量包括绝对速度的动量、温度、湍动能等。所以如果应用了MRF方法,界面的通量应该为相对速度的通量无论对于那个方程来说(动量,能量,质量,湍流物理量,sclar transport equation )。 请问我理解的对吗
@liujunCFD 是的老鐵,公司有效工作時間是八小時,幹滿八小時就能走人
@李东岳 在 SIMPLE(C)解一次動量方程後多次求解壓力方程,壓力方程中計算HbyA的疑問 中说:
pisoFoam
因爲我看到動量預測不是必須的,那我想我能不能某幾步求解一下壓力方程再做一次動量預測,因爲有時候動量方程的增量其實很小,解一次壓力方程對應一次動量方程,是不是有點浪費。
引用自李老師的simple解析。
如果現在每1部做一次動量預測,然後求解20次壓力方程,20次壓力方程的每一步是不是都需要構建新的hybA? 構建HbyA 需要用到An,同時壓力方程的系數需要用到Ap,是否每一步都需要去更新一次Ap與An?
您可以看看苏州舜云工程软件有限公司哦,主要业务就是做基于粒子法的流体多物理场数值仿真软件研发的,就在苏州市相城区,可以关注公众号:舜云多物理场仿真,了解企业的更多信息,简历投递邮箱是lijuan.cai@shoncloud.com
我也很纠结, 我问过好几个人, 他们也不清楚. 不过我的算例中, 乘和不乘对结果影响不大. 我的是dilute flow
我找着我第一次发的方程改得,就是第二个block的代码,算出来的结果和MPPICInterfoam的基本一样。当然有可能我的粒子直径比较小,对计算结果影响不大?
我没明白您下面写的这个是什么意思。如果不看mrf的话, 你这个和interfoam相比就是减上了一项
fvm::Sp(fvc::ddt(rho) + fvc::div(rhoPhi), U)
这一项就是
我不知道怎么推出的这一项?
fvVectorMatrix UEqn
(
fvm::ddt(alphacRho, U)
+ MRF.DDt(alphacRho, U)
- fvm::Sp(fvc::ddt(rho) + fvc::div(rhoPhi), U)
+ fvm::div(rhoPhi, U)
+ turbulence->divDevRhoReff(U)
==
fvOptions(rho, U)
+ cloudSU
);
这是MPPIC Intefoam 1912里面的动量方程matrix, 但是这一行代表什么意思呢
- fvm::Sp(fvc::ddt(rho) + fvc::div(rhoPhi), U)
我看的动量方程是
fluent的theory也是这个, 所以我觉得方程是不是
fvVectorMatrix UEqn
(
// fvm::ddt(rho, U) + fvm::div(rhoPhi, U)
//+ MRF.DDt(rho, U)
fvm::div(alphaRhoPhic, U)
+ fvm::ddt(alphacRho, U)
+ MRF.DDt(alphacRho, U)
+ turbulence->divDevRhoReff(U)
==
fvOptions(rho, U)
+ cloudSU
);
....
-alphac * ghf*fvc::snGrad(rho)
- alphac * fvc::snGrad(p_rgh)
我没有看懂原先方程的意义, 或者说他是怎么推倒出来的呢?如果根据文献的这个方程的话。
@zhe 我能加你一下微信吗?我最近也在做这个问题。因为我直接从interfoam改MPPICInterfoam, 所以我觉得还是有些问题。我的微信是 wqdwqdaaa
谢谢你的指正。
不过我没看湍流模型, 我用的DNS, 不过看湍流的构造函数的时候,他们的确是不同的。
MPPICInterFoam 在左侧加了
fvm : : ddt ( alphacRho , U)+ MRF. DDt( alphacRho , U)
应该是 When a particle is transformed into a Eulerian structure, its velocity and volume fraction is added to the continuum fluid
右侧是the effect of particle motion on the momentum of surrounding fluid。 也即是我们说的粒子力。
phicForces / rAUcf // is added as particle force
理论上 , 当粒子为0的时候, 由于alphac为0, 这两项也应为为0才对。理论上是没有影响的。
不过MPPICInterFoam的alphaEqn改了很多, 说实话,这个我没有看明白。
不过你这两个case是除了solver不一样外, 其他全部一样吗?比如说fvSchemes或者fvSolutions等等
你可以看看下面这个文档, 虽然他是用的openfoam3, 但是感觉会对你有帮助
pg11 http://www.tfd.chalmers.se/~hani/kurser/OS_CFD_2016/EbrahimGhahramani/Report_Ghahramani.pdf
然后还有一点我不太明白的地方, 就是这个地方的这个地方的粒子力为啥先乘了rAUc然后又除了rAUc?好像是关于离散吗?
volScalarField rAUc(1.0/UEqn.A());
surfaceScalarField rAUcf(fvc::interpolate(rAUc));
surfaceScalarField phicForces
(
(fvc::interpolate(rAUc*cloudVolSUSu) & mesh.Sf())
);
if (pimple.momentumPredictor())
{
solve
(
UEqn
==
fvc::reconstruct
(
phicForces/rAUcf // is added as particle force
+ ....
矩阵是Ax = b, 然后solve(UEqn = fvc:xxx)是求解的Ax=b? 那么这样的话A 是前面的UEqn (fvVectorMatrix)?那这个里面的matrix为啥还有等号呢
fvVectorMatrix UEqn
(
fvm::ddt(alphacRho, U)
+ MRF.DDt(alphacRho, U)
+ fvm::ddt(rho, U) + fvm::div(rhoPhi, U)
+ MRF.DDt(rho, U)
+ turbulence->divDevRhoReff(rho, U)
==
fvOptions(rho, U)
+ cloudSU
);
MPPICInterfoam 中的UEqn == 后面是源项。 但是我不太明白的是, 为啥这个matrix中间有==呢?因为简单的icoFoam中没有后面的源项,就会感觉比较容易理解,但是加上了等号,我就不能理解了。
还有就是这个cloudSU也是源项吗还是ö粒子力?这个方程在后面不是已经加上particle forces了吗?
UEqn
==
fvc::reconstruct
(
phicForces/rAUcf // is added as particle force
+
(
fvc::interpolate
(
mixture.sigmaK()
)*fvc::snGrad(alpha1) // can be supplanted by the mixture.surfaceTensionForce()
- ghf*fvc::snGrad(rho)
- fvc::snGrad(p_rgh)
) * mesh.magSf()
)
@东岳 我试过, 但是我觉得比较丑,哈哈。 我看网上有人用python的paraview module进行图层的叠加。 我再看看那个。