% 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