&ocean_ddiff (double diffusion: salt fingering + diffusive
convection, CVMix_ddiff-style).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(config_t), | intent(in), | target | :: | cfg | ||
| type(nml_schema_t), | intent(inout) | :: | schema |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(nml_group_t), | private | :: | g | ||||
| logical, | private, | pointer | :: | pl | |||
| real(kind=wp), | private, | pointer | :: | pr |
subroutine register_ddiff(cfg, schema) !! `&ocean_ddiff` (double diffusion: salt fingering + diffusive !! convection, CVMix_ddiff-style). type(config_t), target, intent(in) :: cfg type(nml_schema_t), intent(inout) :: schema type(nml_group_t) :: g logical, pointer :: pl real(wp), pointer :: pr g%name = "ocean_ddiff" g%doc = "Double diffusion: salt fingering + diffusive convection (folded into the heat/salt split)." pl => cfg%ocean%ddiff%enable call g%add(nml_logical("enable", pl, & "Master switch (requires thermodynamics)")) pr => cfg%ocean%ddiff%strat_param_max call g%add(nml_real("strat_param_max", pr, & "R_rho salt-fingering cutoff (STRAT_PARAM_MAX)")) pr => cfg%ocean%ddiff%kappa_ddiff_s call g%add(nml_real("kappa_ddiff_s", pr, & "Leading salt-fingering diffusivity K_f (KAPPA_DDIFF_S)", & units="m^2/s")) pr => cfg%ocean%ddiff%ddiff_exp1 call g%add(nml_real("ddiff_exp1", pr, "Inner fingering exponent (DDIFF_EXP1)")) pr => cfg%ocean%ddiff%ddiff_exp2 call g%add(nml_real("ddiff_exp2", pr, "Outer fingering exponent (DDIFF_EXP2)")) pr => cfg%ocean%ddiff%param1 call g%add(nml_real("param1", pr, "MC76 convection exterior coeff (KAPPA_DDIFF_PARAM1)")) pr => cfg%ocean%ddiff%param2 call g%add(nml_real("param2", pr, "MC76 convection middle coeff (KAPPA_DDIFF_PARAM2)")) pr => cfg%ocean%ddiff%param3 call g%add(nml_real("param3", pr, "MC76 convection interior coeff (KAPPA_DDIFF_PARAM3)")) pr => cfg%ocean%ddiff%mol_diff call g%add(nml_real("mol_diff", pr, & "Molecular diffusivity scaling convection (MOL_DIFF)", & units="m^2/s")) pl => cfg%ocean%ddiff%use_k90 call g%add(nml_logical("use_k90", pl, & "Convection form: MC76 (default) vs Kelley-90")) call schema%add_group(g) end subroutine register_ddiff