【CFD理论】梯度项-01
Gradient schemes
∇
ϕ
=
e
1
∂
∂
x
1
ϕ
+
e
2
∂
∂
x
2
ϕ
+
e
3
∂
∂
x
3
ϕ
\nabla \phi=\boldsymbol e_1\frac{\partial}{\partial x_1}\phi+\boldsymbol e_2\frac{\partial}{\partial x_2}\phi+\boldsymbol e_3\frac{\partial}{\partial x_3}\phi
∇ϕ=e1∂x1∂ϕ+e2∂x2∂ϕ+e3∂x3∂ϕ
fvSchemes
gradSchemes
{
default none;
grad(p) <optional limiter> <gradient scheme> <interpolation scheme>;
}
Gauss gradient scheme
gradSchemes
{
default none;
grad(U) Gauss <interpolation scheme>;
}
Interpolation schemes
- linear: cell-based linear
- pointLinear: point-based linear
- leastSquares: Least squares
Least-squares gradient scheme
gradSchemes
{
default none;
grad(U) leastSquares;
}
理论
正交 computing gradient in cartesian grids
(
∂
ϕ
∂
x
)
C
=
ϕ
E
−
ϕ
W
X
E
−
X
W
=
ϕ
N
−
ϕ
S
X
N
−
X
S
(\frac{\partial \phi}{\partial x})_C=\frac{\phi_E-\phi_W}{X_E-X_W}=\frac{\phi_N-\phi_S}{X_N-X_S}
(∂x∂ϕ)C=XE−XWϕE−ϕW=XN−XSϕN−ϕS
非正交 green-gauss gradient
两种计算方法
ϕ
f
\phi_f
ϕf
- face-based
- vertex-based
体心处梯度:
散度定理
⇒
\Rightarrow
⇒
(
∇
ϕ
)
C
=
1
V
C
∑
f
ϕ
f
⋅
S
f
(\nabla \phi)_C=\frac{1}{V_C}\sum_f \phi_f\cdot \boldsymbol S_f
(∇ϕ)C=VC1∑fϕf⋅Sf
ϕ
f
?
\phi_f?
ϕf?
fig. 9.3a,no skewness,
f
=
f
′
f=f'
f=f′
ϕ
f
=
γ
ϕ
C
+
(
1
−
γ
)
ϕ
F
\phi_f=\gamma\phi_C+(1-\gamma)\phi_F
ϕf=γϕC+(1−γ)ϕF
γ
=
∣
∣
r
F
−
r
f
∣
∣
∣
∣
r
F
−
r
C
∣
∣
=
d
F
f
d
F
C
\gamma =\frac{\left||\boldsymbol r_F-r_f\right||}{\left||\boldsymbol r_F-r_C\right||}=\frac{d_{Ff}}{d_{FC}}
γ=∣∣rF−rC∣∣∣∣rF−rf∣∣=dFCdFf
二阶精度:
γ
=
0.5
,
ϕ
f
=
ϕ
P
+
ϕ
N
2
\gamma=0.5,\phi_f=\frac{\phi_P+\phi_N}{2}
γ=0.5,ϕf=2ϕP+ϕN
fig. 9.3c,skewness,
f
≠
f
′
f\neq f'
f=f′
泰勒公式:
f
(
x
)
=
f
(
x
0
)
+
f
′
(
x
0
)
(
x
−
x
0
)
+
f
′
′
(
x
−
x
0
)
2
+
.
.
.
f(x)=f(x_0)+f'(x_0)(x-x_0)+f''(x-x_0)^2+...
f(x)=f(x0)+f′(x0)(x−x0)+f′′(x−x0)2+...
ϕ
f
=
ϕ
f
′
+
c
o
r
r
e
c
t
i
o
n
=
ϕ
f
′
+
(
∇
ϕ
)
f
′
(
r
f
−
r
f
′
)
≈
f
(
x
0
)
+
f
′
(
x
0
)
(
x
−
x
0
)
\begin{aligned} \phi_f&=\phi_{f'}+correction\\ &=\phi_{f'}+(\nabla \phi)_{f'}(\boldsymbol r_f-\boldsymbol r_{f'})\\ &\approx f(x_0)+f'(x_0)(x-x_0)\\ \end{aligned}
ϕf=ϕf′+correction=ϕf′+(∇ϕ)f′(rf−rf′)≈f(x0)+f′(x0)(x−x0)
- 基于体心的需要修正,基于节点的不需要修正,因为需要求 ϕ f \phi_f ϕf
- 用Gauss求体心的梯度,就要知道面心值,而面心值要修正就要知道体心的梯度
1 face-based graient computation
1. 计算 ϕ f ′ = γ ϕ P + ( 1 − γ ) ϕ N 2. 计算 ( ∇ ϕ ) P = 1 V P ∑ f ϕ f ′ ⋅ S f 3. 计算更新的 ϕ f = ϕ f ′ + γ ( ∇ ϕ ) P ⋅ ( r f − r P ) + ( 1 − γ ) ( ∇ ϕ ) N ⋅ ( r f − r N ) 4. 更新 ( ∇ ϕ ) P = 1 V P ∑ f ϕ f ⋅ S f 5. 重复 3 \begin{aligned} &1.计算 \phi_{f'}=\gamma\phi_P+(1-\gamma)\phi_N\\ & 2.计算(\nabla \phi)_P=\frac{1}{V_P}\sum_f\phi_{f'}\cdot\boldsymbol S_f\\ & 3.计算更新的\phi_f=\phi_{f'}+\gamma(\nabla \phi)_P\cdot(\boldsymbol r_f-\boldsymbol r_P)+(1-\gamma)(\nabla\phi)_N \cdot (\boldsymbol r_f - \boldsymbol r_N)\\ & 4.更新(\nabla \phi)_P=\frac{1}{V_P}\sum_f\phi_f\cdot\boldsymbol S_f\\ & 5.重复3 \end{aligned} 1.计算ϕf′=γϕP+(1−γ)ϕN2.计算(∇ϕ)P=VP1f∑ϕf′⋅Sf3.计算更新的ϕf=ϕf′+γ(∇ϕ)P⋅(rf−rP)+(1−γ)(∇ϕ)N⋅(rf−rN)4.更新(∇ϕ)P=VP1f∑ϕf⋅Sf5.重复3
example1
a.Green-Gauss method with no correction
( ∇ ϕ ) C = 1 V C ∑ f ϕ f ⋅ S f (\nabla \phi)_C=\frac{1}{V_C}\sum_f \phi_f\cdot \boldsymbol S_f (∇ϕ)C=VC1∑fϕf⋅Sf
face centrolids:
f
1
(
8.5
,
11
)
,
f
2
(
10
,
6.5
)
,
f
3
(
14.5
,
7
)
,
f
4
(
17.25
,
11.5
)
,
f
5
(
14.75.15.5
)
,
f
6
(
10.5
,
15.5
)
f_1(8.5,11),f_2(10,6.5),f_3(14.5,7),f_4(17.25,11.5),f_5(14.75.15.5),f_6(10.5,15.5)
f1(8.5,11),f2(10,6.5),f3(14.5,7),f4(17.25,11.5),f5(14.75.15.5),f6(10.5,15.5)
surface vectors:
S
f
1
=
−
6
i
+
j
S_{f1}=-6\boldsymbol i+\boldsymbol j
Sf1=−6i+j
S
f
2
=
−
3
i
−
4
j
S_{f2}=-3\boldsymbol i-4\boldsymbol j
Sf2=−3i−4j
S
f
3
=
4
i
−
5
j
S_{f3}=4\boldsymbol i-5\boldsymbol j
Sf3=4i−5j
S
f
4
=
5
i
−
0.5
j
S_{f4}=5\boldsymbol i-0.5\boldsymbol j
Sf4=5i−0.5j
S
f
5
=
3
i
+
5.5
j
S_{f5}=3\boldsymbol i+5.5\boldsymbol j
Sf5=3i+5.5j
S
f
6
=
−
3
i
+
3
j
S_{f6}=-3\boldsymbol i+3\boldsymbol j
Sf6=−3i+3j
interpolation factor
(
g
c
)
n
(gc)_n
(gc)n:
(
g
c
)
1
=
0.487
(gc)_1=0.487
(gc)1=0.487
(
g
c
)
2
=
0.427
(gc)_2=0.427
(gc)2=0.427
(
g
c
)
3
=
0.502
(gc)_3=0.502
(gc)3=0.502
(
g
c
)
1
=
0.538
(gc)_1=0.538
(gc)1=0.538
(
g
c
)
1
=
0.492
(gc)_1=0.492
(gc)1=0.492
(
g
c
)
1
=
0.455
(gc)_1=0.455
(gc)1=0.455
ϕ
f
\phi_f
ϕf value:
ϕ
f
1
=
(
g
c
)
1
ϕ
C
+
(
1
−
(
g
c
)
1
)
ϕ
F
=
110.442
\phi_{f1}=(gc)_1\phi_C+(1-(gc)_1)\phi_F=110.442
ϕf1=(gc)1ϕC+(1−(gc)1)ϕF=110.442
ϕ
f
2
=
91.364
\phi_{f2}=91.364
ϕf2=91.364
ϕ
f
3
=
123.674
\phi_{f3}=123.674
ϕf3=123.674
ϕ
f
4
=
206.27
\phi_{f4}=206.27
ϕf4=206.27
ϕ
f
5
=
263.012
\phi_{f5}=263.012
ϕf5=263.012
ϕ
f
5
=
158.28
\phi_{f5}=158.28
ϕf5=158.28
( ∇ ϕ ) C = 1 V C ∑ f ϕ f ⋅ S f = 11.889 i + 12.433 j (\nabla \phi)_C=\frac{1}{V_C}\sum_f \phi_f\cdot \boldsymbol S_f=11.889\boldsymbol i+12.433\boldsymbol j (∇ϕ)C=VC1∑fϕf⋅Sf=11.889i+12.433j
b.Green-Gauss method with correction
-
ϕ f ′ \phi_{f'} ϕf′ value:
ϕ f 1 ′ = ϕ C + ϕ F 1 2 = 111.875 \phi_{f1'}=\frac{\phi_C+\phi_{F1}}{2}=111.875 ϕf1′=2ϕC+ϕF1=111.875
ϕ f 2 ′ = 101 \phi_{f2'}=101 ϕf2′=101
ϕ f 3 ′ = 123.5 \phi_{f3'}=123.5 ϕf3′=123.5
ϕ f 4 ′ = 209.5 \phi_{f4'}=209.5 ϕf4′=209.5
ϕ f 5 ′ = 261.5 \phi_{f5'}=261.5 ϕf5′=261.5
ϕ f 6 ′ = 158.5 \phi_{f6'}=158.5 ϕf6′=158.5 -
( ∇ ϕ ) C = 1 V C ∑ f ϕ f ′ ⋅ S f = 11.53 i + 11.826 j (\nabla \phi)_C=\frac{1}{V_C}\sum_{f} \phi_{f'}\cdot \boldsymbol S_f=11.53\boldsymbol i+11.826\boldsymbol j (∇ϕ)C=VC1∑fϕf′⋅Sf=11.53i+11.826j
-
ϕ f \phi_{f} ϕf value:
ϕ f 1 = ϕ f 1 ′ + 0.5 ∗ [ ( ∇ ϕ ) C + ( ∇ ϕ ) F 1 ] ⋅ [ r f − 0.5 ∗ ( r C + r F ) ] = 111.875 + 3.7435 = 115.6185 \phi_{f1}=\phi_{f1'}+0.5*[(\nabla\phi)_C+(\nabla \phi)_{F1}]\cdot[\boldsymbol r_f-0.5*(\boldsymbol r_C+\boldsymbol r_F)]=111.875+3.7435=115.6185 ϕf1=ϕf1′+0.5∗[(∇ϕ)C+(∇ϕ)F1]⋅[rf−0.5∗(rC+rF)]=111.875+3.7435=115.6185
ϕ f 2 = 91.911 \phi_{f2}=91.911 ϕf2=91.911
ϕ f 3 = 115.764 \phi_{f3}=115.764 ϕf3=115.764
ϕ f 4 = 224.097 \phi_{f4}=224.097 ϕf4=224.097
ϕ f 5 = 265.566 \phi_{f5}=265.566 ϕf5=265.566
ϕ f 6 = 176.046 \phi_{f6}=176.046 ϕf6=176.046 -
( ∇ ϕ ) C = 1 V C ∑ f ϕ f ⋅ S f = 11.614 i + 13.76 j (\nabla \phi)_C=\frac{1}{V_C}\sum_{f} \phi_{f}\cdot \boldsymbol S_f=11.614\boldsymbol i+13.76\boldsymbol j (∇ϕ)C=VC1∑fϕf⋅Sf=11.614i+13.76j
2.vertex-based gradient computation
ϕ
n
=
∑
k
=
1
N
B
(
n
)
ϕ
F
k
∣
∣
r
n
−
r
F
k
∣
∣
∑
k
=
1
N
B
(
n
)
1
∣
∣
r
n
−
r
F
k
∣
∣
\phi_n=\frac{\sum_{k=1}^{NB(n)}\frac{\phi_{F_k}}{\left||\boldsymbol r_n-\boldsymbol r_{F_k}\right||}}{\sum_{k=1}^{NB(n)}\frac{1}{\left||\boldsymbol r_n-\boldsymbol r_{F_k}\right||}}
ϕn=∑k=1NB(n)∣∣rn−rFk∣∣1∑k=1NB(n)∣∣rn−rFk∣∣ϕFk
ϕ
f
=
ϕ
n
1
+
ϕ
n
2
2
\phi_f=\frac{\phi_{n1}+\phi_{n2}}{2}
ϕf=2ϕn1+ϕn2
补充学习
fluid mechanics 101 26-28
- GreenGaussGradient
- LeastSquaresGradient
- NodeBasedGradient