Hermite WENO 重构格式
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 重构过程包括以下步骤:
- 确定一系列模板
- 重构模板上单元解
- 计算每个重构多项式振荡算子
- 使用振荡算子计算相应权重
- 根据权重系数构造重构多项式
以三角形单元为例,单元e在计算不同模板多项式 \(P_1\) 时需满足下列关系中一种:
- 单元e中原始解;
- \(\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)\);
- \(\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个具有二阶精度的多项式。对应模板分别为
- \((e)\),原始解;
- \((e,a,b;\, e,b,c;\, e,c,a)\),三个相邻单元均值;
- \((e,a;\, e,b;\, e,c)\),单元e均值与相邻单元斜率;
注意,不同模板上的重构多项式需满足在单元内均值与原始结果相同。对于三角形来说,除了原始解之外,计算模板共有6个,而四边形则有8个,在获得各个模板上的多项式后便可采用线性叠加的方法获得重构后的单元解。
为了避免重构解产生振荡,需要为各个模板设置不同权重系数,在 HWENO 格式中模板权重系数与其振荡幅度相关。Friedrich[7] 改进了 Jiang 与 Shu (1996) 提出的振荡算子,其改进的新形式为
\]
其中 \(h=mes(\Omega_e)\) 为单元尺度大小。使用振荡算子计算每个模板所占权重公式为
\]
其中 \(\gamma\) 为正值。
考虑到计算效率以及数值精度,以上重构过程应当只应用于数值解中存在间断位置,这就要求 HWENO 重构格式与间断检测器协同使用。
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. ︎
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. ︎
X. Liu, S. Osher, T.F. Chen, Weighted essential non-oscillatory schemes, Journal of Computational Physics 115 (1994) 200–212. ︎
J. Qiu, C.W. Shu, Runge–Kutta discontinuous Galerkin method using WENO limiters, SIAM Journal of Scientific Computing 26
(2005) 907–929. ︎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. ︎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. ︎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 重构格式的更多相关文章
- paper 41:正交变换
正交变换是保持图形形状和大小不变的几何变换,包含旋转,轴对称及上述变换的复合. 几何意义 正交变换是保持图形形状和大小不变的几何变换,包含旋转,轴对称及上述变换的复合. 代数定义 欧几里得空间V的线性 ...
- matlab 小波变换
MATLAB小波变换指令及其功能介绍 1 一维小波变换的 Matlab 实现 (1) dwt函数 功能:一维离散小波变换 格式:[cA,cD]=dwt(X,'wname') [cA,cD]=dwt(X ...
- matlab中图像处理常见用法
一. 读写图像文件 1. imread imread函数用于读入各种图像文件,如:a=imread('e:/w01.tif') 注:计算机E盘上要有w01相应的.tif文件. 2. imwrite i ...
- javascript基础笔记学习
/** * Created by Administrator on 2016/12/26. */ /* var box; alert( typeof box); box是Undefined类型,值是u ...
- matlab 对图像操作的函数概览
转自博客:http://blog.163.com/fei_lai_feng/blog/static/9289962200991713415422/ 一. 读写图像文件 1. imread imread ...
- PHP(Zend Studio)入门视频
视频地址: http://www.ev-get.com/article/2014/5/9/20962.html (去掉地址中的减号-:可以看视频) Zend Studio教学视频之Zend Studi ...
- 记一次.NET代码重构
好久没写代码了,终于好不容易接到了开发任务,一看时间还挺充足的,我就慢慢整吧,若是遇上赶进度,基本上直接是功能优先,完全不考虑设计.你可以认为我完全没有追求,当身后有鞭子使劲赶的时候,神马设计都是浮云 ...
- [bzoj3123][sdoi2013森林] (树上主席树+lca+并查集启发式合并+暴力重构森林)
Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数 ...
- 《HTML重构》读书笔记&思维导图
最近读了<HTML重构>这本书,以下做出自己的总结归纳,大家可以一起学习交流. 什么是重构?重构是在不改变程序行为的基础上进行小的改动是代码基本逐渐完善的过程,通常需要一些自动化工具的帮助 ...
随机推荐
- 【Spring】IoC容器 - 依赖查找
前言 上一篇文章已经学习了[IoC的主要实现策略]有2种: 1.依赖查找 2.依赖注入 这里稍加详细的介绍一下依赖查找 1.依赖查找的方式 依赖查找的方式可以以多种维度来划分: 1.按名称/类型/注解 ...
- SpringCloud微服务实战——搭建企业级开发框架(五):数据库持久化集成MySql+Druid+MyBatis-Plus
在引入相关数据库持久化相关依赖库之前,我们可以考虑到,当我们因业务开发需要,引入各种各样的依赖库时,Jar包冲突是我们必须面对的一个问题,Spring为了解决这些Jar包的冲突,推出了各种bom, ...
- Java:多线程计数
Java:多线程计数 本笔记是根据bilibili上 尚硅谷 的课程 Java大厂面试题第二季 而做的笔记 1. CountDownLatch 概念 让一些线程阻塞直到另一些线程完成一系列操作才被唤醒 ...
- Noip模拟10 2021.6.27
T1 入阵曲 好了,又一个考试败笔题. 也就是在那个时候,小 F 学会了矩阵乘法.让两个矩阵乘几次就能算出斐波那契数, 真是奇妙无比呢. 不过, 小 F 现在可不想手算矩阵乘法--他觉得好麻烦.取而代 ...
- 【BZOJ 1419】Red is good [概率DP]
我 是 Z Z 概率好玄啊(好吧是我太弱.jpg Description 桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元.可以随时停止翻 ...
- 企业级BI为什么这么难做?
本人长期在银行内从事数据线相关工作,亲眼目睹过多个企业级BI(非部门级BI)产品从上线试用.全行推广.然后衰败没落,再替换到下一个BI产品重复此过程.企业内没有任何一个BI产品即能长期运行,又能赢得非 ...
- 数组中只出现过一次的数字 牛客网 剑指Offer
数组中只出现过一次的数字 牛客网 剑指Offer 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次.请写程序找出这两个只出现一次的数字. def FindNumsAppearOnce ...
- candy leetcode C++
There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...
- CentOS7 导入oracle数据
1.切换到 oracle用户 #su - oracle 2.导入(一般的不会导入到sys账号下) #imp sys/密码@orcl file=/home/oracle/20200428.dmp fro ...
- Flink 的运行架构详细剖析
1. Flink 程序结构 Flink 程序的基本构建块是流和转换(请注意,Flink 的 DataSet API 中使用的 DataSet 也是内部流 ).从概念上讲,流是(可能永无止境的)数据记录 ...