fac_weno Function

private pure function fac_weno(tau, b) result(fac)

MOM6 fac_fn: the WENO-Z nonlinear factor (1+tau/b)^2, EXACT-clamped (not an additive epsilon) to a dominant value when the smoothness indicator b is degenerate (|b| <= eps*tau), so a locally constant stencil takes over without a 0/0. Shared by weno3/5/7.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: tau
real(kind=wp), intent(in) :: b

Return Value real(kind=wp)


Called by

proc~~fac_weno~~CalledByGraph proc~fac_weno fac_weno proc~weno3_recon weno3_recon proc~weno3_recon->proc~fac_weno proc~weno5_recon weno5_recon proc~weno5_recon->proc~fac_weno proc~weno7_recon weno7_recon proc~weno7_recon->proc~fac_weno proc~coriolis_adv_compute_tendencies_sadourny coriolis_adv_compute_tendencies_sadourny proc~coriolis_adv_compute_tendencies_sadourny->proc~weno3_recon proc~coriolis_adv_compute_tendencies_sadourny->proc~weno5_recon proc~coriolis_adv_compute_tendencies_sadourny->proc~weno7_recon proc~coriolis_adv_compute_tendencies coriolis_adv_compute_tendencies proc~coriolis_adv_compute_tendencies->proc~coriolis_adv_compute_tendencies_sadourny proc~run_stage run_stage proc~run_stage->proc~coriolis_adv_compute_tendencies proc~run_stage_split run_stage_split proc~run_stage_split->proc~coriolis_adv_compute_tendencies proc~ocean_dyn_step ocean_dyn_step proc~ocean_dyn_step->proc~run_stage proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~run_stage_split

Source Code

   pure function fac_weno(tau, b) result(fac)
      !! MOM6 `fac_fn`: the WENO-Z nonlinear factor `(1+tau/b)^2`, EXACT-clamped
      !! (not an additive epsilon) to a dominant value when the smoothness
      !! indicator `b` is degenerate (`|b| <= eps*tau`), so a locally constant
      !! stencil takes over without a 0/0.  Shared by weno3/5/7.
      !$acc routine seq
      real(wp), intent(in) :: tau, b
      real(wp) :: fac
      if (abs(b) > PV_WENO_EPS_REL*tau) then
         fac = (1.0_wp + tau/b)**2
      else
         fac = PV_WENO_FAC_DEGEN
      end if
   end function fac_weno