mom_oda_driver_mod module reference
Interfaces for MOM6 ensembles and data assimilation.
Data Types
A structure with a pointer to a domain2d, to allow for the creation of arrays of pointers. |
|
A structure containing integer handles for bias adjustment of tracers. |
|
Control structure that contains a transpose of the ocean state across ensemble members. |
Functions/Subroutines
initialize First_guess (prior) and Analysis grid information for all ensemble members |
|
Copy ensemble member tracers to ensemble vector. |
|
Returns posterior adjustments or full state Note that only those PEs associated with an ensemble member receive data. |
|
Gather observations and call ODA routines. |
|
Finalize DA module. |
|
Initialize DA module. |
|
Set the next analysis time. |
|
Apply increments to tracers. |
|
Set up the grid of thicknesses at tracer points throughout the global domain. |
Detailed Description
Interfaces for MOM6 ensembles and data assimilation.
Type Documentation
- type mom_oda_driver_mod/ptr_mpp_domain
A structure with a pointer to a domain2d, to allow for the creation of arrays of pointers.
- Type fields:
% mpp_domain ::
type(domain2d), pointer, privatepointer to a domain2d
- type mom_oda_driver_mod/inc_cs
A structure containing integer handles for bias adjustment of tracers.
- Type fields:
% fldno ::
integer, privateThe number of tracers.% t ::
type(external_field), privateThe handle for the temperature file.% s ::
type(external_field), privateThe handle for the salinity file.
- type mom_oda_driver_mod/oda_cs
Control structure that contains a transpose of the ocean state across ensemble members.
- Type fields:
% ocean_prior ::
type(ocean_control_struct), pointerensemble ocean prior states in DA space% ocean_posterior ::
type(ocean_control_struct), pointerensemble ocean posterior states or increments to prior in DA space% ocean_increment ::
type(ocean_control_struct), pointerA separate structure for increment diagnostics.% nk ::
integernumber of vertical layers used for DA% grid ::
type(ocean_grid_type), pointerMOM6 grid type and decomposition for the DA.% g ::
type(ocean_grid_type), pointerMOM6 grid type and decomposition for the model.% domains ::
type(mom_domain_type), dimension(:), pointerPointer to mpp_domain objects for ensemble members.% gv ::
type(verticalgrid_type), pointervertical grid for DA% us ::
type(unit_scale_type), pointerstructure containing various unit conversion factors for DA% mpp_domain ::
type(domain2d), pointerPointer to a mpp domain object for DA.% oda_grid ::
type(grid_type), pointerlocal tracer grid% h ::
real, dimension(:,:,:), pointerlayer thicknesses [H ~> m or kg m-2] for DA% t_tend ::
real, dimension(:,:,:), pointerlayer temperature tendency from DA [C T-1 ~> degC s-1]% s_tend ::
real, dimension(:,:,:), pointerlayer salinity tendency from DA [S T-1 ~> ppt s-1]% t_bc_tend ::
real, dimension(:,:,:), pointerThe layer temperature tendency due to bias adjustment [C T-1 ~> degC s-1].% s_bc_tend ::
real, dimension(:,:,:), pointerThe layer salinity tendency due to bias adjustment [S T-1 ~> ppt s-1].% ni ::
integerglobal i-direction grid size% nj ::
integerglobal j-direction grid size% reentrant_x ::
logicalgrid is reentrant in the x direction% reentrant_y ::
logicalgrid is reentrant in the y direction% tripolar_n ::
logicalgrid is folded at its north edge% symmetric ::
logicalValues at C-grid locations are symmetric.% use_basin_mask ::
logicalIf true, use a basin file to delineate weakly coupled ocean basins.% do_bias_adjustment ::
logicalIf true, use spatio-temporally varying climatological tendency adjustment for Temperature and Salinity.% bias_adjustment_multiplier ::
realA scaling for the bias adjustment [nondim].% assim_method ::
integerMethod: NO_ASSIM,EAKF_ASSIM or OI_ASSIM.% ensemble_size ::
integerSize of the ensemble.% ensemble_id ::
integerid of the current ensemble member% ensemble_pelist ::
integer, dimension(:,:), pointerPE list for ensemble members.% filter_pelist ::
integer, dimension(:), pointerPE list for ensemble members.% assim_interval ::
realanalysis interval [T ~> s]% profiles ::
type(ocean_profile_type), pointerpointer to linked list of all available profiles% cprofiles ::
type(ocean_profile_type), pointerpointer to linked list of current profiles% kdroot ::
type(kd_root), pointerA structure for storing nearest neighbors.% ale_cs ::
type(ale_cs), pointerALE control structure for DA.% use_ale_algorithm ::
logicaltrue is using ALE remapping% regridcs ::
type(regridding_cs)ALE control structure for regridding.% remapcs ::
type(remapping_cs)ALE control structure for remapping.% time ::
type(time_type)Current Analysis time.% diag_cs ::
type(diag_ctrl), pointerPointer to diagnostics control structure.% inc_cs ::
type(inc_cs)A Structure containing integer file handles for bias adjustment.% id_inc_t ::
integerA diagnostic handle for the temperature climatological adjustment.% id_inc_s ::
integerA diagnostic handle for the salinity climatological adjustment.% answer_date ::
integerThe vintage of the order of arithmetic and expressions in the remapping invoked by the ODA driver. Values below 20190101 recover the answers from the end of 2018, while higher values use updated and more robust forms of the same expressions.% reproduce_2018_nmme ::
logicaltrue if reproducing older NMME answers.
Function/Subroutine Documentation
- subroutine mom_oda_driver_mod/init_oda(Time, G, GV, US, diag_CS, CS)
initialize First_guess (prior) and Analysis grid information for all ensemble members
- Parameters:
time :: [in] The current model time.
g :: domain and grid information for ocean model
gv :: [in] The ocean’s vertical grid structure
us :: [in] A dimensional unit scaling type
diag_cs :: [inout] A pointer to a diagnostic control structure
cs :: [inout] The DA control structure
- Call to:
mom_ale::ale_initmom_ale::ale_initthicknesstocoordmom_ale::ale_updateverticalgridtypemom_transcribe_grid::copy_dyngrid_to_mom_gridmom_dyn_horgrid::create_dyn_horgrideakf_assimmom_interpolate::get_external_field_infomom_get_input::get_mom_inputmom_hor_index::hor_index_initid_clock_oda_initinit_ocean_ensemblemom_remapping::initialize_remappingmom_string_functions::lowercasemdlmom_domains::mom_domains_initmom_error_handler::mom_errormom_grid::mom_grid_initmom_coord_initialization::mom_initialize_coordmom_fixed_initialization::mom_initialize_topographyno_assimocean_da_core_mod::ocean_da_core_initoi_assimmom_grid_initialize::set_grid_metricsmom_regridding::set_h_neglectmom_regridding::set_regrid_paramsset_up_global_tgridmom_unit_scaling::unit_scaling_initmom_verticalgrid::verticalgridinit
- subroutine mom_oda_driver_mod/set_prior_tracer(Time, G, GV, h, tv, CS)
Copy ensemble member tracers to ensemble vector.
- Parameters:
time :: [in] The current model time
g :: domain and grid information for ocean model
gv :: [in] The ocean’s vertical grid structure
h ::
h[in] Layer thicknesses [H ~> m or kg m-2]tv ::
tv[in] A structure pointing to various thermodynamic variablescs :: ocean DA control structure
- Call to:
mom_error_handler::mom_errormom_remapping::remapping_core_h- Called from:
- subroutine mom_oda_driver_mod/get_posterior_tracer(Time, CS, increment)
Returns posterior adjustments or full state Note that only those PEs associated with an ensemble member receive data.
- Parameters:
time :: [in] the current model time
cs :: ocean DA control structure
increment ::
increment[in] True if returning increment only
- Call to:
mom_error_handler::mom_mesgno_assim- Called from:
- subroutine mom_oda_driver_mod/oda(Time, CS)
Gather observations and call ODA routines.
- Parameters:
time :: [in] the current model time
cs :: A pointer the ocean DA control structure
- Call to:
get_bias_correction_tracerget_posterior_tracerocean_da_core_mod::get_profiles
- subroutine mom_oda_driver_mod/get_bias_correction_tracer(Time, US, CS)
- Parameters:
time :: [in] the current model time
us :: [in] A dimensional unit scaling type
cs :: ocean DA control structure
- Call to:
id_clock_bias_adjustment- Called from:
- subroutine mom_oda_driver_mod/oda_end(CS)
Finalize DA module.
- Parameters:
cs :: [inout] the ocean DA control structure
- subroutine mom_oda_driver_mod/init_ocean_ensemble(CS, Grid, GV, ens_size)
Initialize DA module.
- Parameters:
cs :: Pointer to ODA control structure
grid :: Pointer to ocean analysis grid
gv :: Pointer to DA vertical grid
ens_size ::
ens_size[in] ensemble size
- Called from:
- subroutine mom_oda_driver_mod/set_analysis_time(Time, CS)
Set the next analysis time.
- Parameters:
time :: [in] the current model time
cs :: [inout] the DA control structure
- Call to:
- Called from:
- subroutine mom_oda_driver_mod/apply_oda_tracer_increments(dt, Time_end, G, GV, tv, h, CS)
Apply increments to tracers.
- Parameters:
dt ::
dt[in] The tracer timestep [T ~> s]time_end :: [in] Time at the end of the interval
g :: [in] ocean grid structure
gv :: [in] The ocean’s vertical grid structure
tv ::
tv[inout] A structure pointing to various thermodynamic variablesh ::
h[in] layer thickness [H ~> m or kg m-2]cs :: the data assimilation structure
- Call to:
id_clock_apply_incrementsno_assimmom_remapping::remapping_core_h- Called from:
- subroutine mom_oda_driver_mod/set_up_global_tgrid(T_grid, CS, G)
Set up the grid of thicknesses at tracer points throughout the global domain.
- Parameters:
t_grid :: global tracer grid
cs :: [in] A pointer to DA control structure.
g :: domain and grid information for ocean model
- Called from: