rdb_ocean_geothermal Module


Uses

  • module~~rdb_ocean_geothermal~~UsesGraph module~rdb_ocean_geothermal rdb_ocean_geothermal module~rdb_constants rdb_constants module~rdb_ocean_geothermal->module~rdb_constants module~rdb_grid rdb_grid module~rdb_ocean_geothermal->module~rdb_grid module~rdb_multilayer_state rdb_multilayer_state module~rdb_ocean_geothermal->module~rdb_multilayer_state module~rdb_ocean_surface_flux rdb_ocean_surface_flux module~rdb_ocean_geothermal->module~rdb_ocean_surface_flux pic_types pic_types module~rdb_constants->pic_types module~rdb_grid->module~rdb_constants module~rdb_multilayer_state->module~rdb_constants module~rdb_multilayer_state->module~rdb_grid iso_fortran_env iso_fortran_env module~rdb_multilayer_state->iso_fortran_env module~rdb_efp rdb_efp module~rdb_multilayer_state->module~rdb_efp module~rdb_error_ring rdb_error_ring module~rdb_multilayer_state->module~rdb_error_ring module~rdb_mem_report rdb_mem_report module~rdb_multilayer_state->module~rdb_mem_report module~rdb_tracer rdb_tracer module~rdb_multilayer_state->module~rdb_tracer pic_logger pic_logger module~rdb_multilayer_state->pic_logger module~rdb_ocean_surface_flux->module~rdb_constants module~rdb_ocean_surface_flux->module~rdb_grid module~rdb_ocean_surface_flux->module~rdb_multilayer_state module~rdb_ocean_surface_flux->iso_fortran_env module~rdb_ocean_surface_flux->module~rdb_mem_report module~rdb_efp->iso_fortran_env ieee_arithmetic ieee_arithmetic module~rdb_efp->ieee_arithmetic module~rdb_error_ring->pic_logger module~rdb_mem_report->module~rdb_constants module~rdb_mem_report->iso_fortran_env module~rdb_mem_report->pic_logger pic_strings pic_strings module~rdb_mem_report->pic_strings module~rdb_tracer->module~rdb_constants module~rdb_tracer->module~rdb_grid module~rdb_tracer->iso_fortran_env module~rdb_tracer->module~rdb_mem_report

Used by

  • module~~rdb_ocean_geothermal~~UsedByGraph module~rdb_ocean_geothermal rdb_ocean_geothermal module~rdb_ocean_dyn rdb_ocean_dyn module~rdb_ocean_dyn->module~rdb_ocean_geothermal module~rdb_ocean_engine rdb_ocean_engine module~rdb_ocean_engine->module~rdb_ocean_geothermal module~rdb_ocean_engine->module~rdb_ocean_dyn module~rdb_ocean_setup rdb_ocean_setup module~rdb_ocean_engine->module~rdb_ocean_setup module~rdb_ocean_state rdb_ocean_state module~rdb_ocean_engine->module~rdb_ocean_state module~rdb_ocean_diag_derived rdb_ocean_diag_derived module~rdb_ocean_engine->module~rdb_ocean_diag_derived module~rdb_ocean_diag_fills rdb_ocean_diag_fills module~rdb_ocean_engine->module~rdb_ocean_diag_fills module~rdb_ocean_setup->module~rdb_ocean_geothermal module~rdb_ocean_setup->module~rdb_ocean_dyn module~rdb_ocean_setup->module~rdb_ocean_state module~rdb_driver rdb_driver module~rdb_driver->module~rdb_ocean_dyn module~rdb_driver->module~rdb_ocean_engine module~rdb_driver->module~rdb_ocean_state module~rdb_handle rdb_handle module~rdb_handle->module~rdb_ocean_engine module~rdb_handle->module~rdb_ocean_state module~rdb_ocean_api rdb_ocean_api module~rdb_ocean_api->module~rdb_ocean_dyn module~rdb_ocean_api->module~rdb_ocean_engine module~rdb_ocean_api->module~rdb_handle module~rdb_ocean_api->module~rdb_ocean_diag_derived module~rdb_ocean_api->module~rdb_ocean_diag_fills module~rdb_ocean_state->module~rdb_ocean_dyn module~rdb_ocean_diag_derived->module~rdb_ocean_state module~rdb_ocean_diag_derived->module~rdb_ocean_diag_fills module~rdb_ocean_diag_fills->module~rdb_ocean_state

Derived Types

type, public ::  ocean_geothermal_t

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.

Read more…

Type-Bound Procedures

procedure, public :: destroy => ocean_geothermal_destroy
procedure, public :: init => ocean_geothermal_init

Subroutines

public subroutine ocean_geothermal_apply_tracers(grid, geo, ms, dt, active)

Add the geothermal bottom heat flux to the lowest massive tracer layer. Operates in hTr space (concentration thickness): d(hT_{k=1})/dt = Q_geo / (rho0 * cp) (units (W/m^2)/(kg/m^3 * J/kg/K) = Km/s, matching hTr).

Read more…

Arguments

Type IntentOptional Attributes Name
type(hgrid_t), intent(in) :: grid
type(ocean_geothermal_t), intent(in), optional :: geo

Optional — when absent the kernel is a no-op (no geothermal forcing configured).

type(multilayer_state_t), intent(inout) :: ms
real(kind=wp), intent(in) :: dt
logical, intent(in), optional :: active

Optional gate (thermo cadence). Absent => kernel runs; present-and-false => early return.

private pure subroutine apply_geothermal_src_impl(hTr, budget, wet_mask, h_layer, k_bot, src, nz, h_min)

Stamp src * wet_mask(i,j) onto the lowest massive layer of a tracer’s hTr array (first k with h_layer > h_min, scanning k = k_bot(i,j)..nz from the first live layer up), mirror into the matching budget contributor. Flat-impl over plain allocatables — the outer subroutine reaches ms%tracers(idx)%hTr on the host before calling this.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(inout) :: hTr(:,:,:)
real(kind=wp), intent(inout) :: budget(:,:,:)
real(kind=wp), intent(in) :: wet_mask(:,:)
real(kind=wp), intent(in) :: h_layer(:,:,:)
integer, intent(in) :: k_bot(:,:)
real(kind=wp), intent(in) :: src
integer, intent(in) :: nz
real(kind=wp), intent(in) :: h_min

private subroutine ocean_geothermal_destroy(this)

No-op shell mirroring the surface-flux destroy.

Arguments

Type IntentOptional Attributes Name
class(ocean_geothermal_t), intent(inout) :: this

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