简介
WENO格式是CFD中的一种高精度的数值格式。如果函数光滑,使用 r r r个模板可以在空间上达到 2 r − 1 2r-1 2r−1。如果出现间断,那么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]2−31u[−1]u[0]+10u[0]2+u[−2](−19u[−1]+11u[0]))IS1=1/3(4u[−1]2+13u[0]2−13u[0]u[1]+4u[1]2+u[−1](−13u[0]+5u[1]))IS2=1/3(10u[0]2+25u[1]2−19u[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]2−444003904u[−3]u[−2]+260445372u[−2]2+262901672u[−3]u[−1]−311771244u[−2]u[−1]+94851237u[−1]2−4(15848531u[−3]−19051684u[−2]+11865116u[−1])u[0]+6150211u[0]2−2u[−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]2−97838784u[−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]2−35817664u[−1]u[0]+19510972u[0]2+17905032u[−1]u[1]−20427884u[0]u[1]+5653317u[1]2−4(865563u[−1]−1021588u[0]+595200u[1])u[2]+271779u[2]2−2u[−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]2−35817664u[0]u[1]+17195652u[1]2+15929912u[0]u[2]−15880404u[1]u[2]+3824847u[2]2−4(698165u[0]−715996u[1]+357494u[2])u[3]+139633u[3]2−2u[−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]2−97838784u[1]u[2]+43093692u[2]2+42405032u[1]u[3]−37913324u[2]u[3]+8449957u[3]2−4(1852227u[1]−1673652u[2]+753932u[3])u[4]+271779u[4]2−2u[−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]2−444003904u[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值