cavity_exchange_velocities Subroutine

public pure subroutine cavity_exchange_velocities(par, const, u_star, l_plus, T_w, S_w, T_b, S_b, gamma_t, gamma_s, ierr)

Exchange-velocity dispatch with the Coriolis parameter taken from the bundle (par%f_cor). Thin wrapper over cavity_exchange_velocities_f, which holds the dispatch.

Arguments

Type IntentOptional Attributes Name
type(ocean_cavity_exchange_t), intent(in) :: par

Law selector + parameters.

type(ocean_cavity_const_t), intent(in) :: const

Constants bundle.

real(kind=wp), intent(in) :: u_star

Friction velocity (m/s), strictly positive.

real(kind=wp), intent(in) :: l_plus

Trial viscous Obukhov scale, or CAVITY_L_PLUS_NEUTRAL.

real(kind=wp), intent(in) :: T_w

Far-field temperature (degC) — reserved-law argument.

real(kind=wp), intent(in) :: S_w

Far-field salinity (g/kg) — reserved-law argument.

real(kind=wp), intent(in) :: T_b

Trial interface temperature (degC) — reserved-law argument.

real(kind=wp), intent(in) :: S_b

Trial interface salinity (g/kg) — reserved-law argument.

real(kind=wp), intent(out) :: gamma_t

Heat exchange velocity (m/s). Zero on any non-OK status.

real(kind=wp), intent(out) :: gamma_s

Salt exchange velocity (m/s). Zero on any non-OK status.

integer, intent(out) :: ierr

CAVITY_MELT_* status.


Calls

proc~~cavity_exchange_velocities~~CallsGraph proc~cavity_exchange_velocities cavity_exchange_velocities proc~cavity_exchange_velocities_f cavity_exchange_velocities_f proc~cavity_exchange_velocities->proc~cavity_exchange_velocities_f proc~cavity_gamma_hj99 cavity_gamma_hj99 proc~cavity_exchange_velocities_f->proc~cavity_gamma_hj99 proc~cavity_gamma_yung25 cavity_gamma_yung25 proc~cavity_exchange_velocities_f->proc~cavity_gamma_yung25 proc~cavity_l_plus_is_neutral cavity_l_plus_is_neutral proc~cavity_gamma_hj99->proc~cavity_l_plus_is_neutral proc~cavity_gamma_yung25->proc~cavity_l_plus_is_neutral

Source Code

   pure subroutine cavity_exchange_velocities(par, const, u_star, l_plus, &
                                              T_w, S_w, T_b, S_b, gamma_t, gamma_s, ierr)
      !! Exchange-velocity dispatch with the Coriolis parameter taken from
      !! the bundle (`par%f_cor`).  Thin wrapper over
      !! `cavity_exchange_velocities_f`, which holds the dispatch.
      !$acc routine seq
      type(ocean_cavity_exchange_t), intent(in) :: par
         !! Law selector + parameters.
      type(ocean_cavity_const_t), intent(in) :: const
         !! Constants bundle.
      real(wp), intent(in) :: u_star
         !! Friction velocity (m/s), strictly positive.
      real(wp), intent(in) :: l_plus
         !! Trial viscous Obukhov scale, or `CAVITY_L_PLUS_NEUTRAL`.
      real(wp), intent(in) :: T_w
         !! Far-field temperature (degC) — reserved-law argument.
      real(wp), intent(in) :: S_w
         !! Far-field salinity (g/kg) — reserved-law argument.
      real(wp), intent(in) :: T_b
         !! Trial interface temperature (degC) — reserved-law argument.
      real(wp), intent(in) :: S_b
         !! Trial interface salinity (g/kg) — reserved-law argument.
      real(wp), intent(out) :: gamma_t
         !! Heat exchange velocity (m/s).  Zero on any non-OK status.
      real(wp), intent(out) :: gamma_s
         !! Salt exchange velocity (m/s).  Zero on any non-OK status.
      integer, intent(out) :: ierr
         !! `CAVITY_MELT_*` status.

      call cavity_exchange_velocities_f(par, par%f_cor, const, u_star, l_plus, &
                                        T_w, S_w, T_b, S_b, gamma_t, gamma_s, ierr)
   end subroutine cavity_exchange_velocities