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, private] :: pointer to a domain2d
-
type
mom_oda_driver_mod/inc_cs¶ A structure containing integer handles for bias adjustment of tracers.
- Type fields:
%fldno[integer,private] :: The number of tracers.%t[type(external_field),private] :: The handle for the temperature file.%s[type(external_field),private] :: The 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 ),pointer] :: ensemble ocean prior states in DA space%ocean_posterior[type( ocean_control_struct ),pointer] :: ensemble ocean posterior states or increments to prior in DA space%ocean_increment[type( ocean_control_struct ),pointer] :: A separate structure for increment diagnostics.%nk[integer] :: number of vertical layers used for DA%grid[type( ocean_grid_type ),pointer] :: MOM6 grid type and decomposition for the DA.%g[type( ocean_grid_type ),pointer] :: MOM6 grid type and decomposition for the model.%domains[type(mom_domain_type)(:),pointer] :: Pointer to mpp_domain objects for ensemble members.%gv[type( verticalgrid_type ),pointer] :: vertical grid for DA%us[type( unit_scale_type ),pointer] :: structure containing various unit conversion factors for DA%mpp_domain[type(domain2d),pointer] :: Pointer to a mpp domain object for DA.%oda_grid[type( grid_type ),pointer] :: local tracer grid%h[real(:,:,:),pointer] :: layer thicknesses [H ~> m or kg m-2] for DA%t_tend[real(:,:,:),pointer] :: layer temperature tendency from DA [C T-1 ~> degC s-1]%s_tend[real(:,:,:),pointer] :: layer salinity tendency from DA [S T-1 ~> ppt s-1]%t_bc_tend[real(:,:,:),pointer] :: The layer temperature tendency due to bias adjustment [C T-1 ~> degC s-1].%s_bc_tend[real(:,:,:),pointer] :: The layer salinity tendency due to bias adjustment [S T-1 ~> ppt s-1].%ni[integer] :: global i-direction grid size%nj[integer] :: global j-direction grid size%reentrant_x[logical] :: grid is reentrant in the x direction%reentrant_y[logical] :: grid is reentrant in the y direction%tripolar_n[logical] :: grid is folded at its north edge%symmetric[logical] :: Values at C-grid locations are symmetric.%use_basin_mask[logical] :: If true, use a basin file to delineate weakly coupled ocean basins.%do_bias_adjustment[logical] :: If true, use spatio-temporally varying climatological tendency adjustment for Temperature and Salinity.%bias_adjustment_multiplier[real] :: A scaling for the bias adjustment [nondim].%assim_method[integer] :: Method: NO_ASSIM,EAKF_ASSIM or OI_ASSIM.%ensemble_size[integer] :: Size of the ensemble.%ensemble_id[integer] :: id of the current ensemble member%ensemble_pelist[integer(:,:),pointer] :: PE list for ensemble members.%filter_pelist[integer(:),pointer] :: PE list for ensemble members.%assim_interval[real] :: analysis interval [ T ~> s]%profiles[type( ocean_profile_type ),pointer] :: pointer to linked list of all available profiles%cprofiles[type( ocean_profile_type ),pointer] :: pointer to linked list of current profiles%kdroot[type( kd_root ),pointer] :: A structure for storing nearest neighbors.%ale_cs[type( ale_cs ),pointer] :: ALE control structure for DA.%use_ale_algorithm[logical] :: true 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 ),pointer] :: Pointer to diagnostics control structure.%inc_cs[type( inc_cs )] :: A Structure containing integer file handles for bias adjustment.%id_inc_t[integer] :: A diagnostic handle for the temperature climatological adjustment.%id_inc_s[integer] :: A diagnostic handle for the salinity climatological adjustment.%answer_date[integer] :: The 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[logical] :: true 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_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 :: [in] Layer thicknesses [H ~> m or kg m-2]
tv :: [in] A structure pointing to various thermodynamic variables
cs :: 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 :: [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 :: [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 :: [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 :: [inout] A structure pointing to various thermodynamic variables
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: