thinning_mod

link to source code

Dependency Diagrams:

thinning_mod.svg

Direct Dependency Diagram

thinning_mod_rev.svg

Reverse Dependency Diagram

Description

MODULE thinning_mod (prefix=’thn’ category=’1. High-level functionality’)

Purpose

Using observation-type-specific algorithms, set bit 11 of ‘flag’ on data that are not to be assimilated.

Note

This module is intended to group all of the thinning methods in a single fortran module.

Quick access

Variables

thn_thinsatsst

Routines

intarraytompi(), logicalarraytompi(), raobs_blacklisting_ecmwf(), raobs_check_duplicated_stations(), raobs_check_if_same_profile(), raobs_compare_profiles(), raobs_thinning_es(), raobs_thinning_model(), realarraytompi(), stringarraytompi(), thn_gpsrovertical(), thn_radiosonde(), thn_surfaceintime(), thn_thinaircraft(), thn_thinaladin(), thn_thincsr(), thn_thingbgps(), thn_thingpsro(), thn_thinhyper(), thn_thinraobs(), thn_thinsatwinds(), thn_thinscat(), thn_thinsurface(), thn_thintovs()

Needed modules

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

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

  • mathphysconstants_mod: MODULE mathPhysConstants_mod (prefix=’mpc’ 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’)

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

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

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

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

  • gridstatevectorfileio_mod: MODULE gridStateVectorFileIO_mod (prefix=’gio’ category=’4. Data Object transformations’)

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

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

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

  • kdtree2_mod: MODULE kdTree2_mod (prefix=’kdtree2’ category=’8. Low-level utilities and constants’)

Variables

  • thinning_mod/thn_thinsatsst [public]

Subroutines and functions

subroutine  thinning_mod/thn_thinsurface(obsdat, obsfamily)
Purpose

Main subroutine for thinning of surface obs.

Arguments
  • obsdat [struct_obs ,inout]

  • obsfamily [character ,in]

Called from

midas_obsselection, midas_thinning

Call to

obs_famexist(), utl_isnamelistpresent(), utl_abort(), utl_tmg_start(), thn_surfaceintime(), utl_tmg_stop()

subroutine  thinning_mod/thn_thinraobs(obsdat)
Purpose

Main thinning subroutine Radiosonde obs.

Arguments

obsdat [struct_obs ,inout]

Called from

midas_obsselection

Call to

obs_famexist(), utl_isnamelistpresent(), utl_abort(), utl_tmg_start(), thn_radiosonde(), utl_tmg_stop()

subroutine  thinning_mod/thn_thinaircraft(obsdat)
Purpose

Main thinning subroutine for aircraft obs.

Arguments

obsdat [struct_obs ,inout]

Called from

midas_obsselection, midas_thinning

Call to

obs_famexist(), utl_isnamelistpresent(), utl_abort(), utl_tmg_start(), utl_tmg_stop()

subroutine  thinning_mod/thn_thinsatwinds(obsdat)
Purpose

Main thinning subroutine for satellite winds (AMVs).

Arguments

obsdat [struct_obs ,inout]

Called from

midas_obsselection, midas_thinning

Call to

obs_famexist(), utl_isnamelistpresent(), utl_abort(), utl_tmg_start(), utl_tmg_stop()

subroutine  thinning_mod/thn_thingpsro(obsdat)
Purpose

Main thinning subroutine GPS radio-occultation obs.

Arguments

obsdat [struct_obs ,inout]

Called from

midas_obsselection, midas_thinning

Call to

obs_famexist(), utl_isnamelistpresent(), utl_abort(), utl_tmg_start(), thn_gpsrovertical(), utl_tmg_stop()

subroutine  thinning_mod/thn_thingbgps(obsdat)
Purpose

Main thinning subroutine ground-based GPS obs.

Arguments

obsdat [struct_obs ,inout]

Called from

midas_obsselection, midas_thinning

Call to

obs_famexist(), utl_isnamelistpresent(), utl_abort(), utl_tmg_start(), utl_tmg_stop()

subroutine  thinning_mod/thn_thinaladin(obsdat)
Purpose

Main thinning subroutine for Aladin winds obs.

Arguments

obsdat [struct_obs ,inout]

Called from

midas_obsselection, midas_thinning

Call to

obs_famexist(), utl_isnamelistpresent(), utl_abort(), utl_tmg_start(), utl_tmg_stop()

subroutine  thinning_mod/thn_thincsr(obsdat)
Purpose

Main thinning subroutine for geostationary radiances (CSR).

Arguments

obsdat [struct_obs ,inout]

Called from

midas_obsselection, midas_thinning

Call to

obs_famexist(), utl_isnamelistpresent(), utl_abort(), utl_tmg_start(), utl_tmg_stop()

subroutine  thinning_mod/thn_thinscat(obsdat)
Purpose

Main thinning subroutine for scatterometer winds.

Arguments

obsdat [struct_obs ,inout]

Called from

midas_obsselection, midas_thinning

Call to

obs_famexist(), utl_isnamelistpresent(), utl_abort(), utl_tmg_start(), utl_tmg_stop()

subroutine  thinning_mod/thn_thintovs(obsdat)
Purpose

Main thinning subroutine for AMSU and ATMS obs.

Arguments

obsdat [struct_obs ,inout]

Called from

midas_obsselection, midas_thinning

Call to

obs_famexist(), utl_isnamelistpresent(), utl_abort(), utl_tmg_start(), codtyp_get_codtyp(), utl_tmg_stop()

subroutine  thinning_mod/thn_thinhyper(obsdat)
Purpose

Main thinning subroutine for hyperspectral infrared radiances.

Arguments

obsdat [struct_obs ,inout]

Called from

midas_obsselection, midas_thinning

Call to

obs_famexist(), utl_isnamelistpresent(), utl_abort(), utl_tmg_start(), codtyp_get_codtyp(), utl_tmg_stop()

subroutine  thinning_mod/thn_surfaceintime(obsdat, obsfamily, step, deltmax, useblacklist, considershipstnid)
Purpose

Original method for thinning surface data in time. Set bit 11 of OBS_FLG on observations that are to be rejected.

Arguments
  • obsdat [struct_obs ,inout]

  • obsfamily [character ,in]

  • step [real ,in]

  • deltmax [integer ,in]

  • useblacklist [logical ,in]

  • considershipstnid [logical ,in]

Called from

thn_thinsurface()

Call to

obs_getheaderindex(), obs_headelem_i(), codtyp_get_codtyp(), obs_bodyelem_i(), obs_elem_c(), obs_headelem_r(), tim_getstepobsindex(), tim_getdatestamp(), utl_allreduce(), utl_abort(), intarraytompi(), logicalarraytompi(), stringarraytompi(), obs_bodyset_i()

subroutine  thinning_mod/thn_gpsrovertical(obsdat, heightmin, heightmax, heightspacing, gpsrovarno)
Purpose

Original method for thinning GPSRO data by vertical distance. Set bit 11 of OBS_FLG on observations that are to be rejected.

Arguments
  • obsdat [struct_obs ,inout]

  • heightmin [real ,in]

  • heightmax [real ,in]

  • heightspacing [real ,in]

  • gpsrovarno [integer ,in]

Called from

thn_thingpsro()

Call to

obs_getheaderindex(), obs_bodyelem_i(), obs_bodyelem_r(), obs_bodyset_i()

subroutine  thinning_mod/thn_radiosonde(obsdat, verticalthinninges, ecmwfrejetses, tolerancefactor)
Purpose

Original method for thinning radiosonde data vertically. We assume that each vertical level is stored in obsSpaceData with a separate headerIndex. That is, the 4D representation. Set bit 11 of OBS_FLG on observations that are to be rejected.

Arguments
  • obsdat [struct_obs ,inout]

  • verticalthinninges [logical ,in]

  • ecmwfrejetses [logical ,in]

  • tolerancefactor [real ,in]

Called from

thn_thinraobs()

Call to

obs_getheaderindex(), obs_bodyelem_i(), obs_headelem_i(), obs_headelem_r(), obs_elem_c(), obs_bodyelem_r(), utl_isnamelistpresent(), utl_abort(), vco_setupfromfile(), hco_setupfromfile(), gsv_allocate(), tim_getdatestamp(), gio_readfromfile(), gsv_deallocate(), tim_getstepobsindex(), intarraytompi(), realarraytompi(), stringarraytompi(), raobs_check_duplicated_stations(), raobs_thinning_model(), raobs_thinning_es(), raobs_blacklisting_ecmwf(), obs_bodyset_i()

subroutine  thinning_mod/stringarraytompi(array, arraympi)
Purpose

Do the equivalent of mpi_allgatherv for a string array

Arguments
  • array (*) [character ,in]

  • arraympi (*) [character ,out]

Called from

thn_surfaceintime(), thn_radiosonde()

Call to

intarraytompi()

subroutine  thinning_mod/intarraytompi(array, arraympi[, is_obslevoffset_opt])
Purpose

Do the equivalent of mpi_allgatherv for an integer array, but with special treatment if array of obsLevOffset.

Arguments
  • array (*) [integer ,in]

  • arraympi (*) [integer ,out]

Options

is_obslevoffset_opt [logical ,in,]

Called from

thn_surfaceintime(), thn_radiosonde(), stringarraytompi()

subroutine  thinning_mod/realarraytompi(array, arraympi)
Purpose

Do the equivalent of mpi_allgatherv for a real array,

Arguments
  • array (*) [real ,in]

  • arraympi (*) [real ,out]

Called from

thn_radiosonde()

subroutine  thinning_mod/logicalarraytompi(array, arraympi)
Purpose

Do the equivalent of mpi_allgatherv for a logical array,

Arguments
  • array (*) [logical ,in]

  • arraympi (*) [logical ,out]

Called from

thn_surfaceintime()

subroutine  thinning_mod/raobs_check_duplicated_stations(stnid, obslevoffset, obslat, obslon, obsheaddate, trajflags, obsflags, obsvalues, ominusb, obslaunchtime, stationflags, numvars, numstation, tolerancefactor)
Purpose

Check duplicated stations and select the best TAC/BUFR profiles

Arguments
  • stnid (*) [character ,inout]

  • obslevoffset (*) [integer ,in]

  • obslat (*) [real ,in]

  • obslon (*) [real ,in]

  • obsheaddate (*) [integer ,in]

  • trajflags (*,*) [integer ,in]

  • obsflags (*,*) [integer ,in]

  • obsvalues (*,*) [real ,in]

  • ominusb (*,*) [real ,in]

  • obslaunchtime (*) [integer ,in]

  • stationflags (*) [integer ,in]

  • numvars [integer ,in]

  • numstation [integer ,in]

  • tolerancefactor [real ,in]

Called from

thn_radiosonde()

Call to

raobs_check_if_same_profile(), raobs_compare_profiles(), utl_abort()

subroutine  thinning_mod/raobs_check_if_same_profile(stationindex, stationindex2, obsvalues, obslevoffset, sameprofile)
Purpose

Check if two raobs profiles are the same.

Arguments
  • stationindex [integer ,in]

  • stationindex2 [integer ,in]

  • obsvalues (*,*) [real ,in]

  • obslevoffset (*) [integer ,in]

  • sameprofile [logical ,out]

Called from

raobs_check_duplicated_stations()

subroutine  thinning_mod/raobs_compare_profiles(stationindex, stationindex2, stationflags, trajflags, obsflags, obsvalues, ominusb, obslevoffset, numvars, cloche, selectcriteria, selectstationindex, tolerancefactor)
Purpose

Perform a comparison between two raobs profiles.

Arguments
  • stationindex [integer ,in]

  • stationindex2 [integer ,in]

  • stationflags (*) [integer ,in]

  • trajflags (*,*) [integer ,in]

  • obsflags (*,*) [integer ,in]

  • obsvalues (*,*) [real ,in]

  • ominusb (*,*) [real ,in]

  • obslevoffset (*) [integer ,in]

  • numvars [integer ,in]

  • cloche (*) [integer ,inout]

  • selectcriteria [integer ,out]

  • selectstationindex [integer ,out]

  • tolerancefactor [real ,in]

Called from

raobs_check_duplicated_stations()

subroutine  thinning_mod/raobs_thinning_model(obsflags, obsvalues, presinterp, numvars, numlev, numstation, numlevstnmax, obslevoffset)
Purpose

Perform raobs thinning by comparing with a set of model levels.

Arguments
  • obsflags (*,*) [integer ,inout]

  • obsvalues (*,*) [real ,in]

  • presinterp (*,*) [real ,in]

  • numvars [integer ,in]

  • numlev [integer ,in]

  • numstation [integer ,in]

  • numlevstnmax [integer ,in]

  • obslevoffset (*) [integer ,in]

Called from

thn_radiosonde()

subroutine  thinning_mod/raobs_thinning_es(obsflags, obsvalues, numstation, numlevstnmax, obslevoffset)
Purpose

Perform thinning of T-Td raobs observations.

Arguments
  • obsflags (*,*) [integer ,inout]

  • obsvalues (*,*) [real ,in]

  • numstation [integer ,in]

  • numlevstnmax [integer ,in]

  • obslevoffset (*) [integer ,in]

Called from

thn_radiosonde()

subroutine  thinning_mod/raobs_blacklisting_ecmwf(obsflags, obsvalues, obstype, numstation, obslevoffset)
Purpose

Perform filtering of T-Td raobs observations based on approach inspired by ECMWF approach

Arguments
  • obsflags (*,*) [integer ,inout]

  • obsvalues (*,*) [real ,in]

  • obstype (*) [integer ,in]

  • numstation [integer ,in]

  • obslevoffset (*) [integer ,in]

Called from

thn_radiosonde()