mod_limiter Module

Module with slope/flux limiters


Used by

  • module~~mod_limiter~~UsedByGraph module~mod_limiter mod_limiter proc~calc_grid calc_grid proc~calc_grid->module~mod_limiter proc~divvectors divvectorS proc~divvectors->module~mod_limiter proc~muscl_reconstruct_prim muscl_reconstruct_prim proc~muscl_reconstruct_prim->module~mod_limiter proc~muscl_reconstruct_prim~2 muscl_reconstruct_prim proc~muscl_reconstruct_prim~2->module~mod_limiter proc~muscl_reconstruct_prim~3 muscl_reconstruct_prim proc~muscl_reconstruct_prim~3->module~mod_limiter proc~muscl_reconstruct_prim~4 muscl_reconstruct_prim proc~muscl_reconstruct_prim~4->module~mod_limiter proc~read_par_files read_par_files proc~read_par_files->module~mod_limiter proc~reconstruct reconstruct proc~reconstruct->module~mod_limiter

Variables

Type Visibility Attributes Name Initial
double precision, public :: cada3_radius

radius of the asymptotic region [0.001, 10], larger means more accurate in smooth region but more overshooting at discontinuities

integer, public, parameter :: limiter_albada = 6
integer, public, parameter :: limiter_cada = 8
integer, public, parameter :: limiter_cada3 = 9
integer, public, parameter :: limiter_koren = 7
integer, public, parameter :: limiter_mcbeta = 3
integer, public, parameter :: limiter_minmod = 1
integer, public, parameter :: limiter_mp5 = 13
integer, public, parameter :: limiter_mpweno7 = 25
integer, public, parameter :: limiter_ppm = 12
integer, public, parameter :: limiter_schmid = 10
integer, public, parameter :: limiter_superbee = 4
integer, public, parameter :: limiter_teno5ad = 23
integer, public, parameter :: limiter_vanleer = 5
integer, public, parameter :: limiter_venk = 11
integer, public, parameter :: limiter_weno3 = 14
integer, public, parameter :: limiter_weno5 = 16
integer, public, parameter :: limiter_weno5cu6 = 22
integer, public, parameter :: limiter_weno5nm = 17
integer, public, parameter :: limiter_weno7 = 24
integer, public, parameter :: limiter_wenoyc3 = 15
integer, public, parameter :: limiter_wenoz5 = 18
integer, public, parameter :: limiter_wenoz5nm = 19
integer, public, parameter :: limiter_wenozp5 = 20
integer, public, parameter :: limiter_wenozp5nm = 21
integer, public, parameter :: limiter_woodward = 2
double precision, public :: schmid_rad1
double precision, public :: schmid_rad2
double precision, public :: schmid_rad3

Functions

public function limiter_type(namelim)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: namelim

Return Value integer


Subroutines

public subroutine dwlimiter2(dwC, ixImin1, ixImin2, ixImin3, ixImax1, ixImax2, ixImax3, ixCmin1, ixCmin2, ixCmin3, ixCmax1, ixCmax2, ixCmax3, idims, typelim, ldw, rdw, a2max)

Limit the centered dwC differences within ixC for iw in direction idim. The limiter is chosen according to typelim.

Read more…

Arguments

Type IntentOptional Attributes Name
double precision, intent(in) :: dwC(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3)
integer, intent(in), value :: ixImin1
integer, intent(in), value :: ixImin2
integer, intent(in), value :: ixImin3
integer, intent(in), value :: ixImax1
integer, intent(in), value :: ixImax2
integer, intent(in), value :: ixImax3
integer, intent(in), value :: ixCmin1
integer, intent(in), value :: ixCmin2
integer, intent(in), value :: ixCmin3
integer, intent(in), value :: ixCmax1
integer, intent(in), value :: ixCmax2
integer, intent(in), value :: ixCmax3
integer, intent(in), value :: idims
integer, intent(in) :: typelim
double precision, intent(out), optional :: ldw(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3)

Result using left-limiter (same as right for symmetric)

double precision, intent(out), optional :: rdw(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3)

Result using right-limiter (same as left for symmetric)

double precision, intent(in), optional, value :: a2max