有关low Mach的疑问
-
以前一直是做液体流固耦合的,最近老板突然要做弱可压流,有很多关于low Mach flow的疑问求问大家。
假设现在跑一个亚音速的飞行器,let's say Mach = 0.5, 然后我测试两个solver,一个rhoPimpleFoam,一个buoyantPimpleFoam,就简称为RPF和BPF吧(懒。。。)。 没测试可能就知道RPF更合适一些,但是想搞清楚为什么:- 首先BPF有重力浮力的影响,那我们可以干一件事就是把g(0 0 -9.81)直接设置成g(0 0 0 ),这样p_rgh就是p,RPM和BPM来到同一起跑线
- 然后推导方程,直到构建泊松方程的时候两个solver都是一模一样的:
\begin{equation}
\frac{\partial \rho}{\partial t}+\nabla\cdot \left(\rho\mathrm{HbyA} \right) -\nabla \cdot \left( \rho \frac { 1 }{ { A }_{ p } } \nabla p \right) =0
\end{equation}- 到目前为止没有任何的近似或者假设。
然后就是RPF和BPF开始不一样了:
- BPF:
- 把第一项变成了fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
- RPF:
- transonic时:第一项第二项的rho都换成p/RT
- 不transonic时:只把第一项的rho换成p/RT
好多的疑问:
- BPF东岳哥的解析里面写的是相对rho_0和prgh_0的修正,在代码里看不出来:confused: ,rho_0和prgh_0到底指的什么,常数?上一个时间步的值?
- RPF为什么多换一项rho就变成了transonic?
- RPF为什么只能跑transonic,哪里限制了它sonic,supersonic和hypersonic?
- 为什么最后一项的rho都没碰,也可以换成p/RT啊?
-
RPF为什么多换一项rho就变成了transonic?
这个目前从理论来讲暂时不知道原因。我也在找关于
transonic
算法的文献。我目前觉得是要修正可压缩性,因为密度存在变化。RPF为什么只能跑transonic,哪里限制了它sonic,supersonic和hypersonic?
rhoPimpleFoam
属于压力基求解器,类似原始的PISO算法是可用于可压缩流和不可压缩流的。但是目前很少有人将PISO用于超音速流。超音速那面用密度基的比较多。这个在sci论文里面讨论的比较多。参考rhoPimpleFoam
的介绍Transient solver for laminar or turbulent flow of compressible fluids for HVAC and similar applications.
。主要用于可压缩流。rho_0
等求解器自动储存了,其他代码问题有空我再看看。 -
@noringname
最浅显的,压力基求解压力,密度基求解密度这个是知道的吧? -
其实密度基/压力基,耦合/分离,显式/隐式 是几个正交的形容词。
比如foam_extend的coupledPU就是耦合的压力基
常规OF里的pimpleFoam就是分离的压力基DensityBasedTurbo就是显式的耦合的密度基
OF的rhoCentralFoam就是显式的分离的密度基密度基和压力基求解压力时用的压力泊松方程/压力修正方程 还是 状态方程,压力泊松/修正方程是微分方程,状态方程式代数方程,所以差别比较大。
耦合/分离看你的主变量在每个迭代/时间步里是同时更新还是分别更新的。
隐式/显式看你的空间离散用没用未知时间步的量。具体隐式还分点隐/全隐之类的玩意儿。甚至可以半隐式。