Hermite WENO 单元重构

本文主要介绍采用 Hermite WENO 重构方法作为斜率限制器应用于二维或高维单元中。

1.简介[1]

ENO格式最早由 Harten 等[2]提出,ENO格式避免在高梯度地区进行插值,其重构过程通过多个不同位置模板,并且选取其中最光滑模板上的解进行重构,由此保证在重构过程中具有较高的精度。然而这种方法会导致收敛问题并且在连续区域降低精度,随后Liu等[3]提出了 weighted ENO 格式。WENO 格式采用不同的权重系数组合各个模板,而非只采用一个判断光滑程度的系数。Qiu 和 Shu 首先将 WENO 格式作为一种斜率限制器应用于DG方法中[4],随后他们又根据 Hermite 多项式构造了一系列的 WENO 格式,称为 HWENO 格式并也将其作为限制器应用于 DG 方法中[5] [6]

2.Hermite WENO 重构

一个典型的 WENO 重构过程包括以下步骤:

  1. 确定一系列模板
  2. 重构模板上单元解
  3. 计算每个重构多项式振荡算子
  4. 使用振荡算子计算相应权重
  5. 根据权重系数构造重构多项式

以三角形单元为例,单元e在计算不同模板多项式 \(P_1\) 时需满足下列关系中一种:

  1. 单元e中原始解;
  2. \(\frac{1}{\Omega_e}\int_{\Omega_e} P_1 d\Omega = u_e\), \(\frac{1}{\Omega_j}\int_{\Omega_j} P_1 d\Omega = u_j\), \(\frac{1}{\Omega_k}\int_{\Omega_k} P_1 d\Omega = u_k\),其中 \((j,k) = (a,b; b,c; c,a)\);
  3. \(\frac{1}{\Omega_e}\int_{\Omega_e} P_1 d\Omega = u_e\),\(\frac{1}{\Omega_k}\int_{\Omega_e} \frac{\partial P_1}{\partial x_i} d\Omega = \frac{\partial P_1}{\partial x_i}|_ k\),其中 \((k=a,b,c)\);

根据以上三种条件,便可以构造出7个具有二阶精度的多项式。对应模板分别为

  1. \((e)\),原始解;
  2. \((e,a,b;\, e,b,c;\, e,c,a)\),三个相邻单元均值;
  3. \((e,a;\, e,b;\, e,c)\),单元e均值与相邻单元斜率;

注意,不同模板上的重构多项式需满足在单元内均值与原始结果相同。对于三角形来说,除了原始解之外,计算模板共有6个,而四边形则有8个,在获得各个模板上的多项式后便可采用线性叠加的方法获得重构后的单元解。

为了避免重构解产生振荡,需要为各个模板设置不同权重系数,在 HWENO 格式中模板权重系数与其振荡幅度相关。Friedrich[7] 改进了 Jiang 与 Shu (1996) 提出的振荡算子,其改进的新形式为

\[o_i = \left[ \int_{\Omega_i} h^{-2} \left( \frac{\partial P_i}{\partial x_k} \right)^2 d\Omega \right]^{1/2}
\]

其中 \(h=mes(\Omega_e)\) 为单元尺度大小。使用振荡算子计算每个模板所占权重公式为

\[w_i = \frac{ \left(\epsilon +o_i(P_i) \right)^{-\gamma}}{\sum_{k=1}^m \left(\epsilon +o_k(P_k) \right)^{-\gamma}}
\]

其中 \(\gamma\) 为正值。

考虑到计算效率以及数值精度,以上重构过程应当只应用于数值解中存在间断位置,这就要求 HWENO 重构格式与间断检测器协同使用。


  1. LUO H, BAUM J D, LÖHNER R. A Hermite WENO-based limiter for discontinuous Galerkin method on unstructured grids[J]. Journal of Computational Physics, 2007, 225(1): 686–713.

  2. A. Harden, B. Engquist, S. Osher, S.R. Chakravarthy, Uniformly high-order accurate essential non-oscillatory schemes III, Journal of Computational Physics 71 (1987) 231–303.

  3. X. Liu, S. Osher, T.F. Chen, Weighted essential non-oscillatory schemes, Journal of Computational Physics 115 (1994) 200–212.

  4. J. Qiu, C.W. Shu, Runge–Kutta discontinuous Galerkin method using WENO limiters, SIAM Journal of Scientific Computing 26

    (2005) 907–929.

  5. J. Qiu, C.W. Shu, Hermite WENO schemes and their application as limiters for Runge–Kutta discontinuous Galerkin method: one

    dimensional case, Journal of Computational Physics 193 (2004) 115–135.

  6. J. Qiu, C.W. Shu, Hermite WENO schemes and their application as limiters for Runge–Kutta discontinuous Galerkin method II: two

    dimensional case, Computers & Fluids 34 (2005) 642–663.

  7. O. Friedrich, Weighted essential non-oscillatory schemes for the interpolation of mean values on unstructured grids, Journal of Computational Physics 144 (1998) 194–212.

Hermite WENO 重构格式的更多相关文章

  1. paper 41:正交变换

    正交变换是保持图形形状和大小不变的几何变换,包含旋转,轴对称及上述变换的复合. 几何意义 正交变换是保持图形形状和大小不变的几何变换,包含旋转,轴对称及上述变换的复合. 代数定义 欧几里得空间V的线性 ...

  2. matlab 小波变换

    MATLAB小波变换指令及其功能介绍 1 一维小波变换的 Matlab 实现 (1) dwt函数 功能:一维离散小波变换 格式:[cA,cD]=dwt(X,'wname') [cA,cD]=dwt(X ...

  3. matlab中图像处理常见用法

    一. 读写图像文件 1. imread imread函数用于读入各种图像文件,如:a=imread('e:/w01.tif') 注:计算机E盘上要有w01相应的.tif文件. 2. imwrite i ...

  4. javascript基础笔记学习

    /** * Created by Administrator on 2016/12/26. */ /* var box; alert( typeof box); box是Undefined类型,值是u ...

  5. matlab 对图像操作的函数概览

    转自博客:http://blog.163.com/fei_lai_feng/blog/static/9289962200991713415422/ 一. 读写图像文件 1. imread imread ...

  6. PHP(Zend Studio)入门视频

    视频地址: http://www.ev-get.com/article/2014/5/9/20962.html (去掉地址中的减号-:可以看视频) Zend Studio教学视频之Zend Studi ...

  7. 记一次.NET代码重构

    好久没写代码了,终于好不容易接到了开发任务,一看时间还挺充足的,我就慢慢整吧,若是遇上赶进度,基本上直接是功能优先,完全不考虑设计.你可以认为我完全没有追求,当身后有鞭子使劲赶的时候,神马设计都是浮云 ...

  8. [bzoj3123][sdoi2013森林] (树上主席树+lca+并查集启发式合并+暴力重构森林)

    Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数 ...

  9. 《HTML重构》读书笔记&思维导图

    最近读了<HTML重构>这本书,以下做出自己的总结归纳,大家可以一起学习交流. 什么是重构?重构是在不改变程序行为的基础上进行小的改动是代码基本逐渐完善的过程,通常需要一些自动化工具的帮助 ...

随机推荐

  1. MySQL:补充知识

    MySQL补充知识 在学习完 MySQL 基础与提高内容后: 基础知识笔记: MySQL:基础语法-1 MySQL:基础语法-2 MySQL:基础语法-3 MySQL:基础语法-4 提高知识笔记: M ...

  2. Java High Level REST Client 使用地理位置查询

    Java High Level REST Client 使用地理位置查询 一.需求 二.对应的query语句 三.对应java代码 1.引入 jar 包 2.创建 RestHighLevelClien ...

  3. HMS Core Keyring携手航班管家和高铁管家,打造美好出行体验

    高铁管家是国内最早⽀持⼿机⽀付购买⽕⻋票App之⼀,日活用户超380万,为⽤户提供一站式铁路出⾏服务.高铁管家母公司--深圳市活⼒天汇科技股份有限公司是国内智能⼤出⾏的开创者,先后推出航班管家.⾼铁管 ...

  4. 【Golang详解】go语言中并发安全和锁

    go语言中并发安全和锁 首先可以先看看这篇文章,对锁有些了解 [锁]详解区分 互斥锁.⾃旋锁.读写锁.乐观锁.悲观锁 Mutex-互斥锁 Mutex 的实现主要借助了 CAS 指令 + 自旋 + 信号 ...

  5. 上拉电阻大小对i2c总线的影响

    漏极开路上拉电阻取值为何不能很大或很小? 如果上拉电阻值过小,Vcc灌入端口的电流(Ic)将较大,这样会导致MOS管V2(三极管)不完全导通(Ib*β<Ic),有饱和状态变成放大状态,这样端口输 ...

  6. 期望 概率DP

    期望 \(x\) 的期望 \(E(x)\) 表示平均情况下 \(x\) 的值. 令 \(C\) 表示常数, \(X\) 和 \(Y\) 表示两个随机变量. \(E(C)=C\) \(E(C \time ...

  7. JAVA笔记3__字符串String类/对象一对一关联

    import java.lang.String; import java.util.Scanner; public class Main { public static void main(Strin ...

  8. Redis网络库源码分析(3)之ae.c

    一.aeCreateEventLoop & aeCreateFileEvent 上一篇文章中,我们已经将服务器启动,只是其中有些细节我们跳过了,比如aeCreateEventLoop函数到底做 ...

  9. Qt Creator 常用快捷键 详细总结

    下面是我总结的一些Qt Creator 常用快捷键 ,可以大大提高我们使用Qt开发项目的效率!! Qt Creator 常用快捷键 快捷键 介绍 F1 查看帮助文档 Shift + F2 函数的声明和 ...

  10. 从环境搭建到回归神经网络案例,带你掌握Keras

    摘要:Keras作为神经网络的高级包,能够快速搭建神经网络,它的兼容性非常广,兼容了TensorFlow和Theano. 本文分享自华为云社区<[Python人工智能] 十六.Keras环境搭建 ...