mom_oda_driver_mod module reference

Interfaces for MOM6 ensembles and data assimilation.

More…

Data Types

ptr_mpp_domain

A structure with a pointer to a domain2d, to allow for the creation of arrays of pointers.

inc_cs

A structure containing integer handles for bias adjustment of tracers.

oda_cs

Control structure that contains a transpose of the ocean state across ensemble members.

Functions/Subroutines

init_oda()

initialize First_guess (prior) and Analysis grid information for all ensemble members

set_prior_tracer()

Copy ensemble member tracers to ensemble vector.

get_posterior_tracer()

Returns posterior adjustments or full state Note that only those PEs associated with an ensemble member receive data.

oda()

Gather observations and call ODA routines.

get_bias_correction_tracer()

oda_end()

Finalize DA module.

init_ocean_ensemble()

Initialize DA module.

set_analysis_time()

Set the next analysis time.

apply_oda_tracer_increments()

Apply increments to tracers.

set_up_global_tgrid()

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.

  • % 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.

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_init mom_ale::ale_initthicknesstocoord mom_ale::ale_updateverticalgridtype mom_transcribe_grid::copy_dyngrid_to_mom_grid mom_dyn_horgrid::create_dyn_horgrid eakf_assim mom_get_input::get_mom_input mom_hor_index::hor_index_init id_clock_oda_init init_ocean_ensemble mom_remapping::initialize_remapping mom_string_functions::lowercase mdl mom_domains::mom_domains_init mom_error_handler::mom_error mom_grid::mom_grid_init mom_coord_initialization::mom_initialize_coord mom_fixed_initialization::mom_initialize_topography no_assim ocean_da_core_mod::ocean_da_core_init oi_assim mom_grid_initialize::set_grid_metrics mom_regridding::set_regrid_params set_up_global_tgrid mom_unit_scaling::unit_scaling_init mom_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_error mom_remapping::remapping_core_h

Called from:

mom::step_mom

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_mesg no_assim

Called from:

oda

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_tracer get_posterior_tracer ocean_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:

oda

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:

init_oda

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:

mom_error_handler::mom_error mom_error_handler::mom_mesg

Called from:

mom::step_mom

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_increments no_assim mom_remapping::remapping_core_h

Called from:

mom::step_mom_thermo

subroutine mom_oda_driver_mod/set_up_global_tgrid(T_grid, CS, G)
Parameters:
  • t_grid :: global tracer grid

  • cs :: [in] A pointer to DA control structure.

  • g :: domain and grid information for ocean model

Called from:

init_oda