Kurganov-Tadmor二阶中心格式:理论介绍

news2025/4/26 21:32:35

简介

CFD的核心问题是求解双曲偏微分方程
∂ ∂ t u ( x , t ) + ∂ ∂ x f ( u ( x , t ) ) = 0 \frac{\partial}{\partial t} u(x, t)+\frac{\partial}{\partial x} f(u(x, t))=0 tu(x,t)+xf(u(x,t))=0在CFD中,双曲偏微分方程一般使用Godunov型迎风格式求解。但是这种迎风格式往往实施起来比较复杂(需要特征分解),如果能使用中心格式实现离散,则可以简化编程、提高计算效率。

Kurganov-Tadmor格式1(简称KT)可以实现二阶精度,是一种中心离散格式。根据此格式openFoam开发了rhoCentralFoam求解器,以求解可压缩流。本文仅介绍格式的推导思路,具体在openFoam中的实现方法将由后续文章给出。

KT格式有两种形式,它们的推导方式如下:
(1)全离散形式由分片线性解积分所得。
(2)半离散形式由Rusanov离散格式演化而来。

全离散格式

在这里插入图片描述使用分片线性函数完成解的重构,重构后的解为
u ~ ( x , t n ) : = ∑ j [ u ˉ j n + ( u x ) j n ( x − x j ) ] 1 [ x j − 1 / 2 , x j + 1 / 2 ] , x j ± 1 / 2 : = x j ± Δ x 2 \tilde{u}\left(x, t^{n}\right):=\sum_{j}\left[\bar{u}_{j}^{n}+\left(u_{x}\right)_{j}^{n}\left(x-x_{j}\right)\right] \mathbf{1}_{\left[x_{j-1 / 2}, x_{j+1 / 2}\right]}, \quad x_{j \pm 1 / 2}:=x_{j} \pm \frac{\Delta x}{2} u~(x,tn):=j[uˉjn+(ux)jn(xxj)]1[xj1/2,xj+1/2],xj±1/2:=xj±2Δx
图中 x j + 1 2 , l n x_{j + {1 \over 2},l}^n xj+21,ln表示在一个时间步后,扰动由 x j + 1 2 {x_{j + {1 \over 2}}} xj+21向左传播到的位置。所以有
x j + 1 2 − x j + 1 2 , l n = a j + 1 2 n Δ t {x_{j + {1 \over 2}}} - x_{j + {1 \over 2},l}^n = a_{j + {1 \over 2}}^n\Delta t xj+21xj+21,ln=aj+21nΔt同理有
x j + 1 2 , r n − x j + 1 2 = a j + 1 2 n Δ t x_{j + {1 \over 2},r}^n - {x_{j + {1 \over 2}}} = a_{j + {1 \over 2}}^n\Delta t xj+21,rnxj+21=aj+21nΔt式中 a j + 1 2 n a_{j + {1 \over 2}}^n aj+21n是界面处扰动的传播速度。可使用朗金-雨果纽关系式确定。

(1) [ x j + 1 2 , l n , x j + 1 2 , r n ] × [ t n , t n + 1 ] \left[ {x_{j + {1 \over 2},l}^n,x_{j + {1 \over 2},r}^n} \right] \times \left[ {{t^n},{t^{n + 1}}} \right] [xj+21,ln,xj+21,rn]×[tn,tn+1]范围内,对双曲守恒方程积分可得

w j + 1 / 2 n + 1 = u j n + u j + 1 n 2 + Δ x − a j + 1 / 2 n Δ t 4 ( ( u x ) j n − ( u x ) j + 1 n ) − 1 2 a j + 1 / 2 n [ f ( u j + 1 / 2 , r n + 1 / 2 ) − f ( u j + 1 / 2 , l n + 1 / 2 ) ] , \begin{aligned} w_{j+1 / 2}^{n+1}= & \frac{u_{j}^{n}+u_{j+1}^{n}}{2}+\frac{\Delta x-a_{j+1 / 2}^{n} \Delta t}{4}\left(\left(u_{x}\right)_{j}^{n}-\left(u_{x}\right)_{j+1}^{n}\right) \\ & -\frac{1}{2 a_{j+1 / 2}^{n}}\left[f\left(u_{j+1 / 2, r}^{n+1 / 2}\right)-f\left(u_{j+1 / 2, l}^{n+1 / 2}\right)\right], \end{aligned} wj+1/2n+1=2ujn+uj+1n+4Δxaj+1/2nΔt((ux)jn(ux)j+1n)2aj+1/2n1[f(uj+1/2,rn+1/2)f(uj+1/2,ln+1/2)],
式中, w j + 1 / 2 n + 1 w_{j+1 / 2}^{n+1} wj+1/2n+1表示 [ x j + 1 2 , l n , x j + 1 2 , r n ] \left[ {x_{j + {1 \over 2},l}^n,x_{j + {1 \over 2},r}^n} \right] [xj+21,ln,xj+21,rn]范围内的平均积分结果,上角标 n + 1 / 2 n+1/2 n+1/2表示半时间步,可用泰勒展开近似
u j + 1 / 2 , l n + 1 / 2 : = u j + 1 / 2 , l n − Δ t 2 f ( u j + 1 / 2 , l n ) x , u j + 1 / 2 , l n : = u j n + Δ x ( u x ) j n ( 1 2 − λ a j + 1 / 2 n ) u_{j+1 / 2, l}^{n+1 / 2}:=u_{j+1 / 2, l}^{n}-\frac{\Delta t}{2} f\left(u_{j+1 / 2, l}^{n}\right)_{x}, \quad u_{j+1 / 2, l}^{n}:=u_{j}^{n}+\Delta x\left(u_{x}\right)_{j}^{n}\left(\frac{1}{2}-\lambda a_{j+1 / 2}^{n}\right) uj+1/2,ln+1/2:=uj+1/2,ln2Δtf(uj+1/2,ln)x,uj+1/2,ln:=ujn+Δx(ux)jn(21λaj+1/2n)同理有
u j + 1 / 2 , r n + 1 / 2 : = u j + 1 / 2 , r n − Δ t 2 f ( u j + 1 / 2 , r n ) x , u j + 1 / 2 , r n : = u j + 1 n − Δ x ( u x ) j + 1 n ( 1 2 − λ a j + 1 / 2 n ) u_{j+1 / 2, r}^{n+1 / 2}:=u_{j+1 / 2, r}^{n}-\frac{\Delta t}{2} f\left(u_{j+1 / 2, r}^{n}\right)_{x}, \quad u_{j+1 / 2, r}^{n}:=u_{j+1}^{n}-\Delta x\left(u_{x}\right)_{j+1}^{n}\left(\frac{1}{2}-\lambda a_{j+1 / 2}^{n}\right) uj+1/2,rn+1/2:=uj+1/2,rn2Δtf(uj+1/2,rn)x,uj+1/2,rn:=uj+1nΔx(ux)j+1n(21λaj+1/2n)

(2) [ x j − 1 2 , r n , x j + 1 2 , l n ] × [ t n , t n + 1 ] \left[ {x_{j - {1 \over 2},r}^n,x_{j + {1 \over 2},l}^n} \right] \times \left[ {{t^n},{t^{n + 1}}} \right] [xj21,rn,xj+21,ln]×[tn,tn+1]范围内,对双曲守恒方程积分可得
w j n + 1 = u j n + Δ t 2 ( a j − 1 / 2 n − a j + 1 / 2 n ) ( u x ) j n − λ 1 − λ ( a j − 1 / 2 n + a j + 1 / 2 n ) [ f ( u j + 1 / 2 , l n + 1 / 2 ) − f ( u j − 1 / 2 , r n + 1 / 2 ) ] \begin{aligned} w_{j}^{n+1}= & u_{j}^{n}+\frac{\Delta t}{2}\left(a_{j-1 / 2}^{n}-a_{j+1 / 2}^{n}\right)\left(u_{x}\right)_{j}^{n} \\ & -\frac{\lambda}{1-\lambda\left(a_{j-1 / 2}^{n}+a_{j+1 / 2}^{n}\right)}\left[f\left(u_{j+1 / 2, l}^{n+1 / 2}\right)-f\left(u_{j-1 / 2, r}^{n+1 / 2}\right)\right] \end{aligned} wjn+1=ujn+2Δt(aj1/2naj+1/2n)(ux)jn1λ(aj1/2n+aj+1/2n)λ[f(uj+1/2,ln+1/2)f(uj1/2,rn+1/2)]

综上得到了区间 [ x j + 1 2 , l n , x j + 1 2 , r n ] \left[ {x_{j + {1 \over 2},l}^n,x_{j + {1 \over 2},r}^n} \right] [xj+21,ln,xj+21,rn]与区间 [ x j − 1 2 , r n , x j + 1 2 , l n ] \left[ {x_{j - {1 \over 2},r}^n,x_{j + {1 \over 2},l}^n} \right] [xj21,rn,xj+21,ln]上解的均值。

为了得到最终的 u j n + 1 u_j^{n + 1} ujn+1,需要将区间 [ x j − 1 2 n , x j − 1 2 , r n ] \left[ {x_{j - {1 \over 2}}^n,x_{j - {1 \over 2},r}^n} \right] [xj21n,xj21,rn]、区间 [ x j − 1 2 , r n , x j + 1 2 , l n ] \left[ {x_{j - {1 \over 2},r}^n,x_{j + {1 \over 2},l}^n} \right] [xj21,rn,xj+21,ln] [ x j + 1 2 , l n , x j + 1 2 n ] \left[ {x_{j + {1 \over 2},l}^n,x_{j + {1 \over 2}}^n} \right] [xj+21,ln,xj+21n]的解积分平均,最终得到
u j n + 1 = 1 Δ x ∫ x j − 1 / 2 x j + 1 / 2 w ~ ( ξ , t n + 1 ) d ξ = λ a j − 1 / 2 n w j − 1 / 2 n + 1 + [ 1 − λ ( a j − 1 / 2 n + a j + 1 / 2 n ) ] w j n + 1 + λ a j + 1 / 2 n w j + 1 / 2 n + 1 + Δ x 2 [ ( λ a j − 1 / 2 n ) 2 ( u x ) j − 1 / 2 n + 1 − ( λ a j + 1 / 2 n ) 2 ( u x ) j + 1 / 2 n + 1 ] \begin{aligned} u_{j}^{n+1}= & \frac{1}{\Delta x} \int_{x_{j-1 / 2}}^{x_{j+1 / 2}} \tilde{w}\left(\xi, t^{n+1}\right) d \xi=\lambda a_{j-1 / 2}^{n} w_{j-1 / 2}^{n+1}+\left[1-\lambda\left(a_{j-1 / 2}^{n}+a_{j+1 / 2}^{n}\right)\right] w_{j}^{n+1} \\ & +\lambda a_{j+1 / 2}^{n} w_{j+1 / 2}^{n+1}+\frac{\Delta x}{2}\left[\left(\lambda a_{j-1 / 2}^{n}\right)^{2}\left(u_{x}\right)_{j-1 / 2}^{n+1}-\left(\lambda a_{j+1 / 2}^{n}\right)^{2}\left(u_{x}\right)_{j+1 / 2}^{n+1}\right] \end{aligned} ujn+1=Δx1xj1/2xj+1/2w~(ξ,tn+1)dξ=λaj1/2nwj1/2n+1+[1λ(aj1/2n+aj+1/2n)]wjn+1+λaj+1/2nwj+1/2n+1+2Δx[(λaj1/2n)2(ux)j1/2n+1(λaj+1/2n)2(ux)j+1/2n+1]
这就是全离散K-T格式,具体的minmod斜率限制器可参见论文原文。斜率限制器的目的是使得此二阶格式TVD,在间断解处退回一阶格式。

半离散格式

半离散格式的推导相对简单,首先考虑一阶Rusanov格式
u j n + 1 = u j n − λ 2 [ f ( u j + 1 n ) − f ( u j − 1 n ) ] + 1 2 [ λ a j + 1 / 2 n ( u j + 1 n − u j n ) − λ a j − 1 / 2 n ( u j n − u j − 1 n ) ] u_{j}^{n+1}=u_{j}^{n}-\frac{\lambda}{2}\left[f\left(u_{j+1}^{n}\right)-f\left(u_{j-1}^{n}\right)\right]+\frac{1}{2}\left[\lambda a_{j+1 / 2}^{n}\left(u_{j+1}^{n}-u_{j}^{n}\right)-\lambda a_{j-1 / 2}^{n}\left(u_{j}^{n}-u_{j-1}^{n}\right)\right] ujn+1=ujn2λ[f(uj+1n)f(uj1n)]+21[λaj+1/2n(uj+1nujn)λaj1/2n(ujnuj1n)]
将其写为半离散格式(左端项是时间导数)
∂ u ∂ t = − 1 Δ x ( f ( u j + 1 n ) − f ( u j − 1 n ) 2 − a j + 1 / 2 n ( u j + 1 n − u j n ) − a j − 1 / 2 n ( u j n − u j − 1 n ) 2 ) {{\partial u} \over {\partial t}} = - {1 \over {\Delta x}}\left( {{{f\left( {u_{j + 1}^n} \right) - f\left( {u_{j - 1}^n} \right)} \over 2} - {{a_{j + 1/2}^n\left( {u_{j + 1}^n - u_j^n} \right) - a_{j - 1/2}^n\left( {u_j^n - u_{j - 1}^n} \right)} \over 2}} \right) tu=Δx1(2f(uj+1n)f(uj1n)2aj+1/2n(uj+1nujn)aj1/2n(ujnuj1n))
进一步写为守恒形式
∂ u ∂ t = − 1 Δ x ( H j + 1 2 − H j − 1 2 ) {{\partial u} \over {\partial t}} = - {1 \over {\Delta x}}\left( {{H_{j + {1 \over 2}}} - {H_{j - {1 \over 2}}}} \right) tu=Δx1(Hj+21Hj21)其中
H j + 1 2 = f ( u j + 1 n ) + f ( u j n ) 2 − a j + 1 / 2 n 2 ( u j + 1 n − u j n ) {H_{j + {1 \over 2}}} = {{f\left( {u_{j + 1}^n} \right) + f\left( {u_j^n} \right)} \over 2} - {{a_{j + 1/2}^n} \over 2}\left( {u_{j + 1}^n - u_j^n} \right) Hj+21=2f(uj+1n)+f(ujn)2aj+1/2n(uj+1nujn) H j − 1 2 = f ( u j n ) + f ( u j − 1 n ) 2 − a j − 1 / 2 n 2 ( u j n − u j − 1 n ) {H_{j - {1 \over 2}}} = {{f\left( {u_j^n} \right) + f\left( {u_{j - 1}^n} \right)} \over 2} - {{a_{j - 1/2}^n} \over 2}\left( {u_j^n - u_{j - 1}^n} \right) Hj21=2f(ujn)+f(uj1n)2aj1/2n(ujnuj1n)
为了将格式提升为二阶,则使用分段线性将解重构,有
H j + 1 / 2 ( t ) : = f ( u j + 1 / 2 + ( t ) ) + f ( u j + 1 / 2 − ( t ) ) 2 − a j + 1 / 2 ( t ) 2 [ u j + 1 / 2 + ( t ) − u j + 1 / 2 − ( t ) ] H_{j+1 / 2}(t):=\frac{f\left(u_{j+1 / 2}^{+}(t)\right)+f\left(u_{j+1 / 2}^{-}(t)\right)}{2}-\frac{a_{j+1 / 2}(t)}{2}\left[u_{j+1 / 2}^{+}(t)-u_{j+1 / 2}^{-}(t)\right] Hj+1/2(t):=2f(uj+1/2+(t))+f(uj+1/2(t))2aj+1/2(t)[uj+1/2+(t)uj+1/2(t)]
式中
u j + 1 / 2 + : = u j + 1 ( t ) − Δ x 2 ( u x ) j + 1 ( t ) , u j + 1 / 2 − : = u j ( t ) + Δ x 2 ( u x ) j ( t ) u_{j+1 / 2}^{+}:=u_{j+1}(t)-\frac{\Delta x}{2}\left(u_{x}\right)_{j+1}(t), \quad u_{j+1 / 2}^{-}:=u_{j}(t)+\frac{\Delta x}{2}\left(u_{x}\right)_{j}(t) uj+1/2+:=uj+1(t)2Δx(ux)j+1(t),uj+1/2:=uj(t)+2Δx(ux)j(t)
H j − 1 / 2 H_{j-1 / 2} Hj1/2的计算公式不再赘述。

这就是半离散K-T格式,具体的minmod斜率限制器可参见论文原文。斜率限制器的目的是使得此二阶格式TVD,在间断解处退回一阶格式。

半离散格式只完成了空间离散,时间离散可使用TVD-龙格库塔法实现。


  1. KURGANOV A, TADMOR E. New high-resolution central schemes for nonlinear conservation laws and convection–diffusion equations[J]. Journal of Computational Physics, 2000, 160(1): 241-282. ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/131614.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年度学习总结

2022年有焦虑也有成长,记录和总结也是成长的一部分。这一年,我也努力在不确定性中做一些确定的事情,感恩被保护的三年,三年清零抗疫结束,做好自己健康的第一责任人。研一半个学期在网课或者封校中度过,我们…

1.0、Linux-入门概述

1.0、Linux-入门概述 我们为什么要学习 Linux ? Linux诞生了这么多年,以前还喊着如何能取代 Windows 系统,现在这个口号已经小多了,任何事物发展都有其局限性;如同现在国内在搞一个社交软件取代 QQ 、微信 一样&#x…

已解决(Python语法报错)SyntaxError: invalid syntax

已解决(Python语法报错)SyntaxError: invalid syntax 文章目录报错信息报错翻译报错原因解决方法帮忙解决报错信息 粉丝群里面一个小伙伴运行Python代码,但是发生了报错(当时他心里瞬间凉了一大截,跑来找我求助&…

IDEA安装与配置教程

一、下载并安装IDEA 1、下载官网: 下载 IntelliJ IDEA (这里以Windows系统为例,其他系统类似) 2、安装 1、下载完成后,直接点击安装包安装,即可。 2、开始安装,然后下一步 3、可以在此处自定…

算法 - 蓝桥杯并查集题型

目录 合并集合 连通块中点的数量 蓝桥杯2017年第八届真题-合根植物 [蓝桥杯][2019年第十届真题] 修改数组 蓝桥幼儿园 刷了好多题,发现并查集这种思想挺妙的,是时候总结一下了; 作用与基本原理: 套路问题: 用一道…

Mac M1 Pro下载node.js

Mac M1 Pro下载node.js基本信息 Mac M1 Pronode版本:14.20.0npm版本:8.19.3cnpm版本:8.5.1 注意: 我之前是去官网下了最新版本node,但cnpm就是下载不下来,于是查了其他博主的文章,这边通过nvm…

aws codepipeline 配置 ecs 蓝绿部署

参考资料 CI/CD workshop for Amazon ECSTutorial: Create a pipeline with an Amazon ECR source and ECS-to-CodeDeploy deploymentAmazon ECS 计算平台上的部署CodeDeploy AppSpec 文件引用 之前的文章介绍了通过codepipeline对ecs服务进行滚动更新,本文主要介…

Docker 学习总结(78)—— WebAssembly 入门简介

什么是 WebAssembly? WebAssembly 是一种定义二进制指令格式的开放标准,它支持从不同的源语言创建可移植的二进制可执行文件。这些二进制文件可以在各种环境中运行。它起源于 Web,并得到各大主流浏览器的支持。 Wasm 如何在浏览器中工作? …

RCTF-pwn-diary

RCTF-pwn-diary 赛后看了一眼发现给出了源码,https://github.com/ruan777/RCTF2022/blob/main/diary/main.cpp 漏洞是erase的问题 解释一下 add(0) add(1) add(2) delete(1)这样子的话,其实就是把2给删除,把2的内容复制到1中,所…

Base64自定义编码表及破解

什么是Base64 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64并不是安全领域的加密算法,其实Base64只能算是一个编码算法,对数据内容进行编码来适合传输。标准Base64编码解码无需额外信息即完全可逆,即使你自…

基于Python + Django 开发一款学生管理系统(附源码)

文章目录1.开发环境源码分享&技术交流2.项目实战1)创建Django项目2)创建应用3)配置MySQL4)数据模型层创建5)路由配置6)增删改查视图函数7)模板页面创建8)启动web服务1.开发环境 …

最大似然和贝叶斯参数估计

统计生成模型的参数估计 – Maximum Likelihood(ML) 假设参数是某个确定的值,通过使似然度最大求出参数 – Bayesian estimation 假设参数是随机变量,估计参数分布的参数 – 最大似然求出具体的参数,贝叶斯求的是参数的分布 最大似然估计 假…

献给自己技术成长的第三年

年度总结词语:幸运 献给自己技术成长的第三年一、五州一都二、if else量产三、学技术四、用真心五、设计精产六、感恩幸运一、五州一都 1.1-1.12成都、2.23-3.19广州、4.12-7.23苏州、8.12-8.20兰州、8.23-9.20湖州、其余杭州 成都。去年年底出差到成都,…

HTTP_day01

在互联网世界里,HTTP 通常跑在 TCP/IP 协议栈之上,依靠 IP 协议实现寻址和路由、TCP 协议实现可靠数据传输、DNS 协议实现域名查找、SSL/TLS 协议实现安全通信。此外,还有一些协议依赖于 HTTP,例如 WebSocket、HTTPDNS 等。这些协…

【数据结构】冒泡排序、快速排序(递归,非递归)、归并排序(递归,非递归),七大排序比较,

文章目录冒泡排序快速排序归并排序七大排序之间的对比冒泡排序 基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小…

高性能web网关之Openresty相关基础知识

高性能web网关之Openresty一、Openresty 简介二、Openresty 应用场景三、lua-nginx-module3.1、Lua 模块指令顺序3.2、Lua嵌入nginx四、责任链五、cosocket后言一、Openresty 简介 openresty 是一个基于 nginx 与 lua 的高性能 web 平台,其内部集成了大量精良的 lu…

148.排序链表

148.排序链表 题目: 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4]示例 2: 输入:head [-1,5,3,4,0] 输出:…

【论文阅读】CVPR2018-深度材料感知跨光谱立体匹配

深度材料感知跨光谱立体匹配 摘要 跨光谱成像对识别和检测任务很有帮助。通常,多个相机用于跨光谱成像,因此需要图像对齐或双目系统中的视差估计。多相机跨光谱系统逐渐被嵌入到有源RGB-D设备中(例如Kinect和iPhone X中的RGB-NIR相机&#…

2022 年度回忆

2022 年度回忆 过了今天就是2023年了,记录一下在这一年里发生的点点滴滴吧。 年度总结2022 年度回忆1.石家庄实习2.准备秋招,然后去沈阳实习3.回学校4.来北京实习了总结今年大体且分为四条故事线 1.22年上半年石家庄实习 2.实习结束回家准备秋招&#…

句子表征(各项异性等偏差):PromptBERT: Improving BERT Sentence Embeddings with Prompts

一、核心 句子表征存在不足之处,可能面临各向异性、可能受到词频的影响、可能受到子词、大小写等的影响等等。 Gao et al.(2019)和Wang et al.(2020)指出,对于语言建模,使用最大似然训练通常会产生一个各向异性的词嵌入空间。“各向异性”是…