内容翻译自Wikipedia

Flux limiter

流量限制器(Flux limiters)应用在高精度格式中-这种数值方法用来求解科学与工程问题,特别是由偏微分方程(PDE's)描述的流体动力学。高精度数值方法,如MUSCL格式,可以避免由于高阶空间离散格式在间断或大梯度处引起的高阶振荡(wiggles)。使用流量限制器,并且配合合适的高精度格式,可是使格式满足总变差减小(TVD)性质。

注意流量限制器也称作梯度限制器,因为他们有相同的数学形式,都能够限制间断位置附近解的梯度。通常“流量限制器”用在限制算子作用在方程组流量项时候,而“梯度限制器”应用与限制器作用在方程变量上情况(system states)

如何工作

构建通量限制器的主要思想是限制空间导数计算使其接近实际值 - 在科学和工程问题中,这通常是指物理上可实现的并且有意义的值。它们被用在高分辨率的方法中来解决由偏微分方程描述的问题,并且只有大梯度的锋面存在时才发挥作用。对于平滑变换波形,通量限制器不起作用而空间导数可通过高阶近似方法求解并且不会引入高阶振荡。考虑下面的一维半离散格式,

\[\begin{equation}
\frac{d u_i}{d t} + \frac{1}{\Delta x_i} \left[
F \left( u_{i + \frac{1}{2}} \right) - F \left( u_{i - \frac{1}{2}} \right) \right] =0
\end{equation}\]

这里$ F ( u_{i + \frac{1}{2}} ) $ 与 \(F ( u_{i - \frac{1}{2}} )\) 代表边界\(i\)上数值通量。如果边界上通量可以有高阶和低阶两种格式,那么流量限制器就可以依据附近单元梯度使边界流量在这两种流量之间进行转换,如

\[\begin{eqnarray}
\begin{aligned}
& F \left( u_{i + \frac{1}{2}} \right) = f^{low}_{i + \frac{1}{2}} - \phi\left( r_i \right)
\left( f^{low}_{i + \frac{1}{2}} - f^{high}_{i + \frac{1}{2}} \right) \cr
& F \left( u_{i - \frac{1}{2}} \right) = f^{low}_{i - \frac{1}{2}} - \phi\left( r_{i-1} \right)
\left( f^{low}_{i - \frac{1}{2}} - f^{high}_{i - \frac{1}{2}} \right)
\end{aligned}
\end{eqnarray}\]

这里

$f^{low} = \(低精度,高分辨率流量
\)f^{high} =\(高精度,低分辨率流量
\)\phi\ (r) =$流量限制器函数

并且\(r\)代表网格上连续梯度比值

\[\begin{equation}
r_{i} = \frac{u_{i} - u_{i-1}}{u_{i+1} - u_{i}}
\end{equation}\]

限制函数要求大于或者等于0,\(\phi \ (r)\geq 0\)。因此,当限制器为0时(附近存在大梯度,相反的斜率符号或者0梯度),流量项相当于低精度格式。类似的,当限制器为1时(连续解),就由高分辨率格式表示。不同的限制器有不同的切换特性,根据不同的问题和求解格式而选择不同格式。没有发现哪种限制器能够完美解决所有问题,限制器格式的选择通常由反复的试验决定。

限制函数

下面是一些常用的流量限制器/斜率限制器形式,\(\phi \ (r)\):

  1. CHARM [not 2nd order TVD] (Zhou, 1995)

    \(\phi_{cm}(r)=\left\{ \begin{array}{ll}
    \frac{r\left(3r+1\right)}{\left(r+1\right)^{2}}, \quad r>0, \quad\lim_{r\rightarrow\infty}\phi_{cm}(r)=3 \\
    0 \quad \quad\, , \quad r\le 0
    \end{array}\right.\)
  2. HCUS [not 2nd order TVD] (Waterson & Deconinck, 1995)

    \(\phi_{hc}(r) = \frac{ 1.5 \left(r+\left| r \right| \right)}{ \left(r+2 \right)} ; \quad \lim_{r \rightarrow \infty}\phi_{hc}(r) = 3\)
  3. HQUICK [not 2nd order TVD] (Waterson & Deconinck, 1995)

    \(\phi_{hq}(r) = \frac{2 \left(r + \left|r \right| \right)}{ \left(r+3 \right)} ; \quad \lim_{r \rightarrow \infty}\phi_{hq}(r) = 4\)
  4. Koren (Koren, 1993) – third-order accurate for sufficiently smooth data[1]

    \(\phi_{kn}(r) = \max \left[ 0, \min \left(2 r, \left(2 + r \right)/3, 2 \right) \right]; \quad \lim_{r \rightarrow \infty}\phi_{kn}(r) = 2\)
  5. minmod – symmetric (Roe, 1986)

    \(\phi_{mm} (r) = \max \left[ 0 , \min \left( 1 , r \right) \right] ; \quad \lim_{r \rightarrow \infty}\phi_{mm}(r) = 1\)
  6. monotonized central (MC) – symmetric (van Leer, 1977)

    $ \phi_{mc} (r) = \max \left[ 0 , \min \left( 2 r, 0.5 (1+r), 2 \right) \right] ; \quad \lim_{r \rightarrow \infty}\phi_{mc}(r) = 2$
  7. Osher (Chatkravathy and Osher, 1983)

    \(\phi_{os} (r) = \max \left[ 0 , \min \left( r, \beta \right) \right], \quad \left(1 \leq \beta \leq 2 \right) ; \quad \lim_{r \rightarrow \infty}\phi_{os} (r) = \beta\)
  8. ospre – symmetric (Waterson & Deconinck, 1995)

    \(\phi_{op} (r) = \frac{1.5 \left(r^2 + r \right) }{\left(r^2 + r +1 \right)} ; \quad \lim_{r \rightarrow \infty}\phi_{op} (r) = 1.5\)
  9. smart [not 2nd order TVD] (Gaskell & Lau, 1988)

    \(\phi_{sm}(r) = \max \left[ 0, \min \left(2 r, \left(0.25 + 0.75 r \right), 4 \right) \right] ; \quad \lim_{r \rightarrow \infty}\phi_{sm}(r) = 4\)
  10. superbee – symmetric (Roe, 1986)

    \(\phi_{sb} (r) = \max \left[ 0, \min \left( 2 r , 1 \right), \min \left( r, 2 \right) \right] ; \quad \lim_{r \rightarrow \infty}\phi_{sb} (r) = 2\)
  11. Sweby – symmetric (Sweby, 1984)

    \(\phi_{sw} (r) = \max \left[ 0 , \min \left( \beta r, 1 \right), \min \left( r, \beta \right) \right], \quad \left(1 \leq \beta \leq 2 \right) ; \quad \lim_{r \rightarrow \infty}\phi_{sw} (r) = \beta\)
  12. UMIST (Lien & Leschziner, 1994)

    \(\phi_{um}(r) = \max \left[ 0, \min \left(2 r, \left(0.25 + 0.75 r \right), \left(0.75 + 0.25 r \right), 2 \right) \right] ; \quad \lim_{r \rightarrow \infty}\phi_{um}(r) = 2\)
  13. van Albada 1 – symmetric (van Albada, et al., 1982)

    \(\phi_{va1} (r) = \frac{r^2 + r}{r^2 + 1 } ; \quad \lim_{r \rightarrow \infty}\phi_{va1} (r) = 1\)
  14. van Albada 2 – alternative form [not 2nd order TVD] used on high spatial order schemes (Kermani, 2003)

    \(\phi_{va2} (r) = \frac{2 r}{r^2 + 1} ; \quad \lim_{r \rightarrow \infty}\phi_{va2} (r) = 0\)
  15. van Leer – symmetric (van Leer, 1974)

    \(\phi_{vl} (r) = \frac{r + \left| r \right| }{1 + \left| r \right| } ; \quad \lim_{r \rightarrow \infty}\phi_{vl} (r) = 2\)

上面所有对称型限制器都具有如下对称性质:

\[\begin{eqnarray}
\begin{aligned}
\frac{ \phi \left( r \right)}{r} = \phi \left( \frac{1}{r} \right)
\end{aligned}
\end{eqnarray}\]

这个对称性质可以保证限制过程不管是向前或者向后结果都是相同的。

除非明确指出,以上限制器函数都是二阶。这代表它们都设计为通过解的某个特殊区域,及TVD区域,来保证格式的稳定性。二阶精度,TVD限制器至少满足以下条件

  • \(r \le \phi(r) \le 2r, \left( 0 \le r \le 1 \right)\)
  • $1 \le \phi(r) \le r, \left( 1 \le r \le 2 \right) $
  • \(1 \le \phi(r) \le 2, \left( r > 2 \right)\)
  • \(\phi(1) = 1\)

二阶TVD格式的允许区域如下图所示(Sweby Diagram),每个限制函数同时绘制在图中。在Osher和Sweby限制函数中,\(\beta\)取值为1.5

一般的minmod限制器

余下的一种限制器形式较特殊,val-Leer的单变量限制器(van Leer, 1979; Harten and Osher, 1987; Kurganov and Tadmor, 2000)。其形式如下

\[\begin{equation}
\phi_{mg}(u,\theta)=\max\left(0,\min\left(\theta r,\frac{1+r}{2},\theta\right)\right),\quad\theta\in\left[1,2\right].
\end{equation}\]

注意:当 \(\theta=1\) 时 \(\phi_{mg}\) 耗散形最强,当 \(\theta=2\) 时, \(\phi_{mg}\) 简化为 \(\phi_{mm}\),耗散性最小。

流量限制器(Flux Limiter)的更多相关文章

  1. 快速入门系列--WCF--06并发限流、可靠会话和队列服务

    这部分将介绍一些相对深入的知识点,包括通过并发限流来保证服务的可用性,通过可靠会话机制保证会话信息的可靠性,通过队列服务来解耦客户端和服务端,提高系统的可服务数量并可以起到削峰的作用,最后还会对之前的 ...

  2. 单IP、网络、别名管道限速的设置

    单IP.网络.别名管道限速的设置 在设备上,控制网络限速最常用的是流量×××中的“限制器”,你可以把它理解为一个管道,20Mit/s的下载管道,那么下载的最大流量就不会超过20Mit/s.流量限制器结 ...

  3. flask扩展系列之 - 访问速度限制

    flask-limiter 是一个对客户端的访问速率进行限制的flask扩展.可以自定义一些访问的(速度)限制条件来把那些触发限制的请求拒之门外.一般常用来进行对爬虫的限制. 下面就常见的用法,举了一 ...

  4. 流量控制闸门——LimitLatch套接字连接数限制器

    Tomcat作为web服务器,对于每个客户端的请求将给予处理响应,但对于一台机器而言,访问请求的总流量有高峰期且服务器有物理极限,为了保证web服务器不被冲垮我们需要采取一些措施进行保护预防,需要稍微 ...

  5. #研发解决方案#基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案

    郑昀 基于杨海波的设计文档 创建于2015/8/13 最后更新于2015/8/25 关键词:异常流量.rate limiting.Nginx.Apriori.频繁项集.先验算法.Lua.ELK 本文档 ...

  6. Servlet过滤器——过滤器分析流量

    1.概述 Servlet过滤器可以对用户提交的数据或服务器返回的数据进行更改.任何到达服务器的请求都会首先经过过滤器的处理.本实例应用过滤器的这个特点,编写了一个在过滤器中统计网站流量的实例. 本实例 ...

  7. 基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案 郑昀 基于杨海波的设计文档(转)

    郑昀 基于杨海波的设计文档 创建于2015/8/13 最后更新于2015/8/25 关键词:异常流量.rate limiting.Nginx.Apriori.频繁项集.先验算法.Lua.ELK 本文档 ...

  8. JAVA中限制接口流量、并发的方法

    JAVA中限制接口流量可以通过Guava的RateLimiter类或者JDK自带的Semaphore类来实现,两者有点类似,但是也有区别,要根据实际情况使用.简单来说, RateLimiter类是控制 ...

  9. 探索从 MVC 到 MVVM + Flux 架构模式的转变

    本文首发于 my blog 在业务中一般 MVVM 框架一般都会配合上数据状态库(redux, mobx 等)一起使用,本文会通过一个小 demo 来讲述为什么会引人数据状态库. 从 MVC 到 MV ...

随机推荐

  1. 【UE4】虚幻引擎技术直播汇总(含中英文直播)

    B站虚幻引擎官方账号 中文直播 [中文直播]第35期 | 使用GIS在UE中创造真实地球风貌 | Epic 周澄清 [中文直播]第34期 | 包教包会的Epic MegaGrants申请之道 | Ep ...

  2. 【数据结构与算法Python版学习笔记】算法分析

    什么是算法分析 算法是问题解决的通用的分步的指令的聚合 算法分析主要就是从计算资源的消耗的角度来评判和比较算法. 计算资源指标 存储空间或内存 执行时间 影响算法运行时间的其他因素 分为最好.最差和平 ...

  3. Java:ArrayList类小记

    Java:ArrayList类小记 对 Java 中的 ArrayList类,做一个微不足道的小小小小记 概述 java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素. ...

  4. 无网络下,配置yum本地源

    1. 新建一个没有iso镜像文件的虚拟机: 2. 本地上传一个镜像文件(CentOS7的镜像),到虚拟机已创建的目录: 例如:上传一个镜像文件CentOS-7-x86_64-Everything-17 ...

  5. HZOI帝国2019欢乐时刻

    前言: update 只是恢复一下原来手残删掉的博客,不是在水,嘤嘤嘤 update 以后改成Stack,但是之前的就懒得改了... by 10.31 为了窝的访问量大家的好心情,模仿学长搞了一个这个 ...

  6. 认真讲说static关键字

    static 关键字主要有以下四种使用场景 修饰成员变量和成员方法 静态代码块 修饰类(只能修饰内部类) 静态导包(用来导入类中的静态资源,1.5之后的新特性) 修饰成员变量和成员方法(常用) 被 s ...

  7. 21.10.18 test

    可可大神出题,四款有趣的游戏推荐,第四个好玩/se T1 loopers \(\color{green}{100}\) 考虑钦定 \(a_1,a_i\) 的位置,固定左边一坨,那么剩下的一坨的 \(\ ...

  8. 洛谷 P2252 [SHOI2002]取石子游戏|【模板】威佐夫博弈

    链接: P2252 [SHOI2002]取石子游戏|[模板]威佐夫博弈 前言: 第一眼大水题,第二眼努力思考,第 N 眼我是大水逼. 题意: 不看题目标题都应该能看出来是取石子类的博弈论. 有两堆石子 ...

  9. A*,IDA*—高档次的暴搜

    A*通过评价函数来判断当前状态是否可以到达最终状态(即可行性剪枝),来减少不必要的搜索. 例题--P2324 [SCOI2005]骑士精神 我们通过当前不在指定位置上的棋子个数为评价函数,\(used ...

  10. html5的Message信息提示框

    1.定义dialog <dialog id="showDialog"> <div>您没有权限访问本页面!</div> </dialog&g ...