pkuthss/doc/example/chap/chap6.tex
2025-05-28 07:49:09 +08:00

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