PISO算法讨论
-
- 方程(27)等号右边等于
\begin{equation}
\Delta t \int_{}^{}\frac{1}{A}\bigtriangledown pd\textbf{S}
\end{equation}
\begin{equation}
=\Delta t\sum \frac{1}{A_{f}}(\bigtriangledown p)_{f}\cdot \textbf{S}
\end{equation}
面上压力梯度咋就变成了方程(26)矩形框的那部分?3.cavity案例的fvSolution里p-preconditioner DIC对应
piso.momentumPredictor
,因为有DIC这一设置,所以if为真,执行动量预测步。同样在fvSolution里,PISO-nNonOrthogonalCorrectors 0对应的应该是piso.correctNonOrthogonal
,但值为0,while语句不执行,就不会求解压力方程了。但运行该案例,是有求解压力的。4.无痛苦笔记中没有关于
constrainHbyA
的解释。 - 方程(27)等号右边等于
-
- 方程(27)等号右边等于
\begin{equation}
\Delta t \int_{}^{}\frac{1}{A}\bigtriangledown pd\textbf{S}
\end{equation}
\begin{equation}
=\Delta t\sum \frac{1}{A_{f}}(\bigtriangledown p)_{f}\cdot \textbf{S}
\end{equation}
面上压力梯度咋就变成了方程(26)矩形框的那部分?3.cavity案例的fvSolution里p-preconditioner DIC对应
piso.momentumPredictor
,因为有DIC这一设置,所以if为真,执行动量预测步。同样在fvSolution里,PISO-nNonOrthogonalCorrectors 0对应的应该是piso.correctNonOrthogonal
,但值为0,while语句不执行,就不会求解压力方程了。但运行该案例,是有求解压力的。4.无痛苦笔记中没有关于
constrainHbyA
的解释。老师,问题3,
piso.correctNonOrthogonal
对应的是fvSolution下的PISO-nCorrectors,因为我把这一行注释之后报错了。 - 方程(27)等号右边等于
-
- 方程(27)等号右边等于
\begin{equation}
\Delta t \int_{}^{}\frac{1}{A}\bigtriangledown pd\textbf{S}
\end{equation}
\begin{equation}
=\Delta t\sum \frac{1}{A_{f}}(\bigtriangledown p)_{f}\cdot \textbf{S}
\end{equation}
面上压力梯度咋就变成了方程(26)矩形框的那部分?3.cavity案例的fvSolution里p-preconditioner DIC对应
piso.momentumPredictor
,因为有DIC这一设置,所以if为真,执行动量预测步。同样在fvSolution里,PISO-nNonOrthogonalCorrectors 0对应的应该是piso.correctNonOrthogonal
,但值为0,while语句不执行,就不会求解压力方程了。但运行该案例,是有求解压力的。4.无痛苦笔记中没有关于
constrainHbyA
的解释。老师,问题4,我在您最新的无痛苦笔记里找到了
- 方程(27)等号右边等于
-
fvm::ddt(U) + fvm::div(phi , U) + MRF.DDt(U) + turbulence->divDevSigma(U) == fvModels.source(U)
solve(UEqn == -fvc::grad(p))
这是icoFoam里的速度方程
fvm::ddt(U) + fvm::div(phi , U) - fvm::laplacian(nu , U)
solve(UEqn == -fvc::grad(p))
比较不难发现,pisoFoam里的速度方程多了
MRF.DDt(U)
,turbulence->divDevSigma(U)
和== fvModels.source(U)
,少了fvm::laplacian(nu , U)
。MRF.DDt(U)
是和旋转结构有关,在cavityRAS这个案例中用不到。1.
turbulence->divDevSigma(U)
应该是这个案例中用到的K-epsilon方程,这个方程的具体代码在哪个文件里可以看到呢?fvModels.source(U)
就是fvm::laplacian(nu , U)
吗?2.
第一段代码中已经有
==
了,第二段代码又有一个==
,从逻辑上讲,应该将fvModels.source(U)
移到等号左边,再等于-fvc::grad(p)
,这是C++语法特点吗? -
- icoFoam是不能用湍流模型的,fvm::laplacian(nu , U)是动量方程右边的粘性项。pisoFoam用湍流模型把粘性项模化turbulence->divDevSigma(U)。fvModels.source(U)是源项。
2.solve(UEqn == -fvc::grad(p))是momentumPredictor里面的,不开的话是用不上的,我感觉你是不是把它理解成求解了?
谢谢您的回复。
1.“pisoFoam用湍流模型把粘性项模化turbulence->divDevSigma(U)”具体是咋模化的呢?
2.“fvModels.source(U)是源项”是哪个源项?是体积力、电场力这种?
3.假设我打开了动量预测,这俩==该咋理解呢? - icoFoam是不能用湍流模型的,fvm::laplacian(nu , U)是动量方程右边的粘性项。pisoFoam用湍流模型把粘性项模化turbulence->divDevSigma(U)。fvModels.source(U)是源项。