Error message

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls in menu_set_active_trail() (line 2405 of /home/www/rheoworks/includes/menu.inc).

Code of the Week #6: laplacian(rAU, p) linear corrected

在 system/fvSchemes 里,经常见到

laplacianSchemes
{
    laplacian(rAU, p) Gauss linear corrected;
}

laplacianSchemes 是在 system/fvSchemes 文件里的子字典,指定 laplacian 项的离散格式,其语法是

laplacianSchemes
{
    default         none;
    laplacian(gamma,phi) Gauss <interpolationScheme> <snGradScheme>;
}

其代表的意义是 $$ \nabla\cdot(\Gamma\nabla \phi) = \Gamma\nabla^2 \phi = \Gamma\left(\frac{\partial^2}{\partial x_1^2} \phi + \frac{\partial^2}{\partial x_2^2} \phi + \frac{\partial^2}{\partial x_3^2} \phi\right) $$

FVM 方法

$$ \nabla\cdot \left( \Gamma \nabla \phi \right) = \frac{1}{V}\int_V \nabla\cdot \left( \Gamma \nabla \phi \right)dV = \frac{1}{V} \oint_S \Gamma \nabla \phi d\vec{S} = \frac{1}{V} \sum_i^{\mathrm{nFace}}\left(\nabla{\phi}\right){f,i} \cdot \Gamma_f \vec{S}{f,i} $$

Laplacian 項离散为该控制体所有面的面法向量与該面上 $\phi$ 的梯度的点积之和。从体心到面心需要一种插值方法 (interpolationScheme) 。

面法向梯度 (Surface-normal Gradient) 指的是在 $f$ 面上的法向梯度,面上的 $\phi$ 的梯度可由 基于控制体的梯度插值求得。 $$ \nabla_f^\perp \phi = \vec{n} \cdot \left( \nabla \phi \right)_f $$

schemes-sngrad-schematic|400x400 d 和 n 向量间的夹角代表了非正交性。

工程分析中的网格划分并不总是正交网格。因此,为保证二阶精度,用隐式正交量加上显式非正交修正的方式,即 corrected 格式, $$ \nabla_f^\perp \phi = \underbrace{\alpha \frac{\phi_P - \phi_N}{| \vec{d} |}}{\mathrm{implicit}} + \underbrace{\left( \hat{\vec{n}} - \alpha \hat{\vec{d}} \right) \cdot \left( \nabla \phi \right)_f}{\mathrm{explicit\ correction}} $$\ 式中, $\alpha = \frac{1}{\cos(\theta)}$

当非正交角 $\alpha$ 增加时,修正量也增加。当 $\alpha \rightarrow 90^\circ$ ,显式修正量可能会很大以致方程的解不稳定。这时,可以在其格式前面增加 limited 字段,但还需要系数 $\psi \in [0,\,1]$ , $$ \psi = \begin{cases} \begin{array}{ll}% 0 & \text{不修正,相当于 uncorrected}\\ 0.333 & \text{非正交修正} \leqslant 0.5\times 正交量\\ 0.5 & \text{非正交修正} \leqslant 正交量\\ 1 & \text{非正交修正,相当于 corrected} \end{array} \end{cases} $$

一般情况下, $\psi$ 取 0.33 或 0.5,0.33 提供较好的稳定性,0.5 提供较高的精度。如果 $\nabla\cdot(\Gamma\nabla \phi)$ 需要考虑非正交修正,其离散格式可按以下指定:

laplacianSchemes
{
    //default         Gauss linear uncorrected;
    laplacian(gamma,phi) Gauss linear limited corrected 0.33;
}

在旧的版本中 (如 ext-3.1),设置为

laplacianSchemes
{
    //default         Gauss linear uncorrected;
    laplacian(gamma,phi) Gauss linear limited 0.33;
}

参考 1. Surface-normal gradient schemes

  1. Corrected surface-normal gradient scheme

讨论请至 forum.cfdwired.com