766 lines
30 KiB
TeX
766 lines
30 KiB
TeX
% Copyright (c) 2014,2016,2018 Casper Ti. Vector
|
|
% Public domain.
|
|
|
|
\chapter{多面体网格上线性精确的菱形格式}
|
|
|
|
本章和下一章主要研究多面体网格上扩散方程的菱形格式.
|
|
菱形格式的构造主要分为两个步骤, 第一步是构造网格面法向流的表达式,
|
|
将法向流表示为两侧单元中心值和面上顶点值的组合,
|
|
第二步是构造面上顶点值的插值公式, 将顶点值表示为周围单元中心值的组合, 从而得到单元中心型有限体积格式.
|
|
我们在这一章基于线性精确(Linearity-preserving)准则推导了菱形格式,
|
|
将网格面法向流表示为面两侧单元中心值和顶点值的组合.
|
|
在下一章研究线性精确的顶点插值算法.
|
|
|
|
|
|
|
|
\section{模型与记号}
|
|
我们考虑如下扩散问题
|
|
\begin{align}
|
|
\label{ch2:model} -{\mbox{div}} ({\Lambda} \nabla u ) = f, &\quad \mbox{在}\,\Omega\,\mbox{中}, \\
|
|
\label{ch2:Dirichletbd} u=g_D, &\quad \mbox{在}\,\partial \Omega\,\mbox{上},
|
|
\end{align}
|
|
其中${\Lambda}(\bm x)$: $\Omega\rightarrow {\mathbb R}^{3\times 3}$是一个对称正定扩散张量;
|
|
$f$是源项; $\Omega$是$ \mathbb{R}^3$中多面体有界闭区域, 边界记为$\partial \Omega$;
|
|
$g_D$是一个给定的标量函数, 它在$\partial \Omega$上几乎处处有定义.
|
|
为简化讨论, 我们仅考虑Dirichlet边界条件.
|
|
|
|
我们引入以下记号:
|
|
\begin{itemize}
|
|
\item $\mm =\{K\}$是$\Omega$中的单元的集合. 对于$K\in\mm$, 令$\partial K$, $\bm{x}_{K}$, $|K|$以及$h_K$分别表示单元边界, 单元中心, 单元测度(体积)以及单元直径. 定义$h=\max_{K\in\mm} h_K$表示网格尺寸. 令$u_{K}$与$\Lambda_{K}$表示$u$和$\Lambda$在$\bm{x}_{K}$处的近似值;
|
|
\item $\mms{ =\{\sigma\}}$是$\bar\Omega$中的面的集合. 令$\mms^{int}=\mms\cap\Omega$并且$\mms^{ext}=\mms\cap \partial \Omega$. 对于$K\in\mm$, 存在一个$\mms$的子集$\mms_K$, 使得$\partial K=\bigcup\limits_{\sigma\in\mms_K}\bar\sigma$. 对于$\sigma\in\mms_{K}$, 令$\bm{n}_{K,\sigma}$, $\bm{x}_{\sigma}$以及$|\sigma|$分别表示单元$K$在面$\sigma$上的单位外法向量, 面中心以及面测度(面积). 记扩散流向量为$\bm{F}=-\Lambda\nabla u $. 记法向流$\int_{\sigma}\bm{F}\cdot\bm{n}_{K,\sigma}\diff s$的近似值为$F_{K,\sigma}$;
|
|
\item ${\mmv=\{\bm x_v\}}$是顶点的集合. 对于$\sigma\in\mms_K\cap\mms_L$, 假设面$\sigma$的顶点为$\bm{x}_{\sigma,i}( 1 \le i \le N_{\sigma})$, 排列顺序规定为, 从单元$L$往单元$K$看, 顶点按逆时针排序. 令$\mmv_{\sigma} = \{\bm{x}_{\sigma,i},i=1,\cdots,N_{\sigma}\}$表示面$\sigma$的顶点集合. 令$u_{\sigma,i}$表示$u$在$\bm{x}_{\sigma,i}$处的近似值.
|
|
\end{itemize}
|
|
在单元$K$上对扩散方程\eqref{ch2:model}积分, 应用高斯散度定理, 我们得到
|
|
\begin{equation*}
|
|
\sum_{\sigma\in\mms_{K}} \int_{\sigma}\bm{F}\cdot\bm{n}_{K,\sigma} \diff s
|
|
=
|
|
\int_{K} f \diff \bm{x}.
|
|
\end{equation*}
|
|
我们将扩散方程单元中心型有限体积格式描述为:
|
|
寻找$\{u_K, K\in\mm\}$, 使得
|
|
\begin{equation}
|
|
\begin{cases}
|
|
\displaystyle \sum_{\sigma \in \mms_{K}} F_{K,\sigma} = \int_{K} f \diff \bm{x}, & \forall K \in \mm, \\
|
|
\displaystyle F_{K,\sigma}+F_{L,\sigma}=0, & \forall \sigma \in \mms_K \cap \mms_L.
|
|
\end{cases}
|
|
\end{equation}
|
|
这里, $F_{K,\sigma}$是法向流的逼近, 上面第二个等式表示法向流连续.
|
|
接下来推导菱形格式.
|
|
|
|
|
|
|
|
|
|
|
|
\section{分片线性逼近}
|
|
\label{ch2:sec:linapp}
|
|
|
|
为了推导菱形格式, 我们首先需要分片线性逼近, 这已在一些文献中做过了研究, 例如\parencite{Miao2022,Dong2022}.
|
|
在此, 为了使本文自成体系, 我们给出一个简短的描述并提供一个简单的公式.
|
|
我们使用这种分片线性逼近, 推导了线性精确的法向流表达式以及线性精确的节点插值算法.
|
|
从现在开始, 我们仅限于讨论网格面是平面的情形, 而非平面的处理将在第\ref{ch2:sec:nonplanar}节中考虑.
|
|
|
|
|
|
\begin{figure}[htbp]
|
|
\centering
|
|
\def\mpgw{0.36\textwidth}
|
|
\begin{minipage}[b]{\mpgw}
|
|
\centering
|
|
\includegraphics[width=\textwidth]{../img/tkz-lsdslocstcl-f1.eps}
|
|
\end{minipage}
|
|
\caption{内部面$\sigma$周围的局部结构和记号.}
|
|
\label{ch2:fig:localstencil}
|
|
\end{figure}
|
|
|
|
|
|
|
|
考虑一个内部面$\sigma \in \mathcal{S}^{int}$, 记其两侧单元为$K$和$L$(见图\ref{ch2:fig:localstencil}).
|
|
我们在$\sigma$两侧引入关于$u$的分片线性逼近:
|
|
\begin{equation}
|
|
u_{h}(\bm x) = \bm g_{P} \cdot \bm x + d_{P}, \quad \bm x \in P,
|
|
\quad P=K,L,
|
|
\end{equation}
|
|
其中$\bm g_{P}$表示$u_{h}$的梯度, 因$u_{h}$为分片线性函数, $\bm g_{P}$为分片常数.
|
|
根据扩散方程的法向流连续以及解连续可以推出
|
|
\begin{equation}
|
|
\label{ch2:eq:gradrelation}
|
|
\begin{pmatrix}
|
|
\bm{t}_{\sigma ,1}^{T}
|
|
\\
|
|
\bm{t}_{\sigma ,2}^{T}
|
|
\\
|
|
\bm{n}_{K,\sigma}^{T}\Lambda _{K}
|
|
\end{pmatrix}
|
|
\bm{g}_{K} =
|
|
\begin{pmatrix}
|
|
\bm{t}_{\sigma ,1}^{T}
|
|
\\
|
|
\bm{t}_{\sigma ,2}^{T}
|
|
\\
|
|
\bm{n}_{K,\sigma}^{T}\Lambda _{L}
|
|
\end{pmatrix}
|
|
\bm{g}_{L},
|
|
\end{equation}
|
|
其中$\bm{t}_{\sigma ,1}$与$\bm{t}_{\sigma ,2}$是面$\sigma$上的任意两个满足
|
|
$\bm{t}_{\sigma ,1}\times \bm{t}_{\sigma ,2} = \gamma \bm{n}_{K,
|
|
\sigma}$的切向量. 其中的常数$\gamma$不为零.
|
|
我们有以下命题.
|
|
\begin{proposition}
|
|
\label{ch2:eq:gradtransexp0}
|
|
代数系统\eqref{ch2:eq:gradrelation}中的两个矩阵非奇异, 代数系统\eqref{ch2:eq:gradrelation}可以改写为
|
|
\begin{equation}
|
|
\label{ch2:eq:gradtrans}
|
|
\bm{g}_{L} = \mathbb{T}_{L,K}\bm{g}_{K},
|
|
\end{equation}
|
|
其中
|
|
\begin{equation}
|
|
\label{ch2:gradtransmatrix}
|
|
\mathbb{T}_{L,K} =
|
|
\begin{pmatrix}
|
|
\bm{t}_{\sigma ,1}^{T}
|
|
\\
|
|
\bm{t}_{\sigma ,2}^{T}
|
|
\\
|
|
\bm{n}_{K,\sigma}^{T}\Lambda _{L}
|
|
\end{pmatrix}
|
|
^{-1}
|
|
\begin{pmatrix}
|
|
\bm{t}_{\sigma ,1}^{T}
|
|
\\
|
|
\bm{t}_{\sigma ,2}^{T}
|
|
\\
|
|
\bm{n}_{K,\sigma}^{T}\Lambda _{K}
|
|
\end{pmatrix}
|
|
.
|
|
\end{equation}
|
|
进一步地
|
|
\begin{equation}
|
|
\mathbb{T}_{L,K} = \mathbb I_{3}+
|
|
\frac{
|
|
\bm{n}_{K,\sigma} \bm{n}_{K,\sigma}^{T}
|
|
}
|
|
{\bm{n}_{K,\sigma}^{T} \Lambda _{L} \bm{n}_{K,\sigma}} (\Lambda _{K} -
|
|
\Lambda _{L}),
|
|
\end{equation}
|
|
其中$\mathbb I_{3}$表示$3\times 3$单位矩阵.
|
|
\end{proposition}
|
|
{\bf 证明:\ }首先, 注意到扩散张量是对称正定的, 因此$\bm n_{K,\sigma}^{T} \Lambda _{L} \bm n_{K,\sigma} > 0$, $\bm n_{K,\sigma}^{T} \Lambda _{K} \bm n_{K,\sigma} > 0$, 这说明\eqref{ch2:eq:gradrelation}中的矩阵非奇异, 从而第一个结论成立, 代数系统\eqref{ch2:eq:gradrelation}可以改写为\eqref{ch2:eq:gradtrans}.
|
|
其次, 注意到\eqref{ch2:gradtransmatrix}中的矩阵的逆可以表示为
|
|
\begin{equation}
|
|
\begin{pmatrix}
|
|
\bm{t}_{\sigma ,1}^{T}
|
|
\\
|
|
\bm{t}_{\sigma ,2}^{T}
|
|
\\
|
|
\bm{n}_{K,\sigma}^{T}\Lambda _{L}
|
|
\end{pmatrix}
|
|
^{-1} =
|
|
\frac{\left(
|
|
\bm{t}_{\sigma ,2} \times \Lambda _{L}^{T}\bm{n}_{K,\sigma},\
|
|
\Lambda _{L}^{T}\bm{n}_{K,\sigma} \times \bm{t}_{\sigma ,1},\
|
|
\bm{t}_{\sigma ,1} \times \bm{t}_{\sigma ,2}
|
|
\right)
|
|
}{
|
|
(\bm{t}_{\sigma ,1} \times \bm{t}_{\sigma ,2}) \cdot \Lambda _{L}^{T}\bm{n}_{K,\sigma}
|
|
}.
|
|
\end{equation}
|
|
那么将\eqref{ch2:gradtransmatrix}第二个矩阵分裂为两部分, 经过直接计算可得
|
|
\begin{align}
|
|
\label{ch2:eq:gradtransexp}
|
|
\mathbb{T}_{L,K} & =
|
|
\begin{pmatrix}
|
|
\bm{t}_{\sigma ,1}^{T}
|
|
\\
|
|
\bm{t}_{\sigma ,2}^{T}
|
|
\\
|
|
\bm{n}_{K,\sigma}^{T}\Lambda _{L}
|
|
\end{pmatrix}^{-1} \left[
|
|
\begin{pmatrix}
|
|
\bm{t}_{\sigma ,1}^{T}
|
|
\\
|
|
\bm{t}_{\sigma ,2}^{T}
|
|
\\
|
|
\bm{n}_{K,\sigma}^{T}\Lambda _{L}
|
|
\end{pmatrix} +
|
|
\begin{pmatrix}
|
|
\bm{0}
|
|
\\
|
|
\bm{0}
|
|
\\
|
|
\bm{n}_{K,\sigma}^{T}(\Lambda _{K} - \Lambda _{L})
|
|
\end{pmatrix} \right]
|
|
\nonumber
|
|
\\
|
|
& = \mathbb I_{3}+
|
|
\frac{\left (
|
|
\bm{t}_{\sigma ,2} \times \Lambda _{L}^{T}\bm{n}_{K,\sigma},\
|
|
\Lambda _{L}^{T}\bm{n}_{K,\sigma} \times \bm{t}_{\sigma ,1},\
|
|
\bm{t}_{\sigma ,1} \times \bm{t}_{\sigma ,2}
|
|
\right )
|
|
}{
|
|
(\bm{t}_{\sigma ,1} \times \bm{t}_{\sigma ,2}) \cdot \Lambda _{L}^{T}\bm{n}_{K,\sigma}
|
|
} \bm e_{3} \bm{n}_{K,\sigma}^{T}(\Lambda _{K} - \Lambda _{L})
|
|
\nonumber
|
|
\\
|
|
&= \mathbb I_{3}+
|
|
\frac{
|
|
\bm{n}_{K,\sigma} \bm{n}_{K,\sigma}^{T}
|
|
}
|
|
{\bm{n}_{K,\sigma}^{T} \Lambda _{L} \bm{n}_{K,\sigma}} (\Lambda _{K} -
|
|
\Lambda _{L}),
|
|
\end{align}
|
|
其中$\mathbb I_{3}$表示$3\times 3$单位矩阵,
|
|
$\bm{e}_{3}$表示$\mathbb{I}_{3}$的最后一列,
|
|
$\bm 0$表示所有分量都为$0$的向量,
|
|
从而命题得证. \qed
|
|
|
|
|
|
命题\ref{ch2:eq:gradtransexp0}的第一个结论说明, 左右两侧的梯度不是独立的, 只要一侧的梯度确定了,
|
|
另一侧的梯度也唯一确定. 进一步地, 只要一侧的线性函数已知, 另一侧的线性函数也唯一确定.
|
|
|
|
命题\ref{ch2:eq:gradtransexp0}的第二个结论说明, 矩阵$\mathbb{T}_{L,K}$与$\bm{t}_{\sigma ,1}$和$\bm{t}_{\sigma ,2}$的选取无关,
|
|
只要$\bm{t}_{\sigma ,1}$和$\bm{t}_{\sigma ,2}$线性无关并且都与$\bm{n}_{K,\sigma}$垂直, $\mathbb{T}_{L,K}$总是不变的.
|
|
|
|
此外, 由命题\ref{ch2:eq:gradtransexp0}的第二个结论, 我们可以看出,
|
|
矩阵$\mathbb{T}_{L,K}$是单位矩阵当且仅当$\Lambda _{K}^{T} \bm n_{K,\sigma}$和$\Lambda _{L}^{T} \bm n_{L,\sigma}$大小相等方向相反.
|
|
通常称$\Lambda _{K}^{T} \bm n_{K,\sigma}$和$\Lambda _{L}^{T} \bm n_{L,\sigma}$为联合法向量, 我们称矩阵$\mathbb{T}_{L,K}$为单元$K$到单元$L$的过渡矩阵.
|
|
|
|
|
|
|
|
|
|
\section{菱形格式法向流的构造}
|
|
|
|
|
|
我们考虑一个内部面$\sigma \in \mathcal{S}_{K} \cap \mathcal{S}_{L}$周围的菱形结构(见图\ref{ch2:fig:diamondstructure}).
|
|
菱形单元定义为
|
|
\begin{equation}
|
|
D_{\sigma}
|
|
=
|
|
D_{K,\sigma} \cup D_{L,\sigma},
|
|
\end{equation}
|
|
其中$D_{K,\sigma}$是$\bm{x}_{K}$和$\sigma$的包络体, $D_{L,\sigma}$定义类似.
|
|
令$|D_{\sigma }|$, $|D_{K,\sigma }|$以及$|D_{L,\sigma }|$分别表示$D_{\sigma }$, $D_{K,\sigma }$以及$D_{L,\sigma }$的体积.
|
|
如图\ref{ch2:fig:diamondstructure}所示,
|
|
对于$i=1,2,\cdots ,N_{\sigma}$, 令$\bm N_{K,i}$和$\bm N_{L,i}$分别表示$D_{\sigma}$在三角形面$\triangle \bm x_{K}\bm x_{\sigma ,i}\bm x_{\sigma ,i+1}$和$\triangle \bm x_{L}\bm x_{\sigma ,i}\bm x_{\sigma ,i+1}$的外法向量, 长度为三角形的面积.
|
|
这里, 我们令$i$为周期指标, 即$\bm x_{\sigma ,N_{\sigma }+1}=\bm x_{\sigma ,1}$.
|
|
|
|
|
|
\begin{figure}[htbp]
|
|
\centering
|
|
\def\mpgw{0.47\textwidth}
|
|
\begin{minipage}[b]{\mpgw}
|
|
\centering
|
|
\includegraphics[width=0.75\textwidth]{../img/tkz-lsdslocstcl-f2.eps}
|
|
\end{minipage}
|
|
\caption{内部面$\sigma$周围的局部结构和记号.}
|
|
\label{ch2:fig:diamondstructure}
|
|
\end{figure}
|
|
|
|
|
|
我们定义以下记号
|
|
\begin{equation}
|
|
\label{ch2:eq:fournormal}
|
|
\bm N_{\sigma ,i} = \bm N_{K,i} + \bm N_{K,i-1} +
|
|
\bm N_{L,i} + \bm N_{L,i-1},\quad i=1,2,\cdots ,N_{
|
|
\sigma}.
|
|
\end{equation}
|
|
\begin{equation*}
|
|
\begin{aligned}
|
|
&\lambda _{K,\sigma}^{(n)} = |\sigma |^{2}\bm n_{K,\sigma}^{T}
|
|
\Lambda _{K} \bm n_{K,\sigma},\quad \lambda _{L,\sigma}^{(n)} = |
|
|
\sigma |^{2}\bm n_{L,\sigma}^{T} \Lambda _{L} \bm n_{L,\sigma},
|
|
\\
|
|
&\lambda _{K,\sigma}^{(i)} = |\sigma |\bm n_{K,\sigma}^{T} \Lambda _{K}
|
|
\bm N_{\sigma ,i},\quad \lambda _{L,\sigma}^{(i)} = |\sigma |\bm n_{L,
|
|
\sigma}^{T} \Lambda _{L} \bm N_{\sigma ,i},\quad i=1,2,\cdots ,N_{
|
|
\sigma}, \\
|
|
&\eta _{K,\sigma}^{(i)} = |\sigma |\bm n_{K,\sigma}^{T} \Lambda _{K}
|
|
\bm N_{K ,i},\quad \eta _{L,\sigma}^{(i)} = |\sigma |\bm n_{L,
|
|
\sigma}^{T} \Lambda _{L} \bm N_{L ,i},\quad i=1,2,\cdots ,N_{
|
|
\sigma}.
|
|
\end{aligned}
|
|
\end{equation*}
|
|
那么, 我们有
|
|
\begin{equation}
|
|
\sum_{i=1}^{N_{\sigma}} \bm N_{K,i}=-|\sigma| \bm n_{K,\sigma},\quad
|
|
\sum_{i=1}^{N_{\sigma}} \bm N_{L,i}=-|\sigma| \bm n_{L,\sigma},
|
|
\end{equation}
|
|
以及
|
|
\begin{equation}
|
|
\sum_{i=1}^{N_{\sigma}} \eta_{K,\sigma}^{(i)}
|
|
=
|
|
- \lambda_K^{(n)},\quad
|
|
\sum_{i=1}^{N_{\sigma}} \eta_{L,\sigma}^{(i)}
|
|
=
|
|
- \lambda_L^{(n)}.
|
|
\end{equation}
|
|
接下来我们给出两种方式推导内部面法向流的菱形格式.
|
|
|
|
|
|
\subsection{第一种菱形格式}
|
|
|
|
在这里我们使用线性精确方法,
|
|
假设解是分片线性的, 分片线性逼近记为$u_h$,
|
|
那么梯度是分片常数,
|
|
将两侧单元的梯度表示为单元中心值和顶点值的组合,
|
|
根据流连续条件推导出法向流的表达式.
|
|
我们使用\ref{ch2:sec:linapp}节的分片线性逼近, 给出第一种菱形格式法向流的推导.
|
|
根据命题\ref{ch2:eq:gradtransexp0}, 只要一侧的梯度确定了, 另一侧的梯度也唯一确定.
|
|
|
|
|
|
|
|
|
|
一方面, 我们对$\nabla u_{h}$在区域$D_{\sigma}$上积分, 使用高斯格林公式,
|
|
并注意到$u_{h}$在$D_{\sigma}$的两侧是分片线性函数, 我们有
|
|
\begin{align}
|
|
\label{ch2:eq:greenform}
|
|
&\frac{1}{|D_{\sigma }|} \int _{D_{\sigma }} \nabla u_{h}(\bm x)\,
|
|
\mathrm{d}\bm x
|
|
\nonumber \\
|
|
&\quad = \frac{1}{|D_{\sigma }|} \int _{\partial D_{\sigma }}
|
|
u_{h}(\bm x) \bm \nu (\bm x)\,\mathrm{d}s
|
|
\nonumber
|
|
\\
|
|
&\quad = \frac{1}{|D_{\sigma }|} \left ( \sum _{i=1}^{N_{\sigma }} \int _{
|
|
\triangle \bm x_{K}\bm x_{\sigma ,i}\bm x_{\sigma ,i+1}} u_{h}(\bm x)
|
|
\bm \nu (\bm x)\,\mathrm{d}s
|
|
+ \sum _{i=1}^{N_{\sigma }} \int _{
|
|
\triangle \bm x_{L}\bm x_{\sigma ,i}\bm x_{\sigma ,i+1}} u_{h}(\bm x)
|
|
\bm \nu (\bm x)\,\mathrm{d}s \right )
|
|
\nonumber
|
|
\\
|
|
&\quad = \frac{1}{3|D_{\sigma }|}\left ( \sum _{i=1}^{N_{\sigma }} (u_{h}(
|
|
\bm x_{K}) + u_{h}(\bm x_{\sigma ,i}) + u_{h}(\bm x_{\sigma ,i+1}))
|
|
\bm N_{K,i} \right .
|
|
\nonumber\\
|
|
&\qquad {} + \left . \sum _{i=1}^{N_{\sigma }} (u_{h}(\bm x_{L}) + u_{h}(\bm x_{
|
|
\sigma ,i}) + u_{h}(\bm x_{\sigma ,i+1})) \bm N_{L,i} \right )
|
|
\nonumber
|
|
\\
|
|
&\quad = \frac{1}{3|D_{\sigma }|} \left ( (u_{h}(\bm x_{L})-u_{h}(\bm x_{K}))|
|
|
\sigma | \bm n_{K,\sigma } + \sum _{i=1}^{N_{\sigma }} u_{h}(\bm x_{
|
|
\sigma ,i}) \bm N_{\sigma ,i} \right ),
|
|
\end{align}
|
|
其中$\bm \nu (\bm x)$是$D_{\sigma}$的单位外法向量, $\bm N_{\sigma ,i}$由等式\eqref{ch2:eq:fournormal}定义.
|
|
|
|
|
|
另一方面, 菱形单元$D_{\sigma}$可以分裂为两个子区域, $D_{K,\sigma}$和$D_{L,\sigma}$, 因此我们有
|
|
\begin{align}
|
|
\label{ch2:eq:gradsplit}
|
|
\frac{1}{|D_{\sigma}|} \int _{D_{\sigma}} \nabla u_{h}(\bm x)\,
|
|
\mathrm{d}\bm x =& \frac{1}{|D_{\sigma}|} \left ( \int _{D_{K,\sigma}}
|
|
\nabla u_{h}(\bm x)\,\mathrm{d}\bm x + \int _{D_{L,\sigma}} \nabla u_{h}(
|
|
\bm x)\,\mathrm{d}\bm x \right )
|
|
\nonumber
|
|
\\
|
|
=& \frac{|D_{K,\sigma}|}{|D_{\sigma}|} \bm g_{K} +
|
|
\frac{|D_{L,\sigma}|}{|D_{\sigma}|} \bm g_{L}
|
|
\nonumber
|
|
\\
|
|
=& \left (\frac{|D_{K,\sigma}|}{|D_{\sigma}|} \mathbb I_{3} +
|
|
\frac{|D_{L,\sigma}|}{|D_{\sigma}|} \mathbb T_{L,K} \right )\bm g_{K}
|
|
\nonumber
|
|
\\
|
|
:=& \mathbb G_{L,K} \bm g_{K},
|
|
\end{align}
|
|
其中我们使用了命题\ref{ch2:eq:gradtransexp0}的第一个结论.
|
|
定义两个参数
|
|
\begin{equation*}
|
|
\alpha _{K,\sigma} = \frac{|D_{K,\sigma}|}{|D_{\sigma}|},\quad
|
|
\alpha _{L,\sigma} = \frac{|D_{L,\sigma}|}{|D_{\sigma}|},
|
|
\end{equation*}
|
|
我们有
|
|
\begin{align}
|
|
\mathbb{G}_{L,K} & =
|
|
\begin{pmatrix}
|
|
\bm{t}_{\sigma ,1}^{T}
|
|
\\
|
|
\bm{t}_{\sigma ,2}^{T}
|
|
\\
|
|
\bm{n}_{K,\sigma}^{T}\Lambda _{L}
|
|
\end{pmatrix} ^{-1} \left [ \alpha _{K,\sigma}
|
|
\begin{pmatrix}
|
|
\bm{t}_{\sigma ,1}^{T}
|
|
\\
|
|
\bm{t}_{\sigma ,2}^{T}
|
|
\\
|
|
\bm{n}_{K,\sigma}^{T}\Lambda _{L}
|
|
\end{pmatrix} + \alpha _{L,\sigma}
|
|
\begin{pmatrix}
|
|
\bm{t}_{\sigma ,1}^{T}
|
|
\\
|
|
\bm{t}_{\sigma ,2}^{T}
|
|
\\
|
|
\bm{n}_{K,\sigma}^{T}\Lambda _{K}
|
|
\end{pmatrix} \right ]
|
|
\\
|
|
& =
|
|
\begin{pmatrix}
|
|
\bm{t}_{\sigma ,1}^{T}
|
|
\\
|
|
\bm{t}_{\sigma ,2}^{T}
|
|
\\
|
|
\bm{n}_{K,\sigma}^{T}\Lambda _{L}
|
|
\end{pmatrix} ^{-1}
|
|
\begin{pmatrix}
|
|
\bm{t}_{\sigma ,1}^{T}
|
|
\\
|
|
\bm{t}_{\sigma ,2}^{T}
|
|
\\
|
|
\bm{n}_{K,\sigma}^{T}\Lambda _{\textit{eff}}
|
|
\end{pmatrix},
|
|
\end{align}
|
|
其中
|
|
\begin{equation}
|
|
\label{ch2:eq:Lambdaeff}
|
|
\Lambda _{\textit{eff}} = \alpha _{K,\sigma} \Lambda _{L} + \alpha _{L,
|
|
\sigma} \Lambda _{K}.
|
|
\end{equation}
|
|
类似于\ref{ch2:sec:linapp}节的讨论,
|
|
$\mathbb{G}_{L,K}$也是与$\bm{t}_{\sigma ,1}$和$\bm{t}_{\sigma ,2}$的选取无关.
|
|
由\eqref{ch2:eq:greenform}和\eqref{ch2:eq:gradsplit}, 我们推出
|
|
\begin{equation}
|
|
\label{ch2:eq:gkfinal}
|
|
\bm{g}_{K} = (\mathbb{G}_{L,K})^{-1} \frac{1}{3|D_{\sigma }|} \left ( (u_{h}(
|
|
\bm x_{L})-u_{h}(\bm x_{K}))|\sigma | \bm n_{K,\sigma } + \sum _{i=1}^{N_{
|
|
\sigma }} u_{h}(\bm x_{\sigma ,i}) \bm N_{\sigma ,i} \right ),
|
|
\end{equation}
|
|
以及
|
|
\begin{equation}
|
|
\bm g_L = \mathbb{T}_{L,K}(\mathbb{G}_{L,K})^{-1} \frac{1}{3|D_{\sigma }|} \left ( (u_{h}(
|
|
\bm x_{L})-u_{h}(\bm x_{K}))|\sigma | \bm n_{K,\sigma } + \sum _{i=1}^{N_{
|
|
\sigma }} u_{h}(\bm x_{\sigma ,i}) \bm N_{\sigma ,i} \right ).
|
|
\end{equation}
|
|
注意到
|
|
\begin{equation}
|
|
\int _{\sigma } \bm{F}\cdot \bm{n}_{K,\sigma } \,\mathrm{d}s \approx -|
|
|
\sigma | \bm{n}_{K,\sigma }^{T}\Lambda _{K} \bm g_{K},
|
|
\end{equation}
|
|
以及
|
|
\begin{equation}
|
|
\int _{\sigma } \bm{F}\cdot \bm{n}_{L,\sigma } \,\mathrm{d}s \approx -|
|
|
\sigma | \bm{n}_{L,\sigma }^{T}\Lambda _{L} \bm g_{L},
|
|
\end{equation}
|
|
可得
|
|
\begin{equation}
|
|
\label{ch2:eq:fluximp}
|
|
F_{K,\sigma } = -|\sigma |\bm{n}_{K,\sigma }^{T}\Lambda _{K} (
|
|
\mathbb{G}_{L,K})^{-1} \frac{1}{3|D_{\sigma }|} \left ( (u_{L}-u_{K})|
|
|
\sigma | \bm n_{K,\sigma } + \sum _{i=1}^{N_{\sigma }} u_{\sigma ,i}
|
|
\bm N_{\sigma ,i} \right ),
|
|
\end{equation}
|
|
以及
|
|
\begin{equation}
|
|
\label{ch2:eq:fluximp2}
|
|
F_{L,\sigma } = |\sigma |\bm{n}_{K,\sigma }^{T}\Lambda _{L}
|
|
\mathbb{T}_{L,K} (\mathbb{G}_{L,K})^{-1} \frac{1}{3|D_{\sigma }|}
|
|
\left ( (u_{L}-u_{K})|\sigma | \bm n_{K,\sigma } + \sum _{i=1}^{N_{
|
|
\sigma }} u_{\sigma ,i} \bm N_{\sigma ,i} \right ).
|
|
\end{equation}
|
|
由命题\ref{ch2:eq:gradtransexp0}的第二个结论, 可以直接验证
|
|
\begin{equation}
|
|
\bm{n}_{K,\sigma}^{T}\Lambda _{L} \mathbb{T}_{L,K} = \bm{n}_{K,\sigma}^{T}
|
|
\Lambda _{K},
|
|
\end{equation}
|
|
这意味着法向流的局部连续
|
|
\begin{equation}
|
|
F_{K,\sigma} + F_{L,\sigma} = 0, \quad \sigma \in \mathcal{S}_{K}
|
|
\cap \mathcal{S}_{L}.
|
|
\end{equation}
|
|
|
|
为了获得法向流的显式表达式, 类似于命题\ref{ch2:eq:gradtransexp0}的第二个结论, 我们有
|
|
\begin{equation}
|
|
\label{ch2:eq:gradexp}
|
|
(\mathbb{G}_{L,K})^{-1} = \mathbb I_{3}+
|
|
\frac{
|
|
\bm{n}_{K,\sigma} \bm{n}_{K,\sigma}^{T}
|
|
}
|
|
{\bm{n}_{K,\sigma}^{T} \Lambda _{\textit{eff}} \bm{n}_{K,\sigma}} (
|
|
\Lambda _{L} - \Lambda _{\textit{eff}}).
|
|
\end{equation}
|
|
把\eqref{ch2:eq:gradexp}代入\eqref{ch2:eq:fluximp}, 经过直接计算可得
|
|
\begin{equation}
|
|
\label{ch2:eq:diamondflux}
|
|
F_{K,\sigma} = {\mathcal{K}}_{\textit{eff}} \left [ (u_{K}-u_{L}) - \sum _{i=1}^{N_{
|
|
\sigma}} {\mathcal{D}}_{i} u_{\sigma ,i} \right ],
|
|
\end{equation}
|
|
其中
|
|
\begin{align*}
|
|
{\mathcal{K}}_{\textit{eff}} &= \displaystyle
|
|
\frac{
|
|
\lambda _{K,\sigma}^{(n)} \lambda _{L,\sigma}^{(n)}
|
|
}
|
|
{3|D_{L,\sigma}|
|
|
\lambda _{K,\sigma}^{(n)}
|
|
+
|
|
3|D_{K,\sigma}|
|
|
\lambda _{L,\sigma}^{(n)}},
|
|
\\
|
|
{\mathcal{D}}_{i} &= \displaystyle \frac{1}{|D_{\sigma}|} \left (
|
|
\frac{\lambda _{K,\sigma}^{(i)}}{\lambda _{K,\sigma}^{(n)}} |D_{K,
|
|
\sigma}| -
|
|
\frac{\lambda _{L,\sigma}^{(i)}}{\lambda _{L,\sigma}^{(n)}} |D_{L,
|
|
\sigma}| \right ), \quad i=1,2,\cdots ,N_{\sigma}.
|
|
\end{align*}
|
|
|
|
|
|
|
|
|
|
\subsection{第二种菱形格式}
|
|
|
|
我们研究第二种方式构造菱形格式法向流. 首先构造单侧流, 即用单侧单元的信息构造法向流的表达式.
|
|
然后使用两个单侧流进行加权组合获得唯一的法向流.
|
|
|
|
|
|
对$\nabla u_h$在区域$D_{K,\sigma}$上积分,
|
|
使用高斯格林公式, 并注意到$u_h$在$D_{K,\sigma}$上是线性函数, 我们有
|
|
\begin{align}
|
|
& \bm g_K = \frac{1}{|D_{K,\sigma}|} \int_{D_{K,\sigma}} \nabla u_h(\bm x) \diff \bm x \nonumber\\
|
|
& \qquad = \frac{1}{|D_{K,\sigma}|} \int_{\partial D_{K,\sigma}} u_h(\bm x) \bm \nu(\bm x) \diff s \nonumber\\
|
|
& \qquad = \frac{1}{|D_{K,\sigma}|} \left(
|
|
\sum_{i=1}^{N_{\sigma}} \int _{
|
|
\triangle \bm x_{K}\bm x_{\sigma ,i}\bm x_{\sigma ,i+1}} u_{h}(\bm x)
|
|
\bm \nu (\bm x)\,\mathrm{d}s
|
|
+ \mathbf I_{K,\sigma}
|
|
\right) \nonumber\\
|
|
&\qquad = \frac{1}{|D_{K, \sigma }|}\left( \frac{1}{3}\sum _{i=1}^{N_{\sigma }} (u_{h}(
|
|
\bm x_{K}) + u_{h}(\bm x_{\sigma ,i}) + u_{h}(\bm x_{\sigma ,i+1}))
|
|
\bm N_{K,i} + \mathbf I_{K,\sigma}\right),
|
|
\end{align}
|
|
其中$\bm \nu (\bm x)$是$D_{K, \sigma}$的单位外法向量, 对上式右端最后一项积分使用积分中值定理可得
|
|
\begin{equation*}
|
|
\mathbf I_{K,\sigma} = \int_{\sigma} u_h(\bm x) \bm \nu(\bm x) \diff s
|
|
=u_h(\bm x_{\bar \sigma}) |\sigma| \bm n_{K,\sigma},
|
|
\end{equation*}
|
|
其中$\bm x_{\bar \sigma}$为积分中值点.
|
|
|
|
|
|
类似地,
|
|
对$\nabla u_h$在区域$D_{L,\sigma}$上积分可得
|
|
\begin{equation}
|
|
\bm g_L = \frac{1}{|D_{L, \sigma }|}\left( \frac{1}{3}\sum _{i=1}^{N_{\sigma }} (u_{h}(
|
|
\bm x_{L}) + u_{h}(\bm x_{\sigma ,i}) + u_{h}(\bm x_{\sigma ,i+1}))
|
|
\bm N_{L,i} + \mathbf I_{L,\sigma}\right),
|
|
\end{equation}
|
|
其中
|
|
\begin{equation}
|
|
\mathbf I_{L,\sigma} = -\mathbf I_{K,\sigma} = u_h(\bm x_{\bar \sigma}) |\sigma| \bm n_{L,\sigma}.
|
|
\end{equation}
|
|
|
|
|
|
注意到
|
|
\begin{equation}
|
|
\int _{\sigma } \bm{F}\cdot \bm{n}_{K,\sigma } \,\mathrm{d}s \approx -|
|
|
\sigma | \bm{n}_{K,\sigma }^{T}\Lambda _{K} \bm g_{K},
|
|
\end{equation}
|
|
以及
|
|
\begin{equation}
|
|
\int _{\sigma } \bm{F}\cdot \bm{n}_{L,\sigma } \,\mathrm{d}s \approx -|
|
|
\sigma | \bm{n}_{L,\sigma }^{T}\Lambda _{L} \bm g_{L},
|
|
\end{equation}
|
|
可得
|
|
\begin{equation}
|
|
\label{ch2:eq:flux1}
|
|
F_{K,\sigma } = - \frac{1}{|D_{K,\sigma}|} \left( \frac{1}{3}\sum _{i=1}^{N_{\sigma }} (u_{K} + u_{\sigma,i} + u_{\sigma,i+1})
|
|
\eta_{K,\sigma}^{(i)} + u_{\bar \sigma} \lambda_{K,\sigma}^{(n)}\right).
|
|
\end{equation}
|
|
以及
|
|
\begin{equation}
|
|
\label{ch2:eq:flux2}
|
|
F_{L,\sigma } = - \frac{1}{|D_{L,\sigma}|} \left( \frac{1}{3}\sum _{i=1}^{N_{\sigma }} (u_{L} + u_{\sigma,i} + u_{\sigma,i+1})
|
|
\eta_{L,\sigma}^{(i)} + u_{\bar \sigma} \lambda_{L,\sigma}^{(n)}\right).
|
|
\end{equation}
|
|
|
|
|
|
接下来, 根据法向流局部守恒条件确定唯一的流的表达式,
|
|
我们用两侧的单侧流定义唯一的法向流
|
|
\begin{equation}\label{ch2:step3:a1}
|
|
\tilde F_{K,\sigma}={ \mu_{K,\sigma}}F_{K,\sigma}-{
|
|
\mu_{L,\sigma}}F_{L,\sigma}, \quad \tilde F_{L,\sigma}={
|
|
\mu_{L,\sigma}}F_{L,\sigma}-{ \mu_{K,\sigma}}F_{K,\sigma},
|
|
\end{equation}
|
|
其中$\mu_{K,\sigma}$和$\mu_{L,\sigma}$是两个正的待定的参数, 满足
|
|
\begin{equation}
|
|
\label{ch2:unitmu}
|
|
\mu_{K,\sigma}+\mu_{L,\sigma}=1.
|
|
\end{equation}
|
|
显然, 这样定义的法向流满足局部守恒条件
|
|
\begin{equation*}\label{ch2:fluxcont}
|
|
\tilde
|
|
F_{K,\sigma}+\tilde F_{L,\sigma}=0, \ \ \sigma\in \mms_K\cap \mms_L.
|
|
\end{equation*}
|
|
将\eqref{ch2:eq:flux1}和\eqref{ch2:eq:flux2}代入\eqref{ch2:step3:a1}的第一个等式, 我们得到
|
|
\begin{align}\label{ch2:fluxtmp}
|
|
\tilde F_{K,\sigma}
|
|
=&
|
|
- \frac{\mu_{K,\sigma}}{|D_{K,\sigma}|} \left( \frac{1}{3}\sum _{i=1}^{N_{\sigma }} (u_{K} + u_{\sigma,i} + u_{\sigma,i+1})
|
|
\eta_{K,\sigma}^{(i)} + u_{\bar \sigma} \lambda_{K,\sigma}^{(n)}\right)\nonumber \\
|
|
&+
|
|
\frac{\mu_{L,\sigma}}{|D_{L,\sigma}|} \left( \frac{1}{3}\sum _{i=1}^{N_{\sigma }} (u_{L} + u_{\sigma,i} + u_{\sigma,i+1})
|
|
\eta_{L,\sigma}^{(i)} + u_{\bar \sigma} \lambda_{L,\sigma}^{(n)}\right),
|
|
\end{align}
|
|
为了消去面心值, 我们令
|
|
\begin{equation}
|
|
\frac{\lambda_{K,\sigma}^{(n)}} {|D_{K,\sigma }|} \mu_{K,\sigma} =
|
|
\frac{\lambda_{L,\sigma}^{(n)}} {|D_{L,\sigma }|} \mu_{L,\sigma},
|
|
\end{equation}
|
|
并且使用\eqref{ch2:unitmu}我们得到
|
|
\begin{equation} \label{ch2:fluxweight}
|
|
{\mu_{K,\sigma}}=
|
|
\frac{\frac{|D_{K,\sigma}|}{{\lambda_{K,\sigma}^{(n)}}}}
|
|
{\frac{|D_{K,\sigma}|}{{\lambda_{K,\sigma}^{(n)}}}+\frac{|D_{L,\sigma}|}{{\lambda_{L,\sigma}^{(n)}}}},\qquad
|
|
{\mu_{L,\sigma}}=
|
|
\frac{\frac{|D_{L,\sigma}|}{{\lambda_{L,\sigma}^{(n)}}}}
|
|
{\frac{|D_{K,\sigma}|}{{\lambda_{K,\sigma}^{(n)}}}+\frac{|D_{L,\sigma}|}{{\lambda_{L,\sigma}^{(n)}}}}.
|
|
\end{equation}
|
|
将\eqref{ch2:fluxweight}代入\eqref{ch2:fluxtmp}, 经过直接代数计算可得法向流的表达式
|
|
\begin{equation}
|
|
\label{ch2:eq:diamondflux2}
|
|
\tilde F_{K,\sigma} = {\mathcal{K}}_{\textit{eff}} \left [ (u_{K}-u_{L}) - \sum _{i=1}^{N_{
|
|
\sigma}} {\mathcal{Q}}_{i} u_{\sigma ,i} \right ],
|
|
\end{equation}
|
|
其中
|
|
\begin{align*}
|
|
{\mathcal{K}}_{\textit{eff}} &= \displaystyle
|
|
\frac{
|
|
\lambda _{K,\sigma}^{(n)} \lambda _{L,\sigma}^{(n)}
|
|
}
|
|
{3|D_{L,\sigma}|
|
|
\lambda _{K,\sigma}^{(n)}
|
|
+
|
|
3|D_{K,\sigma}|
|
|
\lambda _{L,\sigma}^{(n)}},
|
|
\\
|
|
{\mathcal{Q}}_{i} &= \displaystyle
|
|
\frac{\eta _{K,\sigma}^{(i)}}{\lambda _{K,\sigma}^{(n)}} +
|
|
\frac{\eta _{K,\sigma}^{(i-1)}}{\lambda _{K,\sigma}^{(n)}} -
|
|
\frac{\eta _{L,\sigma}^{(i)}}{\lambda _{K,\sigma}^{(n)}} -
|
|
\frac{\eta _{L,\sigma}^{(i-1)}}{\lambda _{L,\sigma}^{(n)}} , \quad i=1,2,\cdots ,N_{\sigma}.
|
|
\end{align*}
|
|
|
|
\subsection{两种菱形格式与现有格式的关系}
|
|
|
|
首先我们有以下结论.
|
|
\begin{proposition}
|
|
如果$\sigma$是平面,
|
|
那么第一种菱形格式\eqref{ch2:eq:diamondflux}和第二种菱形格式\eqref{ch2:eq:diamondflux2}等价.
|
|
如果$\sigma$不是平面, 且扩散张量退化为标量情形, 若采用\ref{ch2:sec:nonplanar}节中几何量的统一计算方法,
|
|
第一种菱形格式\eqref{ch2:eq:diamondflux}和第二种菱形格式\eqref{ch2:eq:diamondflux2}等价.
|
|
\end{proposition}
|
|
{\bf 证明:\ }我们给出证明思路. 只要证明${\mathcal{D}}_{i}={\mathcal{Q}}_{i}$. 注意到
|
|
\begin{equation}
|
|
\bm N_{K,i} + \bm N_{K,i-1} +
|
|
\bm N_{L,i} + \bm N_{L,i-1} =
|
|
\frac{1}{2} (\bm x_{L} - \bm x_{K}) \times (\bm x_{i-1} - \bm x_{i+1}).
|
|
\end{equation}
|
|
以及
|
|
\begin{equation}
|
|
\bm N_{K,i} + \bm N_{K,i-1}
|
|
=
|
|
\frac{1}{2} (\bm x_{\sigma,i} - \bm x_{K}) \times (\bm x_{i-1} - \bm x_{i+1}).
|
|
\end{equation}
|
|
那么将${\mathcal{D}}_{i}$的第一项和${\mathcal{Q}}_{i}$的前两项相减可得
|
|
\begin{equation}
|
|
\label{ch2:eq:diff}
|
|
\frac{|D_{K,
|
|
\sigma}|}{|D_{\sigma}|} \frac{\lambda _{K,\sigma}^{(i)}}{\lambda _{K,\sigma}^{(n)}}
|
|
- \frac{\eta _{K,\sigma}^{(i)}+\eta _{K,\sigma}^{(i-1)}}{\lambda _{K,\sigma}^{(n)}}
|
|
= \frac{1}{2} \frac{|\sigma | (\Lambda _{K}^T \bm n_{K,\sigma} ) \cdot
|
|
[(\bm y_{\sigma} - \bm x_{\sigma,i}) \times (\bm x_{i-1} - \bm x_{i+1})]}{\lambda _{K,\sigma}^{(n)}},
|
|
\end{equation}
|
|
其中
|
|
\begin{equation}
|
|
\bm y_{\sigma} = \frac{|D_{L,
|
|
\sigma}|}{|D_{\sigma}|}\bm x_K + \frac{|D_{K,
|
|
\sigma}|}{|D_{\sigma}|}\bm x_L.
|
|
\end{equation}
|
|
如果$\sigma$是平面, 那么$\bm y_{\sigma}$落在平面$\sigma$上,
|
|
那么$(\bm y_{\sigma} - \bm x_{\sigma,i}) \times (\bm x_{i-1} - \bm x_{i+1})$与$\bm n_{K,\sigma}$平行,
|
|
那么\eqref{ch2:eq:diff}右端分子分母可以同时除以$\lambda_{K,\sigma}^{(n)}$,
|
|
所得的结果与$\Lambda_K$无关.
|
|
如果$\sigma$不是平面, 且扩散张量退化为标量情形, 那么\eqref{ch2:eq:diff}右端分子分母可以同时除以扩散系数,
|
|
所得的结果也与$\Lambda_K$无关.
|
|
|
|
将${\mathcal{D}}_{i}$的第二项和${\mathcal{Q}}_{i}$的后两项相减也可类似地化简,
|
|
在题设条件下, 所得的结果与$\Lambda_L$无关.
|
|
因此将${\mathcal{D}}_{i}$和${\mathcal{Q}}_{i}$相减,
|
|
在题设条件下经过代数计算可化简为$0$. \qed
|
|
|
|
|
|
接着, 我们研究本文的菱形格式和文献中已有的菱形格式的关系.
|
|
|
|
|
|
在四面体网格上, 每个面都是三角形面, 由\eqref{ch2:eq:diamondflux}和\eqref{ch2:eq:diamondflux2}给出的通量等价,
|
|
并且他们等价于许多现有格式, 例如\parencite{Ricardo2021}中的(30)、\parencite{Dong2022}中的(23)以及\parencite{Wang2017}中的(24).
|
|
当网格面恰好包含四条边时, 若采用\ref{ch2:sec:nonplanar}节中几何量的统一计算方法, 并且扩散张量退化为标量情形,
|
|
\eqref{ch2:eq:diamondflux}和\eqref{ch2:eq:diamondflux2}给出的离散通量表达式与\parencite{Wang2017}中的(24)式等价.
|
|
当网格面包含四条以上边时, \eqref{ch2:eq:diamondflux}和\eqref{ch2:eq:diamondflux2}的离散模板与\parencite{Wang2017}不同.
|
|
在非常强的假设条件下, 一些作者研究了菱形格式的强制性\parencite{Coudiere1999,Sheng2008}.
|
|
通常, 菱形格式的稳定性分析和误差估计较为困难.
|
|
|
|
|
|
\subsection{边界面的处理}
|
|
对于边界面$\sigma \in \mathcal{S}_{K} \cap \mathcal{S}^{ext}$,
|
|
根据格林公式与Dirichlet边界条件可以得到梯度的近似表达式
|
|
\begin{equation}
|
|
\label{ch2:eq:bdrygrad}
|
|
\bm{g}_{K} = \frac{1}{|D_{K,\sigma}|} \left ( \sum _{i=1}^{N_{\sigma}}
|
|
\frac{u_{h}(\bm x_{K})+u_{h}(\bm x_{\sigma ,i})+u_{h}(\bm x_{\sigma ,i+1})}{3}
|
|
\bm{N}_{K,i} + \int _{\sigma} g_{D} \bm n_{K,\sigma} \,\mathrm{d}s
|
|
\right ).
|
|
\end{equation}
|
|
上式最后一项可以用任何一种数值积分公式计算. 这里我们使用中点公式
|
|
\begin{equation}
|
|
\int _{\sigma} g_{D} \bm n_{K,\sigma} \,\mathrm{d}s \approx g_{D}(
|
|
\bm x_{\sigma}) |\sigma | \bm n_{K,\sigma},
|
|
\end{equation}
|
|
其中$\bm x_{\sigma}$是$\sigma$的重心. 那么法向流为
|
|
\begin{equation}
|
|
F_{K,\sigma} = \frac{1}{|D_{K,\sigma}|} \left ( \frac{1}{3} u_{K}
|
|
\lambda _{K,\sigma}^{(n)} -\frac{1}{3}\sum _{i=1}^{N_{\sigma}} g_{D}(
|
|
\bm x_{\sigma ,i})\lambda _{K,\sigma}^{(i)} - g_{D}(
|
|
\bm x_{\sigma})\lambda _{K,\sigma}^{(n)} \right ),
|
|
\end{equation}
|
|
其中
|
|
\begin{align*}
|
|
&\lambda _{K,\sigma}^{(n)} = |\sigma |^{2}\bm n_{K,\sigma}^{T}
|
|
\Lambda _{K} \bm n_{K,\sigma},\quad \lambda _{K,\sigma}^{(i)} = |
|
|
\sigma |\bm{n}_{K,\sigma}^{T}\Lambda _{K} \bm N_{\sigma ,i},
|
|
\\
|
|
& \bm N_{\sigma ,i} =\bm{N}_{K,i}+\bm{N}_{K,i-1},
|
|
\quad i=1,2,\cdots ,N_{\sigma}.
|
|
\end{align*}
|
|
|
|
|
|
\section{几何量的计算}\label{ch2:sec:nonplanar}
|
|
单元中心选取为单元顶点坐标的算术平均值.
|
|
内部面的面心通过该面顶点坐标的算术平均值来计算, 而边界面的面心则选为该面的重心(由于\eqref{ch2:eq:bdrygrad}数值积分需要重心).
|
|
对于一个一般的面$\sigma \in \mathcal{S}$, 由于我们规定了顶点$\bm x_{\sigma ,i}$排列顺序(从单元$L$往单元$K$看, 顶点逆时针排列),
|
|
我们首先计算法向量
|
|
\begin{equation}
|
|
\label{ch2:eq:areanormal}
|
|
\bm{N}_{\sigma} = \frac{1}{2} \left[ \sum _{i=1}^{N_{\sigma}-1} \bm{x}_{\sigma ,i}
|
|
\times \bm{x}_{\sigma ,i+1} + \bm{x}_{\sigma ,N_{\sigma}}\times
|
|
\bm{x}_{\sigma ,1} \right].
|
|
\end{equation}
|
|
上式可以在文献\parencite{Gelder1995}找到, 对于平面的情形这是成立的, 同时,
|
|
这个公式也可直接推广用于非平面情形, 由于这个公式只使用了顶点坐标.
|
|
此时定义面积$|\sigma | = |\bm{N}_{\sigma}|$,
|
|
并且定义面$\sigma$的单位法向为$\bm{n}_{\sigma} = \bm{N}_{\sigma} / |\bm{N}_{\sigma}|$.
|
|
我们定义$\bm n_{K,\sigma} = s_{K,\sigma} \bm{n}_{\sigma}$, 其中$s_{K,\sigma} = 1$若$\bm{n}_{\sigma }$指向$K$的外面,
|
|
否则$s_{K,\sigma} = -1$.
|
|
使用记号$\mathcal{S}_{K} = \{\sigma _{K,i}\in \mathcal{S},i=1,\cdots ,N_{K}\}$, 我们计算$K$的体积
|
|
\begin{equation}
|
|
|K| = \sum _{i=1}^{N_{K}}\frac{|\sigma _{K,i}|}{3} \bm{x}_{\sigma _{K,i}}
|
|
\cdot \bm{n}_{K,\sigma _{K,i}}.
|
|
\end{equation}
|
|
菱形单元的体积为
|
|
\begin{equation*}
|
|
|D_{\sigma}| = |D_{K,\sigma}| + |D_{L,\sigma}|,
|
|
\end{equation*}
|
|
其中$|D_{K,\sigma}|$的计算公式为
|
|
\begin{equation}
|
|
|D_{K,\sigma}| = \frac{|\sigma |}{3} (\bm{x}_{\sigma}-\bm{x}_{K})
|
|
\cdot \bm{n}_{K,\sigma}.
|
|
\end{equation}
|
|
% vim:ts=4:sw=4
|