ocean_cavity_exchange_t Derived Type

type, public :: ocean_cavity_exchange_t

Exchange-law selector + its parameters. ONE bundle for every law, so the dispatch is a single select case and a later do concurrent kernel can call it without reshaping. Members a given law does not read are ignored.


Inherited by

type~~ocean_cavity_exchange_t~~InheritedByGraph type~ocean_cavity_exchange_t ocean_cavity_exchange_t type~ocean_cavity_flux_t ocean_cavity_flux_t type~ocean_cavity_flux_t->type~ocean_cavity_exchange_t par type~ocean_state_t ocean_state_t type~ocean_state_t->type~ocean_cavity_flux_t cavity_flux type~ocean_engine_t ocean_engine_t type~ocean_engine_t->type~ocean_state_t state type~ocean_handle_t ocean_handle_t type~ocean_handle_t->type~ocean_state_t state type~ocean_handle_t->type~ocean_engine_t engine

Components

Type Visibility Attributes Name Initial
real(kind=wp), public :: f_cor = -1.4e-4_wp

Coriolis parameter (1/s) — read by CAVITY_LAW_HJ99 only, and only as |f|. Holland & Jenkins (1999) Table 1 p. 1790 prints f = -1.0e-4 (Southern Hemisphere), but their eq. (15) takes ln(.../f h_nu) and eq. (18) needs f L_O > 0: both only make sense with the magnitude. Neither that paper nor McPhee, Maykut & Morison (1987) says |f| — it is inferred here, and recorded as inferred.

real(kind=wp), public :: gamma_s_coeff = CAVITY_GAMMA_S_ISOMIP

Dimensionless Gamma_S.

real(kind=wp), public :: gamma_t_coeff = CAVITY_GAMMA_T_ISOMIP

Dimensionless Gamma_T of gamma_t = Gamma_T*u*. Named *_coeff to keep it distinct from the exchange VELOCITY gamma_t (m/s) the laws return.

integer, public :: law = CAVITY_LAW_CONST_GAMMA

CAVITY_LAW_*. Default = the recommended const_gamma.


Source Code

   type :: ocean_cavity_exchange_t
      !! Exchange-law selector + its parameters.  ONE bundle for every
      !! law, so the dispatch is a single `select case` and a later
      !! `do concurrent` kernel can call it without reshaping.  Members a
      !! given law does not read are ignored.
      integer :: law = CAVITY_LAW_CONST_GAMMA
         !! `CAVITY_LAW_*`.  Default = the recommended `const_gamma`.
      real(wp) :: gamma_t_coeff = CAVITY_GAMMA_T_ISOMIP
         !! Dimensionless `Gamma_T` of `gamma_t = Gamma_T*u*`.  Named
         !! `*_coeff` to keep it distinct from the exchange VELOCITY
         !! `gamma_t` (m/s) the laws return.
      real(wp) :: gamma_s_coeff = CAVITY_GAMMA_S_ISOMIP
         !! Dimensionless `Gamma_S`.
      real(wp) :: f_cor = -1.4e-4_wp
         !! Coriolis parameter (1/s) — read by `CAVITY_LAW_HJ99` only,
         !! and only as `|f|`.  Holland & Jenkins (1999) Table 1 p. 1790
         !! prints `f = -1.0e-4` (Southern Hemisphere), but their eq. (15)
         !! takes `ln(.../f h_nu)` and eq. (18) needs `f L_O > 0`: both
         !! only make sense with the magnitude.  **Neither that paper nor
         !! McPhee, Maykut & Morison (1987) says `|f|`** — it is inferred
         !! here, and recorded as inferred.
   end type ocean_cavity_exchange_t