ocean_geothermal_t Derived Type

type, public :: ocean_geothermal_t


Inherited by

type~~ocean_geothermal_t~~InheritedByGraph type~ocean_geothermal_t ocean_geothermal_t type~ocean_engine_t ocean_engine_t type~ocean_engine_t->type~ocean_geothermal_t geo type~ocean_handle_t ocean_handle_t type~ocean_handle_t->type~ocean_engine_t engine

Components

Type Visibility Attributes Name Initial
real(kind=wp), public :: cp = SEAWATER_CP

Specific heat capacity (J/kg/K).

logical, public :: enable = .false.

Master switch. Default .false. — the kernel no-ops, so existing nmls + tests stay bit-identical.

real(kind=wp), public :: h_min = 1.0e-3_wp

Thickness floor for the lowest-massive-layer scan.

logical, public :: is_init = .false.

True between init and destroy.

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

Scalar constant bottom heat flux (W/m^2, positive into the ocean from below). Typical geothermal ~0.05-0.1 W/m^2.

real(kind=wp), public :: rho0 = 1035.0_wp

Boussinesq reference density (kg/m^3) — the dt*Q_geo/(rho0*cp) divisor of the bed heat source.

ASSIGNED FROM CONFIG by configure_ocean_reference_density, which copies the single rho0 of record (&ocean_ic_nml rho_0 -> eos%rho0); this slot lives on the engine rather than on ocean_state_t, so it is handed in as that routine’s optional geo argument. The literal here is only the pre-configure type default. Host scalar: folded into src_T before the kernel, so no !$acc update device.


Type-Bound Procedures

procedure, public :: destroy => ocean_geothermal_destroy

procedure, public :: init => ocean_geothermal_init

  • private subroutine ocean_geothermal_init(this, grid)

    No-op shell mirroring the surface-flux init; sets is_init.

    Arguments

    Type IntentOptional Attributes Name
    class(ocean_geothermal_t), intent(inout) :: this
    type(hgrid_t), intent(in) :: grid

Source Code

   type :: ocean_geothermal_t
      logical :: is_init = .false.
         !! True between `init` and `destroy`.
      logical :: enable = .false.
         !! Master switch.  Default `.false.` — the kernel no-ops, so
         !! existing nmls + tests stay bit-identical.
      real(wp) :: rho0 = 1035.0_wp
         !! Boussinesq reference density (kg/m^3) — the `dt*Q_geo/(rho0*cp)`
         !! divisor of the bed heat source.
         !!
         !! ASSIGNED FROM CONFIG by `configure_ocean_reference_density`,
         !! which copies the single rho0 of record (`&ocean_ic_nml rho_0`
         !! -> `eos%rho0`); this slot lives on the engine rather than on
         !! `ocean_state_t`, so it is handed in as that routine's optional
         !! `geo` argument.  The literal here is only the pre-configure
         !! type default.  Host scalar: folded into `src_T` before the
         !! kernel, so no `!$acc update device`.
      real(wp) :: cp = SEAWATER_CP
         !! Specific heat capacity (J/kg/K).
      real(wp) :: h_min = 1.0e-3_wp
         !! Thickness floor for the lowest-massive-layer scan.
      real(wp) :: q_geo_const = 0.0_wp
         !! Scalar constant bottom heat flux (W/m^2, positive into the
         !! ocean from below).  Typical geothermal ~0.05-0.1 W/m^2.
   contains
      procedure :: init => ocean_geothermal_init
      procedure :: destroy => ocean_geothermal_destroy
   end type ocean_geothermal_t