WENO格式自动推导

本文介绍了WENO格式在CFD中的应用,通过Mathematica自动推导展示了从3阶到6阶的WENO格式,包括5阶和11阶的具体系数计算。重点在于线性权和非线性权重的计算,这对于理解和实现高精度数值求解至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

WENO格式是CFD中的一种高精度的数值格式。如果函数光滑,使用 r r r个模板可以在空间上达到 2 r − 1 2r-1 2r1。如果出现间断,那么WENO格式退化为ENO格式。

理论上WENO可达任意阶精度,但是推导过程比较繁琐。本文使用Mathematica软件完成WENO格式的自动推导,可以实现任意阶精度。

WENO格式的理论部分可参考JIANG G, SHU C. Efficient implementation of weighted ENO schemes[J]. Journal of Computational Physics, 1996, 126(1): 202-228.

代码

在这里插入图片描述

结果

r = 3 r=3 r=3可得经典的5阶WENO格式
p 0 [ 1 / 2 ] = 1 / 6 ( 2 u [ − 2 ] − 7 u [ − 1 ] + 11 u [ 0 ] ) p 1 [ 1 / 2 ] = 1 / 6 ( − u [ − 1 ] + 5 u [ 0 ] + 2 u [ 1 ] ) p 2 [ 1 / 2 ] = 1 / 6 ( 2 u [ 0 ] + 5 u [ 1 ] − u [ 2 ] ) 线 性 权 = c [ 0 ] − > 1 / 10 , c [ 1 ] − > 3 / 5 , c [ 2 ] − > 3 / 10 I S 0 = 1 / 3 ( 4 u [ − 2 ] 2 + 25 u [ − 1 ] 2 − 31 u [ − 1 ] u [ 0 ] + 10 u [ 0 ] 2 + u [ − 2 ] ( − 19 u [ − 1 ] + 11 u [ 0 ] ) ) I S 1 = 1 / 3 ( 4 u [ − 1 ] 2 + 13 u [ 0 ] 2 − 13 u [ 0 ] u [ 1 ] + 4 u [ 1 ] 2 + u [ − 1 ] ( − 13 u [ 0 ] + 5 u [ 1 ] ) ) I S 2 = 1 / 3 ( 10 u [ 0 ] 2 + 25 u [ 1 ] 2 − 19 u [ 1 ] u [ 2 ] + 4 u [ 2 ] 2 + u [ 0 ] ( − 31 u [ 1 ] + 11 u [ 2 ] ) ) p0[1/2]=1/6 (2 u[-2]-7 u[-1]+11 u[0]) \\ p1[1/2]=1/6 (-u[-1]+5 u[0]+2 u[1]) \\ p2[1/2]=1/6 (2 u[0]+5 u[1]-u[2]) \\ 线性权={c[0]->1/10,c[1]->3/5,c[2]->3/10} \\ IS0=1/3 (4 u[-2]^2+25 u[-1]^2-31 u[-1] u[0]+10 u[0]^2+u[-2] (-19 u[-1]+11 u[0])) \\ IS1=1/3 (4 u[-1]^2+13 u[0]^2-13 u[0] u[1]+4 u[1]^2+u[-1] (-13 u[0]+5 u[1])) \\ IS2=1/3 (10 u[0]^2+25 u[1]^2-19 u[1] u[2]+4 u[2]^2+u[0] (-31 u[1]+11 u[2])) p0[1/2]=1/6(2u[2]7u[1]+11u[0])p1[1/2]=1/6(u[1]+5u[0]+2u[1])p2[1/2]=1/6(2u[0]+5u[1]u[2])线=c[0]>1/10,c[1]>3/5,c[2]>3/10IS0=1/3(4u[2]2+25u[1]231u[1]u[0]+10u[0]2+u[2](19u[1]+11u[0]))IS1=1/3(4u[1]2+13u[0]213u[0]u[1]+4u[1]2+u[1](13u[0]+5u[1]))IS2=1/3(10u[0]2+25u[1]219u[1]u[2]+4u[2]2+u[0](31u[1]+11u[2]))

r = 6 r=6 r=6可得非常精确的11阶WENO格式
p 0 [ 1 / 2 ] = 1 / 60 ( − 10 u [ − 5 ] + 62 u [ − 4 ] − 163 u [ − 3 ] + 237 u [ − 2 ] − 213 u [ − 1 ] + 147 u [ 0 ] ) p 1 [ 1 / 2 ] = 1 / 60 ( 2 u [ − 4 ] − 13 u [ − 3 ] + 37 u [ − 2 ] − 63 u [ − 1 ] + 87 u [ 0 ] + 10 u [ 1 ] ) p 2 [ 1 / 2 ] = 1 / 60 ( − u [ − 3 ] + 7 u [ − 2 ] − 23 u [ − 1 ] + 57 u [ 0 ] + 22 u [ 1 ] − 2 u [ 2 ] ) p 3 [ 1 / 2 ] = 1 / 60 ( u [ − 2 ] − 8 u [ − 1 ] + 37 u [ 0 ] + 37 u [ 1 ] − 8 u [ 2 ] + u [ 3 ] ) p 4 [ 1 / 2 ] = 1 / 60 ( − 2 u [ − 1 ] + 22 u [ 0 ] + 57 u [ 1 ] − 23 u [ 2 ] + 7 u [ 3 ] − u [ 4 ] ) p 5 [ 1 / 2 ] = 1 / 60 ( 10 u [ 0 ] + 87 u [ 1 ] − 63 u [ 2 ] + 37 u [ 3 ] − 13 u [ 4 ] + 2 u [ 5 ] ) 线 性 权 = c [ 0 ] − > 1 / 462 , c [ 1 ] − > 5 / 77 , c [ 2 ] − > 25 / 77 , c [ 3 ] − > 100 / 231 , c [ 4 ] − > 25 / 154 , c [ 5 ] − > 1 / 77 I S 0 = ( 1 / 120960 ) ( 1152561 u [ − 5 ] 2 + 36480687 u [ − 4 ] 2 + 190757572 u [ − 3 ] 2 − 444003904 u [ − 3 ] u [ − 2 ] + 260445372 u [ − 2 ] 2 + 262901672 u [ − 3 ] u [ − 1 ] − 311771244 u [ − 2 ] u [ − 1 ] + 94851237 u [ − 1 ] 2 − 4 ( 15848531 u [ − 3 ] − 19051684 u [ − 2 ] + 11865116 u [ − 1 ] ) u [ 0 ] + 6150211 u [ 0 ] 2 − 2 u [ − 5 ] ( 6475092 u [ − 4 ] − 14721128 u [ − 3 ] + 16959402 u [ − 2 ] − 9917175 u [ − 1 ] + 2356370 u [ 0 ] ) + 2 u [ − 4 ] ( − 83230522 u [ − 3 ] + 96298236 u [ − 2 ] − 56603394 u [ − 1 ] + 13530085 u [ 0 ] ) ) I S 1 = ( 1 / 120960 ) ( 271779 u [ − 4 ] 2 + 8449957 u [ − 3 ] 2 + 43093692 u [ − 2 ] 2 − 97838784 u [ − 2 ] u [ − 1 ] + 56662212 u [ − 1 ] 2 + 55053752 u [ − 2 ] u [ 0 ] − 65224244 u [ − 1 ] u [ 0 ] + 19365967 u [ 0 ] 2 + u [ − 4 ] ( − 3015728 u [ − 3 ] + 6694608 u [ − 2 ] − 7408908 u [ − 1 ] + 4067018 u [ 0 ] − 880548 u [ 1 ] ) − 4 ( 3045909 u [ − 2 ] − 3685620 u [ − 1 ] + 2279498 u [ 0 ] ) u [ 1 ] + 1152561 u [ 1 ] 2 + u [ − 3 ] ( − 37913324 u [ − 2 ] + 42405032 u [ − 1 ] − 23510468 u [ 0 ] + 5134574 u [ 1 ] ) ) I S 2 = ( 1 / 120960 ) ( 139633 u [ − 3 ] 2 + 3824847 u [ − 2 ] 2 + 17195652 u [ − 1 ] 2 − 35817664 u [ − 1 ] u [ 0 ] + 19510972 u [ 0 ] 2 + 17905032 u [ − 1 ] u [ 1 ] − 20427884 u [ 0 ] u [ 1 ] + 5653317 u [ 1 ] 2 − 4 ( 865563 u [ − 1 ] − 1021588 u [ 0 ] + 595200 u [ 1 ] ) u [ 2 ] + 271779 u [ 2 ] 2 − 2 u [ − 3 ] ( 714988 u [ − 2 ] − 1431992 u [ − 1 ] + 1396330 u [ 0 ] − 662503 u [ 1 ] + 122810 u [ 2 ] ) + 2 u [ − 2 ] ( − 7940202 u [ − 1 ] + 7964956 u [ 0 ] − 3863994 u [ 1 ] + 729381 u [ 2 ] ) ) I S 3 = ( 1 / 120960 ) ( 271779 u [ − 2 ] 2 + 5653317 u [ − 1 ] 2 + 19510972 u [ 0 ] 2 − 35817664 u [ 0 ] u [ 1 ] + 17195652 u [ 1 ] 2 + 15929912 u [ 0 ] u [ 2 ] − 15880404 u [ 1 ] u [ 2 ] + 3824847 u [ 2 ] 2 − 4 ( 698165 u [ 0 ] − 715996 u [ 1 ] + 357494 u [ 2 ] ) u [ 3 ] + 139633 u [ 3 ] 2 − 2 u [ − 2 ] ( 1190400 u [ − 1 ] − 2043176 u [ 0 ] + 1731126 u [ 1 ] − 729381 u [ 2 ] + 122810 u [ 3 ] ) + 2 u [ − 1 ] ( − 10213942 u [ 0 ] + 8952516 u [ 1 ] − 3863994 u [ 2 ] + 662503 u [ 3 ] ) ) I S 4 = ( 1 / 120960 ) ( 1152561 u [ − 1 ] 2 + 19365967 u [ 0 ] 2 + 56662212 u [ 1 ] 2 − 97838784 u [ 1 ] u [ 2 ] + 43093692 u [ 2 ] 2 + 42405032 u [ 1 ] u [ 3 ] − 37913324 u [ 2 ] u [ 3 ] + 8449957 u [ 3 ] 2 − 4 ( 1852227 u [ 1 ] − 1673652 u [ 2 ] + 753932 u [ 3 ] ) u [ 4 ] + 271779 u [ 4 ] 2 − 2 u [ − 1 ] ( 4558996 u [ 0 ] − 7371240 u [ 1 ] + 6091818 u [ 2 ] − 2567287 u [ 3 ] + 440274 u [ 4 ] ) + u [ 0 ] ( − 65224244 u [ 1 ] + 55053752 u [ 2 ] − 23510468 u [ 3 ] + 4067018 u [ 4 ] ) ) I S 5 = ( 1 / 120960 ) ( 6150211 u [ 0 ] 2 + 94851237 u [ 1 ] 2 + 260445372 u [ 2 ] 2 − 444003904 u [ 2 ] u [ 3 ] + 190757572 u [ 3 ] 2 + 192596472 u [ 2 ] u [ 4 ] − 166461044 u [ 3 ] u [ 4 ] + 36480687 u [ 4 ] 2 + u [ 0 ] ( − 47460464 u [ 1 ] + 76206736 u [ 2 ] − 63394124 u [ 3 ] + 27060170 u [ 4 ] − 4712740 u [ 5 ] ) − 4 ( 8479701 u [ 2 ] − 7360564 u [ 3 ] + 3237546 u [ 4 ] ) u [ 5 ] + 1152561 u [ 5 ] 2 + 2 u [ 1 ] ( − 155885622 u [ 2 ] + 131450836 u [ 3 ] − 56603394 u [ 4 ] + 9917175 u [ 5 ] ) ) p0[1/2]=1/60 (-10 u[-5]+62 u[-4]-163 u[-3]+237 u[-2]-213 u[-1]+147 u[0]) \\ p1[1/2]=1/60 (2 u[-4]-13 u[-3]+37 u[-2]-63 u[-1]+87 u[0]+10 u[1]) \\ p2[1/2]=1/60 (-u[-3]+7 u[-2]-23 u[-1]+57 u[0]+22 u[1]-2 u[2]) \\ p3[1/2]=1/60 (u[-2]-8 u[-1]+37 u[0]+37 u[1]-8 u[2]+u[3]) \\ p4[1/2]=1/60 (-2 u[-1]+22 u[0]+57 u[1]-23 u[2]+7 u[3]-u[4]) \\ p5[1/2]=1/60 (10 u[0]+87 u[1]-63 u[2]+37 u[3]-13 u[4]+2 u[5]) \\ 线性权={c[0]->1/462,c[1]->5/77,c[2]->25/77,c[3]->100/231,c[4]->25/154,c[5]->1/77} \\ IS0=(1/120960)(1152561 u[-5]^2+36480687 u[-4]^2+190757572 u[-3]^2-444003904 u[-3] u[-2]+260445372 u[-2]^2+262901672 u[-3] u[-1]-311771244 u[-2] u[-1]+94851237 u[-1]^2-4 (15848531 u[-3]-19051684 u[-2]+11865116 u[-1]) u[0]+6150211 u[0]^2-2 u[-5] (6475092 u[-4]-14721128 u[-3]+16959402 u[-2]-9917175 u[-1]+2356370 u[0])+2 u[-4] (-83230522 u[-3]+96298236 u[-2]-56603394 u[-1]+13530085 u[0])) \\ IS1=(1/120960)(271779 u[-4]^2+8449957 u[-3]^2+43093692 u[-2]^2-97838784 u[-2] u[-1]+56662212 u[-1]^2+55053752 u[-2] u[0]-65224244 u[-1] u[0]+19365967 u[0]^2+u[-4] (-3015728 u[-3]+6694608 u[-2]-7408908 u[-1]+4067018 u[0]-880548 u[1])-4 (3045909 u[-2]-3685620 u[-1]+2279498 u[0]) u[1]+1152561 u[1]^2+u[-3] (-37913324 u[-2]+42405032 u[-1]-23510468 u[0]+5134574 u[1])) \\ IS2=(1/120960)(139633 u[-3]^2+3824847 u[-2]^2+17195652 u[-1]^2-35817664 u[-1] u[0]+19510972 u[0]^2+17905032 u[-1] u[1]-20427884 u[0] u[1]+5653317 u[1]^2-4 (865563 u[-1]-1021588 u[0]+595200 u[1]) u[2]+271779 u[2]^2-2 u[-3] (714988 u[-2]-1431992 u[-1]+1396330 u[0]-662503 u[1]+122810 u[2])+2 u[-2] (-7940202 u[-1]+7964956 u[0]-3863994 u[1]+729381 u[2])) \\ IS3=(1/120960)(271779 u[-2]^2+5653317 u[-1]^2+19510972 u[0]^2-35817664 u[0] u[1]+17195652 u[1]^2+15929912 u[0] u[2]-15880404 u[1] u[2]+3824847 u[2]^2-4 (698165 u[0]-715996 u[1]+357494 u[2]) u[3]+139633 u[3]^2-2 u[-2] (1190400 u[-1]-2043176 u[0]+1731126 u[1]-729381 u[2]+122810 u[3])+2 u[-1] (-10213942 u[0]+8952516 u[1]-3863994 u[2]+662503 u[3])) \\ IS4=(1/120960)(1152561 u[-1]^2+19365967 u[0]^2+56662212 u[1]^2-97838784 u[1] u[2]+43093692 u[2]^2+42405032 u[1] u[3]-37913324 u[2] u[3]+8449957 u[3]^2-4 (1852227 u[1]-1673652 u[2]+753932 u[3]) u[4]+271779 u[4]^2-2 u[-1] (4558996 u[0]-7371240 u[1]+6091818 u[2]-2567287 u[3]+440274 u[4])+u[0] (-65224244 u[1]+55053752 u[2]-23510468 u[3]+4067018 u[4])) \\ IS5=(1/120960)(6150211 u[0]^2+94851237 u[1]^2+260445372 u[2]^2-444003904 u[2] u[3]+190757572 u[3]^2+192596472 u[2] u[4]-166461044 u[3] u[4]+36480687 u[4]^2+u[0] (-47460464 u[1]+76206736 u[2]-63394124 u[3]+27060170 u[4]-4712740 u[5])-4 (8479701 u[2]-7360564 u[3]+3237546 u[4]) u[5]+1152561 u[5]^2+2 u[1] (-155885622 u[2]+131450836 u[3]-56603394 u[4]+9917175 u[5])) p0[1/2]=1/60(10u[5]+62u[4]163u[3]+237u[2]213u[1]+147u[0])p1[1/2]=1/60(2u[4]13u[3]+37u[2]63u[1]+87u[0]+10u[1])p2[1/2]=1/60(u[3]+7u[2]23u[1]+57u[0]+22u[1]2u[2])p3[1/2]=1/60(u[2]8u[1]+37u[0]+37u[1]8u[2]+u[3])p4[1/2]=1/60(2u[1]+22u[0]+57u[1]23u[2]+7u[3]u[4])p5[1/2]=1/60(10u[0]+87u[1]63u[2]+37u[3]13u[4]+2u[5])线=c[0]>1/462,c[1]>5/77,c[2]>25/77,c[3]>100/231,c[4]>25/154,c[5]>1/77IS0=(1/120960)(1152561u[5]2+36480687u[4]2+190757572u[3]2444003904u[3]u[2]+260445372u[2]2+262901672u[3]u[1]311771244u[2]u[1]+94851237u[1]24(15848531u[3]19051684u[2]+11865116u[1])u[0]+6150211u[0]22u[5](6475092u[4]14721128u[3]+16959402u[2]9917175u[1]+2356370u[0])+2u[4](83230522u[3]+96298236u[2]56603394u[1]+13530085u[0]))IS1=(1/120960)(271779u[4]2+8449957u[3]2+43093692u[2]297838784u[2]u[1]+56662212u[1]2+55053752u[2]u[0]65224244u[1]u[0]+19365967u[0]2+u[4](3015728u[3]+6694608u[2]7408908u[1]+4067018u[0]880548u[1])4(3045909u[2]3685620u[1]+2279498u[0])u[1]+1152561u[1]2+u[3](37913324u[2]+42405032u[1]23510468u[0]+5134574u[1]))IS2=(1/120960)(139633u[3]2+3824847u[2]2+17195652u[1]235817664u[1]u[0]+19510972u[0]2+17905032u[1]u[1]20427884u[0]u[1]+5653317u[1]24(865563u[1]1021588u[0]+595200u[1])u[2]+271779u[2]22u[3](714988u[2]1431992u[1]+1396330u[0]662503u[1]+122810u[2])+2u[2](7940202u[1]+7964956u[0]3863994u[1]+729381u[2]))IS3=(1/120960)(271779u[2]2+5653317u[1]2+19510972u[0]235817664u[0]u[1]+17195652u[1]2+15929912u[0]u[2]15880404u[1]u[2]+3824847u[2]24(698165u[0]715996u[1]+357494u[2])u[3]+139633u[3]22u[2](1190400u[1]2043176u[0]+1731126u[1]729381u[2]+122810u[3])+2u[1](10213942u[0]+8952516u[1]3863994u[2]+662503u[3]))IS4=(1/120960)(1152561u[1]2+19365967u[0]2+56662212u[1]297838784u[1]u[2]+43093692u[2]2+42405032u[1]u[3]37913324u[2]u[3]+8449957u[3]24(1852227u[1]1673652u[2]+753932u[3])u[4]+271779u[4]22u[1](4558996u[0]7371240u[1]+6091818u[2]2567287u[3]+440274u[4])+u[0](65224244u[1]+55053752u[2]23510468u[3]+4067018u[4]))IS5=(1/120960)(6150211u[0]2+94851237u[1]2+260445372u[2]2444003904u[2]u[3]+190757572u[3]2+192596472u[2]u[4]166461044u[3]u[4]+36480687u[4]2+u[0](47460464u[1]+76206736u[2]63394124u[3]+27060170u[4]4712740u[5])4(8479701u[2]7360564u[3]+3237546u[4])u[5]+1152561u[5]2+2u[1](155885622u[2]+131450836u[3]56603394u[4]+9917175u[5]))
用光滑函数IS和线性权c得到最终需要的非线性权 w w w. 那么p[1/2] 的非线性组合即为 x i + 1 / 2 x_{i+1/2} xi+1/2 处的 u i + 1 / 2 u_{i+1/2} ui+1/2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jedi-knight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值