ocean_grid_config_t Derived Type

type, public :: ocean_grid_config_t

&ocean_grid_nml: horizontal-grid generator + geometry knobs.


Inherited by

type~~ocean_grid_config_t~~InheritedByGraph type~ocean_grid_config_t ocean_grid_config_t type~ocean_config_t ocean_config_t type~ocean_config_t->type~ocean_grid_config_t grid 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
character(len=16), public :: axis_units = "meters"

Units of the Cartesian domain extent (grid_config="cartesian"), mirroring MOM6 AXIS_UNITS: “meters” (default), “degrees”, “km”. With “degrees”/”km” the domain is sized by len_lon/len_lat below and &grid_nml dx/dy are DERIVED (ignored as inputs). “meters” ⇒ &grid_nml dx/dy used verbatim (bit-identical).

character(len=16), public :: coriolis_scheme = "beta_plane"

Coriolis source for the metrics f-fill: “beta_plane” (default, f_0 + betay) or “planetary” (2omega*sin(geolat)).

character(len=16), public :: grid_config = "cartesian"

Grid generator: “cartesian” (default, uniform), “spherical” (lon-lat sector), “supergrid” (MOM6 mosaic NetCDF), “tripolar”.

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

South edge of the physical domain (degrees) — spherical only.

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

Total y-extent of the Cartesian domain in axis_units (MOM6 LENLAT). Paired with len_lon; > 0 ⇒ dy = to_metres(len_lat)/ny. NOTE: spherical cell sizes reuse &grid_nml dx/dy as dlon/dlat in DEGREES when grid_config="spherical".

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

Total x-extent of the Cartesian domain in axis_units (MOM6 LENLON). <= 0 (default) ⇒ unset. > 0 ⇒ a uniform dx = to_metres(len_lon)/nx is derived, where for “degrees” to_metres(v) = rad_earth·v·π/180 (arc length, no cos(lat) — MOM6 cartesian) and for “km” to_metres(v) = 1000·v.

real(kind=wp), public :: lon_pole = 100.0_wp

Longitude (degrees) of the first tripolar cap pole; partner at lon_pole + 180.

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

West edge of the physical domain (degrees) — spherical only.

real(kind=wp), public :: omega = 7.2921e-5_wp

Planetary rotation rate (rad/s) — used by “planetary”.

real(kind=wp), public :: phi_join = 65.0_wp

Join latitude (degrees) for “tripolar”: lon-lat below, bipolar Arctic cap above.

real(kind=wp), public :: rad_earth = 6.378e6_wp

Earth radius for the spherical metric (m).

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

Path to the MOM6 supergrid NetCDF — “supergrid” only.


Source Code

   type :: ocean_grid_config_t
      !! `&ocean_grid_nml`: horizontal-grid generator + geometry knobs.
      character(len=16) :: grid_config = "cartesian"
         !! Grid generator: "cartesian" (default, uniform), "spherical"
         !! (lon-lat sector), "supergrid" (MOM6 mosaic NetCDF), "tripolar".
      real(wp) :: lon_west = 0.0_wp
         !! West edge of the physical domain (degrees) — spherical only.
      real(wp) :: lat_south = 0.0_wp
         !! South edge of the physical domain (degrees) — spherical only.
      real(wp) :: rad_earth = 6.378e6_wp
         !! Earth radius for the spherical metric (m).
      character(len=256) :: supergrid_file = ""
         !! Path to the MOM6 supergrid NetCDF — "supergrid" only.
      character(len=16) :: coriolis_scheme = "beta_plane"
         !! Coriolis source for the metrics f-fill: "beta_plane" (default,
         !! f_0 + beta*y) or "planetary" (2*omega*sin(geolat)).
      real(wp) :: omega = 7.2921e-5_wp
         !! Planetary rotation rate (rad/s) — used by "planetary".
      real(wp) :: phi_join = 65.0_wp
         !! Join latitude (degrees) for "tripolar": lon-lat below, bipolar
         !! Arctic cap above.
      real(wp) :: lon_pole = 100.0_wp
         !! Longitude (degrees) of the first tripolar cap pole; partner at
         !! `lon_pole + 180`.
      character(len=16) :: axis_units = "meters"
         !! Units of the Cartesian domain extent (`grid_config="cartesian"`),
         !! mirroring MOM6 AXIS_UNITS: "meters" (default), "degrees", "km".
         !! With "degrees"/"km" the domain is sized by `len_lon`/`len_lat`
         !! below and `&grid_nml dx`/`dy` are DERIVED (ignored as inputs).
         !! "meters" ⇒ `&grid_nml dx`/`dy` used verbatim (bit-identical).
      real(wp) :: len_lon = 0.0_wp
         !! Total x-extent of the Cartesian domain in `axis_units` (MOM6
         !! LENLON).  <= 0 (default) ⇒ unset.  > 0 ⇒ a uniform
         !! `dx = to_metres(len_lon)/nx` is derived, where for "degrees"
         !! `to_metres(v) = rad_earth·v·π/180` (arc length, no cos(lat) —
         !! MOM6 cartesian) and for "km" `to_metres(v) = 1000·v`.
      real(wp) :: len_lat = 0.0_wp
         !! Total y-extent of the Cartesian domain in `axis_units` (MOM6
         !! LENLAT).  Paired with `len_lon`; > 0 ⇒ `dy = to_metres(len_lat)/ny`.
      !! NOTE: spherical cell sizes reuse `&grid_nml dx`/`dy` as dlon/dlat
      !! in DEGREES when `grid_config="spherical"`.
   end type ocean_grid_config_t