obsFilter_mod

link to source code

Dependency Diagrams:

obsFilter_mod.svg

Direct Dependency Diagram

obsFilter_mod_rev.svg

Reverse Dependency Diagram

Description

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

Purpose

Various types of filters that are applied to the observations mostly to reject them so that they will not be assimilated.

Quick access

Variables

filt_rlimlvhu

Routines

filt_backscatanisice(), filt_bufrcodeassimilated(), filt_getbufrcodeassimilated(), filt_gpsro(), filt_iceconcentration(), filt_nbufrcodeassimilated(), filt_radvel(), filt_setup(), filt_suprep(), filt_surfacewind(), filt_topo(), filt_topoaisw(), filt_topoaladin(), filt_topochemistry(), filt_topoprofiler(), filt_toporadiosonde(), filt_toposurface(), filt_topotovs(), findelemindex()

Needed modules

  • codeprecision_mod: MODULE codePrecision_mod (prefix=’pre’ category=’8. Low-level utilities and constants’)

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

  • earthconstants_mod: MODULE earthConstants_mod (prefix=’ec’ 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’)

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

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

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

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

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

  • physicsfunctions_mod: MODULE physicsFunctions_mod (prefix=’phf’ category=’8. Low-level utilities and constants’)

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

  • radialvelocity_mod: MODULE radialVelocity_mod (prefix=’rdv’ category=’5. Observation operators’)

Variables

  • obsfilter_mod/filt_rlimlvhu [real,public]

Subroutines and functions

function  obsfilter_mod/findelemindex(varnum)
Arguments

varnum [integer ,in]

Return

listindex [integer ]

Called from

filt_setup(), filt_toposurface(), filt_toporadiosonde(), filt_topoaisw(), filt_topoprofiler(), filt_topoaladin()

subroutine  obsfilter_mod/filt_setup(filtermode_in)
Arguments

filtermode_in [character ,in]

Called from

inn_setupobs(), filt_bufrcodeassimilated(), filt_getbufrcodeassimilated(), filt_nbufrcodeassimilated(), midas_prepcma, midas_thinning

Call to

utl_abort(), findelemindex()

subroutine  obsfilter_mod/filt_suprep(obsspacedata)
Purpose

Select the data in the obsSpaceData which are to be assimilated

Arguments

obsspacedata [struct_obs ,inout]

Called from

inn_setupobs(), midas_letkf, midas_prepcma, midas_thinning

Call to

utl_tmg_start(), obs_numbody(), obs_bodyelem_i(), obs_headelem_i(), obs_bodyset_i(), obs_bodyelem_r(), tvs_isidburptovs(), codtyp_get_codtyp(), tvs_changedstypvalue(), utl_abort(), utl_tmg_stop()

subroutine  obsfilter_mod/filt_topo(columntrlontrllev, obsspacedata, besilent)
Arguments
  • columntrlontrllev [struct_columndata ,in]

  • obsspacedata [struct_obs ,inout]

  • besilent [logical ,in]

Called from

inn_computeinnovation()

Call to

filt_toposurface(), filt_toporadiosonde(), filt_topoaisw(), filt_topoprofiler(), filt_topoaladin(), filt_topotovs(), filt_topochemistry()

subroutine  obsfilter_mod/filt_toposurface(columntrlontrllev, obsspacedata, besilent)
Purpose

Refuse elements which are too far away from the surface. Replace the pressure of elements which are slightly below the model surface by the pressure of the trial field.

Arguments
  • columntrlontrllev [struct_columndata ,in]

  • obsspacedata [struct_obs ,inout]

  • besilent [logical ,in]

Called from

filt_topo()

Call to

findelemindex(), obs_getheaderindex(), obs_bodyelem_i(), vnl_varlevelfromvarnum(), obs_bodyelem_r(), col_getheight(), col_getnumlev(), obs_bodyset_i(), obs_numbody()

subroutine  obsfilter_mod/filt_toporadiosonde(columntrlontrllev, obsspacedata, besilent)
Purpose

Refuse elements which are too far away from the surface of the model Refuse elements which are considered in the free atmosphere of the RAOB but fall in the surface boundary layer of the model atmosphere.

Arguments
  • columntrlontrllev [struct_columndata ,in]

  • obsspacedata [struct_obs ,inout]

  • besilent [logical ,in]

Called from

filt_topo()

Call to

col_getnumlev(), obs_getheaderindex(), obs_bodyelem_i(), findelemindex(), col_getheight(), obs_headelem_r(), phf_height2geopotential(), obs_bodyelem_r(), obs_bodyset_i(), col_getelem(), col_getpressure(), obs_numbody()

subroutine  obsfilter_mod/filt_topoaisw(columntrlontrllev, obsspacedata, obsfamily, besilent)
Purpose

Refuse elements which are too close to the surface.

Arguments
  • columntrlontrllev [struct_columndata ,in]

  • obsspacedata [struct_obs ,inout]

  • obsfamily [character ,in]

  • besilent [logical ,in]

Called from

filt_topo()

Call to

utl_abort(), obs_bodyelem_i(), obs_bodyelem_r(), col_getelem(), findelemindex(), obs_bodyset_i(), obs_numbody()

subroutine  obsfilter_mod/filt_topoprofiler(columntrlontrllev, obsspacedata, besilent)
Purpose

Refuse elements which are too far away from the surface of the model Refuse elements which are considered in the free atmosphere of the RAOB but fall in the surface boundary layer of the model atmosphere.

Arguments
  • columntrlontrllev [struct_columndata ,in]

  • obsspacedata [struct_obs ,inout]

  • besilent [logical ,in]

Called from

filt_topo()

Call to

obs_getheaderindex(), col_getheight(), obs_headelem_r(), obs_bodyelem_i(), findelemindex(), obs_bodyelem_r(), col_getnumlev(), obs_bodyset_i(), obs_numbody()

subroutine  obsfilter_mod/filt_topoaladin(columntrlontrllev, obsspacedata, besilent)
Purpose

Refuse elements which are considered to be in the free atmosphere of the Aladin instrument but which fall in the surface boundary layer of the model atmosphere.

Arguments
  • columntrlontrllev [struct_columndata ,in]

  • obsspacedata [struct_obs ,inout]

  • besilent [logical ,in]

Called from

filt_topo()

Call to

obs_getheaderindex(), col_getheight(), col_getnumlev(), obs_bodyelem_i(), findelemindex(), obs_bodyelem_r(), obs_bodyset_i(), obs_numbody()

subroutine  obsfilter_mod/filt_topotovs(columntrlontrllev, obsspacedata, besilent)
Purpose

Refuse data which are too close to the surface.

Arguments
  • columntrlontrllev [struct_columndata ,in]

  • obsspacedata [struct_obs ,inout]

  • besilent [logical ,in]

Called from

filt_topo()

Call to

obs_getheaderindex(), obs_headelem_i(), obs_bodyelem_i(), col_getelem(), obs_bodyset_i(), obs_numbody()

subroutine  obsfilter_mod/filt_surfacewind(obsspacedata, besilent)
Purpose

zap sfc wind components at land stations

Arguments
  • obsspacedata [struct_obs ,inout]

  • besilent [logical ,in]

Called from

inn_computeinnovation()

Call to

obs_getheaderindex(), obs_bodyelem_i(), obs_headelem_i(), obs_bodyset_i(), obs_elem_c(), obs_headelem_r(), obs_bodyelem_r(), obs_numbody()

subroutine  obsfilter_mod/filt_radvel(columntrlontrllev, obsspacedata, besilent)
Purpose

Filter Radvel observations guarantee that altitude values are within bounds Altitude and check the horizontal distance between levels for further processing

Arguments
  • columntrlontrllev [struct_columndata ,in]

  • obsspacedata [struct_obs ,inout]

  • besilent [logical ,in]

Called from

inn_computeinnovation()

Call to

utl_isnamelistpresent(), utl_abort(), obs_getheaderindex(), col_getnumlev(), obs_headelem_r(), obs_bodyelem_i(), obs_bodyelem_r(), col_getheight(), obs_bodyset_i(), rdv_getrangefromh()

subroutine  obsfilter_mod/filt_gpsro(columntrlontrllev, obsspacedata, besilent)
Purpose

Filter GPSRO observations Guarantee that altitude and observation values are within bounds for further processing

Note

For noncompliant GPSRO observations:

  • Set assimilable flag to 0

  • Set bit of cma flag 11 ON

Arguments
  • columntrlontrllev [struct_columndata ,in]

  • obsspacedata [struct_obs ,inout]

  • besilent [logical ,in]

Needed modules

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

Called from

inn_computeinnovation()

Call to

obs_getheaderindex(), obs_headelem_i(), obs_headelem_r(), col_getheight(), obs_bodyelem_r(), obs_bodyelem_i(), obs_bodyset_i()

subroutine  obsfilter_mod/filt_backscatanisice(obsspacedata, besilent)
Purpose

Filter scatterometer backscatter anisotropy observations where wind speed is too small

Note

For noncompliant observations:

  • Set assimilable flag to 0

  • Set bit of cma flag 13 ON

Arguments
  • obsspacedata [struct_obs ,inout]

  • besilent [logical ,in]

Called from

inn_computeinnovation(), midas_analysiserroroi

Call to

obs_famexist(), obs_bodyelem_i(), obs_headelem_r(), obs_bodyset_i()

subroutine  obsfilter_mod/filt_iceconcentration(obsspacedata, besilent)
Purpose

Filter out observations from satellites not specified in the name list

Note

For noncompliant observations:

  • Set assimilable flag to 0

Arguments
  • obsspacedata [struct_obs ,inout]

  • besilent [logical ,in]

Called from

inn_computeinnovation(), midas_analysiserroroi

Call to

obs_famexist(), utl_isnamelistpresent(), utl_abort(), obs_getheaderindex(), obs_elem_c(), obs_headelem_i(), codtyp_get_name(), obs_bodyset_i()

subroutine  obsfilter_mod/filt_topochemistry(columntrlontrllev, obsspacedata, besilent)
Purpose

Rejects elements which are too far below the model surface or above the model top.

Comments

Flagging of bit 4 in OBS_FLG done in filt_topoChemistry instead of set_scale_chm since this subroutine is called after chm_setup, allowing use of utl_open_asciifile

Arguments
  • columntrlontrllev [struct_columndata ,in]

  • obsspacedata [struct_obs ,inout]

  • besilent [logical ,in]

Called from

filt_topo()

Call to

obs_famexist(), obs_getheaderindex(), col_getheight(), col_getelem(), col_getpressure(), obs_headelem_i(), obs_bodyelem_i(), utl_get_stringid(), obs_elem_c(), utl_get_id(), obs_bodyset_i(), obs_bodyelem_r(), obs_numbody()

function  obsfilter_mod/filt_bufrcodeassimilated(bufrcode)
Purpose

To test if a bufr code part of the assimilated observation list

Arguments

bufrcode [integer ,in] :: The input bufr code

Return

assimilated [logical ] :: Assimilated of not

Called from

write_body(), ovt_setup(), sqlr_readsqlite()

Call to

filt_setup()

subroutine  obsfilter_mod/filt_getbufrcodeassimilated(bufrcodelist)
Purpose

To get the assimilated observation list

Arguments

bufrcodelist (filt_nelems) [integer ,out] :: The list of assimilated bufr codes

Called from

ovt_setup()

Call to

filt_setup()

function  obsfilter_mod/filt_nbufrcodeassimilated()
Purpose

To get the number of assimilated observations

Return

nbufrcode [integer ] :: The number of assimilated observations

Called from

ovt_setup()

Call to

filt_setup()