cavity_melt_point_gamma with the Coriolis parameter passed as a
per-column SCALAR — what cavity_melt_columns_2d calls, so no
device code has to build a modified ocean_cavity_exchange_t
(see cavity_exchange_velocities_f).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | T_w |
Far-field temperature (degC). |
||
| real(kind=wp), | intent(in) | :: | S_w |
Far-field salinity (g/kg). |
||
| real(kind=wp), | intent(in) | :: | p_b |
Interface pressure (Pa). |
||
| real(kind=wp), | intent(in) | :: | u_star |
Friction velocity (m/s). |
||
| real(kind=wp), | intent(in) | :: | S_i |
Ice salinity (g/kg). |
||
| type(ocean_cavity_exchange_t), | intent(in) | :: | par |
Exchange-law bundle (its |
||
| real(kind=wp), | intent(in) | :: | f_cor |
Coriolis parameter (1/s) for this column; |
||
| type(ocean_cavity_ice_t), | intent(in) | :: | ice |
Ice-conduction bundle. |
||
| type(eos_t), | intent(in) | :: | eos |
Shared EOS handle — the liquidus. |
||
| type(ocean_cavity_const_t), | intent(in) | :: | const |
Constants bundle. |
||
| real(kind=wp), | intent(out) | :: | T_b |
Interface temperature (degC). |
||
| real(kind=wp), | intent(out) | :: | S_b |
Interface salinity (g/kg). |
||
| real(kind=wp), | intent(out) | :: | m_mass |
Melt mass flux (kg/m^2/s), > 0 melting. |
||
| real(kind=wp), | intent(out) | :: | q_ocean |
Turbulent heat flux ocean -> interface (W/m^2). |
||
| real(kind=wp), | intent(out) | :: | gamma_t |
Thermal exchange velocity (m/s) of the converged solve. |
||
| real(kind=wp), | intent(out) | :: | gamma_s |
Haline exchange velocity (m/s) of the converged solve. |
||
| integer, | intent(out) | :: | ierr |
|
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(ocean_cavity_solution_t), | private | :: | sol |
pure subroutine cavity_melt_point_gamma_f(T_w, S_w, p_b, u_star, S_i, par, f_cor, ice, & eos, const, T_b, S_b, m_mass, q_ocean, & gamma_t, gamma_s, ierr) !! `cavity_melt_point_gamma` with the Coriolis parameter passed as a !! per-column SCALAR — what `cavity_melt_columns_2d` calls, so no !! device code has to build a modified `ocean_cavity_exchange_t` !! (see `cavity_exchange_velocities_f`). !$acc routine seq real(wp), intent(in) :: T_w !! Far-field temperature (degC). real(wp), intent(in) :: S_w !! Far-field salinity (g/kg). real(wp), intent(in) :: p_b !! Interface pressure (Pa). real(wp), intent(in) :: u_star !! Friction velocity (m/s). real(wp), intent(in) :: S_i !! Ice salinity (g/kg). type(ocean_cavity_exchange_t), intent(in) :: par !! Exchange-law bundle (its `f_cor` member is NOT read). real(wp), intent(in) :: f_cor !! Coriolis parameter (1/s) for this column; `hj99` only. type(ocean_cavity_ice_t), intent(in) :: ice !! Ice-conduction bundle. type(eos_t), intent(in) :: eos !! Shared EOS handle — the liquidus. type(ocean_cavity_const_t), intent(in) :: const !! Constants bundle. real(wp), intent(out) :: T_b !! Interface temperature (degC). real(wp), intent(out) :: S_b !! Interface salinity (g/kg). real(wp), intent(out) :: m_mass !! Melt mass flux (kg/m^2/s), > 0 melting. real(wp), intent(out) :: q_ocean !! Turbulent heat flux ocean -> interface (W/m^2). real(wp), intent(out) :: gamma_t !! Thermal exchange velocity (m/s) of the converged solve. real(wp), intent(out) :: gamma_s !! Haline exchange velocity (m/s) of the converged solve. integer, intent(out) :: ierr !! `CAVITY_MELT_*` status. type(ocean_cavity_solution_t) :: sol call cavity_solve_melt_f(T_w, S_w, p_b, u_star, S_i, par, f_cor, ice, eos, const, sol, & ierr) T_b = sol%T_b S_b = sol%S_b m_mass = sol%m_mass q_ocean = sol%q_ocean gamma_t = sol%gamma_t gamma_s = sol%gamma_s end subroutine cavity_melt_point_gamma_f