流量限制器(Flux Limiter)
内容翻译自Wikipedia
Flux limiter
流量限制器(Flux limiters)应用在高精度格式中-这种数值方法用来求解科学与工程问题,特别是由偏微分方程(PDE's)描述的流体动力学。高精度数值方法,如MUSCL格式,可以避免由于高阶空间离散格式在间断或大梯度处引起的高阶振荡(wiggles)。使用流量限制器,并且配合合适的高精度格式,可是使格式满足总变差减小(TVD)性质。
注意流量限制器也称作梯度限制器,因为他们有相同的数学形式,都能够限制间断位置附近解的梯度。通常“流量限制器”用在限制算子作用在方程组流量项时候,而“梯度限制器”应用与限制器作用在方程变量上情况(system states)
如何工作
构建通量限制器的主要思想是限制空间导数计算使其接近实际值 - 在科学和工程问题中,这通常是指物理上可实现的并且有意义的值。它们被用在高分辨率的方法中来解决由偏微分方程描述的问题,并且只有大梯度的锋面存在时才发挥作用。对于平滑变换波形,通量限制器不起作用而空间导数可通过高阶近似方法求解并且不会引入高阶振荡。考虑下面的一维半离散格式,
\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{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\)代表网格上连续梯度比值
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)\):
- 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.\) - 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\) - 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\) - 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\) - 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\) - 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$ - 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\) - 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\) - 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\) - 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\) - 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\) - 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\) - 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\) - 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\) - 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{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)。其形式如下
\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)的更多相关文章
- 快速入门系列--WCF--06并发限流、可靠会话和队列服务
这部分将介绍一些相对深入的知识点,包括通过并发限流来保证服务的可用性,通过可靠会话机制保证会话信息的可靠性,通过队列服务来解耦客户端和服务端,提高系统的可服务数量并可以起到削峰的作用,最后还会对之前的 ...
- 单IP、网络、别名管道限速的设置
单IP.网络.别名管道限速的设置 在设备上,控制网络限速最常用的是流量×××中的“限制器”,你可以把它理解为一个管道,20Mit/s的下载管道,那么下载的最大流量就不会超过20Mit/s.流量限制器结 ...
- flask扩展系列之 - 访问速度限制
flask-limiter 是一个对客户端的访问速率进行限制的flask扩展.可以自定义一些访问的(速度)限制条件来把那些触发限制的请求拒之门外.一般常用来进行对爬虫的限制. 下面就常见的用法,举了一 ...
- 流量控制闸门——LimitLatch套接字连接数限制器
Tomcat作为web服务器,对于每个客户端的请求将给予处理响应,但对于一台机器而言,访问请求的总流量有高峰期且服务器有物理极限,为了保证web服务器不被冲垮我们需要采取一些措施进行保护预防,需要稍微 ...
- #研发解决方案#基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案
郑昀 基于杨海波的设计文档 创建于2015/8/13 最后更新于2015/8/25 关键词:异常流量.rate limiting.Nginx.Apriori.频繁项集.先验算法.Lua.ELK 本文档 ...
- Servlet过滤器——过滤器分析流量
1.概述 Servlet过滤器可以对用户提交的数据或服务器返回的数据进行更改.任何到达服务器的请求都会首先经过过滤器的处理.本实例应用过滤器的这个特点,编写了一个在过滤器中统计网站流量的实例. 本实例 ...
- 基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案 郑昀 基于杨海波的设计文档(转)
郑昀 基于杨海波的设计文档 创建于2015/8/13 最后更新于2015/8/25 关键词:异常流量.rate limiting.Nginx.Apriori.频繁项集.先验算法.Lua.ELK 本文档 ...
- JAVA中限制接口流量、并发的方法
JAVA中限制接口流量可以通过Guava的RateLimiter类或者JDK自带的Semaphore类来实现,两者有点类似,但是也有区别,要根据实际情况使用.简单来说, RateLimiter类是控制 ...
- 探索从 MVC 到 MVVM + Flux 架构模式的转变
本文首发于 my blog 在业务中一般 MVVM 框架一般都会配合上数据状态库(redux, mobx 等)一起使用,本文会通过一个小 demo 来讲述为什么会引人数据状态库. 从 MVC 到 MV ...
随机推荐
- 【UE4 C++】DateTime、Timespan 相关函数
基于UKismetMathLibrary DateTime 相关函数 Timespan 运算操作相关函数见尾部附录 /** Returns the date component of A */ UFU ...
- Convolutional Neural Network-week1编程题(TensorFlow实现手势数字识别)
1. TensorFlow model import math import numpy as np import h5py import matplotlib.pyplot as plt impor ...
- Sequence Model-week2编程题2-Emoji表情生成器
1. Emoji表情生成器 下面,我们要使用词向量(word vector)来构建一个表情生成器. 你将实现一个模型:输入一句话 (如 "Let's go see the baseball ...
- [对对子队]会议记录5.14(Scrum Meeting1)
今天已完成的工作 何瑞 工作内容:初步完成循环指令系统 相关issue:实现循环语句系统的逻辑 相关签入:feat:循环语句的指令编辑系统初步完成 吴昭邦 工作内容:将流水线系统和循环 ...
- Noip模拟35 2021.8.10
考试题目变成四道了,貌似确实根本改不完... 不过给了两个小时颓废时间确实很爽(芜湖--) 但是前几天三道题改着不是很费劲的时候为什么不给放松时间, 非要在改不完题的时候颓?? 算了算了不碎碎念了.. ...
- 在Ubuntu下安装Solr
使用wget命令去官网下载solr的压缩包. 1 wget https://mirrors.bfsu.edu.cn/apache/lucene/solr/8.6.3/solr-8.6.3.tgz 使用 ...
- hdu 2086 A1 = ? (公式推导)
有如下方程:Ai = (Ai-1 + Ai+1)/2 - Ci (i = 1, 2, 3, .... n).若给出A0, An+1, 和 C1, C2, .....Cn.请编程计算A1 = ? Inp ...
- hdu 4786 Fibonacci Tree (最小、最大生成树)
题意: N个点,M条边.每条边连接两个点u,v,且有一个权值c,c非零即一. 问能否将N个点形成一个生成树,并且这棵树的边权值和是一个fibonacii数. (fibonacii数=1,2,3,5,8 ...
- SpringCloud微服务实战——搭建企业级开发框架(十三):OpenFeign+Ribbon实现高可用重试机制
Spring Cloud OpenFeign 默认是使用Ribbon实现负载均衡和重试机制的,虽然Feign有自己的重试机制,但该功能在Spring Cloud OpenFeign基本用不上,除非 ...
- Linux内核 fork 源码分析
内核版本:linux-4.4.18 源码位置:这里 fork相关的代码最终执行的函数为_do_fork(),下面按照顺序分析下_do_fork(): 首先判断是否需要trace(跟踪)这个进程,这一步 ...