sw_transmission Function

public pure function sw_transmission(d, R, zeta1, zeta2) result(trans)

Two-band (Paulson & Simpson 1977) normalised downward irradiance transmission at depth d below the free surface, T(d) = R·exp(-d/zeta1) + (1-R)·exp(-d/zeta2), T(0) = 1. This is THE single shared definition — the SW deposition kernel, the KPP MXL_SW/LV1_SW boundary-layer correction, and the EPBL in-layer PE-cost ledger all consume it, so the three consumers cannot disagree about where the sunlight went. Marked !$acc routine seq so it inlines into same-module device kernels and is callable from cross-module do concurrent kernels.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: d
real(kind=wp), intent(in) :: R
real(kind=wp), intent(in) :: zeta1
real(kind=wp), intent(in) :: zeta2

Return Value real(kind=wp)


Called by

proc~~sw_transmission~~CalledByGraph proc~sw_transmission sw_transmission proc~apply_sw_penetration_cover_impl apply_sw_penetration_cover_impl proc~apply_sw_penetration_cover_impl->proc~sw_transmission proc~apply_sw_penetration_impl apply_sw_penetration_impl proc~apply_sw_penetration_impl->proc~sw_transmission proc~vmix_kpp_overlay_impl vmix_kpp_overlay_impl proc~vmix_kpp_overlay_impl->proc~sw_transmission proc~ocean_surface_flux_apply_sw_penetration ocean_surface_flux_apply_sw_penetration proc~ocean_surface_flux_apply_sw_penetration->proc~apply_sw_penetration_cover_impl proc~ocean_surface_flux_apply_sw_penetration->proc~apply_sw_penetration_impl proc~vmix_apply_kpp_overlay vmix_apply_kpp_overlay proc~vmix_apply_kpp_overlay->proc~vmix_kpp_overlay_impl proc~apply_sw_and_restore apply_sw_and_restore proc~apply_sw_and_restore->proc~ocean_surface_flux_apply_sw_penetration proc~vmix_apply_in_stage vmix_apply_in_stage proc~vmix_apply_in_stage->proc~vmix_apply_kpp_overlay proc~run_stage run_stage proc~run_stage->proc~apply_sw_and_restore proc~run_stage->proc~vmix_apply_in_stage proc~run_stage_split run_stage_split proc~run_stage_split->proc~apply_sw_and_restore proc~run_stage_split->proc~vmix_apply_in_stage 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 sw_transmission(d, R, zeta1, zeta2) result(trans)
      !! Two-band (Paulson & Simpson 1977) normalised downward
      !! irradiance transmission at depth `d` below the free surface,
      !! `T(d) = R·exp(-d/zeta1) + (1-R)·exp(-d/zeta2)`, `T(0) = 1`.
      !! This is THE single shared definition — the SW deposition
      !! kernel, the KPP `MXL_SW`/`LV1_SW` boundary-layer correction, and
      !! the EPBL in-layer PE-cost ledger all consume it, so the three
      !! consumers cannot disagree about where the sunlight went.  Marked
      !! `!$acc routine seq` so it inlines into same-module device kernels
      !! and is callable from cross-module `do concurrent` kernels.
      !$acc routine seq
      real(wp), intent(in) :: d, R, zeta1, zeta2
      real(wp) :: trans
      trans = R*exp(-d/zeta1) + (1.0_wp - R)*exp(-d/zeta2)
   end function sw_transmission