gridVariableTransforms_mod

link to source code

Dependency Diagrams:

gridVariableTransforms_mod.svg

Direct Dependency Diagram

gridVariableTransforms_mod_rev.svg

Reverse Dependency Diagram

Description

MODULE gridVariableTransforms_mod (prefix=’gvt’ category=’4. Data Object transformations’)

Purpose

To store various functions for variable transforms using inputs from gridStateVector(s). Outputs are also placed in a gridStateVector.

Quick access

Variables

gvt_transform

Routines

ch_bounds(), expch_tlm(), gvt_getstatevectortrial(), gvt_oceanicecontinuous(), gvt_setup(), gvt_setupreffromstatevector(), gvt_setupreffromtrialfiles(), gvt_sstspread(), gvt_transform_ens(), gvt_transform_gsv(), hutolq_ens(), hutolq_gsv(), hutolq_tlm(), logch_ens(), lprtopr_ens(), lprtopr_gsv(), lqtohu(), lqtohu_tlm(), lvistovis(), prtolpr_gsv(), uvtopsichi_ens(), uvtopsichi_gsv(), uvtovortdiv_ens(), uvtovortdiv_gsv(), vortdivtopsichi_gsv(), zandp_ad(), zandp_tl()

Needed modules

  • midasmpi_mod: MODULE midasMpi_mod (prefix=’mmpi’ 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’)

  • 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’)

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

  • ensemblestatevector_mod: MODULE ensembleStateVector_mod (prefix=’ens’ category=’6. High-level data objects’)

  • lamspectraltransform_mod: MODULE lamSpectralTransform_mod (prefix=’lst’ category=’4. Data Object transformations’)

  • globalspectraltransform_mod: MODULE globalSpectralTransform_mod (prefix=’gst’ category=’4. Data Object transformations’)

  • lamanalysisgridtransforms_mod: MODULE lamAnalysisGridTransforms_mod (prefix=’lgt’ category=’7. Low-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’)

  • 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’)

  • calcheightandpressure_mod: MODULE calcHeightAndPressure_mod (prefix=’czp’ category=’4. Data Object transformations’)

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

  • getgridposition_mod: MODULE getGridPosition_mod (prefix=’gpos’ category=’8. Low-level utilities and constants’)

Variables

  • gridvariabletransforms_mod/gvt_transform [public]

Subroutines and functions

subroutine  gridvariabletransforms_mod/gvt_setup(hco_in, hco_core, vco_in)
Purpose

To set up a variable transformation object

Arguments
  • hco_in [struct_hco ,inout,pointer]

  • hco_core [struct_hco ,inout,pointer]

  • vco_in [struct_vco ,inout,pointer]

Called from

csg_toolbox(), epp_addrandompert(), midas_adjointtest, midas_diagbmatrix, midas_diaghbht, midas_extractbmatrixfor1dvar, midas_obsimpact, midas_randompert, midas_var, midas_var1d

Call to

gsv_containsnonzerovalues(), lgt_setupfromhco()

subroutine  gridvariabletransforms_mod/gvt_setupreffromtrialfiles(varname[, varkind_opt])
Purpose

Initialise reference statevector from file

Arguments
varKind_opt

optional variable “kind” argument presently used to initialise the reference state in a chemical assimilation context.

Arguments

varname [character ,in] :: reference variable/type used

Options

varkind_opt [character ,in,] :: additional variable/type information mandatory for some initialization

Called from

midas_adjointtest, midas_diagbmatrix, midas_diaghbht, midas_extractbmatrixfor1dvar, midas_obsimpact, midas_randompert

Call to

gsv_allocate(), tim_getdatestamp(), gio_readtrials(), gsv_isallocated(), gsv_zero(), gsv_copy(), gsv_deallocate(), vnl_varkindfromvarname(), vnl_varlistindex(), utl_abort()

subroutine  gridvariabletransforms_mod/gvt_transform_gsv(statevector, transform[, statevectorout_opt[, statevectorref_opt[, varname_opt[, allowoverwrite_opt[, maxboxsize_opt[, subgrid_opt]]]]]])
Purpose

Top-level switch routine for transformations on the grid.

Arguments
  • statevector [struct_gsv ,inout] :: statevector operand of the transformation

  • transform [character ,in] :: string identifying the requested transformation

Options
  • statevectorout_opt [struct_gsv ,inout,]

  • statevectorref_opt [struct_gsv ,in,] :: reference statevector necessary for some transformation

  • varname_opt [character ,in,] :: additional variable/type info mandatory for some transformation

  • allowoverwrite_opt [logical ,in,]

  • maxboxsize_opt [integer ,in,] :: additional info required by SSTSpread

  • subgrid_opt [character ,in,] :: additional info required by SSTSpread to spread SST values

Call to

hco_equal(), vco_equal(), utl_abort(), gsv_varexist(), lprtopr_gsv(), lvistovis(), uvtovortdiv_gsv(), vortdivtopsichi_gsv(), uvtopsichi_gsv(), lqtohu(), hutolq_gsv(), lqtohu_tlm(), hutolq_tlm(), prtolpr_gsv(), zandp_tl(), zandp_ad(), gsv_varkindexist(), vnl_varkindfromvarname(), expch_tlm(), ch_bounds(), gvt_oceanicecontinuous(), gvt_sstspread()

subroutine  gridvariabletransforms_mod/gvt_transform_ens(ens, transform[, allowoverwrite_opt[, varname_opt[, huminvalue_opt]]])
Purpose

Top-level switch routine for ensemble transformations on the grid

Arguments
  • ens [struct_ens ,inout] :: operand (ensemble of statevector)

  • transform [character ,in] :: string identifying the requested transformation

Options
  • allowoverwrite_opt [logical ,in,]

  • varname_opt [character ,in,] :: additional variable/type information mandatory for some transformation

  • huminvalue_opt [real ,in,] :: HU min value for ‘HUtoLQ’ transformation

Call to

ens_varexist(), lprtopr_ens(), hutolq_ens(), uvtopsichi_ens(), uvtovortdiv_ens(), utl_abort(), vnl_varkindfromvarname(), logch_ens()

function  gridvariabletransforms_mod/gvt_getstatevectortrial(varname)
Purpose

Returns a pointer to requested reference statevector

Arguments

varname [character ,in] :: reference variable/type requested

Return

statevector_ptr [struct_gsv ,pointer]

Called from

s2c_setupinterpinfo()

Call to

gsv_containsnonzerovalues(), utl_abort()

subroutine  gridvariabletransforms_mod/gvt_setupreffromstatevector(statevectorontrlgrid, varname[, applylimitonhu_opt])
Purpose

computing the reference stateVector on the analysis grid at each outer-loop iteration. The calculation is skipped if stateVectorRef* is initialized (gsv_containsNonZeroValue(stateVectorRef*)=.true.). The input stateVector is the high spatial/temporal resolution statevector used for reading the trials and should contain TT/HU/P0 if stateVectorRefHeight is asked for.

Arguments
  • statevectorontrlgrid [struct_gsv ,in] :: high spatial/temporal resolution statevector

  • varname [character ,in] :: reference variable/type used

Options

applylimitonhu_opt [logical ,in,]

Called from

midas_var

Call to

gsv_gethco(), gsv_getvco(), utl_abort(), gsv_isallocated(), gsv_allocate(), tim_getdatestamp(), gsv_zero(), gsv_copy(), gsv_varnameslist(), int_interp_gsv(), gsv_deallocate()

subroutine  gridvariabletransforms_mod/lqtohu(statevector)
Purpose

Specific humidity logarithm exponentiation.

Arguments

statevector [struct_gsv ,inout]

Called from

gvt_transform_gsv()

Call to

gsv_getnumlev(), vnl_varlevelfromvarname()

subroutine  gridvariabletransforms_mod/hutolq_gsv(statevector)
Purpose

Logarithmic transformation of specific humidity

Arguments

statevector [struct_gsv ,inout]

Called from

gvt_transform_gsv()

Call to

gsv_getdatakind(), gsv_getnumlev(), vnl_varlevelfromvarname()

subroutine  gridvariabletransforms_mod/hutolq_ens(ens[, huminvalue_opt])
Purpose

Specific humidity logarithm exponentiation (ensemble processing)

Arguments

ens [struct_ens ,inout]

Options

huminvalue_opt [real ,in,]

Called from

gvt_transform_ens()

Call to

ens_getlatlonbounds(), ens_getnumk(), ens_getvarnamefromk(), ens_getonelev_r4(), ens_getnumstep(), ens_getnummembers()

subroutine  gridvariabletransforms_mod/lqtohu_tlm(statevector[, statevectorref_opt])
Purpose

Tangent linear of exponentiation transformation of specific humidity in logarithmic representation

Arguments

statevector [struct_gsv ,inout]

Options

statevectorref_opt [struct_gsv ,in,]

Called from

gvt_transform_gsv()

Call to

gsv_varexist(), utl_abort(), gsv_containsnonzerovalues(), gsv_getdatakind(), gsv_getnumlev(), vnl_varlevelfromvarname()

subroutine  gridvariabletransforms_mod/hutolq_tlm(statevector[, statevectorref_opt])
Purpose

Tangent linear of logarithmic transformation of specific humidity

Arguments

statevector [struct_gsv ,inout]

Options

statevectorref_opt [struct_gsv ,in,]

Called from

gvt_transform_gsv()

Call to

gsv_containsnonzerovalues(), utl_abort(), gsv_getdatakind(), gsv_getnumlev(), vnl_varlevelfromvarname()

subroutine  gridvariabletransforms_mod/lprtopr_gsv(statevector[, statevectorout_opt[, allowoverwrite_opt]])
Purpose

Quantity of precipitation logarithm exponentiation

Arguments

statevector [struct_gsv ,inout]

Options
  • statevectorout_opt [struct_gsv ,inout,]

  • allowoverwrite_opt [logical ,in,]

Called from

gvt_transform_gsv()

Call to

gsv_varexist(), utl_abort(), gsv_getdatakind(), gsv_getnumlev(), vnl_varlevelfromvarname(), gsv_modifyvarname()

subroutine  gridvariabletransforms_mod/lprtopr_ens(ens[, allowoverwrite_opt])
Purpose

Quantity of precipitation logarithm exponentiation (ensemble processing)

Arguments

ens [struct_ens ,inout]

Options

allowoverwrite_opt [logical ,in,]

Called from

gvt_transform_ens()

Call to

ens_varexist(), utl_abort(), ens_getlatlonbounds(), ens_getkfromlevvarname(), ens_getonelev_r4(), ens_getnumstep(), ens_getnummembers(), ens_modifyvarname()

subroutine  gridvariabletransforms_mod/prtolpr_gsv(statevector[, statevectorout_opt])
Purpose

Logarithmic transformation of quantity of precipitation

Arguments

statevector [struct_gsv ,inout]

Options

statevectorout_opt [struct_gsv ,inout,]

Called from

gvt_transform_gsv()

Call to

gsv_getdatakind(), gsv_getnumlev(), vnl_varlevelfromvarname()

subroutine  gridvariabletransforms_mod/lvistovis(statevector[, statevectorout_opt[, allowoverwrite_opt]])
Purpose

Visibility logarithm exponentiation

Arguments

statevector [struct_gsv ,inout]

Options
  • statevectorout_opt [struct_gsv ,inout,]

  • allowoverwrite_opt [logical ,in,]

Called from

gvt_transform_gsv()

Call to

gsv_varexist(), utl_abort(), gsv_getdatakind(), gsv_getnumlev(), vnl_varlevelfromvarname(), gsv_modifyvarname()

subroutine  gridvariabletransforms_mod/zandp_tl(statevector)
Purpose

Tangeant linear of height and pressure computation. The computation order depends on the native model representation (height or pressure based).

Arguments

statevector [struct_gsv ,inout]

Called from

gvt_transform_gsv()

subroutine  gridvariabletransforms_mod/zandp_ad(statevector)
Purpose

Adjoint of the tangeant linear computation of both height and pressure. The computation order depends on the native model representation (height or pressure based).

Arguments

statevector [struct_gsv ,inout]

Called from

gvt_transform_gsv()

subroutine  gridvariabletransforms_mod/uvtovortdiv_gsv(statevector)
Purpose

Wind components to relative vorticity and divergence transformation.

Arguments

statevector [struct_gsv ,inout]

Called from

gvt_transform_gsv(), uvtopsichi_gsv(), uvtovortdiv_ens()

Call to

gsv_varexist(), gsv_getnumlev(), utl_abort(), lgt_uvtovortdiv()

subroutine  gridvariabletransforms_mod/vortdivtopsichi_gsv(statevector)
Purpose

Relative vorticity and divergence to stream function and velocity potential transformation.

Arguments

statevector [struct_gsv ,inout] :: IN

Called from

gvt_transform_gsv(), uvtopsichi_gsv()

Call to

gsv_varexist(), gsv_getnumlev(), utl_abort(), lst_setup(), lst_laplacian()

subroutine  gridvariabletransforms_mod/uvtopsichi_gsv(statevector)
Purpose

Wind components to stream function and velocity potential transformation.

Arguments

statevector [struct_gsv ,inout]

Called from

gvt_transform_gsv(), uvtopsichi_ens()

Call to

uvtovortdiv_gsv(), vortdivtopsichi_gsv(), gsv_varexist(), gsv_getnumlev(), gst_setup(), mmpi_setup_m(), mmpi_setup_n(), gst_ilalist_mpiglobal(), gst_ilalist_mpilocal(), gst_setid(), gst_gdsp(), gst_getr1snp1(), gst_speree()

subroutine  gridvariabletransforms_mod/uvtopsichi_ens(ens)
Purpose

Wind components to stream function and velocity potential transformation (ensemble processing).

Arguments

ens [struct_ens ,inout]

Called from

gvt_transform_ens()

Call to

ens_gethco(), gsv_allocate(), ens_getvco(), tim_getdatestamp(), ens_getnummembers(), ens_copymember(), uvtopsichi_gsv(), ens_insertmember(), gsv_deallocate()

subroutine  gridvariabletransforms_mod/uvtovortdiv_ens(ens)
Purpose

Wind components to relative vorticity and divergence transformation (ensemble processing)

Arguments

ens [struct_ens ,inout]

Called from

gvt_transform_ens()

Call to

ens_gethco(), utl_abort(), gsv_allocate(), ens_getvco(), tim_getdatestamp(), ens_getnummembers(), ens_copymember(), uvtovortdiv_gsv(), ens_insertmember(), gsv_deallocate()

subroutine  gridvariabletransforms_mod/logch_ens(ens, varname)
Purpose

Logarithmic transformation of a chemical species concentration (ensemble processing)

Arguments
  • ens [struct_ens ,inout]

  • varname [character ,in]

Called from

gvt_transform_ens()

Call to

ens_getlatlonbounds(), ens_getnumk(), ens_getvarnamefromk(), ens_getonelev_r4(), vnl_varlistindex(), ens_getnumstep(), ens_getnummembers()

subroutine  gridvariabletransforms_mod/expch_tlm(statevector, varname[, statevectorref_opt])
Purpose

Tangent linear of exponentiation of chemical species concentration. Transform d[log(x)] to dx where x = ‘stateVectorRef_opt’, the input ‘statevector’ component is d[log(x)] and the output ‘statevector’ component is dx.

Arguments
  • statevector [struct_gsv ,inout]

  • varname [character ,in]

Options

statevectorref_opt [struct_gsv ,in,]

Called from

gvt_transform_gsv()

Call to

vnl_varlistindex(), utl_abort(), gsv_getnumlev(), vnl_varlevelfromvarname()

subroutine  gridvariabletransforms_mod/ch_bounds(statevector)
Purpose

Impose boundary values to variables of CH kind.

Arguments

statevector [struct_gsv ,inout]

Called from

gvt_transform_gsv()

Call to

gsv_varexist(), vnl_varkindfromvarname(), vnl_varlistindex(), gsv_getnumlev(), vnl_varlevelfromvarname()

subroutine  gridvariabletransforms_mod/gvt_oceanicecontinuous(statevector, statevectorref, outputvarname)
Purpose

Solve laplaces equation at a subset of gridpoints subject to the boundary conditions imposed by the surrounding points. Uses the method of sequential relaxation or Liebmann relaxation, which converges more rapidly than the simultaneous relaxation (see numerical weather analysis and prediction by P. D. Thompson, 1961, pp92-98). NOTE: this subroutine currently uses the oceanMask only for the first level. Therefore, if it is applied to 3D masked fields that have level-dependent masks, the code will abort so that the user can make the necessary adjustments to ensure the correct behaviour.

Arguments
  • statevector [struct_gsv ,inout]

  • statevectorref [struct_gsv ,in]

  • outputvarname [character ,in]

Called from

gvt_transform_gsv()

Call to

utl_abort(), gsv_allocate(), gsv_transposetilestostep(), gsv_isallocated(), gpos_gridisorca(), gsv_getnumlev(), vnl_varlevelfromvarname(), gsv_transposesteptotiles(), gsv_deallocate()

subroutine  gridvariabletransforms_mod/gvt_sstspread(statevector, variablename, maxboxsize, subgrid)
Purpose

Spread SST values on neigbouring land surface points

Arguments
  • statevector [struct_gsv ,inout] :: state vector of SST analysis

  • variablename [character ,in] :: variable name

  • maxboxsize [integer ,in] :: maximum box size of SST values spreading

  • subgrid [character ,in] :: spread SST values on neighbouring land points of “Yin” or “Yan” subgrid

Called from

gvt_transform_gsv()

Call to

utl_abort(), gsv_getnumlev(), vnl_varlevelfromvarname(), gsv_allocate(), gsv_transposetilestostep(), gsv_isallocated(), gsv_transposesteptotiles(), gsv_deallocate()