interpolation_mod

link to source code

Dependency Diagrams:

interpolation_mod.svg

Direct Dependency Diagram

interpolation_mod_rev.svg

Reverse Dependency Diagram

Description

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

Purpose

The grid-point state vector interpolation.

Quick access

Variables

int_hinterpscalar

Routines

int_cxgaig(), int_ezgdef(), int_hinterp_gsv(), int_hinterpscalar_gsv(), int_hinterpscalar_r4_2d(), int_hinterpscalar_r8_2d(), int_hinterpuv_gsv(), int_hinterpuv_r4_2d(), int_hinterpuv_r8_2d(), int_interp_gsv(), int_readnml(), int_setezopt(), int_sintcloudtogrid_gsv(), int_tinterp_gsv(), int_vinterp_col(), int_vinterp_gsv(), logp_r4(), logp_r8(), vinterp_gsv_r4(), vinterp_gsv_r8()

Needed modules

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

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

  • columndata_mod: MODULE columnData_mod (prefix=’col’ category=’6. High-level data objects’)

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

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

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

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

  • mathphysconstants_mod: MODULE mathPhysConstants_mod (prefix=’mpc’ category=’8. Low-level utilities and constants’)

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

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

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

Variables

  • interpolation_mod/int_hinterpscalar [public]

Subroutines and functions

subroutine  interpolation_mod/int_readnml()
Purpose

Read the namelist block NAMINT.

Namelist parameters
vInterpCopyLowestLevel

if true, will overwrite values at the lowest levels to avoid extrapolation

maxBoxSize

maximum size in terms of grid points used for filling in undefined values from neighbours when doing interpolation from a cloud of points to a grid

checkCloudToGridUnassigned

abort if any unmasked points are not assigned after doing cloudToGrid interpolation

Called from

int_vinterp_gsv(), int_tinterp_gsv(), int_hinterpscalar_gsv(), int_hinterpscalar_r4_2d(), int_hinterpscalar_r8_2d(), int_hinterpuv_gsv(), int_hinterpuv_r4_2d(), int_hinterpuv_r8_2d()

Call to

msg(), utl_isnamelistpresent(), utl_abort()

subroutine  interpolation_mod/int_interp_gsv(statevector_in, statevector_out[, statevectorref_opt[, checkmodeltop_opt]])
Purpose

high-level interpolation subroutine that proceed with horizontal and vertical interpolation

Arguments
  • statevector_in [struct_gsv ,in] :: Statevector input

  • statevector_out [struct_gsv ,inout] :: Statevector output (with target grids)

Options
  • statevectorref_opt [struct_gsv ,in,] :: Reference statevector with fields P0, TT and HU

  • checkmodeltop_opt [logical ,in,] :: If true, model top consistency checked

Called from

epp_addrandompert(), gvt_setupreffromstatevector(), inc_computehighresanalysis(), inc_interpolateandadd(), midas_randompert

Call to

msg(), gsv_isallocated(), utl_abort(), gsv_varnameslist(), gsv_allocate(), gsv_getdatakind(), gsv_transposetilestovarslevs(), int_hinterp_gsv(), gsv_deallocate(), gsv_transposevarslevstotiles(), int_vinterp_gsv()

subroutine  interpolation_mod/int_hinterp_gsv(statevector_in, statevector_out)
Purpose

Horizontal interpolation

Arguments
  • statevector_in [struct_gsv ,inout] :: Statevector input

  • statevector_out [struct_gsv ,inout] :: Statevector with target horiz and vert grids and result

Called from

ens_readensemble(), readfromfileandinterptotiles(), readfromfileandinterp1proc(), int_interp_gsv()

Call to

msg(), hco_equal(), gsv_copy(), vco_equal(), utl_abort(), gsv_varexist(), gsv_getvarnamefromk(), gsv_isassocheightsfc()

subroutine  interpolation_mod/int_vinterp_gsv(statevector_in, statevector_out[, statevectorref_opt[, ps_in_hpa_opt[, checkmodeltop_opt]]])
Purpose

Vertical interpolation. Interpolation coordinates are either height or log(P) based on target vertical descriptor vcode. * When target vertical coordinates are pressure (interpolating

to GEM-P), log(P) is used;

  • When they are height (interpolating to GEM-H), height is used.

Call to calcHeightAndPressure_mod will return required interpolation coordinates (log is then applied when required).

Arguments
  • statevector_in [struct_gsv ,in,target] :: Statevector input

  • statevector_out [struct_gsv ,inout] :: Statevector with target horiz/vert grids and result

Options
  • statevectorref_opt [struct_gsv ,in,target] :: Reference statevector with P0, TT and HU

  • ps_in_hpa_opt [logical ,in,] :: If true, surface pressure is in hPa, not Pa

  • checkmodeltop_opt [logical ,in,] :: Model top consistency will be checked

Called from

ens_readensemble(), readfromfileandinterptotiles(), readfromfileandinterp1proc(), inc_computehighresanalysis(), int_interp_gsv()

Call to

msg(), int_readnml(), gsv_getdatakind(), vinterp_gsv_r8(), vinterp_gsv_r4(), utl_abort()

subroutine  interpolation_mod/vinterp_gsv_r8(statevector_in, statevector_out[, statevectorref_opt[, ps_in_hpa_opt[, checkmodeltop_opt]]])
Purpose

Vertical interpolation, real(8) version.

Arguments
  • statevector_in [struct_gsv ,in,target] :: Statevector input

  • statevector_out [struct_gsv ,inout] :: Statevector with target horiz/vert grids and result

Options
  • statevectorref_opt [struct_gsv ,in,target] :: Reference statevector with P0, TT and HU

  • ps_in_hpa_opt [logical ,in,] :: If true, surface pressure is in hPa, not Pa

  • checkmodeltop_opt [logical ,in,] :: Model top consistency will be checked

Called from

int_vinterp_gsv()

Call to

msg(), gsv_getvco(), vco_equal(), utl_abort(), gsv_copy(), hco_equal(), gsv_getdatakind(), gsv_isassocheightsfc(), gsv_getheightsfc(), czp_ensurecompatibletops(), gsv_allocate(), gsv_varexist(), vnl_varlevelfromvarname(), gsv_getnumlev(), czp_calcreturnpressure_gsv_nl(), czp_calcreturnheight_gsv_nl(), logp_r8(), gsv_deallocate()

subroutine  interpolation_mod/logp_r8(presinlogout)
Purpose

compute log of pressurce field, real(8) version

Arguments

presinlogout (*,*,*,*) [real ,inout]

Called from

vinterp_gsv_r8()

subroutine  interpolation_mod/vinterp_gsv_r4(statevector_in, statevector_out[, statevectorref_opt[, ps_in_hpa_opt[, checkmodeltop_opt]]])
Purpose

Vertical interpolation, real(4) version.

Arguments
  • statevector_in [struct_gsv ,in,target] :: Statevector input

  • statevector_out [struct_gsv ,inout] :: Statevector with the target horiz/vert grids and result

Options
  • statevectorref_opt [struct_gsv ,in,target] :: Reference statevector with P0, TT and HU

  • ps_in_hpa_opt [logical ,in,] :: If true, surface pressure in in hPa, not Pa

  • checkmodeltop_opt [logical ,in,] :: Model top consistency will be checked

Called from

int_vinterp_gsv()

Call to

msg(), gsv_getvco(), vco_equal(), utl_abort(), gsv_copy(), hco_equal(), gsv_getdatakind(), gsv_isassocheightsfc(), gsv_getheightsfc(), czp_ensurecompatibletops(), gsv_allocate(), gsv_varexist(), vnl_varlevelfromvarname(), gsv_getnumlev(), czp_calcreturnpressure_gsv_nl(), czp_calcreturnheight_gsv_nl(), logp_r4(), gsv_deallocate()

subroutine  interpolation_mod/logp_r4(presinlogout)
Purpose

compute log of pressurce field

Arguments

presinlogout (*,*,*,*) [real ,inout]

Called from

vinterp_gsv_r4()

subroutine  interpolation_mod/int_tinterp_gsv(statevector_in, statevector_out)
Purpose

Time interpolation from statevector with low temporal resolution to statevector with high temporal resolution.

Arguments
  • statevector_in [struct_gsv ,in] :: Statevector input

  • statevector_out [struct_gsv ,inout] :: Statevector with target temporal structure and results

Called from

inc_computehighresanalysis(), inc_interpolateandadd()

Call to

msg(), int_readnml(), vco_equal(), utl_abort(), hco_equal(), gsv_copy(), gsv_getdatakind()

subroutine  interpolation_mod/int_vinterp_col(column_in, column_out, varname[, usecolumnpressure_opt])
Purpose

Vertical interpolation of a columData object

Arguments
  • column_in [struct_columndata ,in] :: ColumnData input

  • column_out [struct_columndata ,inout] :: ‘)

  • varname [character ,in] :: variable name to be interpolated

Options

usecolumnpressure_opt [logical ,in,] :: if .true. use P_* instead of the pressure provided by calcHeightAndPressure_mod

Called from

inn_setupcolumnsonanlinclev()

Call to

msg(), vnl_varlevelfromvarname(), col_varexist(), col_getnumlev(), col_getnumcol(), czp_calcreturnpressure_col_nl(), czp_calcreturnheight_col_nl(), col_getcolumn(), utl_abort(), vco_levelmatchinglist()

subroutine  interpolation_mod/int_setezopt(interpdegree[, extrapdegree_opt])
Purpose

Wrapper subroutine for rmnlib routine setezopt.

Arguments

interpdegree [character ,in]

Options

extrapdegree_opt [character ,in,]

Called from

int_hinterpscalar_gsv(), int_hinterpscalar_r4_2d(), int_hinterpscalar_r8_2d(), int_hinterpuv_gsv(), int_hinterpuv_r4_2d(), int_hinterpuv_r8_2d()

Call to

msg(), utl_abort()

function  interpolation_mod/int_hinterpscalar_gsv(statevectorout, statevectorin, varname, levindex, stepindex, interpdegree[, extrapdegree_opt])
Purpose

Horizontal interpolation of 2D scalar field that use stateVector objects for input and output. Accessed through int_hInterpScalar.

Arguments
  • statevectorout [struct_gsv ,inout]

  • statevectorin [struct_gsv ,inout]

  • varname [character ,in]

  • levindex [integer ,in]

  • stepindex [integer ,in]

  • interpdegree [character ,in]

Options

extrapdegree_opt [character ,in,]

Return

ierr [integer ]

Call to

msg(), int_readnml(), gsv_getdatakind(), utl_abort(), int_sintcloudtogrid_gsv(), int_setezopt(), gsv_getheightsfc()

function  interpolation_mod/int_hinterpscalar_r4_2d(fieldout_r4, fieldin_r4, interpdegree[, extrapdegree_opt])
Purpose

Horizontal interpolation of 2D scalar field that use real(4) arrays for input and output. Accessed through int_hInterpScalar.

Arguments
  • fieldout_r4 (*,*) [real ,inout]

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

  • interpdegree [character ,in]

Options

extrapdegree_opt [character ,in,]

Return

ierr [integer ]

Call to

msg(), int_readnml(), int_setezopt()

function  interpolation_mod/int_sintcloudtogrid_gsv(statevectorgrid, statevectorcloud, varname, levindex, stepindex)
Purpose

Perform horizontal interpolation for 1 level and time step (and variable) in the case where the input data is a cloud of points (i.e. a Y grid) and the output is on a regular grid. Accessed through int_hInterpScalar.

Note

When varName==’ALL’, the argument levIndex is actually kIndex

Arguments
  • statevectorgrid [struct_gsv ,inout]

  • statevectorcloud [struct_gsv ,inout]

  • varname [character ,in]

  • levindex [integer ,in]

  • stepindex [integer ,in]

Return

ierr [integer ]

Called from

int_hinterpscalar_gsv()

Call to

utl_tmg_start(), msg(), gsv_getlevfromk(), kdtree2_3dposition(), kdtree2_create(), kdtree2_r_nearest(), utl_abort(), kdtree2_destroy(), utl_tmg_stop()

function  interpolation_mod/int_hinterpscalar_r8_2d(fieldout_r8, fieldin_r8, interpdegree[, extrapdegree_opt])
Purpose

Horizontal interpolation of 2D scalar field that use real(8) arrays for input and output. Accessed through int_hInterpScalar.

Arguments
  • fieldout_r8 (*,*) [real ,inout]

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

  • interpdegree [character ,in]

Options

extrapdegree_opt [character ,in,]

Return

ierr [integer ]

Call to

msg(), int_readnml(), int_setezopt()

function  interpolation_mod/int_hinterpuv_gsv(statevectorout, statevectorin, varname, levindex, stepindex, interpdegree[, extrapdegree_opt])
Purpose

Horizontal interpolation of 2D vector field that use stateVector objects for input and output. Accessed through int_hInterpUV.

Arguments
  • statevectorout [struct_gsv ,inout]

  • statevectorin [struct_gsv ,inout]

  • varname [character ,in]

  • levindex [integer ,in]

  • stepindex [integer ,in]

  • interpdegree [character ,in]

Options

extrapdegree_opt [character ,in,]

Return

ierr [integer ]

Call to

msg(), int_readnml(), utl_abort(), int_setezopt(), gsv_getdatakind()

function  interpolation_mod/int_hinterpuv_r4_2d(uuout, vvout, uuin, vvin, interpdegree[, extrapdegree_opt])
Purpose

Horizontal interpolation of 2D vector field that use real(4) arrays for input and output. Accessed through int_hInterpUV.

Arguments
  • uuout (*,*) [real ,inout]

  • vvout (*,*) [real ,inout]

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

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

  • interpdegree [character ,in]

Options

extrapdegree_opt [character ,in,]

Return

ierr [integer ]

Call to

msg(), int_readnml(), int_setezopt()

function  interpolation_mod/int_hinterpuv_r8_2d(uuout, vvout, uuin, vvin, interpdegree[, extrapdegree_opt])
Purpose

Horizontal interpolation of 2D vector field that use real(8) arrays for input and output. Accessed through int_hInterpUV.

Arguments
  • uuout (*,*) [real ,inout]

  • vvout (*,*) [real ,inout]

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

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

  • interpdegree [character ,in]

Options

extrapdegree_opt [character ,in,]

Return

ierr [integer ]

Call to

msg(), int_readnml(), int_setezopt()

function  interpolation_mod/int_ezgdef(ni, nj, grtyp, grtypref, ig1, ig2, ig3, ig4, ax, ay)
Purpose

Subroutine wrapper for rmnlib procedure ezgdef.

Arguments
  • ni [integer ,in]

  • nj [integer ,in]

  • grtyp [character ,in]

  • grtypref [character ,in]

  • ig1 [integer ,in]

  • ig2 [integer ,in]

  • ig3 [integer ,in]

  • ig4 [integer ,in]

  • ax (*) [real ,in]

  • ay (*) [real ,in]

Return

vezgdef [integer ]

Called from

interp_sfc()

Call to

utl_abort()

subroutine  interpolation_mod/int_cxgaig(grtyp, ig1, ig2, ig3, ig4, xlat0, xlon0, dlat, dlon)
Purpose

Subroutine wrapper for rmnlib procedure cxgaig.

Arguments
  • grtyp [character ,in]

  • ig1 [integer ,in]

  • ig2 [integer ,in]

  • ig3 [integer ,in]

  • ig4 [integer ,in]

  • xlat0 [real ,in]

  • xlon0 [real ,in]

  • dlat [real ,in]

  • dlon [real ,in]

Called from

interp_sfc()