凸多边形/多面体上线性函数平均值的分解(积分点和积分权重)
背景
在一般凸多边形或者多面体单元的二阶精度的有限体积格式,例如MUSCL,或者DG格式,需要在单元边界的中点上取数值通量,权重用于稳定性和保正性的证明。下面是给出一般凸多胞体(多边形或者多面体)的积分点和权重的推导。
结论
设在单元(控制体)ViV_iVi 上守恒量UUU的平均值为UiU_iUi ,在单元ViV_iVi 上重构的线性函数为,
U(x)=Ui+∇U⋅(x−xi)
U(x) = U_i + \nabla U \cdot(\boldsymbol{x}-\boldsymbol{x}_i)
U(x)=Ui+∇U⋅(x−xi)
其中xi\boldsymbol{x}_ixi 是控制体ViV_iVi 的重心。控制点xijx_{ij}xij 为控制体ViV_iVi 的边界SijS_{ij}Sij 的重心,下标 j∈N(i)j \in N(i)j∈N(i) ,N(i)N(i)N(i) 表示单元ViV_iVi 的邻居指标集合。控制点的权重wijw_{ij}wij 满足,
∑j∈N(i)wij=1(1)
\sum_{j \in N(i)} w_{ij}=1 \tag{1}
j∈N(i)∑wij=1(1)
其中权重
wij=(xij−xi)⋅nij∣Sij∣D∣Vi∣(2)
w_{ij} = \frac{(\boldsymbol{x}_{ij}-\boldsymbol{x}_i)\cdot\boldsymbol{n}_{ij}|S_{ij}|}{D|V_i|} \tag{2}
wij=D∣Vi∣(xij−xi)⋅nij∣Sij∣(2)
其中,nij\boldsymbol{n}_{ij}nij 是边界SijS_{ij}Sij 指向单元外部的单位法向量,∣Sij∣|S_{ij}|∣Sij∣ 是边界SijS_{ij}Sij 的长度或者面积。在几何上(xij−xi)⋅nij(\boldsymbol{x}_{ij}-\boldsymbol{x}_i)\cdot\boldsymbol{n}_{ij}(xij−xi)⋅nij 表示重心xix_ixi 到SijS_{ij}Sij 所在直线或者平面上的距离。
线性函数U(x)U(x)U(x) 的数值积分满足,
Ui=∑jwijUij(3)
U_i = \sum_{j} w_{ij}U_{ij} \tag{3}
Ui=j∑wijUij(3)
其中,Uij=U(xij)U_{ij}=U(\boldsymbol{x}_{ij})Uij=U(xij) 。
证明
预备知识
Gauss-Green 定理
对于向量函数F∈Rn\boldsymbol{F}\in \mathbb{R}^nF∈Rn ,在区域Ω\OmegaΩ 上,有Gauss-Green公式,
∫Ω∇⋅Fdx=∫∂ΩF⋅ndS(x)(4)
\int_{\Omega} \nabla \cdot \boldsymbol{F} d\boldsymbol{x} =\int_{\partial \Omega} \boldsymbol{F} \cdot \boldsymbol{n} dS(\boldsymbol{x}) \tag{4}
∫Ω∇⋅Fdx=∫∂ΩF⋅ndS(x)(4)
Gauss-Green 变形公式
对于标量函数u,vu,vu,v ,变形公式为
∫Ω∇uvdx=−∫Ωu∇vdx+∫∂Ωuvndx(5)
\int_{\Omega} \nabla u v d \boldsymbol{x} = -\int_{\Omega} u \nabla v d \boldsymbol{x} + \int_{\partial \Omega} u v \boldsymbol{n} d \boldsymbol{x} \tag{5}
∫Ω∇uvdx=−∫Ωu∇vdx+∫∂Ωuvndx(5)
证明结论(1)(2)
多胞体的重心公式满足
xi=1∣Vi∣∫VixdV(6)
\boldsymbol{x}_i = \frac{1}{|V_i|} \int_{V_{i}} \boldsymbol{x} d V \tag{6}
xi=∣Vi∣1∫VixdV(6)
控制体ViV_iVi的体积公式为
∣Vi∣=∫Vi1dV=∫Vi∇⋅xDdV=1D∫∂Vix⋅ndS=1D∑jxij⋅nij∣Sij∣(7)
|V_i|= \int_{V_i} 1 dV = \int_{V_i} \frac{\nabla\cdot \boldsymbol{x}}{D}dV = \frac{1}{D}\int_{\partial V_i} \boldsymbol{x} \cdot \boldsymbol{n} dS = \frac{1}{D} \sum_j \boldsymbol{x}_{ij} \cdot \boldsymbol{n}_{ij}|S_{ij}| \tag{7}
∣Vi∣=∫Vi1dV=∫ViD∇⋅xdV=D1∫∂Vix⋅ndS=D1j∑xij⋅nij∣Sij∣(7)
这里倒数第二个等号使用了Gauss-Green公式(4),导数第一个等号成立的是因为边界SijS_{ij}Sij是线性函数,在边界上取重心点就可以求出在整个边界上的积分,后面在单元边界∂Vi\partial V_i∂Vi上离散时都会使用到,下面再赘述。
单元的重心xi\boldsymbol{x}_ixi 是一个常数,因而∇⋅xi=0\nabla \cdot \boldsymbol{x}_i =0∇⋅xi=0 , 再套用公式(7)可以得到
0=∫Vi0dV=1D∫Vi∇⋅xidV=1D∑jxi⋅nij∣Sij∣(8)
0 = \int_{V_i}0 d V = \frac{1}{D}\int_{V_i} \nabla\cdot\boldsymbol{x}_i d V = \frac{1}{D} \sum_j \boldsymbol{x}_i \cdot \boldsymbol{n}_{ij}|S_{ij}| \tag{8}
0=∫Vi0dV=D1∫Vi∇⋅xidV=D1j∑xi⋅nij∣Sij∣(8)
将公式(7)(8)作差得到
∣Vi∣=1D∑jxij⋅nij∣Sij∣−1D∑jxi⋅nij∣Sij∣=1D∑j(xij−xi)⋅nij∣Sij∣
|V_i| = \frac{1}{D} \sum_j \boldsymbol{x}_{ij} \cdot \boldsymbol{n}_{ij}|S_{ij}| - \frac{1}{D} \sum_j \boldsymbol{x}_i \cdot \boldsymbol{n}_{ij}|S_{ij}| = \frac{1}{D} \sum_j (\boldsymbol{x}_{ij}-\boldsymbol{x}_i) \cdot \boldsymbol{n}_{ij}|S_{ij}|
∣Vi∣=D1j∑xij⋅nij∣Sij∣−D1j∑xi⋅nij∣Sij∣=D1j∑(xij−xi)⋅nij∣Sij∣
由此可以得到结论(1)(2).
证明结论(3)
对于标量函数UUU满足
U=1DDU=1D(∇⋅x)U=1D[∇⋅(Ux)−x⋅∇U](9)
U= \frac{1}{D} D U = \frac{1}{D}(\nabla \cdot \boldsymbol{x})U = \frac{1}{D}[\nabla\cdot(U\boldsymbol{x})-\boldsymbol{x}\cdot \nabla U] \tag{9}
U=D1DU=D1(∇⋅x)U=D1[∇⋅(Ux)−x⋅∇U](9)
单元的平均值UiU_iUi 的定义为
Ui=1∣Vi∣∫ViUdV
U_i = \frac{1}{|V_i|}\int_{V_i} U d V
Ui=∣Vi∣1∫ViUdV
代入公式(9)得到
Ui=1D∣Vi∣∫Vi[∇⋅(Ux)−x⋅∇U]dV=1D∣Vi∣[∫Vi∇⋅(Ux)dV−∇U⋅∫VixdV](10)
U_i =\frac{1}{D|V_i|}\int_{V_i} [\nabla\cdot(U\boldsymbol{x})-\boldsymbol{x}\cdot \nabla U] dV =\frac{1}{D|V_i|}[\int_{V_i} \nabla\cdot(U\boldsymbol{x})dV-\nabla U \cdot \int_{V_i} \boldsymbol{x} dV ] \tag{10}
Ui=D∣Vi∣1∫Vi[∇⋅(Ux)−x⋅∇U]dV=D∣Vi∣1[∫Vi∇⋅(Ux)dV−∇U⋅∫VixdV](10)
这里第二项∇U\nabla U∇U 可以放在积分号之外是因为∇U\nabla U∇U 是一个常数。因此对于梯度∇U\nabla U∇U同样有
∇U=1∣Vi∣∫Vi∇UdV=1Vi∫∂ViUndA=1∣Vi∣∑jUijnij∣Sij∣(11)
\nabla U =\frac{1}{|V_i|}\int_{V_i} \nabla U dV = \frac{1}{V_i} \int_{\partial V_i} U \boldsymbol{n} dA =\frac{1}{|V_i|} \sum_j U_{ij}\boldsymbol{n}_{ij}|S_{ij}| \tag{11}
∇U=∣Vi∣1∫Vi∇UdV=Vi1∫∂ViUndA=∣Vi∣1j∑Uijnij∣Sij∣(11)
这里第二个等号使用到了Gauss-Green公式的变形公式(5).
公式(10)的第一项应用Gauss-Green公式(4),第二项代入重心公式(6),可以得到
Ui=1D∣Vi∣[∫∂ViUx⋅ndS−∇U⋅xi]
U_i = \frac{1}{D|V_i|}\left [ \int_{\partial V_i} U \boldsymbol{x} \cdot \boldsymbol{n} dS -\nabla U \cdot \boldsymbol{x}_i\right]
Ui=D∣Vi∣1[∫∂ViUx⋅ndS−∇U⋅xi]
代入公式(11)可以得到
Ui=1D∣Vi∣[∫∂ViUx⋅ndS−xi⋅∫Vi∇UdV]
U_i = \frac{1}{D|V_i|}\left [ \int_{\partial V_i} U \boldsymbol{x} \cdot \boldsymbol{n} dS -\boldsymbol{x}_i \cdot \int_{V_i} \nabla U dV\right]
Ui=D∣Vi∣1[∫∂ViUx⋅ndS−xi⋅∫Vi∇UdV]
离散之后得到
Ui=1D∣Vi∣[∑jUij(xij⋅nij)∣Sij∣−xi⋅∑jUij∣Sij∣nij]=1D∣Vi∣∑j(xij−xi)⋅nij∣Sij∣Uij=∑jwijUij
U_i = \frac{1}{D|V_i|} \left[ \sum_j U_{ij}(\boldsymbol{x}_{ij}\cdot \boldsymbol{n}_{ij})|S_{ij}|-\boldsymbol{x}_i \cdot \sum_j U_{ij} |S_{ij}|\boldsymbol{n}_{ij} \right] = \frac{1}{D|V_i|} \sum_j (\boldsymbol{x}_{ij}-\boldsymbol{x}_{i})\cdot \boldsymbol{n}_{ij} |S_{ij}|U_{ij}=\sum_j w_{ij}U_{ij}
Ui=D∣Vi∣1[j∑Uij(xij⋅nij)∣Sij∣−xi⋅j∑Uij∣Sij∣nij]=D∣Vi∣1j∑(xij−xi)⋅nij∣Sij∣Uij=j∑wijUij
得证结论(3)(3)(3).
本文探讨了在二阶精度的有限体积方法中,如MUSCL和DG格式下,如何在凸多边形或多面体单元边界取数值通量并确定权重,以保证稳定性与正则性。通过Gauss-Green定理和重心公式推导出积分点权重的计算方法。
918

被折叠的 条评论
为什么被折叠?



