mom_oda_incupd module reference
This module contains the routines used to apply incremental updates from data assimilation.
Data Types
A structure for creating arrays of pointers to 3D arrays with extra gridding information. |
|
oda incupd control structure |
Functions/Subroutines
This subroutine defined the control structure of module and register. |
|
This subroutine defined the number of time step for full update, stores the layer pressure increments and initialize remap structure. |
|
This subroutine stores the increments at h points for the variable whose address is given by f_ptr. |
|
This subroutine stores the increments at u and v points for the variable whose address is given by u_ptr and v_ptr. |
|
This subroutine applies oda increments to layers thicknesses, temp, salt, U and V everywhere . |
|
Output increment if using full fields for the oda_incupd module. |
|
Initialize diagnostics for the oda_incupd module. |
|
This subroutine deallocates any memory associated with the oda_incupd module. |
Detailed Description
This module contains the routines used to apply incremental updates from data assimilation.
Type Documentation
- type mom_oda_incupd/p3d
A structure for creating arrays of pointers to 3D arrays with extra gridding information.
- Type fields:
% id ::
integer, privateid for FMS external time interpolator% nz_data ::
integer, privateThe number of vertical levels in the input field.% mask_in ::
real, dimension(:,:,:), pointer, privatepointer to the data mask (perhaps unused) [nondim]% p ::
real, dimension(:,:,:), pointer, privatepointer to the data, in units that depend on the field it refers to [various].% h ::
real, dimension(:,:,:), pointer, privatepointer to the data grid (perhaps unused) in [H ~> m or kg m-2]
- type mom_oda_incupd/oda_incupd_cs
oda incupd control structure
- Type fields:
% nz ::
integerThe total number of layers.% nz_data ::
integerThe total number of arbritary layers (used by older code).% fldno ::
integerThe number of fields which have already been registered by calls to set_up_oda_incupd_field.% inc ::
type(p3d), dimension(50)The increments to be applied to the field.% inc_u ::
type(p3d)The increments to be applied to the u-velocities, with data in [L T-1 ~> m s-1].% inc_v ::
type(p3d)The increments to be applied to the v-velocities, with data in [L T-1 ~> m s-1].% ref_h ::
type(p3d)Vertical grid on which the increments are provided, with data in [H ~> m or kg m-2].% nstep_incupd ::
integernumber of time step for full update% ncount ::
realincrement time step counter [nondim]. This could be an integer but a real variable works better with the existing restarts.% remap_cs ::
type(remapping_cs)Remapping parameters and work arrays.% incupddataongrid ::
logicalTrue if the incupd data are on the model horizontal grid.% uv_inc ::
logicaluse u and v increments% diag ::
type(diag_ctrl), pointerstructure to regulate output% id_u_oda_inc ::
integerdiagnostic id for zonal velocity inc.% id_v_oda_inc ::
integerdiagnostic id for meridional velocity inc.% id_h_oda_inc ::
integerdiagnostic id for layer thicknesses inc.% id_t_oda_inc ::
integerdiagnostic id for temperature inc.% id_s_oda_inc ::
integerdiagnostic id for salinity inc.
Function/Subroutine Documentation
- subroutine mom_oda_incupd/initialize_oda_incupd_fixed(G, GV, US, CS, restart_CS)
This subroutine defined the control structure of module and register.
- Parameters:
g :: [in] The ocean’s grid structure.
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
cs :: A pointer that is set to point to the control structure for this module (in/out).
restart_cs :: [inout] MOM restart control struct
- Call to:
- subroutine mom_oda_incupd/initialize_oda_incupd(G, GV, US, param_file, CS, data_h, nz_data, restart_CS)
This subroutine defined the number of time step for full update, stores the layer pressure increments and initialize remap structure.
- Parameters:
g :: [in] The ocean’s grid structure.
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
nz_data ::
nz_data[in] The total number of incr. input layers.param_file ::
param_file[in] A structure indicating the open file to parse for model parameter values.cs :: A pointer that is set to point to the control structure for this module (in/out).
data_h ::
data_h[in] The ODA h [H ~> m or kg m-2].restart_cs :: [in] MOM restart control struct
- Call to:
mom_error_handler::mom_errormom_remapping::remappingschemesdoc
- subroutine mom_oda_incupd/set_up_oda_incupd_field(sp_val, G, GV, CS)
This subroutine stores the increments at h points for the variable whose address is given by f_ptr.
- Parameters:
g :: [in] Grid structure
gv :: [in] ocean vertical grid structure
cs :: oda_incupd control structure (in/out).
sp_val ::
sp_val[in] increment field, it can have an arbitrary number
- Call to:
- subroutine mom_oda_incupd/set_up_oda_incupd_vel_field(u_val, v_val, G, GV, CS)
This subroutine stores the increments at u and v points for the variable whose address is given by u_ptr and v_ptr.
- Parameters:
g :: [in] Grid structure (in).
gv :: [in] ocean vertical grid structure
cs :: oda incupd structure (in/out).
u_val ::
u_val[in] u increment, it has arbritary number of layers butv_val ::
v_val[in] v increment, it has arbritary number of layers but
- subroutine mom_oda_incupd/calc_oda_increments(h, tv, u, v, G, GV, US, CS)
- Parameters:
g :: [in] The ocean’s grid structure (in).
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
h ::
h[inout] Layer thickness [H ~> m or kg m-2] (in)tv ::
tv[in] A structure pointing to various thermodynamic variablesu ::
u[in] The zonal velocity that is beingv ::
v[in] The meridional velocity that is beingcs :: A pointer to the control structure for this module that is set by a previous call to initialize_oda_incupd (in).
- Call to:
- subroutine mom_oda_incupd/apply_oda_incupd(h, tv, u, v, dt, G, GV, US, CS)
This subroutine applies oda increments to layers thicknesses, temp, salt, U and V everywhere .
- Parameters:
g :: [in] The ocean’s grid structure (in).
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
h ::
h[inout] Layer thickness [H ~> m or kg m-2] (in)tv ::
tv[inout] A structure pointing to various thermodynamic variablesu ::
u[inout] The zonal velocity that is beingv ::
v[inout] The meridional velocity that is beingdt ::
dt[in] The amount of time covered by this call [T ~> s].cs :: A pointer to the control structure for this module that is set by a previous call to initialize_oda_incupd (in).
- Call to:
- Called from:
mom_diabatic_driver::diabatic_alemom_diabatic_driver::diabatic_ale_legacymom_diabatic_driver::layered_diabatic
- subroutine mom_oda_incupd/output_oda_incupd_inc(Time, G, GV, param_file, CS, US)
Output increment if using full fields for the oda_incupd module.
- Parameters:
time :: [in] The current model time
g :: [inout] The ocean’s grid structure
gv :: [in] ocean vertical grid structure
param_file ::
param_file[in] A structure indicating the open file to parse forcs :: ODA incupd control structure
us :: [in] A dimensional unit scaling
- Call to:
mom_get_input::get_mom_inputmom_verticalgrid::get_thickness_unitsmom_error_handler::mom_errormom_restart::restart_initmom_restart::save_restartmom_io::var_desc
- subroutine mom_oda_incupd/init_oda_incupd_diags(Time, G, GV, diag, CS, US)
Initialize diagnostics for the oda_incupd module.
- Parameters:
time :: [in] The current model time
g :: [in] The ocean’s grid structure
gv :: [in] ocean vertical grid structure
diag ::
diag[inout] A structure that is used to regulate diagnostic output.cs :: ALE sponge control structure
us :: [in] A dimensional unit scaling
- Call to:
- Called from:
- subroutine mom_oda_incupd/oda_incupd_end(CS)
This subroutine deallocates any memory associated with the oda_incupd module.
- Parameters:
cs :: A pointer to the control structure that is set by a previous call to initialize_oda_incupd.