mom_oda_driver_mod module reference

Interfaces for MOM6 ensembles and data assimilation.

More…

Data Types

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.

ptr_mpp_domain

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

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/inc_cs

A structure containing integer handles for bias adjustment of tracers.

Type fields
  • % fldno [integer,private] :: The number of tracers.

  • % t_id [integer,private] :: The integer handle for the temperature file.

  • % s_id [integer,private] :: The integer 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

  • % tv [type(thermo_var_ptrs),pointer] :: pointer to thermodynamic variables

  • % tv_bc [type(thermo_var_ptrs),pointer] :: pointer to thermodynamic bias correction

  • % 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_frequency [integer] :: analysis interval in hours

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

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

Function/Subroutine Documentation

subroutine mom_oda_driver_mod/init_oda(Time, G, GV, 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

  • 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

subroutine mom_oda_driver_mod/get_posterior_tracer(Time, CS, h, tv, 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

  • h :: Layer thicknesses [H ~> m or kg m-2]

  • tv :: A structure pointing to various thermodynamic variables

  • 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, CS)
Parameters
  • time :: [in] the current model time

  • 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

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 [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

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