Triangular DGM

1. Basis functions

decomposing the domain \(\Omega\) into \(N_e\) conforming

non-overlapping triangular elements \(\Omega_e\).

\[\begin{equation}
\Omega = \bigcup_{e = 1}^{N_e} \Omega_e
\end{equation}\]

nonsingular mapping \(x = \Psi(\mathbf{\xi})\) which defines a transformation from the physical Cartesian coordinate system to the local reference coordinate system defined on the reference triangle.

local elementwise solution \(\mathbf{q}\) by an N th order polynomial in \(\mathbf{\xi}\) as

\[\begin{equation}
\mathbf{q}_N (\mathbf{\xi}) = \sum_{i = 1}^{M_N} \psi_i (\mathbf{\xi}) \mathbf{q}_N (\mathbf{\xi}_i)
\end{equation}\]

where \(\mathbf{\xi}_i\) represents \(M = \frac{1}{2} ( N + 1)( N + 2)\) interpolation points and \(\psi_i (\mathbf{\xi})\) are the associatedmultivariate Lagrange polynomials.

an explicit formula for the Lagrange basis —— reference to an easily constructed orthonormal PKD polynomial basis and the generalized Vandermonde matrix.

通过正交多项式和Vandermonde构造参考单元上Lagrange基函数。

2. Integration

2.1. Area integrals

\(\int_{\Omega_e} f(x) g(x) dx = \sum_{i = 1}^{M_C} \omega_i^e \left| J^e(\mathbf{\xi}_i) \right| f(\mathbf{\xi}_i) g(\mathbf{\xi}_i)\)

where \(M_C\) is a function of \(C\) which represents the order of the cubature approximation.

2.2. Boundary integrals

\(\int_{\Gamma_e} f(x) g(x) dx = \sum_{i = 0}^{Q} \omega_i^s \left| J^s(\mathbf{\xi}_i) \right| f(\mathbf{\xi}_i) g(\mathbf{\xi}_i)\)

where \(Q\) represents the order of the quadrature approximation. Using the Gauss quadrature, we

can use \(Q = N\) to achieve order \(2N\) accuracy.

3. Tangent and normal vectors of the element edges

4. Semi-discrete equations

5. Matrix form of the semi-discrete equations

5.1. Elimination of the mass matrix

将方程左乘质量矩阵的逆并除以雅克比系数,可得

\[\begin{equation}
\frac{\partial \mathbf{q}^e_i}{\partial t} + \left( \hat{D}_{ij}^{\xi} \xi_x^e + \hat{D}_{ij}^{\eta} \eta_x^e \right) \mathbf{f}_j^e + \left( \hat{D}_{ij}^{\xi} \xi_y^e + \hat{D}_{ij}^{\eta} \eta_y^e \right) \mathbf{g}_j^e - S_i^e = \frac{\left| J^s \right|}{\left| J^e \right|} \hat{M}_{ij}^s \left[ n_x^s \left( \mathbf{f}^e - \mathbf{f}^* \right)_j + n_y^s \left( \mathbf{g}^e - \mathbf{g}^* \right)_j \right]
\end{equation}\]

where the matrices are defined as

\[\begin{equation}
\begin{array}{lll}
\hat{D}_{ij}^{\xi} = M_{ik}^{-1} D_{kj}^{\xi}, & \hat{D}_{ij}^{\eta} = M_{ik}^{-1} D_{kj}^{\eta}, &
\hat{M}_{ij}^{s} = M_{ik}^{-1} M_{kj}^{\xi},
\end{array}
\end{equation}\]

where

\[\begin{equation}
\begin{array}{ll}
M_{ij} = \sum_{k = 1}^{M_C} \omega_k \psi_{ik} \phi_{jk}, & M_{ij}^s = \sum_{k = 1}^{M_Q} \omega_k \psi_{ik} \phi_{jk} \cr
D_{ij}^{\xi} = \sum_{k = 1}^{M_C} \omega_k \psi_{ik} \frac{\partial \phi_{jk}}{\partial \xi}, & D_{ij}^{\eta} = \sum_{k = 1}^{M_C} \omega_k \psi_{ik} \frac{\partial \phi_{jk}}{\partial \eta}
\end{array}
\end{equation}\]

\(M_C\) and \(M_Q\) denote the number of cubature (two dimensional) and quadrature (one dimensional) integration points required to achieve order 2N accuracy, and \(\psi_{ik}\) represents the function \(\psi\) at the \(i=1, \cdots,M_N\) interpolation points evaluated at the integration point k.

Since the mass matrix is constant (i.e. not a function of x) then, using Equations above, we can move the mass matrix inside the summations which are the discrete representations of the continuous integrals. This then gives

\[\begin{equation}
\begin{array}{ll}
\hat{M}_{ij}^{s} = \sum_{k = 1}^{M_Q} \omega_k \hat{\psi}_{ik} \psi_{jk}, & \hat{D}_{ij}^{\xi} = \sum_{k = 1}^{M_C} \omega_k \hat{\psi}_{ik} \frac{\partial \psi_{jk}}{\partial \xi}, & \hat{D}_{ij}^{\eta} = \sum_{k = 1}^{M_C} \omega_k \hat{\psi}_{ik} \frac{\partial \psi_{jk}}{\partial \eta}
\end{array}
\end{equation}\]

where

\[\begin{equation}
\hat{\psi}_i = M_{ik}^{-1} \psi_k
\end{equation}\]

根据

\(D_{ij}^{\xi} = \sum_{k = 1}^{M_C} \omega_k \psi_{ik} \frac{\partial \psi_{jk}}{\partial \xi}\)

我们可以将 \(D_{ij}^{\xi}\) 写为如下矩阵相乘形式

\[\begin{equation}
D_{ij}^{\xi} = \begin{bmatrix}
\omega_1 \psi_{11}, \omega_2 \psi_{12}, \cdots, \omega_{M_C} \psi_{1{M_C}}
\end{bmatrix}
\begin{bmatrix}
\frac{\partial \psi_{11}}{\partial \xi} \cr \frac{\partial \psi_{12}}{\partial \xi} \cr
\cdots \cr
\frac{\partial \psi_{1{M_C}}}{\partial \xi}
\end{bmatrix}
\end{equation}\]

因此

\[D^{\xi} = \begin{bmatrix}
\omega_1 \psi_{11}, \omega_2 \psi_{12}, \cdots, \omega_{M_C} \psi_{1{M_C}} \cr
\omega_1 \psi_{21}, \omega_2 \psi_{22}, \cdots, \omega_{M_C} \psi_{2{M_C}} \cr
\cdots \cr
\omega_1 \psi_{{M_C}1}, \omega_2 \psi_{{M_C}2}, \cdots, \omega_{M_C} \psi_{{M_C}{M_C}} \cr
\end{bmatrix}
\begin{bmatrix}
\frac{\partial \psi_{11}}{\partial \xi}, & \frac{\partial \psi_{21}}{\partial \xi}, & \cdots & \frac{\partial \psi_{{M_C}1}}{\partial \xi} \cr \frac{\partial \psi_{12}}{\partial \xi}, & \frac{\partial \psi_{22}}{\partial \xi}, & \cdots & \frac{\partial \psi_{{M_C}2}}{\partial \xi} \cr
\cdots \cr
\frac{\partial \psi_{1{M_C}}}{\partial \xi}, & \frac{\partial \psi_{2{M_C}}}{\partial \xi}, & \cdots & \frac{\partial \psi_{{M_C}{M_C}}}{\partial \xi}
\end{bmatrix}\]

因此

\[\hat{D}^{\xi} = M^{-1} \begin{bmatrix}
\omega_1 \psi_{11}, \omega_2 \psi_{12}, \cdots, \omega_{M_C} \psi_{1{M_C}} \cr
\omega_1 \psi_{21}, \omega_2 \psi_{22}, \cdots, \omega_{M_C} \psi_{2{M_C}} \cr
\cdots \cr
\omega_1 \psi_{{M_C}1}, \omega_2 \psi_{{M_C}2}, \cdots, \omega_{M_C} \psi_{{M_C}{M_C}} \cr
\end{bmatrix}
\begin{bmatrix}
\frac{\partial \psi_{11}}{\partial \xi}, & \frac{\partial \psi_{21}}{\partial \xi}, & \cdots & \frac{\partial \psi_{{M_C}1}}{\partial \xi} \cr \frac{\partial \psi_{12}}{\partial \xi}, & \frac{\partial \psi_{22}}{\partial \xi}, & \cdots & \frac{\partial \psi_{{M_C}2}}{\partial \xi} \cr
\cdots \cr
\frac{\partial \psi_{1{M_C}}}{\partial \xi}, & \frac{\partial \psi_{2{M_C}}}{\partial \xi}, & \cdots & \frac{\partial \psi_{{M_C}{M_C}}}{\partial \xi}
\end{bmatrix}\]

Reference:

[1]: GIRALDO F X, WARBURTON T. A high-order triangular discontinuous Galerkin oceanic shallow water model[J]. International Journal for Numerical Methods in Fluids, 2008, 56: 899–925.

体积与边精确积分DGM方法的更多相关文章

  1. Window中C++进行精确计时的方法

    嗯,程序员一个永恒的追求就是性能吧? 为了衡量性能,自然需要计时. 奈何无论C标准库还是C++标准库,因为通用性的考虑,其time API精度都不高.基本都是毫秒级的. 所以如果要真正精确地衡量程序的 ...

  2. 减小delphi体积的方法

    1.关闭RTTI反射机制  自从Delphi2010中引入了新的RTTI反射机制后,编译出来的程序会变得很大,这是因为默认情况下 Delphi2010 给所有类都加上了反射机制.而我们的工程并不每每都 ...

  3. 浅析人脸检测之Haar分类器方法:Haar特征、积分图、 AdaBoost 、级联

    浅析人脸检测之Haar分类器方法 一.Haar分类器的前世今生 人脸检测属于计算机视觉的范畴,早期人们的主要研究方向是人脸识别,即根据人脸来识别人物的身份,后来在复杂背景下的人脸检测需求越来越大,人脸 ...

  4. 积分从入门到放弃<2>

    这部分重新从定积分学了 1,lnx 的导数就是x^(-1) = 1/x 那么求∫(1/x)dx = ln|x|+C  2,初值问题.就是求∫f(x)dx = F(x) + C 求C . 3,Houdi ...

  5. STM32 精确输出PWM脉冲数控制电机(转)

    STM32 精确输出PWM脉冲数控制电机 发脉冲两种目的1)速度控制2)位置控制 速度控制目的和模拟量一样,没有什么需要关注的地方发送脉冲方式为PWM,速率稳定而且资源占用少 stm32位置控制需要获 ...

  6. 浅谈人脸检测之Haar分类器方法

    我们要探讨的Haar分类器实际上是Boosting算法(提升算法)的一个应用,Haar分类器用到了Boosting算法中的AdaBoost算法,只是把AdaBoost算法训练出的强分类器进行了级联,并 ...

  7. JavaScript中判断对象类型方法大全1

    我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一 ...

  8. 浅析人脸检测之Haar分类器方法

    一.Haar分类器的前世今生 人脸检测属于计算机视觉的范畴,早期人们的主要研究方向是人脸识别,即根据人脸来识别人物的身份,后来在复杂背景下的人脸检测需求越来越大,人脸检测也逐渐作为一个单独的研究方向发 ...

  9. JavaScript中判断对象类型的种种方法

    我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一 ...

随机推荐

  1. 【UE4 C++ 基础知识】<7> 容器——TSet

    概述 TSet是一种快速容器类,(通常)用于在排序不重要的情况下存储唯一元素. TSet 类似于 TMap 和 TMultiMap,但有一个重要区别:TSet 是通过对元素求值的可覆盖函数,使用数据值 ...

  2. VS Code Remote SSH设置

    本文翻译自:5 Steps: Setup VS Code for Remote Development via SSH from Windows to Linux system 5个步骤:设置VS代码 ...

  3. no_code团队介绍和bingduoduo项目采访

    项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求 团队作业-团队介绍和采访 成员简介 name avatar intro PM Dev Test UI/Front-End 伦泽标 ...

  4. OO_JAVA_JML系列第三次作业__架构之谈

    OO_JAVA_JML系列第三次作业 ## ----架构之谈 目录 OO_JAVA_JML系列第三次作业 出发点 操作的可分离性 操作本身的多样性 实现手段:表驱动编程 储存 注册 出发点 操作的可分 ...

  5. flink中使用lambda表达式

    flink中使用lambda表达式 1.使用lambda的一个示例 2.使用上面这种写法通常或得到如下错误 3.解决方案 4.建议 5.完整代码 在 java8中有一种新的语法糖,即 lambda表达 ...

  6. Noip模拟31 2021.8.5

    T1 Game 当时先胡了一发$\textit{Next Permutation}$... 然后想正解,只想到贪心能求最大得分,然后就不会了.. 然后就甩个二十分的走了... 正解的最大得分(叫它$k ...

  7. 到底能不能用 join

    互联网上一直流传着各大公司的 MySQL 军规,其中关于 join 的描述,有些公司不推荐使用 join,而有些公司则规定有条件的使用 join, 它们都是教条式的规定,也没有详细说其中的原因,这就很 ...

  8. Shooting Bricks题解

    题目传送门 以后我绝对不会一直磕着一道题磕几个小时了...感觉还是自己节奏出了问题,不知为啥感觉有点小慌... 算了,其实再回头仔细看一下这个题dp的思路还是比较好想出来的,打代码之前一定要做好足够的 ...

  9. hdu 1058 Humble Numbers(构造?枚举?)

    题意: 一个数的质因子如果只是2,3,5,7中的若干个.则这个数叫做humble number. 例如:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 1 ...

  10. thread pool

    thread pool import concurrent.futures import urllib.request URLS = ['http://www.foxnews.com/', 'http ...