Skip to content

Commit d11cfc0

Browse files
committed
fix teno
1 parent aa71d88 commit d11cfc0

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

src/simulation/m_weno.fpp

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ contains
487487
else ! WENO7
488488
! Note: WENO7 only supports uniform grid
489489
if (.not. teno) then
490-
! (Balsara & Shu, 2000) Page 415 Section III.a
490+
! (Balsara & Shu, 2000) Page 11 Section III.a
491491
d_cbL_${XYZ}$ (0, :) = 4d0/35d0
492492
d_cbL_${XYZ}$ (1, :) = 18d0/35d0
493493
d_cbL_${XYZ}$ (2, :) = 12d0/35d0
@@ -499,12 +499,12 @@ contains
499499
d_cbR_${XYZ}$ (3, :) = 4d0/35d0
500500

501501
else ! TENO
502-
! (Fu, et al., 2016) Table 2
502+
! (Fu, et al., 2016) Table 2 (for right flux)
503503
d_cbL_${XYZ}$ (0, :) = 18d0/35d0
504-
d_cbL_${XYZ}$ (1, :) = 9d0/35d0
505-
d_cbL_${XYZ}$ (2, :) = 3d0/35d0
506-
d_cbL_${XYZ}$ (3, :) = 4d0/35d0
507-
d_cbL_${XYZ}$ (4, :) = 1d0/35d0
504+
d_cbL_${XYZ}$ (1, :) = 3d0/35d0
505+
d_cbL_${XYZ}$ (2, :) = 9d0/35d0
506+
d_cbL_${XYZ}$ (3, :) = 1d0/35d0
507+
d_cbL_${XYZ}$ (4, :) = 4d0/35d0
508508

509509
d_cbR_${XYZ}$ (0, :) = 18d0/35d0
510510
d_cbR_${XYZ}$ (1, :) = 9d0/35d0
@@ -817,7 +817,7 @@ contains
817817
do i = 1, v_size
818818

819819
if (.not. teno) then
820-
! (Balsara & Shu, 2000) Page 415 Table I
820+
! (Balsara & Shu, 2000) Page 11 Table I
821821
poly(0) = ( 1d0*v_rs_ws_${XYZ}$ (j-3, k, l, i) - 5d0*v_rs_ws_${XYZ}$ (j-2, k, l, i) & !&
822822
+ 13d0*v_rs_ws_${XYZ}$ (j-1, k, l, i) + 3d0*v_rs_ws_${XYZ}$ (j , k, l, i)) / 12d0 !&
823823
poly(1) = ( -1d0*v_rs_ws_${XYZ}$ (j-2, k, l, i) + 7d0*v_rs_ws_${XYZ}$ (j-1, k, l, i) & !&
@@ -828,19 +828,19 @@ contains
828828
+ 13d0*v_rs_ws_${XYZ}$ (j+2, k, l, i) - 3d0*v_rs_ws_${XYZ}$ (j+3, k, l, i)) / 12d0 !&
829829
else
830830
! (Fu, et al., 2016) Table 1
831-
! Note: Unlike TENO5, TENO7 stencils differ from WENO7 stencils.
832-
! See Figure 2 (right) in Fu et al. (2016).
833-
! Flip the weights with respect to the x=i point, but keep the stencil order to obtain left-sided flux (at i-1/2).
834-
! It is easier to first consider the right-sided flux (at i+1/2) later in the code.
831+
! Note: Unlike TENO5, TENO7 stencils differ from WENO7 stencils
832+
! See Figure 2 (right) for right-sided flux (at i+1/2)
833+
! Here we need the left-sided flux, so we flip the weights with respect to the x=i point
834+
! But we need to keep the stencil order to reuse the beta coefficients
835835
poly(0) = ( 2d0*v_rs_ws_${XYZ}$ (j-1, k, l, i) + 5d0*v_rs_ws_${XYZ}$ (j , k, l, i) - 1d0*v_rs_ws_${XYZ}$ (j+1, k, l, i)) / 6d0 !&
836836
poly(1) = (11d0*v_rs_ws_${XYZ}$ (j , k, l, i) - 7d0*v_rs_ws_${XYZ}$ (j+1, k, l, i) + 2d0*v_rs_ws_${XYZ}$ (j+2, k, l, i)) / 6d0 !&
837837
poly(2) = (-1d0*v_rs_ws_${XYZ}$ (j-2, k, l, i) + 5d0*v_rs_ws_${XYZ}$ (j-1, k, l, i) + 2d0*v_rs_ws_${XYZ}$ (j , k, l, i)) / 6d0 !&
838-
poly(3) = (25d0*v_rs_ws_${XYZ}$ (j , k, l, i) - 23d0*v_rs_ws_${XYZ}$ (j+1, k, l, i) + 13d0*v_rs_ws_${XYZ}$ (j+2, k, l, i) - 3d0*v_rs_ws_${XYZ}$ (j+3, k, l, i)) / 12d0 !&
839-
poly(4) = ( 1d0*v_rs_ws_${XYZ}$ (j-3, k, l, i) - 5d0*v_rs_ws_${XYZ}$ (j-2, k, l, i) + 13d0*v_rs_ws_${XYZ}$ (j-1, k, l, i) + 3d0*v_rs_ws_${XYZ}$ (j , k, l, i)) / 12d0 !&
838+
poly(3) = (25d0*v_rs_ws_${XYZ}$ (j , k, l, i) - 23d0*v_rs_ws_${XYZ}$ (j+1, k, l, i) + 13d0*v_rs_ws_${XYZ}$ (j+2, k, l, i) - 3d0*v_rs_ws_${XYZ}$ (j+3, k, l, i)) / 12d0 !&
839+
poly(4) = ( 1d0*v_rs_ws_${XYZ}$ (j-3, k, l, i) - 5d0*v_rs_ws_${XYZ}$ (j-2, k, l, i) + 13d0*v_rs_ws_${XYZ}$ (j-1, k, l, i) + 3d0*v_rs_ws_${XYZ}$ (j , k, l, i)) / 12d0 !&
840840
end if
841841

842842
if (.not. teno) then
843-
! (Balsara & Shu, 2000) Page 415 Section III.a
843+
! (Balsara & Shu, 2000) Page 11 Section III.a
844844
beta(0) = ( v_rs_ws_${XYZ}$ (j - 3, k, l, i)*( 547d0*v_rs_ws_${XYZ}$ (j - 3, k, l, i) & !&
845845
- 3882d0*v_rs_ws_${XYZ}$ (j - 2, k, l, i) & !&
846846
+ 4642d0*v_rs_ws_${XYZ}$ (j - 1, k, l, i) & !&
@@ -892,14 +892,14 @@ contains
892892
else ! TENO
893893
! High-Order Low-Dissipation Targeted ENO Schemes for Ideal Magnetohydrodynamics (Fu & Tang, 2019) Section 3.2
894894
beta(0) = 13d0/12d0*(v_rs_ws_${XYZ}$ (j - 1, k, l, i) - 2d0*v_rs_ws_${XYZ}$ (j, k, l, i) + v_rs_ws_${XYZ}$ (j + 1, k, l, i))**2d0 &
895-
+ 1d0/4d0*(v_rs_ws_${XYZ}$ (j - 1, k, l, i) - v_rs_ws_${XYZ}$ (j + 1, k, l, i))**2d0 &
896-
+ weno_eps
895+
+ 1d0/4d0*(v_rs_ws_${XYZ}$ (j - 1, k, l, i) - v_rs_ws_${XYZ}$ (j + 1, k, l, i))**2d0 &
896+
+ weno_eps
897897
beta(1) = 13d0/12d0*(v_rs_ws_${XYZ}$ (j, k, l, i) - 2d0*v_rs_ws_${XYZ}$ (j + 1, k, l, i) + v_rs_ws_${XYZ}$ (j + 2, k, l, i))**2d0 &
898-
+ 1d0/4d0*(3d0*v_rs_ws_${XYZ}$ (j, k, l, i) - 4d0*v_rs_ws_${XYZ}$ (j + 1, k, l, i) + v_rs_ws_${XYZ}$ (j + 2, k, l, i))**2d0 &
899-
+ weno_eps
898+
+ 1d0/4d0*(3d0*v_rs_ws_${XYZ}$ (j, k, l, i) - 4d0*v_rs_ws_${XYZ}$ (j + 1, k, l, i) + v_rs_ws_${XYZ}$ (j + 2, k, l, i))**2d0 &
899+
+ weno_eps
900900
beta(2) = 13d0/12d0*(v_rs_ws_${XYZ}$ (j - 2, k, l, i) - 2d0*v_rs_ws_${XYZ}$ (j - 1, k, l, i) + v_rs_ws_${XYZ}$ (j, k, l, i))**2d0 &
901-
+ 1d0/4d0*(v_rs_ws_${XYZ}$ (j - 2, k, l, i) - 4d0*v_rs_ws_${XYZ}$ (j - 1, k, l, i) + 3d0*v_rs_ws_${XYZ}$ (j, k, l, i))**2d0 &
902-
+ weno_eps
901+
+ 1d0/4d0*(v_rs_ws_${XYZ}$ (j - 2, k, l, i) - 4d0*v_rs_ws_${XYZ}$ (j - 1, k, l, i) + 3d0*v_rs_ws_${XYZ}$ (j, k, l, i))**2d0 &
902+
+ weno_eps
903903
beta(3) = ( v_rs_ws_${XYZ}$ (j , k, l, i)*( 2107d0*v_rs_ws_${XYZ}$ (j , k, l, i) & !&
904904
- 9402d0*v_rs_ws_${XYZ}$ (j + 1, k, l, i) & !&
905905
+ 7042d0*v_rs_ws_${XYZ}$ (j + 2, k, l, i) & !&

0 commit comments

Comments
 (0)