ocean_zinit_config_t Derived Type

type, public :: ocean_zinit_config_t

Z-level T/S initial-condition overlay (&ocean_zinit_nml, capability A2). Reads pre-regridded T/S from a model-grid NetCDF and interpolates linearly in depth onto the seeded layer-centre depths, overwriting any analytical T/S. All defaults preserve bit-identity: enable = .false. is a no-op. Design + MOM6 divergences: local_archive/specs/a2_zinit_spec.md.


Inherited by

type~~ocean_zinit_config_t~~InheritedByGraph type~ocean_zinit_config_t ocean_zinit_config_t type~ocean_config_t ocean_config_t type~ocean_config_t->type~ocean_zinit_config_t zinit type~config_t config_t type~config_t->type~ocean_config_t ocean type~ocean_handle_t ocean_handle_t type~ocean_handle_t->type~config_t cfg

Components

Type Visibility Attributes Name Initial
logical, public :: enable = .false.

Master switch. Default .false. keeps the analytical IC. Requires RDB_ENABLE_NETCDF=ON at build time (the overlay lives in the NetCDF-gated rdb_ocean_z_init, including the source = "linear" path, which opens nothing).

character(len=256), public :: file = ""

Path to the model-grid T/S NetCDF (dims x/y/z; vars temp/salt/z_src with the documented name-fallbacks).

real(kind=wp), public :: land_fill_s = 35.0_wp

Fallback salinity (PSU) written to dry (wet_mask <= 0) columns. source = "file" only — the analytic path has a value everywhere and uses it.

real(kind=wp), public :: land_fill_t = 10.0_wp

Fallback temperature (°C) written to dry (wet_mask <= 0) columns.

real(kind=wp), public :: lin_ds_dz = 0.0_wp

source = "linear": dS/dz (PSU/m) with z positive UP. Note the polarity is the INVERSE of temperature’s: salty water belongs at the bed, so a halinely STABLE column has lin_ds_dz < 0. 0 (the default) is a uniform column.

real(kind=wp), public :: lin_dt_dz = 0.0_wp

source = "linear": dT/dz (degC/m) with z positive UP — the same convention as &ocean_ic_nml eady_dT_dz. A thermally STABLE column has lin_dt_dz > 0 (warm on top). 0 (the default) is a uniform column.

real(kind=wp), public :: lin_s_ref = 35.0_wp

source = "linear": salinity (PSU) at the z = 0 datum.

real(kind=wp), public :: lin_t_ref = 0.0_wp

source = "linear": temperature (degC) at the z = 0 datum.

character(len=32), public :: s_var = ""

Salinity variable-name override; “” tries salt/S/salinity.

character(len=32), public :: source = "file"

Where the T(z)/S(z) profile comes from.

"file" (default) reads the pre-regridded NetCDF named by file and interpolates linearly in depth.

"linear" evaluates the ANALYTIC affine profiles T(z) = lin_t_ref + lin_dt_dz*z, S(z) = lin_s_ref + lin_ds_dz*z at every layer centre’s true geopotential depth — no file, no interpolation, defined on ghosts and land too. This is the profile an idealised sloping-lid cavity (or any ISOMIP+-style case) needs: the &tracer_nml T_init_surface / T_init_bottom family is linear in LAYER INDEX, so under a terrain-following coordinate with a tilted lid it tilts the isopycnals with the coordinate and the column is NOT at rest.

character(len=32), public :: t_var = ""

Temperature variable-name override; “” tries temp/T/temperature.

character(len=32), public :: z_var = ""

Source-axis variable-name override; “” tries z_src/z/depth/lev.


Source Code

   type :: ocean_zinit_config_t
      !! Z-level T/S initial-condition overlay (`&ocean_zinit_nml`,
      !! capability A2).  Reads pre-regridded T/S from a model-grid
      !! NetCDF and interpolates linearly in depth onto the seeded
      !! layer-centre depths, overwriting any analytical T/S.  All
      !! defaults preserve bit-identity: `enable = .false.` is a no-op.
      !! Design + MOM6 divergences: `local_archive/specs/a2_zinit_spec.md`.
      logical :: enable = .false.
         !! Master switch.  Default `.false.` keeps the analytical IC.
         !! Requires `RDB_ENABLE_NETCDF=ON` at build time (the overlay
         !! lives in the NetCDF-gated `rdb_ocean_z_init`, including the
         !! `source = "linear"` path, which opens nothing).
      character(len=32) :: source = "file"
         !! Where the T(z)/S(z) profile comes from.
         !!
         !! `"file"` (default) reads the pre-regridded NetCDF named by
         !! `file` and interpolates linearly in depth.
         !!
         !! `"linear"` evaluates the ANALYTIC affine profiles
         !! `T(z) = lin_t_ref + lin_dt_dz*z`, `S(z) = lin_s_ref +
         !! lin_ds_dz*z` at every layer centre's true geopotential depth
         !! — no file, no interpolation, defined on ghosts and land too.
         !! This is the profile an idealised sloping-lid cavity (or any
         !! ISOMIP+-style case) needs: the `&tracer_nml T_init_surface` /
         !! `T_init_bottom` family is linear in LAYER INDEX, so under a
         !! terrain-following coordinate with a tilted lid it tilts the
         !! isopycnals with the coordinate and the column is NOT at rest.
      character(len=256) :: file = ""
         !! Path to the model-grid T/S NetCDF (dims x/y/z; vars
         !! temp/salt/z_src with the documented name-fallbacks).
      character(len=32) :: t_var = ""
         !! Temperature variable-name override; "" tries temp/T/temperature.
      character(len=32) :: s_var = ""
         !! Salinity variable-name override; "" tries salt/S/salinity.
      character(len=32) :: z_var = ""
         !! Source-axis variable-name override; "" tries z_src/z/depth/lev.
      real(wp) :: land_fill_t = 10.0_wp
         !! Fallback temperature (°C) written to dry (wet_mask <= 0) columns.
      real(wp) :: land_fill_s = 35.0_wp
         !! Fallback salinity (PSU) written to dry (wet_mask <= 0) columns.
         !! `source = "file"` only — the analytic path has a value
         !! everywhere and uses it.
      real(wp) :: lin_t_ref = 0.0_wp
         !! `source = "linear"`: temperature (degC) at the `z = 0` datum.
      real(wp) :: lin_dt_dz = 0.0_wp
         !! `source = "linear"`: `dT/dz` (degC/m) with **z positive UP**
         !! — the same convention as `&ocean_ic_nml eady_dT_dz`.  A
         !! thermally STABLE column has `lin_dt_dz > 0` (warm on top).
         !! `0` (the default) is a uniform column.
      real(wp) :: lin_s_ref = 35.0_wp
         !! `source = "linear"`: salinity (PSU) at the `z = 0` datum.
      real(wp) :: lin_ds_dz = 0.0_wp
         !! `source = "linear"`: `dS/dz` (PSU/m) with **z positive UP**.
         !! Note the polarity is the INVERSE of temperature's: salty
         !! water belongs at the bed, so a halinely STABLE column has
         !! `lin_ds_dz < 0`.  `0` (the default) is a uniform column.
   end type ocean_zinit_config_t