obsVariableTransforms_mod

link to source code

Dependency Diagrams:

obsVariableTransforms_mod.svg

Direct Dependency Diagram

obsVariableTransforms_mod_rev.svg

Reverse Dependency Diagram

Description

MODULE obsVariableTransforms_mod (prefix=’ovt’ category=’4. Data Object transformations’)

Purpose

To store various functions for variable transforms using inputs from obsSpaceData. Outputs are also placed ObsSpaceData.

Quick access

Routines

ovt_adjusthumgz(), ovt_bufrcodeskipped(), ovt_getdestinationbufrcode(), ovt_getsourcebufrcode(), ovt_initstructure(), ovt_istransformedvariable(), ovt_iswindobs(), ovt_preciptologprecip(), ovt_preciptologprecip_residual(), ovt_setup(), ovt_transformobsvalues(), ovt_transformresiduals(), ovt_uvtowindspeeddirection_residual(), ovt_vistologvis(), ovt_vistologvis_residual(), ovt_windspeeddirectiontouv()

Needed modules

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

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

  • codeprecision_mod: MODULE codePrecision_mod (prefix=’pre’ 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’)

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

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

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

Types

  • type  obsvariabletransforms_mod/unknown_type
    Type fields
    • % active [logical ]

    • % destinationbufrcode (*) [integer ,allocatable]

    • % destinationbufrcodeextra (*) [integer ,allocatable]

    • % name [character ]

    • % nbufrcode [integer ]

    • % sourcebufrcode (*) [integer ,allocatable]

    • % sourcebufrcodeextra (*) [integer ,allocatable]

    • % wind [logical ]

Variables

Subroutines and functions

subroutine  obsvariabletransforms_mod/ovt_initstructure()
Purpose

To set the transforms handled by this module

Called from

ovt_setup()

subroutine  obsvariabletransforms_mod/ovt_setup(bufrcoderead)
Purpose

To determine which transform must be actived

Arguments

bufrcoderead (*) [integer ,in] :: The list of bufr code read

Called from

brpr_readburp(), odbf_readfile(), sqlr_readsqlite()

Call to

ovt_initstructure(), filt_nbufrcodeassimilated(), filt_getbufrcodeassimilated(), filt_bufrcodeassimilated()

function  obsvariabletransforms_mod/ovt_bufrcodeskipped(sourcebufrcode)
Purpose

To NEVER activate a variable transform for this bufr code, even when this bufr_code is read but not found in the assimilated list. So far, this function is only used to “skipped” wind speed reports because we do all the appropriate wind manipulations when we encounter direction.

Arguments

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

Return

skip [logical ] :: The decision

Called from

write_body(), sqlr_readsqlite()

Call to

utl_abort()

function  obsvariabletransforms_mod/ovt_getdestinationbufrcode(sourcebufrcode[, extra_opt])
Purpose

To get the bufr code of the transformed/destination variable based on the bufr code of the source variable

Arguments

sourcebufrcode [integer ,in] :: The input source bufr code

Options

extra_opt [logical ,in,] :: Should we look in the “extra” bufr code list or not

Return

destinationbufrcode [integer ] :: The returned destination/transform bufr code

Called from

write_body(), obsu_updatesourcevariablesflag(), sqlr_readsqlite()

Call to

utl_abort()

function  obsvariabletransforms_mod/ovt_getsourcebufrcode(destinationbufrcode[, extra_opt])
Purpose

To get the bufr code of the source variable based on the bufr code of the destination/transformed variable

Arguments

destinationbufrcode [integer ,in] :: The input destination/transform bufr code

Options

extra_opt [logical ,in,] :: Should we look in the “extra” bufr code list or not

Return

sourcebufrcode [integer ] :: The returned source bufr code

Called from

obsu_updatesourcevariablesflag()

Call to

utl_abort()

function  obsvariabletransforms_mod/ovt_iswindobs(sourcebufrcode)
Purpose

To determine if a bufr code is wind related

Arguments

sourcebufrcode [integer ,in] :: The input source bufr code

Return

wind [logical ] :: Is this bufr code linked to wind or not

Called from

write_body(), obsu_updatesourcevariablesflag(), sqlr_readsqlite()

Call to

utl_abort()

function  obsvariabletransforms_mod/ovt_istransformedvariable(bufrcode)
Purpose

To determine if a bufr code is a transfomed variabled

Arguments

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

Return

transformed [logical ] :: Is this a bufr code associated to a transform variable or not

Called from

obsu_updatesourcevariablesflag()

Call to

utl_abort()

subroutine  obsvariabletransforms_mod/ovt_transformobsvalues(obsspacedata, headerindexstart, headerindexend)
Purpose

To perform observation variable transforms

Arguments
  • obsspacedata [struct_obs ,inout] :: The observation database

  • headerindexstart [integer ,in] :: The initial header index to analyse

  • headerindexend [integer ,in] :: The final header index to analyse

Called from

brpf_readfile(), odbf_readfile(), sqlf_readfile()

Call to

obs_numheader(), utl_abort(), ovt_windspeeddirectiontouv(), ovt_vistologvis(), ovt_preciptologprecip()

subroutine  obsvariabletransforms_mod/ovt_transformresiduals(obsspacedata, residualtypeid)
Purpose

To compute the o-p or o-a of the source variable(s)

Arguments
  • obsspacedata [struct_obs ,inout] :: The observation database

  • residualtypeid [integer ,in] :: The residual type ID (o-p or o-a)

Called from

obsf_writefiles()

Call to

obs_numheader(), utl_abort(), ovt_uvtowindspeeddirection_residual(), ovt_vistologvis_residual(), ovt_preciptologprecip_residual()

subroutine  obsvariabletransforms_mod/ovt_windspeeddirectiontouv(obsspacedata, headerindexstart, headerindexend)
Purpose

To transform wind observation in terms of speed and direction to u and v

Arguments
  • obsspacedata [struct_obs ,inout] :: The observation database

  • headerindexstart [integer ,in] :: The initial header index to analyse

  • headerindexend [integer ,in] :: The final header index to analyse

Called from

ovt_transformobsvalues()

Call to

obs_headelem_i(), obs_bodyelem_i(), obs_bodyelem_r(), utl_abort(), obs_bodyset_i()

subroutine  obsvariabletransforms_mod/ovt_uvtowindspeeddirection_residual(obsspacedata, residualtypeid)
Purpose

To transform wind residuals in terms of u and v to speed and direction

Arguments
  • obsspacedata [struct_obs ,inout] :: The observation database

  • residualtypeid [integer ,in] :: The residual type ID (o-p or o-a)

Called from

ovt_transformresiduals()

Call to

obs_numbody(), obs_bodyelem_i(), obs_headelem_i(), obs_bodyelem_r(), obs_bodyset_i()

subroutine  obsvariabletransforms_mod/ovt_vistologvis(obsspacedata, headerindexstart, headerindexend)
Purpose

To transform visibily observation to log(visibility)

Arguments
  • obsspacedata [struct_obs ,inout] :: The observation database

  • headerindexstart [integer ,in] :: The initial header index to analyse

  • headerindexend [integer ,in] :: The final header index to analyse

Called from

ovt_transformobsvalues()

Call to

obs_headelem_i(), obs_bodyelem_i(), obs_bodyelem_r(), obs_bodyset_i(), utl_abort()

subroutine  obsvariabletransforms_mod/ovt_vistologvis_residual(obsspacedata, residualtypeid)
Purpose

To transform log(visibily) residuals to visibility

Arguments
  • obsspacedata [struct_obs ,inout] :: The observation database

  • residualtypeid [integer ,in] :: The residual type ID (o-p or o-a)

Called from

ovt_transformresiduals()

Call to

obs_numbody(), obs_bodyelem_i(), obs_headelem_i(), obs_bodyelem_r(), obs_bodyset_i(), utl_abort()

subroutine  obsvariabletransforms_mod/ovt_preciptologprecip(obsspacedata, headerindexstart, headerindexend)
Purpose

To transform precipitation observation to log(precipitation)

Arguments
  • obsspacedata [struct_obs ,inout] :: The observation database

  • headerindexstart [integer ,in] :: The initial header index to analyse

  • headerindexend [integer ,in] :: The final header index to analyse

Called from

ovt_transformobsvalues()

Call to

obs_headelem_i(), obs_bodyelem_i(), obs_bodyelem_r(), obs_bodyset_i(), utl_abort()

subroutine  obsvariabletransforms_mod/ovt_preciptologprecip_residual(obsspacedata, residualtypeid)
Purpose

To transform log(precip) residuals to precip

Arguments
  • obsspacedata [struct_obs ,inout] :: The observation database

  • residualtypeid [integer ,in] :: The residual type ID (o-p or o-a)

Called from

ovt_transformresiduals()

Call to

obs_numbody(), obs_bodyelem_i(), obs_headelem_i(), obs_bodyelem_r(), obs_bodyset_i(), utl_abort()

subroutine  obsvariabletransforms_mod/ovt_adjusthumgz(obsspacedata, headerindexstart, headerindexend)
Purpose

To apply a threshold on dew-point departure values and to transform geopotential height values to geopotential

Arguments
  • obsspacedata [struct_obs ,inout] :: The observation database

  • headerindexstart [integer ,in] :: The initial header index to analyse

  • headerindexend [integer ,in] :: The final header index to analyse

Called from

brpf_readfile(), odbf_readfile(), sqlf_readfile()

Call to

obs_headelem_i(), obs_bodyelem_i(), obs_bodyelem_r()