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.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=wp), | public | :: | f_cor | = | -1.4e-4_wp |
Coriolis parameter (1/s) — read by |
|
| real(kind=wp), | public | :: | gamma_s_coeff | = | CAVITY_GAMMA_S_ISOMIP |
Dimensionless |
|
| real(kind=wp), | public | :: | gamma_t_coeff | = | CAVITY_GAMMA_T_ISOMIP |
Dimensionless |
|
| integer, | public | :: | law | = | CAVITY_LAW_CONST_GAMMA |
|
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