rMatrix_mod

link to source code

Dependency Diagrams:

rMatrix_mod.svg

Direct Dependency Diagram

rMatrix_mod_rev.svg

Reverse Dependency Diagram

Description

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

Purpose

Module to handle non-diagonal observation-error covariance matrices for assimilation of radiances.

Quick access

Types

rmat_matrix

Variables

rmat_lnondiagr

Routines

rmat_cleanup(), rmat_init(), rmat_readcmatrix(), rmat_readcmatrixbyfilename(), rmat_rsqrtinverseallobs(), rmat_rsqrtinverseoneobs()

Needed modules

  • rttovinterfaces_mod: MODULE rttovInterfaces_mod (prefix=’’ category=’9. Global interfaces’)

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

  • rttov_const (errorstatus_success())

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

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

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

Types

  • type  rmatrix_mod/rmat_matrix
    Type fields
    • % listchans (*) [integer ,pointer]

    • % nchans [integer ]

    • % rmat (*,*) [real ,pointer]

Variables

  • rmatrix_mod/rmat_lnondiagr [logical,public]

    choose to use non-diagonal R matrix (i.e. non-zero correlations)

Subroutines and functions

subroutine  rmatrix_mod/rmat_init(nsensors, nobtovs)
Arguments
  • nsensors [integer ,in]

  • nobtovs [integer ,in]

Called from

oer_setinterchancorr()

Call to

utl_abort()

subroutine  rmatrix_mod/rmat_cleanup()
Called from

midas_var

subroutine  rmatrix_mod/rmat_readcmatrix(instrument, sensor_id, ichan)
Arguments
  • instrument (3) [integer ,in]

  • sensor_id [integer ,in]

  • ichan (*) [integer ,in]

Called from

oer_setinterchancorr()

Call to

rmat_readcmatrixbyfilename(), utl_abort()

subroutine  rmatrix_mod/rmat_readcmatrixbyfilename(infile, c[, chanlist_opt])
Arguments
  • infile [character ,in] :: name of input file

  • c [rmat_matrix ,inout] :: correlation matrix structure

Options

chanlist_opt (*) [integer ,in,] :: list of requested channels (if missing will read all file content)

Called from

rmat_readcmatrix()

Call to

utl_abort()

subroutine  rmatrix_mod/rmat_rsqrtinverseoneobs(sensor_id, nsubset, obsin, obsout, list_sub, list_oer, indextovs)
Purpose

Apply the operator R**-1/2 to obsIn result in obsOut for the subset of channels specified in list_sub

Arguments
  • sensor_id [integer ,in]

  • nsubset [integer ,in,]

  • obsin (nsubset) [real ,in]

  • obsout (nsubset) [real ,out]

  • list_sub (nsubset) [integer ,in]

  • list_oer (nsubset) [real ,in]

  • indextovs [integer ,in]

Called from

rmat_rsqrtinverseallobs()

Call to

utl_abort(), utl_tmg_start(), utl_matsqrt(), utl_tmg_stop()

subroutine  rmatrix_mod/rmat_rsqrtinverseallobs(obsspacedata, elem_dest_i, elem_src_i)
Purpose

To apply observation-error variances to ROBDATA8(k_src,*) and to store it in the elem_src_s of obsspacedata

Arguments
  • obsspacedata [struct_obs ,inout]

  • elem_dest_i [integer ,in] :: destination index

  • elem_src_i [integer ,in] :: source index

Called from

fso_ensemble(), simvar(), inn_computeinnovation()

Call to

obs_numheader(), obs_headelem_i(), tvs_isidburptovs(), obs_bodyelem_i(), tvs_getchannelnumindexfromppp(), obs_bodyelem_r(), rmat_rsqrtinverseoneobs()