mom_oda_driver_mod module reference

Interfaces for MOM6 ensembles and data assimilation.

More…

Data Types

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 sall ODA routines.

oda_end()

Finalize DA module.

init_ocean_ensemble()

Initialize DA module.

set_analysis_time()

Set the next analysis time.

save_obs_diff()

Write observation differences to a file.

apply_oda_tracer_increments()

Apply increments to tracers.

Detailed Description

Interfaces for MOM6 ensembles and data assimilation.

Type Documentation

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

  • % nk [integer] :: number of vertical layers used for DA

  • % grid [type(ocean_grid_type),pointer] :: MOM6 grid type and decomposition for the DA.

  • % domains [type( ptr_mpp_domain )(:),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

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

  • % 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)] :: Diagnostics control structure.

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 an mpp domain2d

Function/Subroutine Documentation

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

  • 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 init_ocean_ensemble mom_remapping::initialize_remapping mom_string_functions::lowercase mom_domains::mom_domains_init 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_diag_mediator::set_axes_info mom_grid_initialize::set_grid_metrics mom_regridding::set_regrid_params 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_error_handler::mom_mesg 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

init_ocean_ensemble mom_error_handler::mom_mesg

subroutine mom_oda_driver_mod/oda(Time, CS)

Gather observations and sall ODA routines.

Parameters
  • time :: [in] the current model time

  • cs :: [inout] the ocean DA control structure

Call to

ocean_da_core_mod::get_profiles

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

get_posterior_tracer 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/save_obs_diff(filename, CS)

Write observation differences to a file.

Parameters
  • filename :: [in] name of output file

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

Call to

write_ocean_obs_mod::close_profile_file write_ocean_obs_mod::write_profile

subroutine mom_oda_driver_mod/apply_oda_tracer_increments(dt, G, tv, h, CS)

Apply increments to tracers.

Parameters
  • dt :: [in] The tracer timestep [s]

  • g :: [in] ocean grid structure

  • tv :: [inout] A structure pointing to various thermodynamic variables

  • h :: [in] layer thickness [H ~> m or kg m-2]

  • cs :: [inout] the data assimilation structure