ocean_dataovr_config_t Derived Type

type, public :: ocean_dataovr_config_t

&ocean_dataovr_nml: file-backed surface forcing (PR-15, the A3 keystone consumer). Binds time-varying NetCDF fields, through the shared PR-14 reader (&ocean_data_nml), onto the surface stress and surface-flux slots. enable = .false. registers nothing ⇒ ocean_data_input_update_all stays a no-op ⇒ bit-identical.

The heat/freshwater tags write the surface-flux COMPONENT fields, not Q_heat/Q_salt directly, because ocean_surface_flux_assemble fully overwrites those two from the components every thermo step — a direct write would be silently clobbered. They therefore require &ocean_forcing_nml enable_components = .true. (fail-loud otherwise). Sign conventions are inherited from the component slots: evap <= 0, lprec >= 0, both kg/m^2/s.


Inherits

type~~ocean_dataovr_config_t~~InheritsGraph type~ocean_dataovr_config_t ocean_dataovr_config_t type~dataovr_entry_config_t dataovr_entry_config_t type~ocean_dataovr_config_t->type~dataovr_entry_config_t tau_x, tau_y, heat, evap, lprec, salt

Inherited by

type~~ocean_dataovr_config_t~~InheritedByGraph type~ocean_dataovr_config_t ocean_dataovr_config_t type~ocean_config_t ocean_config_t type~ocean_config_t->type~ocean_dataovr_config_t dataovr 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
real(kind=wp), public :: cycle_period = 0.0_wp

Climatology period (s). Required > 0 when time_mode = "cyclic"; ignored otherwise.

logical, public :: enable = .false.

Master switch. Default off ⇒ no registration, bit-identical. Requires RDB_ENABLE_NETCDF=ON at build time.

type(dataovr_entry_config_t), public :: evap

Evaporative mass flux (kg/m^2/s, <= 0) -> surface_flux%evap.

type(dataovr_entry_config_t), public :: heat

Net surface heat flux (W/m^2, positive down) -> surface_flux%heat_added.

type(dataovr_entry_config_t), public :: lprec

Liquid precipitation (kg/m^2/s, >= 0) -> surface_flux%lprec.

logical, public :: oor_clamp = .false.

.true. clamps a query outside the file time axis to the end record (one warning); default .false. aborts.

type(dataovr_entry_config_t), public :: salt

Surface salt flux (kg salt/m^2/s, positive salinifies) -> surface_flux%salt_flux.

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

Added to the model time before the file-axis lookup (s) — shifts the model epoch onto the file’s epoch.

type(dataovr_entry_config_t), public :: tau_x

Zonal wind stress (Pa) -> surface_stress%tau_x (east faces).

type(dataovr_entry_config_t), public :: tau_y

Meridional wind stress (Pa) -> surface_stress%tau_y (north faces).

character(len=16), public :: time_mode = "linear"

Shared time-axis mode for every active tag: linear (interannual; out-of-range is an abort unless oor_clamp), cyclic (climatology wrapped through cycle_period), or static (record 1, read once). Per-tag overrides are a documented v2 gap, not an oversight.


Source Code

   type :: ocean_dataovr_config_t
      !! `&ocean_dataovr_nml`: file-backed surface forcing (PR-15, the A3
      !! keystone consumer).  Binds time-varying NetCDF fields, through
      !! the shared PR-14 reader (`&ocean_data_nml`), onto the surface
      !! stress and surface-flux slots.  `enable = .false.` registers
      !! nothing ⇒ `ocean_data_input_update_all` stays a no-op ⇒
      !! bit-identical.
      !!
      !! The heat/freshwater tags write the surface-flux COMPONENT
      !! fields, not `Q_heat`/`Q_salt` directly, because
      !! `ocean_surface_flux_assemble` fully overwrites those two from
      !! the components every thermo step — a direct write would be
      !! silently clobbered.  They therefore require
      !! `&ocean_forcing_nml enable_components = .true.` (fail-loud
      !! otherwise).  Sign conventions are inherited from the component
      !! slots: `evap <= 0`, `lprec >= 0`, both kg/m^2/s.
      logical :: enable = .false.
         !! Master switch.  Default off ⇒ no registration, bit-identical.
         !! Requires `RDB_ENABLE_NETCDF=ON` at build time.
      character(len=16) :: time_mode = "linear"
         !! Shared time-axis mode for every active tag: `linear`
         !! (interannual; out-of-range is an abort unless `oor_clamp`),
         !! `cyclic` (climatology wrapped through `cycle_period`), or
         !! `static` (record 1, read once).  Per-tag overrides are a
         !! documented v2 gap, not an oversight.
      real(wp) :: cycle_period = 0.0_wp
         !! Climatology period (s).  Required > 0 when
         !! `time_mode = "cyclic"`; ignored otherwise.
      real(wp) :: t_offset = 0.0_wp
         !! Added to the model time before the file-axis lookup (s) —
         !! shifts the model epoch onto the file's epoch.
      logical :: oor_clamp = .false.
         !! `.true.` clamps a query outside the file time axis to the
         !! end record (one warning); default `.false.` aborts.
      type(dataovr_entry_config_t) :: tau_x
         !! Zonal wind stress (Pa) -> `surface_stress%tau_x` (east faces).
      type(dataovr_entry_config_t) :: tau_y
         !! Meridional wind stress (Pa) -> `surface_stress%tau_y` (north faces).
      type(dataovr_entry_config_t) :: heat
         !! Net surface heat flux (W/m^2, positive down) ->
         !! `surface_flux%heat_added`.
      type(dataovr_entry_config_t) :: evap
         !! Evaporative mass flux (kg/m^2/s, <= 0) -> `surface_flux%evap`.
      type(dataovr_entry_config_t) :: lprec
         !! Liquid precipitation (kg/m^2/s, >= 0) -> `surface_flux%lprec`.
      type(dataovr_entry_config_t) :: salt
         !! Surface salt flux (kg salt/m^2/s, positive salinifies) ->
         !! `surface_flux%salt_flux`.
   end type ocean_dataovr_config_t