mcbeta Function

private pure function mcbeta(a, b) result(phi)

Monotonised central-difference limiter with tunable beta (AMRVAC's mcbeta; beta=2 recovers the classic MC limiter, van Leer 1979)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: a
real(kind=dp), intent(in) :: b

Return Value real(kind=dp)


Called by

proc~~mcbeta~2~~CalledByGraph proc~mcbeta~2 mcbeta proc~muscl_reconstruct_prim~2 muscl_reconstruct_prim proc~muscl_reconstruct_prim~2->proc~mcbeta~2 proc~reconflux_muscl_hll_prim~2 reconflux_muscl_hll_prim proc~reconflux_muscl_hll_prim~2->proc~muscl_reconstruct_prim~2 proc~reconflux_muscl_hllc_prim~2 reconflux_muscl_hllc_prim proc~reconflux_muscl_hllc_prim~2->proc~muscl_reconstruct_prim~2 proc~reconflux_muscl_llf_prim~2 reconflux_muscl_llf_prim proc~reconflux_muscl_llf_prim~2->proc~muscl_reconstruct_prim~2 proc~finite_volume_local_muscl_hllc~2 finite_volume_local_muscl_hllc proc~finite_volume_local_muscl_hllc~2->proc~reconflux_muscl_hllc_prim~2 proc~finite_volume_local_muscl_hll~2 finite_volume_local_muscl_hll proc~finite_volume_local_muscl_hll~2->proc~reconflux_muscl_hll_prim~2 proc~finite_volume_local_muscl_llf~2 finite_volume_local_muscl_llf proc~finite_volume_local_muscl_llf~2->proc~reconflux_muscl_llf_prim~2 proc~finite_volume_local~2 finite_volume_local proc~finite_volume_local~2->proc~finite_volume_local_muscl_hllc~2 proc~finite_volume_local~2->proc~finite_volume_local_muscl_hll~2 proc~finite_volume_local~2->proc~finite_volume_local_muscl_llf~2

Source Code

  pure real(dp) function mcbeta(a, b) result(phi)
  
  real(dp), intent(in) :: a, b
  real(dp), parameter  :: c_mcbeta = 1.4_dp
  real(dp)             :: ab

  ab = a * b
  if (ab > 0) then
    phi = sign(1.0_dp, a + b) * min(c_mcbeta*abs(a), c_mcbeta*abs(b), abs(a+b)*0.5_dp)
  else
    phi = 0.0_dp
  end if

  end function mcbeta