innovation_mod

link to source code

Dependency Diagrams:

innovation_mod.svg

Direct Dependency Diagram

innovation_mod_rev.svg

Reverse Dependency Diagram

Description

MODULE innovation_mod (prefix=’inn’ category=’1. High-level functionality’)

Purpose

Several high-level subroutines used to compute the innovations: that is, the observation-minus-background values. This includes the subroutine that reads in the gridded high-res background state from standard files.

Quick access

Routines

inn_computeinnovation(), inn_gethcovcofromtrlmfile(), inn_perturbobs(), inn_setupcolumnsonanlinclev(), inn_setupcolumnsontrllev(), inn_setupobs(), setobsmpistrategy()

Needed modules

  • midasmpi_mod: MODULE midasMpi_mod (prefix=’mmpi’ category=’8. Low-level utilities and constants’)

  • obsspacedata_mod: MODULE obsSpaceData_mod (prefix=’obs’ category=’6. High-level data objects’)

  • columndata_mod: MODULE columnData_mod (prefix=’col’ category=’6. High-level data objects’)

  • timecoord_mod: MODULE timeCoord_mod (prefix=’tim’ category=’7. Low-level data objects’)

  • obstimeinterp_mod: MODULE obsTimeInterp_mod (prefix=’oti’ category=’4. Data Object transformations’)

  • obsoperators_mod: MODULE obsOperators_mod (prefix=’oop’ category=’5. Observation operators’)

  • mathphysconstants_mod: MODULE mathPhysConstants_mod (prefix=’mpc’ category=’8. Low-level utilities and constants’)

  • horizontalcoord_mod: MODULE horizontalCoord_mod (prefix=’hco’ category=’7. Low-level data objects’)

  • varnamelist_mod: MODULE varNameList_mod (prefix=’vnl’ category=’7. Low-level data objects’)

  • verticalcoord_mod: MODULE verticalCoord_mod (prefix=’vco’ category=’7. Low-level data objects’)

  • gridstatevector_mod: MODULE gridStateVector_mod (prefix=’gsv’ category=’6. High-level data objects’)

  • utilities_mod: MODULE utilities_mod (prefix=’utl’ category=’8. Low-level utilities and constants’)

  • message_mod: MODULE message_mod (prefix=’msg’ category=’8. Low-level utilities and constants’)

  • obsfilter_mod: MODULE obsFilter_mod (prefix=’filt’ category=’5. Observation operators’)

  • gps_mod: MODULE gps_mod (prefix=’gps’ category=’5. Observation operators’)

  • tovsnl_mod: MODULE tovsNL_mod (prefix=’tvs’ category=’5. Observation operators’)

  • multiirbgck_mod: MODULE multiIRbgck_mod (prefix=’irbg’ category=’1. High-level functionality’)

  • obsfiles_mod: MODULE obsFiles_mod (prefix=’obsf’ category=’3. Observation input/output’)

  • randomnumber_mod: MODULE randomNumber_mod (prefix=’rng’ category=’8. Low-level utilities and constants’)

  • obserrors_mod: MODULE obsErrors_mod (prefix=’oer’ category=’2. B and R matrices’)

  • bufr_mod: MODULE bufr_mod (prefix=’bufr’ category=’8. Low-level utilities and constants’)

  • statetocolumn_mod: MODULE stateToColumn_mod (prefix=’s2c’ category=’4. Data Object transformations’)

  • biascorrectionsat_mod: MODULE biasCorrectionSat_mod (prefix=’bcs’ category=’1. High-level functionality’)

  • rmatrix_mod: MODULE rMatrix_mod (prefix=’rmat’ category=’2. B and R matrices’)

  • costfunction_mod: MODULE costFunction_mod, (prefix=’cfn’ category=’5. Observation operators’)

  • varqc_mod: MODULE varQC_mod (prefix=’vqc’ category=’1. High-level functionality’)

  • humiditylimits_mod: MODULE humidityLimits_mod (prefix=’qlim’ category=’4. Data Object transformations’)

  • interpolation_mod: MODULE interpolation_mod (prefix=’int’ category=’4. Data Object transformations’)

Variables

Subroutines and functions

subroutine  innovation_mod/inn_setupobs(obsspacedata, hco_anl, obscolumnmode, obsmpistrategy, innovationmode_in[, obsclean_opt])
Purpose

To initialize the observation parameters and constants

Arguments
  • obsspacedata [struct_obs ,out]

  • hco_anl [struct_hco ,in,pointer]

  • obscolumnmode [character ,in]

  • obsmpistrategy [character ,in]

  • innovationmode_in [character ,in]

Options

obsclean_opt [logical ,in,]

Called from

omf_ominusf(), omf_ominusfens(), midas_analysiserroroi, midas_diaghbht, midas_ensembleh, midas_gencoeff, midas_letkf, midas_obsimpact, midas_obsselection, midas_sstbias, midas_var, midas_var1d

Call to

utl_tmg_start(), obs_class_initialize(), obs_initialize(), obsf_filessplit(), filt_setup(), tvs_setup(), obsf_readfiles(), utl_tmg_stop(), gps_setupro(), obs_famexist(), gps_setupgb(), filt_suprep(), bcs_setup(), bcs_filterobs(), obs_clean2(), setobsmpistrategy(), obs_squeeze(), obs_columnactive_ih(), obs_mpiredistribute(), obs_reducetompilocal(), tvs_setupalloc(), irbg_setup(), oer_setinterchancorr()

subroutine  innovation_mod/inn_setupcolumnsontrllev(columntrlontrllev, obsspacedata, hco_core, statevectorupdatehighres[, deallocinterpinfonl_opt])
Purpose

To compute vertical (and potentially slanted) columns of trial data interpolated to obs location

Arguments
  • columntrlontrllev [struct_columndata ,out]

  • obsspacedata [struct_obs ,inout]

  • hco_core [struct_hco ,in,pointer]

  • statevectorupdatehighres [struct_gsv ,inout]

Options

deallocinterpinfonl_opt [logical ,in,]

Called from

omf_ominusf(), midas_diaghbht, midas_gencoeff, midas_obsimpact, midas_obsselection, midas_var, midas_var1d

Call to

utl_isnamelistpresent(), utl_abort(), gsv_getvco(), col_setvco(), col_allocate(), obs_numheader(), obs_extractobsrealheadercolumn(), s2c_nl(), col_getnumcol(), col_varexist(), col_getcolumn()

subroutine  innovation_mod/inn_setupcolumnsonanlinclev(columntrlontrllev, columntrlonanlinclev)
Purpose

To create trial data columns on analysis increment levels

Arguments
  • columntrlontrllev [struct_columndata ,in]

  • columntrlonanlinclev [struct_columndata ,inout]

Called from

omf_ominusf(), omf_ominusfens(), midas_diaghbht, midas_obsimpact, midas_obsselection, midas_var, midas_var1d

Call to

col_getnumcol(), msg(), col_varexist(), col_getcolumn(), int_vinterp_col(), col_getnumlev(), vnl_iscloudvar(), qlim_getminvaluecloud(), qlim_getmaxvaluecloud(), vnl_varkindfromvarname(), vnl_varlistindex()

subroutine  innovation_mod/inn_computeinnovation(columntrlontrllev, obsspacedata[, filterobsandinitoer_opt[, applyvarqconnljo_opt[, destobscolumn_opt[, besilent_opt[, callfilttopo_opt[, callseterrgpsgb_opt[, analysismode_opt]]]]]]])
Purpose

To initialize observation innovations using the nonlinear H

Arguments
  • columntrlontrllev [struct_columndata ,in]

  • obsspacedata [struct_obs ,inout]

Options
  • filterobsandinitoer_opt [logical ,in,]

  • applyvarqconnljo_opt [logical ,in,]

  • destobscolumn_opt [integer ,in,] :: column where result stored, default is OBS_OMP

  • besilent_opt [logical ,in,]

  • callfilttopo_opt [logical ,in,] :: whether to make call to FiltTopo

  • callseterrgpsgb_opt [logical ,in,] :: whether to make call to oer_SETERRGPSGB

  • analysismode_opt [logical ,in,] :: analysisMode argument for oer_SETERRGPSGB and oop_gpsgb_nl

Called from

omf_ominusf(), omf_ominusfens(), midas_diaghbht, midas_ensembleh, midas_gencoeff, midas_letkf, midas_obsimpact, midas_obsselection, midas_var, midas_var1d

Call to

utl_tmg_start(), oti_timebinning(), filt_topo(), filt_surfacewind(), oop_vobslyrs(), col_getnumlev(), oop_ppp_nl(), oer_sw(), oop_sfc_nl(), filt_radvel(), oop_radvel_nl(), oop_sst_nl(), filt_iceconcentration(), filt_backscatanisice(), oer_seterrbackscatanisice(), oop_ice_nl(), oop_hydro_nl(), oop_tovs_nl(), tim_getdatestamp(), oop_zzz_nl(), obs_famexist(), filt_gpsro(), oer_seterrgpsro(), oop_gpsro_nl(), oop_chm_nl(), oer_seterrgpsgb(), oop_gpsgb_nl(), utl_tmg_stop(), rmat_rsqrtinverseallobs(), cfn_calcjo(), vqc_nltl(), cfn_sumjo()

subroutine  innovation_mod/setobsmpistrategy(obsspacedata, hco_anl, mpistrategy)
Purpose

To distribute header indices following the chosen strategy, current options: “LIKESPLITFILES”, “ROUNDROBIN”, “LATLONTILES”.

Arguments
  • obsspacedata [struct_obs ,inout]

  • hco_anl [struct_hco ,in,pointer]

  • mpistrategy [character ,in]

Called from

inn_setupobs()

Call to

obs_numheader(), obs_headset_i(), obs_columnactive_ih(), obs_headelem_r(), mmpi_myidyfromlat(), mmpi_myidxfromlon(), utl_abort()

subroutine  innovation_mod/inn_perturbobs(obsspacedata, numanalyses, indexanalysis, indexbatch, obs_column_index_src, obs_column_index_dest)
Purpose

To perturb the innovation vector to simulate effect of observation uncertainty

Warning

perturbations are not the same when MPI topology changes!!!

Arguments
  • obsspacedata [struct_obs ,inout]

  • numanalyses [integer ,in]

  • indexanalysis [integer ,in]

  • indexbatch [integer ,in]

  • obs_column_index_src [integer ,in]

  • obs_column_index_dest [integer ,in]

Call to

obs_numbody(), rng_setup(), rng_gaussian(), obs_bodyelem_r(), obs_getfamily(), obs_bodyelem_i()

subroutine  innovation_mod/inn_gethcovcofromtrlmfile(hco_trl, vco_trl)
Purpose

Get hco/vco of the trials

Arguments
  • hco_trl [struct_hco ,inout,pointer]

  • vco_trl [struct_vco ,inout,pointer]

Called from

omf_ominusf(), midas_diaghbht, midas_gencoeff, midas_obsimpact, midas_obsselection, midas_var, midas_var1d

Call to

gsv_isinitialized(), gsv_setup(), gsv_varnameslist(), hco_setupfromfile(), vco_setupfromfile()