mom_geothermal module reference
Implemented geothermal heating at the ocean bottom.
Data Types
Control structure for geothermal heating. |
Functions/Subroutines
Applies geothermal heating, including the movement of water between isopycnal layers to match the target densities. |
|
Applies geothermal heating to the bottommost layers that occur within GEOTHERMAL_THICKNESS of the bottom, by simply heating the water in place. |
|
Initialize parameters and allocate memory associated with the geothermal heating module. |
|
Clean up and deallocate memory associated with the geothermal heating module. |
Detailed Description
Geothermal heating can be added either in a layered isopycnal mode, in which the heating raises the density of the layer to the target density of the layer above, and then moves the water into that layer, or in a simple Eulerian mode, in which the bottommost GEOTHERMAL_THICKNESS are heated. Geothermal heating will also provide a buoyant source of bottom TKE that can be used to further mix the near-bottom water. In cold fresh water lakes where heating increases density, water should be moved into deeper layers, but this is not implemented yet.
Type Documentation
- type mom_geothermal/geothermal_cs
Control structure for geothermal heating.
- Type fields:
% initialized ::
logicalTrue if this control structure has been initialized.% drcv_dt_inplace ::
realThe value of dRcv_dT above which (dRcv_dT is negative) the water is heated in place instead of moving upward between layers in non-ALE layered mode [R C-1 ~> kg m-3 degC-1].% geo_heat ::
real, dimension(:,:), allocatableThe geothermal heat flux [Q R Z T-1 ~> W m-2].% geothermal_thick ::
realThe thickness over which geothermal heating is applied [H ~> m or kg m-2].% apply_geothermal ::
logicalIf true, geothermal heating will be applied. This is false if GEOTHERMAL_SCALE is 0 and there is no heat to apply.% time ::
type(time_type), pointerA pointer to the ocean model’s clock.% diag ::
type(diag_ctrl), pointerA structure that is used to regulate the timing timing of diagnostic output.% id_internal_heat_heat_tendency ::
integerID for diagnostic of heat tendency.% id_internal_heat_temp_tendency ::
integerID for diagnostic of temperature tendency.% id_internal_heat_h_tendency ::
integerID for diagnostic of thickness tendency.% id_geothermal_buoyancy_flux ::
integerID for diagnostic of bottom buoyancy flux.
Function/Subroutine Documentation
- subroutine mom_geothermal/geothermal_entraining(h, tv, dt, ea, eb, G, GV, US, CS, halo)
Applies geothermal heating, including the movement of water between isopycnal layers to match the target densities. The heating is applied to the bottommost layers that occur within GEOTHERMAL_THICKNESS of the bottom. If the partial derivative of the coordinate density with temperature is positive or very small, the layers are simply heated in place. Any heat that can not be applied to the ocean is returned (WHERE)?
- Parameters:
g :: [inout] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
h ::
h[inout] Layer thicknesses [H ~> m or kg m-2]tv ::
tv[inout] A structure containing pointers to any available thermodynamic fields.dt ::
dt[in] Time increment [T ~> s].ea ::
ea[inout] The amount of fluid moved downward into a layer; this should be increased due to mixed layer detrainment [H ~> m or kg m-2]eb ::
eb[inout] The amount of fluid moved upward into a layer; this should be increased due to mixed layer entrainment [H ~> m or kg m-2].us :: [in] A dimensional unit scaling type
cs :: [in] The control structure returned by a previous call to geothermal_init.
halo ::
halo[in] Halo width over which to work
- Call to:
- subroutine mom_geothermal/geothermal_in_place(h, tv, dt, G, GV, US, CS, BFlx_geothermal, halo)
Applies geothermal heating to the bottommost layers that occur within GEOTHERMAL_THICKNESS of the bottom, by simply heating the water in place. Any heat that can not be applied to the ocean is returned (WHERE)?
- Parameters:
g :: [inout] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
h ::
h[in] Layer thicknesses [H ~> m or kg m-2]tv ::
tv[inout] A structure containing pointers to any available thermodynamic fields.dt ::
dt[in] Time increment [T ~> s].us :: [in] A dimensional unit scaling type
cs :: [in] Geothermal heating control struct
bflx_geothermal :: [out] Geothermal buoyancy flux in [Z2 T-3 ~> m2 s-3]
halo ::
halo[in] Halo width over which to work
- Call to:
- subroutine mom_geothermal/geothermal_init(Time, G, GV, US, param_file, diag, CS, useALEalgorithm)
Initialize parameters and allocate memory associated with the geothermal heating module.
- Parameters:
time :: [in] Current model time.
g :: [inout] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
us :: [in] A dimensional unit scaling type
param_file ::
param_file[in] A structure to parse for run-time parameters.diag ::
diag[inout] Structure used to regulate diagnostic output.cs :: [inout] Geothermal heating control struct
usealealgorithm :: [in] logical for whether to use ALE remapping
- Call to:
mom_verticalgrid::get_thickness_unitsmom_error_handler::mom_errormom_diag_mediator::register_static_field- Called from:
- subroutine mom_geothermal/geothermal_end(CS)
Clean up and deallocate memory associated with the geothermal heating module.
- Parameters:
cs :: [inout] Geothermal heating control struct
- Called from: