mom_diagnostics module reference¶
Calculates any requested diagnostic quantities that are not calculated in the various subroutines. Diagnostic quantities are requested by allocating them memory.
Data Types¶
The control structure for the MOM_diagnostics module. |
|
A structure with diagnostic IDs of the surface and integrated variables. |
|
A structure with diagnostic IDs of mass transport related diagnostics. |
Functions/Subroutines¶
Diagnostics not more naturally calculated elsewhere are computed here. |
|
This subroutine finds the location of R_in in an increasing ordered list, Rlist, returning as k the element such that Rlist(k) <= R_in < Rlist(k+1), and where wt and wt_p are the linear weights that should be assigned to elements k and k+1. |
|
This subroutine calculates vertical integrals of several tracers, along with the mass-weight of these tracers, the total column mass, and the carefully calculated column height. |
|
This subroutine calculates terms in the mechanical energy budget. |
|
This subroutine registers fields to calculate a diagnostic time derivative. |
|
This subroutine calculates all registered time derivatives. |
|
This routine posts diagnostics of various dynamic ocean surface quantities, including velocities, speed and sea surface height, at the time the ocean state is reported back to the caller. |
|
This routine posts diagnostics of various ocean surface and integrated quantities at the time the ocean state is reported back to the caller. |
|
This routine posts diagnostics of the transports, including the subgridscale contributions. |
|
This subroutine registers various diagnostics and allocates space for fields that other diagnostics depend upon. |
|
Register diagnostics of the surface state and integrated quantities. |
|
Register certain diagnostics related to transports. |
|
Offers the static fields in the ocean grid type for output via the diag_manager. |
|
This subroutine sets up diagnostics upon which other diagnostics depend. |
|
Deallocate memory associated with the diagnostics module. |
Detailed Description¶
Calculates any requested diagnostic quantities that are not calculated in the various subroutines. Diagnostic quantities are requested by allocating them memory.
Type Documentation¶
-
type
mom_diagnostics/
diagnostics_cs
¶ The control structure for the MOM_diagnostics module.
- Type fields:
%
id_u
[integer] :: Diagnostic IDs.%
id_v
[integer] :: Diagnostic IDs.%
id_h
[integer] :: Diagnostic IDs.%
id_usq
[integer] :: Diagnostic IDs.%
id_vsq
[integer] :: Diagnostic IDs.%
id_uv
[integer] :: Diagnostic IDs.%
id_e
[integer] :: Diagnostic IDs.%
id_e_d
[integer] :: Diagnostic IDs.%
id_du_dt
[integer] :: Diagnostic IDs.%
id_dv_dt
[integer] :: Diagnostic IDs.%
id_h_du_dt
[integer] :: Diagnostic IDs.%
id_h_dv_dt
[integer] :: Diagnostic IDs.%
id_hf_du_dt_2d
[integer] :: Diagnostic IDs.%
id_hf_dv_dt_2d
[integer] :: Diagnostic IDs.%
id_col_ht
[integer] :: Diagnostic IDs.%
id_dh_dt
[integer] :: Diagnostic IDs.%
id_ke
[integer] :: Diagnostic IDs.%
id_dkedt
[integer] :: Diagnostic IDs.%
id_pe_to_ke
[integer] :: Diagnostic IDs.%
id_ke_bt
[integer] :: Diagnostic IDs.%
id_ke_coradv
[integer] :: Diagnostic IDs.%
id_ke_adv
[integer] :: Diagnostic IDs.%
id_ke_visc
[integer] :: Diagnostic IDs.%
id_ke_stress
[integer] :: Diagnostic IDs.%
id_ke_visc_gl90
[integer] :: Diagnostic IDs.%
id_ke_horvisc
[integer] :: Diagnostic IDs.%
id_ke_dia
[integer] :: Diagnostic IDs.%
id_uh_rlay
[integer] :: Diagnostic IDs.%
id_vh_rlay
[integer] :: Diagnostic IDs.%
id_uhgm_rlay
[integer] :: Diagnostic IDs.%
id_vhgm_rlay
[integer] :: Diagnostic IDs.%
id_h_rlay
[integer] :: Diagnostic IDs.%
id_rd1
[integer] :: Diagnostic IDs.%
id_rml
[integer] :: Diagnostic IDs.%
id_rcv
[integer] :: Diagnostic IDs.%
id_cg1
[integer] :: Diagnostic IDs.%
id_cfl_cg1
[integer] :: Diagnostic IDs.%
id_cfl_cg1_x
[integer] :: Diagnostic IDs.%
id_cfl_cg1_y
[integer] :: Diagnostic IDs.%
id_cg_ebt
[integer] :: Diagnostic IDs.%
id_rd_ebt
[integer] :: Diagnostic IDs.%
id_p_ebt
[integer] :: Diagnostic IDs.%
id_temp_int
[integer] :: Diagnostic IDs.%
id_salt_int
[integer] :: Diagnostic IDs.%
id_mass_wt
[integer] :: Diagnostic IDs.%
id_col_mass
[integer] :: Diagnostic IDs.%
id_masscello
[integer] :: Diagnostic IDs.%
id_masso
[integer] :: Diagnostic IDs.%
id_volcello
[integer] :: Diagnostic IDs.%
id_tpot
[integer] :: Diagnostic IDs.%
id_sprac
[integer] :: Diagnostic IDs.%
id_tob
[integer] :: Diagnostic IDs.%
id_sob
[integer] :: Diagnostic IDs.%
id_thetaoga
[integer] :: Diagnostic IDs.%
id_soga
[integer] :: Diagnostic IDs.%
id_sosga
[integer] :: Diagnostic IDs.%
id_tosga
[integer] :: Diagnostic IDs.%
id_temp_layer_ave
[integer] :: Diagnostic IDs.%
id_salt_layer_ave
[integer] :: Diagnostic IDs.%
id_pbo
[integer] :: Diagnostic IDs.%
id_thkcello
[integer] :: Diagnostic IDs.%
id_rhoinsitu
[integer] :: Diagnostic IDs.%
id_rhopot0
[integer] :: Diagnostic IDs.%
id_rhopot2
[integer] :: Diagnostic IDs.%
id_drho_dt
[integer] :: Diagnostic IDs.%
id_drho_ds
[integer] :: Diagnostic IDs.%
id_h_pre_sync
[integer] :: Diagnostic IDs.%
id_tosq
[integer] :: Diagnostic IDs.%
id_sosq
[integer] :: Diagnostic IDs.%
initialized
[logical] :: True if this control structure has been initialized.%
mono_n2_column_fraction
[real] :: The lower fraction of water column over which N2 is limited as monotonic for the purposes of calculating the equivalent barotropic wave speed [nondim].%
mono_n2_depth
[real] :: The depth below which N2 is limited as monotonic for the purposes of calculating the equivalent barotropic wave speed [H ~> m or kg m-2].%
diag
[type( diag_ctrl ),pointer] :: A structure that is used to regulate the timing of diagnostic output.%
du_dt
[real(:,:,:),allocatable] :: net i-acceleration [L T-2 ~> m s-2]%
dv_dt
[real(:,:,:),allocatable] :: net j-acceleration [L T-2 ~> m s-2]%
dh_dt
[real(:,:,:),allocatable] :: thickness rate of change [H T-1 ~> m s-1 or kg m-2 s-1]%
ke_term_on
[logical] :: If true, at least one diagnostic term in the KE budget is in use.%
wave_speed
[type( wave_speed_cs )] :: Wave speed control struct.%
var_ptr
[type( p3d )(50)] :: pointers to variables used in the calculation of time derivatives%
deriv
[type( p3d )(50)] :: Time derivatives of various fields.%
prev_val
[type( p3d )(50)] :: Previous values of variables used in the calculation of time derivatives previous values of variables used in calculation of time derivatives.%
nlay
[integer(50)] :: The number of layers in each diagnostics.%
num_time_deriv
[integer] :: The number of time derivative diagnostics.%
pass_ke_uv
[type(group_pass_type)] :: A handle used for group halo passes.
-
type
mom_diagnostics/
surface_diag_ids
¶ A structure with diagnostic IDs of the surface and integrated variables.
- Type fields:
%
id_zos
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_zossq
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_volo
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_speed
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_ssh
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_ssh_ga
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_sst
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_sst_sq
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_sstcon
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_sss
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_sss_sq
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_sssabs
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_ssu
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_ssv
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_fraz
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_salt_deficit
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_heat_pme
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.%
id_intern_heat
[integer] :: Diagnostic IDs for 2-d surface and bottom flux and state fields.
-
type
mom_diagnostics/
transport_diag_ids
¶ A structure with diagnostic IDs of mass transport related diagnostics.
- Type fields:
%
id_uhtr
[integer] :: Diagnostics for tracer horizontal transport.%
id_umo
[integer] :: Diagnostics for tracer horizontal transport.%
id_umo_2d
[integer] :: Diagnostics for tracer horizontal transport.%
id_vhtr
[integer] :: Diagnostics for tracer horizontal transport.%
id_vmo
[integer] :: Diagnostics for tracer horizontal transport.%
id_vmo_2d
[integer] :: Diagnostics for tracer horizontal transport.%
id_dynamics_h
[integer] :: Diagnostics for tracer horizontal transport.%
id_dynamics_h_tendency
[integer] :: Diagnostics for tracer horizontal transport.
Function/Subroutine Documentation¶
-
subroutine
mom_diagnostics/
calculate_diagnostic_fields
(u, v, h, uh, vh, tv, ADp, CDp, p_surf, dt, diag_pre_sync, G, GV, US, CS)¶ Diagnostics not more naturally calculated elsewhere are computed here.
- Parameters:
g :: [inout] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
us :: [in] A dimensional unit scaling type
u :: [in] The zonal velocity [L T-1 ~> m s-1].
v :: [in] The meridional velocity [L T-1 ~> m s-1].
h :: [in] Layer thicknesses [H ~> m or kg m-2].
uh :: [in] Transport through zonal faces = u*h*dy,
vh :: [in] Transport through meridional faces = v*h*dx,
tv :: [in] A structure pointing to various thermodynamic variables.
adp :: [in] structure with pointers to accelerations in momentum equation.
cdp :: [in] structure with pointers to terms in continuity equation.
p_surf :: A pointer to the surface pressure [R L2 T-2 ~> Pa]. If p_surf is not associated, it is the same as setting the surface pressure to 0.
dt :: [in] The time difference since the last call to this subroutine [T ~> s].
diag_pre_sync :: [in] Target grids from previous timestep
cs :: [inout] Control structure returned by a previous call to diagnostics_init.
- Call to:
mom_eos::abs_saln_to_prac_saln
calculate_derivs
calculate_energy_diagnostics
calculate_vertical_integrals
mom_eos::cons_temp_to_pot_temp
mom_diag_mediator::diag_copy_storage_to_diag
mom_diag_mediator::diag_restore_grids
mom_diag_mediator::diag_save_grids
find_weights
mom_spatial_means::global_volume_mean
mom_error_handler::mom_error
mom_wave_speed::wave_speed
-
subroutine
mom_diagnostics/
find_weights
(Rlist, R_in, k, nz, wt, wt_p)¶ This subroutine finds the location of R_in in an increasing ordered list, Rlist, returning as k the element such that Rlist(k) <= R_in < Rlist(k+1), and where wt and wt_p are the linear weights that should be assigned to elements k and k+1.
- Parameters:
rlist :: [in] The list of target densities [R ~> kg m-3]
r_in :: [in] The density being inserted into Rlist [R ~> kg m-3]
k :: [inout] The value of k such that Rlist(k) <= R_in < Rlist(k+1) The input value is a first guess
nz :: [in] The number of layers in Rlist
wt :: [out] The weight of layer k for interpolation [nondim]
wt_p :: [out] The weight of layer k+1 for interpolation [nondim]
- Called from:
-
subroutine
mom_diagnostics/
calculate_vertical_integrals
(h, tv, p_surf, G, GV, US, CS)¶ This subroutine calculates vertical integrals of several tracers, along with the mass-weight of these tracers, the total column mass, and the carefully calculated column height.
- Parameters:
g :: [inout] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
us :: [in] A dimensional unit scaling type
h :: [in] Layer thicknesses [H ~> m or kg m-2].
tv :: [in] A structure pointing to various thermodynamic variables.
p_surf :: A pointer to the surface pressure [R L2 T-2 ~> Pa]. If p_surf is not associated, it is the same as setting the surface pressure to 0.
cs :: [inout] Control structure returned by a previous call to diagnostics_init.
- Call to:
- Called from:
-
subroutine
mom_diagnostics/
calculate_energy_diagnostics
(u, v, h, uh, vh, ADp, CDp, G, GV, US, CS)¶ This subroutine calculates terms in the mechanical energy budget.
- Parameters:
g :: [inout] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
u :: [in] The zonal velocity [L T-1 ~> m s-1].
v :: [in] The meridional velocity [L T-1 ~> m s-1].
h :: [in] Layer thicknesses [H ~> m or kg m-2].
uh :: [in] Transport through zonal faces=u*h*dy,
vh :: [in] Transport through merid faces=v*h*dx,
adp :: [in] Structure pointing to accelerations in momentum equation.
cdp :: [in] Structure pointing to terms in continuity equations.
us :: [in] A dimensional unit scaling type
cs :: [inout] Control structure returned by a previous call to diagnostics_init.
- Called from:
-
subroutine
mom_diagnostics/
register_time_deriv
(lb, f_ptr, deriv_ptr, CS)¶ This subroutine registers fields to calculate a diagnostic time derivative.
- Parameters:
lb :: [in] Lower index bound of f_ptr
f_ptr :: Time derivative operand, in arbitrary units [A ~> a]
deriv_ptr :: Time derivative of f_ptr, in units derived from the arbitrary units of f_ptr [A T-1 ~> a s-1]
cs :: [inout] Control structure returned by previous call to diagnostics_init.
- Call to:
- Called from:
-
subroutine
mom_diagnostics/
calculate_derivs
(dt, G, CS)¶ This subroutine calculates all registered time derivatives.
- Parameters:
dt :: [in] The time interval over which differences occur [T ~> s].
g :: [inout] The ocean’s grid structure.
cs :: [inout] Control structure returned by previous call to diagnostics_init.
- Called from:
-
subroutine
mom_diagnostics/
post_surface_dyn_diags
(IDs, G, diag, sfc_state, ssh)¶ This routine posts diagnostics of various dynamic ocean surface quantities, including velocities, speed and sea surface height, at the time the ocean state is reported back to the caller.
- Parameters:
ids :: [in] A structure with the diagnostic IDs.
g :: [in] ocean grid structure
diag :: [in] regulates diagnostic output
sfc_state :: [in] structure describing the ocean surface state
ssh :: [in] Time mean surface height without corrections
-
subroutine
mom_diagnostics/
post_surface_thermo_diags
(IDs, G, GV, US, diag, dt_int, sfc_state, tv, ssh, ssh_ibc)¶ This routine posts diagnostics of various ocean surface and integrated quantities at the time the ocean state is reported back to the caller.
- Parameters:
ids :: [in] A structure with the diagnostic IDs.
g :: [in] ocean grid structure
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
diag :: [in] regulates diagnostic output
dt_int :: [in] total time step associated with these diagnostics [T ~> s].
sfc_state :: [in] structure describing the ocean surface state
tv :: [in] A structure pointing to various thermodynamic variables
ssh :: [in] Time mean surface height without corrections for ice displacement [Z ~> m]
ssh_ibc :: [in] Time mean surface height with corrections for ice displacement and the inverse barometer [Z ~> m]
- Call to:
mom_eos::abs_saln_to_prac_saln
mom_eos::cons_temp_to_pot_temp
mom_coupler_types::coupler_type_send_data
mom_spatial_means::global_area_integral
-
subroutine
mom_diagnostics/
post_transport_diagnostics
(G, GV, US, uhtr, vhtr, h, IDs, diag_pre_dyn, diag, dt_trans, Reg)¶ This routine posts diagnostics of the transports, including the subgridscale contributions.
- Parameters:
g :: [inout] ocean grid structure
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
uhtr :: [in] Accumulated zonal thickness fluxes used to advect tracers [H L2 ~> m3 or kg]
vhtr :: [in] Accumulated meridional thickness fluxes used to advect tracers [H L2 ~> m3 or kg]
h :: [in] The updated layer thicknesses [H ~> m or kg m-2]
ids :: [in] A structure with the diagnostic IDs.
diag_pre_dyn :: [inout] Stored grids from before dynamics
diag :: [inout] regulates diagnostic output
dt_trans :: [in] total time step associated with the transports [T ~> s].
reg :: Pointer to the tracer registry
- Call to:
mom_diag_mediator::diag_copy_storage_to_diag
mom_diag_mediator::diag_restore_grids
mom_diag_mediator::diag_save_grids
mom_tracer_registry::post_tracer_transport_diagnostics
-
subroutine
mom_diagnostics/
mom_diagnostics_init
(MIS, ADp, CDp, Time, G, GV, US, param_file, diag, CS, tv)¶ This subroutine registers various diagnostics and allocates space for fields that other diagnostics depend upon.
- Parameters:
mis :: [in] For “MOM Internal State” a set of pointers to the fields and accelerations that make up the ocean’s internal physical state.
adp :: [inout] Structure with pointers to momentum equation terms.
cdp :: [inout] Structure with pointers to continuity equation terms.
time :: [in] Current model time.
g :: [in] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
us :: [in] A dimensional unit scaling type
param_file :: [in] A structure to parse for run-time parameters.
diag :: [inout] Structure to regulate diagnostic output.
cs :: [inout] Diagnostic control struct
tv :: [in] A structure pointing to various thermodynamic variables.
- Call to:
mom_verticalgrid::get_flux_units
mom_verticalgrid::get_thickness_units
set_dependent_diagnostics
mom_wave_speed::wave_speed_init
-
subroutine
mom_diagnostics/
register_surface_diags
(Time, G, US, IDs, diag, tv)¶ Register diagnostics of the surface state and integrated quantities.
- Parameters:
time :: [in] current model time
g :: [in] ocean grid structure
us :: [in] A dimensional unit scaling type
ids :: [inout] A structure with the diagnostic IDs.
diag :: [inout] regulates diagnostic output
tv :: [in] A structure pointing to various thermodynamic variables
-
subroutine
mom_diagnostics/
register_transport_diags
(Time, G, GV, US, IDs, diag)¶ Register certain diagnostics related to transports.
- Parameters:
time :: [in] current model time
g :: [in] ocean grid structure
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
ids :: [inout] A structure with the diagnostic IDs.
diag :: [inout] regulates diagnostic output
- Call to:
-
subroutine
mom_diagnostics/
write_static_fields
(G, GV, US, tv, diag)¶ Offers the static fields in the ocean grid type for output via the diag_manager.
- Parameters:
g :: [in] ocean grid structure
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
tv :: [in] A structure pointing to various thermodynamic variables
diag :: [inout] regulates diagnostic output
-
subroutine
mom_diagnostics/
set_dependent_diagnostics
(MIS, ADp, CDp, G, GV, CS)¶ This subroutine sets up diagnostics upon which other diagnostics depend.
- Parameters:
mis :: [in] For “MOM Internal State” a set of pointers to the fields and accelerations making up ocean internal physical state.
adp :: [inout] Structure pointing to accelerations in momentum equation.
cdp :: [inout] Structure pointing to terms in continuity equation.
g :: [in] The ocean’s grid structure.
gv :: [in] ocean vertical grid structure
cs :: [inout] Pointer to the control structure for this module.
- Call to:
- Called from:
-
subroutine
mom_diagnostics/
mom_diagnostics_end
(CS, ADp, CDp)¶ Deallocate memory associated with the diagnostics module.
- Parameters:
cs :: [inout] Control structure returned by a previous call to diagnostics_init.
adp :: [inout] structure with pointers to accelerations in momentum equation.
cdp :: [inout] Structure pointing to terms in continuity equation.
- Called from: