calcHeightAndPressure_mod

link to source code

Dependency Diagrams:

calcHeightAndPressure_mod.svg

Direct Dependency Diagram

calcHeightAndPressure_mod_rev.svg

Reverse Dependency Diagram

Description

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

Purpose

Subroutines for computing height and/or pressure on statevectors and columns depending on the vgrid kind. Nonlinear, tangent-linear and adjoint versions of these transformations are included in separate subroutines. Depending on the vertical representation of the state or column, pressure or height values are either computed or retrieved using the vgrid (https://gitlab.science.gc.ca/RPN-SI/vgrid) library. When computation is required (for instance to compute height on a GEM-P, represented on pressure coordinates), thermodynamical variables are required, typically P0, TT and HU. Height and pressure values are obtained for both thermodynamical and momentum levels and labeled Z_T (P_T) and Z_M (P_M).

Quick access

Variables

czp_calcheight_ad, czp_calcheight_nl, czp_calcheight_tl, czp_calcpressure_ad, czp_calcpressure_nl, czp_calcpressure_tl, czp_calczandp_ad, czp_calczandp_nl, czp_calczandp_tl, czp_fetch1ddpdps, czp_fetch1dlevels, czp_fetch3dlevels

Routines

calcheight_col_ad(), calcheight_col_nl(), calcheight_col_nl_vcode2100x(), calcheight_col_nl_vcode5xxx(), calcheight_col_tl(), calcheight_gsv_ad(), calcheight_gsv_nl(), calcheight_gsv_nl_vcode2100x_r4(), calcheight_gsv_nl_vcode2100x_r8(), calcheight_gsv_nl_vcode5xxx(), calcheight_gsv_tl(), calcheightcoeff_col(), calcheightcoeff_gsv(), calcpressure_col_ad(), calcpressure_col_nl(), calcpressure_col_nl_vcode2100x(), calcpressure_col_nl_vcode5xxx(), calcpressure_col_tl(), calcpressure_gsv_ad(), calcpressure_gsv_nl(), calcpressure_gsv_nl_vcode2100x(), calcpressure_gsv_nl_vcode5xxx_r4(), calcpressure_gsv_nl_vcode5xxx_r8(), calcpressure_gsv_tl(), calczandp_col_ad(), calczandp_col_nl(), calczandp_col_tl(), calczandp_gsv_ad(), calczandp_gsv_nl(), calczandp_gsv_tl(), czp_calcreturnheight_col_nl(), czp_calcreturnheight_gsv_nl(), czp_calcreturnpressure_col_nl(), czp_calcreturnpressure_gsv_nl(), czp_ensurecompatibletops(), fetch1ddpdps_r8(), fetch1dlevels_r8(), fetch3dlevels_r4(), fetch3dlevels_r8(), gpscompressibility_hu(), gpscompressibility_p0_1(), gpscompressibility_p0_2(), gpscompressibility_tt(), gz2alt_r4(), gz2alt_r8()

Needed modules

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

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

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

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

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

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

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

  • vgrid_descriptors

Variables

  • calcheightandpressure_mod/czp_calcheight_ad [public]
  • calcheightandpressure_mod/czp_calcheight_nl [public]
  • calcheightandpressure_mod/czp_calcheight_tl [public]
  • calcheightandpressure_mod/czp_calcpressure_ad [public]
  • calcheightandpressure_mod/czp_calcpressure_nl [public]
  • calcheightandpressure_mod/czp_calcpressure_tl [public]
  • calcheightandpressure_mod/czp_calczandp_ad [public]
  • calcheightandpressure_mod/czp_calczandp_nl [public]
  • calcheightandpressure_mod/czp_calczandp_tl [public]
  • calcheightandpressure_mod/czp_fetch1ddpdps [public]
  • calcheightandpressure_mod/czp_fetch1dlevels [public]
  • calcheightandpressure_mod/czp_fetch3dlevels [public]

Subroutines and functions

subroutine  calcheightandpressure_mod/calczandp_gsv_nl(statevector)
Purpose

Pressure and height computation on the grid in proper order depending on the vgrid kind. Depending on the vcode, the routine will check the existence of P_* (vcode=5xxx) or Z_* (vcode=2100x) first and proceed with pressure (height) computation. Then, if the other variables are also present, it will secondly compute height (pressure). Hence if only P_* (Z_*) is present, only these are computed. If the first variable P_* (Z_*) is not present, nothing is done.

Arguments

statevector [struct_gsv ,inout] :: statevector that will contain the Z_*/P_* fields

Call to

msg(), gsv_getvco(), gsv_varexist(), calcpressure_gsv_nl(), calcheight_gsv_nl()

subroutine  calcheightandpressure_mod/calczandp_gsv_tl(statevector, statevectorref)
Purpose

Pressure and height increment computation on the grid in proper order depending on the vgrid kind. Depending on the vcode, the routine will check the existence of P_* (vcode=5xxx) or Z_* (vcode=2100x) first and proceed with pressure (height) computation. Then, if the other variables are also present, it will secondly compute height (pressure). Hence if only P_* (Z_*) is present, only these are computed. If the first variable P_* (Z_*) is not present, nothing is done.

Arguments
  • statevector [struct_gsv ,inout] :: statevector that will contain the Z_*/P_* increments

  • statevectorref [struct_gsv ,in] :: statevector containing needed reference fields

Call to

msg(), gsv_getvco(), gsv_varexist(), gsv_containsnonzerovalues(), utl_abort(), calcpressure_gsv_tl(), calcheight_gsv_tl()

subroutine  calcheightandpressure_mod/calczandp_gsv_ad(statevector, statevectorref)
Purpose

Pressure and height increment adjoint computation on the grid in proper order depending on the vgrid kind Depending on the vcode, the routine will check the existence of Z_* (vcode=5xxx) or P_* (vcode=2100x) first and proceed with height (pressure) adjoint computation. Then, if the other variables are also present, it will secondly proceed with adjoint computation of pressure (height). Hence if only Z_* (P_*) is present, only these are computed. If the first variable Z_* (P_*) is not present, nothing is done.

Arguments
  • statevector [struct_gsv ,inout] :: statevector that will contain the Z_*/P_* increments

  • statevectorref [struct_gsv ,in] :: statevector containing needed reference fields

Call to

msg(), gsv_getvco(), gsv_varexist(), gsv_containsnonzerovalues(), utl_abort(), calcheight_gsv_ad(), calcpressure_gsv_ad()

subroutine  calcheightandpressure_mod/calcheight_gsv_nl(statevector)
Purpose

Compute or retrieve heights and store values in statevector.

Arguments

statevector [struct_gsv ,inout]

Called from

calczandp_gsv_nl()

Call to

utl_tmg_start(), msg(), gsv_getvco(), gsv_getdatakind(), calcheight_gsv_nl_vcode5xxx(), calcheight_gsv_nl_vcode2100x_r4(), calcheight_gsv_nl_vcode2100x_r8(), utl_tmg_stop()

subroutine  calcheightandpressure_mod/czp_calcreturnheight_gsv_nl(statevector[, ptin_r4_opt[, pmin_r4_opt[, ptin_r8_opt[, pmin_r8_opt[, ztout_r4_opt[, zmout_r4_opt[, ztout_r8_opt[, zmout_r8_opt]]]]]]]])
Purpose

Compute or retrieve heights and return values in pointer arguments. Proceeds to vcode dispatching.

Arguments

statevector [struct_gsv ,in]

Options
  • ptin_r4_opt (*,*,*,*) [real ,in,pointer]

  • pmin_r4_opt (*,*,*,*) [real ,in,pointer]

  • ptin_r8_opt (*,*,*,*) [real ,in,pointer]

  • pmin_r8_opt (*,*,*,*) [real ,in,pointer]

  • ztout_r4_opt (*,*,*,*) [real ,inout,pointer]

  • zmout_r4_opt (*,*,*,*) [real ,inout,pointer]

  • ztout_r8_opt (*,*,*,*) [real ,inout,pointer]

  • zmout_r8_opt (*,*,*,*) [real ,inout,pointer]

Called from

vinterp_gsv_r8(), vinterp_gsv_r4()

Call to

utl_tmg_start(), msg(), gsv_getvco(), gsv_getdatakind(), utl_abort(), calcheight_gsv_nl_vcode5xxx(), calcheight_gsv_nl_vcode2100x_r4(), calcheight_gsv_nl_vcode2100x_r8(), utl_tmg_stop()

subroutine  calcheightandpressure_mod/calcheight_gsv_nl_vcode2100x_r4(statevector, z_t, z_m)
Purpose

Retrieve heights for GEM-H statevector, return height values in pointer arguments. real(4) version

Arguments
  • statevector [struct_gsv ,in] :: ‘)

  • z_t (*,*,*,*) [real ,inout,pointer]

  • z_m (*,*,*,*) [real ,inout,pointer]

Called from

calcheight_gsv_nl(), czp_calcreturnheight_gsv_nl()

Call to

msg(), gsv_varexist(), utl_abort(), gsv_getheightsfc(), fetch3dlevels_r4(), gz2alt_r4()

function  calcheightandpressure_mod/gz2alt_r4(statevector, gzheight)
Purpose

Iterative conversion of geopotential height to geometric altitude. (solution proposed by J. Aparicio) real(4) version.

Arguments
  • statevector [struct_gsv ,in]

  • gzheight (*,*,*) [real ,in,pointer]

Return

alt (*,*,*) [real ,allocatable]

Called from

calcheight_gsv_nl_vcode2100x_r4()

Call to

gsv_gethco()

subroutine  calcheightandpressure_mod/calcheight_gsv_nl_vcode2100x_r8(statevector, z_t, z_m)
Purpose

Retrieve heights for GEM-H statevector, return height values in pointer arguments. real(8) version

Arguments
  • statevector [struct_gsv ,in]

  • z_t (*,*,*,*) [real ,inout,pointer]

  • z_m (*,*,*,*) [real ,inout,pointer]

Called from

calcheight_gsv_nl(), czp_calcreturnheight_gsv_nl()

Call to

msg(), gsv_getheightsfc(), fetch3dlevels_r8(), gz2alt_r8()

function  calcheightandpressure_mod/gz2alt_r8(statevector, gzheight)
Purpose

Iterative conversion of geopotential height to geometric altitude. (solution proposed by J. Aparicio) real(8) version.

Arguments
  • statevector [struct_gsv ,in]

  • gzheight (*,*,*) [real ,in,pointer]

Return

alt (*,*,*) [real ,allocatable]

Called from

calcheight_gsv_nl_vcode2100x_r8()

Call to

gsv_gethco()

subroutine  calcheightandpressure_mod/calcheight_gsv_nl_vcode5xxx(statevector[, ptin_r4_opt[, pmin_r4_opt[, ptin_r8_opt[, pmin_r8_opt[, ztout_r4_opt[, zmout_r4_opt[, ztout_r8_opt[, zmout_r8_opt]]]]]]]])
Purpose

Compute heights for GEM-P statevector, return height values in pointer arguments. Assumptions: 1) nlev_T = nlev_M+1 (for vcode=5002) 2) alt_T(nlev_T) = alt_M(nlev_M), both at the surface 3) a thermo level exists at the top, higher than the highest

momentum level

  1. the placement of the thermo levels means that alt_T is the average of 2 nearest alt_M (according to Ron and Claude)

Arguments

statevector [struct_gsv ,in]

Options
  • ptin_r4_opt (*,*,*,*) [real ,in,pointer]

  • pmin_r4_opt (*,*,*,*) [real ,in,pointer]

  • ptin_r8_opt (*,*,*,*) [real ,in,pointer]

  • pmin_r8_opt (*,*,*,*) [real ,in,pointer]

  • ztout_r4_opt (*,*,*,*) [real ,inout,pointer]

  • zmout_r4_opt (*,*,*,*) [real ,inout,pointer]

  • ztout_r8_opt (*,*,*,*) [real ,inout,pointer]

  • zmout_r8_opt (*,*,*,*) [real ,inout,pointer]

Called from

calcheight_gsv_nl(), czp_calcreturnheight_gsv_nl()

Call to

msg(), gsv_getnumlev(), gsv_getvco(), utl_abort(), gsv_getheightsfc(), gpscompressibility(), phf_fotvt8(), phf_gravityalt()

subroutine  calcheightandpressure_mod/calcheight_gsv_tl(statevector, statevectorref)
Purpose

Tangent height computation on statevector.

Arguments
  • statevector [struct_gsv ,inout]

  • statevectorref [struct_gsv ,in]

Called from

calczandp_gsv_tl()

Call to

utl_tmg_start(), msg(), gsv_getvco(), gsv_varexist(), utl_abort(), utl_tmg_stop()

subroutine  calcheightandpressure_mod/calcheight_gsv_ad(statevector, statevectorref)
Purpose

Adjoint of height computation on statevector.

Arguments
  • statevector [struct_gsv ,inout]

  • statevectorref [struct_gsv ,in]

Called from

calczandp_gsv_ad()

Call to

utl_tmg_start(), msg(), gsv_getvco(), gsv_varexist(), utl_abort(), utl_tmg_stop()

subroutine  calcheightandpressure_mod/calcpressure_gsv_nl(statevector[, ps_in_hpa_opt])
Purpose

Pressure computation, values stored in statevector.

Arguments

statevector [struct_gsv ,inout]

Options

ps_in_hpa_opt [logical ,in,] :: If true, conversion from hPa to mbar done for surface pressure

Called from

calczandp_gsv_nl()

Call to

utl_tmg_start(), msg(), gsv_getvco(), gsv_getdatakind(), calcpressure_gsv_nl_vcode5xxx_r4(), calcpressure_gsv_nl_vcode5xxx_r8(), calcpressure_gsv_nl_vcode2100x(), utl_tmg_stop()

subroutine  calcheightandpressure_mod/czp_calcreturnpressure_gsv_nl(statevector[, ztin_r4_opt[, zmin_r4_opt[, ztin_r8_opt[, zmin_r8_opt[, ptout_r4_opt[, pmout_r4_opt[, ptout_r8_opt[, pmout_r8_opt[, ps_in_hpa_opt]]]]]]]]])
Purpose

Compute or retrieve pressures and return values in pointer arguments. Proceeds to vcode dispatching.

Arguments

statevector [struct_gsv ,in]

Options
  • ztin_r4_opt (*,*,*,*) [real ,in,pointer]

  • zmin_r4_opt (*,*,*,*) [real ,in,pointer]

  • ztin_r8_opt (*,*,*,*) [real ,in,pointer]

  • zmin_r8_opt (*,*,*,*) [real ,in,pointer]

  • ptout_r4_opt (*,*,*,*) [real ,inout,pointer]

  • pmout_r4_opt (*,*,*,*) [real ,inout,pointer]

  • ptout_r8_opt (*,*,*,*) [real ,inout,pointer]

  • pmout_r8_opt (*,*,*,*) [real ,inout,pointer]

  • ps_in_hpa_opt [logical ,in,] :: If true, conversion from hPa to mbar done for surface pressure

Called from

vinterp_gsv_r8(), vinterp_gsv_r4()

Call to

utl_tmg_start(), msg(), gsv_getvco(), gsv_getdatakind(), utl_abort(), calcpressure_gsv_nl_vcode5xxx_r4(), calcpressure_gsv_nl_vcode5xxx_r8(), calcpressure_gsv_nl_vcode2100x(), utl_tmg_stop()

subroutine  calcheightandpressure_mod/calcpressure_gsv_nl_vcode2100x(statevector[, ztin_r4_opt[, zmin_r4_opt[, ztin_r8_opt[, zmin_r8_opt[, ptout_r4_opt[, pmout_r4_opt[, ptout_r8_opt[, pmout_r8_opt]]]]]]]])
Purpose

Compute pressure and return values in pointer arguments. GEM-H statevector input.

Arguments

statevector [struct_gsv ,in]

Options
  • ztin_r4_opt (*,*,*,*) [real ,in,pointer]

  • zmin_r4_opt (*,*,*,*) [real ,in,pointer]

  • ztin_r8_opt (*,*,*,*) [real ,in,pointer]

  • zmin_r8_opt (*,*,*,*) [real ,in,pointer]

  • ptout_r4_opt (*,*,*,*) [real ,inout,pointer]

  • pmout_r4_opt (*,*,*,*) [real ,inout,pointer]

  • ptout_r8_opt (*,*,*,*) [real ,inout,pointer]

  • pmout_r8_opt (*,*,*,*) [real ,inout,pointer]

Called from

calcpressure_gsv_nl(), czp_calcreturnpressure_gsv_nl()

Call to

msg(), gsv_getnumlev(), utl_abort(), gsv_getheightsfc(), phf_fotvt8(), gpscompressibility(), phf_gravityalt()

subroutine  calcheightandpressure_mod/calcpressure_gsv_nl_vcode5xxx_r8(statevector, p_t, p_m[, ps_in_hpa_opt])
Purpose

Pressure retrieval for GEM-P real(8) statevector, values values returned in pointers.

Arguments
  • statevector [struct_gsv ,in]

  • p_t (*,*,*,*) [real ,inout,pointer]

  • p_m (*,*,*,*) [real ,inout,pointer]

Options

ps_in_hpa_opt [logical ,in,] :: If true, conversion from hPa to mbar done for surface pressure

Called from

calcpressure_gsv_nl(), czp_calcreturnpressure_gsv_nl()

Call to

msg(), gsv_getvco(), fetch3dlevels_r8()

subroutine  calcheightandpressure_mod/calcpressure_gsv_nl_vcode5xxx_r4(statevector, p_t, p_m[, ps_in_hpa_opt])
Purpose

Pressure retrieval for GEM-P real(4) statevector, values values returned in pointers.

Arguments
  • statevector [struct_gsv ,in]

  • p_t (*,*,*,*) [real ,inout,pointer]

  • p_m (*,*,*,*) [real ,inout,pointer]

Options

ps_in_hpa_opt [logical ,in,] :: If true, conversion from hPa to mbar done for surface pressure

Called from

calcpressure_gsv_nl(), czp_calcreturnpressure_gsv_nl()

Call to

msg(), gsv_getvco(), fetch3dlevels_r4()

subroutine  calcheightandpressure_mod/calcpressure_gsv_tl(statevector, statevectorref)
Purpose

Tangent of pressure computation.

Arguments
  • statevector [struct_gsv ,inout] :: statevector that will contain the P_T/P_M increments

  • statevectorref [struct_gsv ,in] :: statevector containing needed reference fields

Called from

calczandp_gsv_tl()

Call to

utl_tmg_start(), msg(), gsv_getvco(), gsv_varexist(), utl_abort(), utl_tmg_stop()

subroutine  calcheightandpressure_mod/calcpressure_gsv_ad(statevector, statevectorref)
Purpose

Adjoint of pressure computation.

Arguments
  • statevector [struct_gsv ,inout] :: statevector that will contain increment of P_T/P_M

  • statevectorref [struct_gsv ,in] :: statevector containing needed reference fields

Called from

calczandp_gsv_ad()

Call to

utl_tmg_start(), msg(), gsv_getvco(), gsv_varexist(), utl_abort(), utl_tmg_stop()

subroutine  calcheightandpressure_mod/calczandp_col_nl(column)
Purpose

Compute pressure and height in the column in proper order depending on the vgrid kind

Arguments

column [struct_columndata ,inout] :: column that will contain the Z_*/P_* fields

Call to

msg(), col_varexist(), calcpressure_col_nl(), calcheight_col_nl()

subroutine  calcheightandpressure_mod/calczandp_col_tl(columninc, columnincref)
Purpose

Compute pressure and height increment in the column in proper order depending on the vgrid kind

Arguments
  • columninc [struct_columndata ,inout] :: column that will contain the Z_*/P_* increments

  • columnincref [struct_columndata ,in] :: column containing needed reference fields

Call to

msg(), col_varexist(), calcpressure_col_tl(), calcheight_col_tl(), utl_abort()

subroutine  calcheightandpressure_mod/calczandp_col_ad(columninc, columnincref)
Purpose

Adjoint of pressure and height increment computation in the column in proper order depending on the vgrid kind

Arguments
  • columninc [struct_columndata ,inout] :: column that will contain the Z_*/P_* increments

  • columnincref [struct_columndata ,in] :: column containing needed reference fields

Call to

msg(), col_varexist(), calcheight_col_ad(), calcpressure_col_ad(), utl_abort()

subroutine  calcheightandpressure_mod/calcheight_col_nl(column)
Purpose

Compute or retrieve heights on the column.

Arguments

column [struct_columndata ,inout] :: column that will contain the Z_M/Z_T fields

Called from

calczandp_col_nl()

Call to

msg(), col_getallcolumns(), czp_calcreturnheight_col_nl(), col_getcolumn()

subroutine  calcheightandpressure_mod/czp_calcreturnheight_col_nl(column, z_t, z_m)
Purpose

Return heights on the column.

Arguments
  • column [struct_columndata ,in] :: reference column containing temperature and geopotential

  • z_t (*,*) [real ,inout,pointer] :: computed column height values on thermodynamic levels

  • z_m (*,*) [real ,inout,pointer] :: computed column height values on momentum levels

Called from

calcheight_col_nl(), int_vinterp_col()

Call to

msg(), col_getvco(), col_varexist(), utl_abort(), calcheight_col_nl_vcode5xxx(), calcheight_col_nl_vcode2100x()

subroutine  calcheightandpressure_mod/calcheight_col_nl_vcode2100x(column, z_t, z_m)
Purpose

Return heights on a GEM-H column.

Arguments
  • column [struct_columndata ,in] :: reference column containing temperature and geopotential

  • z_t (*,*) [real ,inout,pointer] :: computed column height values on thermodynamic levels

  • z_m (*,*) [real ,inout,pointer] :: computed column height values on momentum levels

Called from

czp_calcreturnheight_col_nl()

Call to

msg(), col_getnumcol(), col_getheight(), fetch3dlevels_r8()

subroutine  calcheightandpressure_mod/calcheight_col_nl_vcode5xxx(column, z_t, z_m)
Purpose

Compute heights for GEM-P columns, return height values in pointer arguments.

Arguments
  • column [struct_columndata ,in] :: reference column containing temperature and geopotential

  • z_t (*,*) [real ,inout,pointer] :: computed column height values on thermodynamic levels

  • z_m (*,*) [real ,inout,pointer] :: computed column height values on momentum levels

Called from

czp_calcreturnheight_col_nl()

Call to

msg()

subroutine  calcheightandpressure_mod/calcheight_col_tl(columninc, columnincref)
Purpose

Tangent height computation on the column.

Arguments
  • columninc [struct_columndata ,inout]

  • columnincref [struct_columndata ,in]

Called from

calczandp_col_tl()

Call to

utl_tmg_start(), msg(), col_getvco(), col_varexist(), utl_abort(), utl_tmg_stop()

subroutine  calcheightandpressure_mod/calcheight_col_ad(columninc, columnincref)
Purpose

Adjoint of height computation on the column.

Arguments
  • columninc [struct_columndata ,inout]

  • columnincref [struct_columndata ,in]

Called from

calczandp_col_ad()

Call to

utl_tmg_start(), msg(), col_getvco(), col_varexist(), utl_abort(), utl_tmg_stop()

subroutine  calcheightandpressure_mod/calcpressure_col_nl(column)
Purpose

Pressure computation on the column.

Arguments

column [struct_columndata ,inout]

Called from

calczandp_col_nl()

Call to

msg(), col_getallcolumns(), czp_calcreturnpressure_col_nl(), col_getcolumn()

subroutine  calcheightandpressure_mod/czp_calcreturnpressure_col_nl(column, p_t, p_m)
Purpose

Pressure computation on the column, return values in pointers.

Arguments
  • column [struct_columndata ,in] :: reference column

  • p_t (*,*) [real ,inout,pointer] :: computed column pressure values on thermodynamic levels

  • p_m (*,*) [real ,inout,pointer] :: computed column pressure values on momentum levels

Called from

calcpressure_col_nl(), int_vinterp_col()

Call to

msg(), col_getvco(), col_varexist(), utl_abort(), calcpressure_col_nl_vcode5xxx(), calcpressure_col_nl_vcode2100x()

subroutine  calcheightandpressure_mod/calcpressure_col_nl_vcode2100x(column, p_t, p_m)
Purpose

Compute pressure and return values in pointer arguments. GEM-H column input.

Arguments
  • column [struct_columndata ,in] :: reference column

  • p_t (*,*) [real ,inout,pointer] :: computed column pressure values on thermodynamic levels

  • p_m (*,*) [real ,inout,pointer] :: computed column pressure values on momentum levels

Called from

czp_calcreturnpressure_col_nl()

Call to

msg(), col_getnumcol(), col_getnumlev(), col_getelem(), col_getheight(), phf_fotvt8(), gpscompressibility(), phf_gravityalt()

subroutine  calcheightandpressure_mod/calcpressure_col_nl_vcode5xxx(column, p_t, p_m)
Arguments
  • column [struct_columndata ,in] :: reference column

  • p_t (*,*) [real ,inout,pointer] :: computed column pressure values on thermodynamic levels

  • p_m (*,*) [real ,inout,pointer] :: computed column pressure values on momentum levels

Called from

czp_calcreturnpressure_col_nl()

Call to

msg(), col_getnumcol(), col_getvco(), col_varexist(), utl_abort(), col_getelem(), fetch3dlevels_r8()

subroutine  calcheightandpressure_mod/calcpressure_col_tl(columninc, columnincref)
Purpose

Tangent pressure computation on the column.

Arguments
  • columninc [struct_columndata ,inout] :: column that will contain the P_T/P_M increments

  • columnincref [struct_columndata ,in] :: column containing needed reference fields

Called from

calczandp_col_tl()

Call to

msg(), col_getvco(), col_varexist(), utl_abort()

subroutine  calcheightandpressure_mod/calcpressure_col_ad(columninc, columnincref)
Purpose

Adjoint of pressure computation on the column.

Arguments
  • columninc [struct_columndata ,inout] :: column that will contain increments of P_M/P_T

  • columnincref [struct_columndata ,in] :: column containing needed reference fields

Called from

calczandp_col_ad()

Call to

msg(), col_getvco(), col_varexist(), utl_abort()

subroutine  calcheightandpressure_mod/fetch3dlevels_r8(vco, sfcfld[, sfcfldls_opt[, fldm_opt[, fldt_opt]]])
Purpose

Main vgd_levels wrapper for field queries. Return vertical coordinate fields for both momentum and thermodynamic levels; real(8) flavor.

Arguments
  • vco [struct_vco ,in] :: Vertical descriptor

  • sfcfld (*,*) [real ,in] :: Surface field reference for coordinate

Options
  • sfcfldls_opt (*,*) [real ,in,] :: Large scale surface field reference for coordinate (SLEVE)

  • fldm_opt (*,*,*) [real ,inout,pointer] :: Momemtum levels field

  • fldt_opt (*,*,*) [real ,inout,pointer] :: Thermodynamic levels field

Called from

calcheight_gsv_nl_vcode2100x_r8(), calcpressure_gsv_nl_vcode5xxx_r8(), calcheight_col_nl_vcode2100x(), calcpressure_col_nl_vcode5xxx(), czp_ensurecompatibletops()

Call to

msg(), utl_abort()

subroutine  calcheightandpressure_mod/fetch3dlevels_r4(vco, sfcfld[, sfcfldls_opt[, fldm_opt[, fldt_opt]]])
Purpose

Main vgd_levels wrapper for field query. Return vertical coordinate fields for both momentum and thermodynamic levels; real(4) flavor.

Arguments
  • vco [struct_vco ,in] :: Vertical descriptor

  • sfcfld (*,*) [real ,in] :: Surface field reference for coordinate

Options
  • sfcfldls_opt (*,*) [real ,in,] :: Large scale surface field reference for coordinate (SLEVE)

  • fldm_opt (*,*,*) [real ,inout,pointer] :: Momemtum levels field

  • fldt_opt (*,*,*) [real ,inout,pointer] :: Thermodynamic levels field

Called from

calcheight_gsv_nl_vcode2100x_r4(), calcpressure_gsv_nl_vcode5xxx_r4()

Call to

msg(), utl_abort()

subroutine  calcheightandpressure_mod/fetch1dlevels_r8(vco, sfcvalue[, profm_opt[, proft_opt]])
Purpose

Main vgd_levels wrapper for profile query. Return vertical coordinate profile for both momentum and thermodynamic levels; real(8) flavor.

Arguments
  • vco [struct_vco ,in] :: Vertical descriptor

  • sfcvalue [real ,in] :: Surface field reference for coordinate

Options
  • profm_opt (*) [real ,inout,pointer] :: Momemtum levels profile

  • proft_opt (*) [real ,inout,pointer] :: Thermodynamic levels profile

Call to

msg(), utl_abort()

subroutine  calcheightandpressure_mod/fetch1ddpdps_r8(vco, sfcvalue[, profm_opt[, proft_opt]])
Purpose

Main vgd_levels wrapper for iderivative profile query. Return vertical coordinate profile for both momentum and thermodynamic levels; real(8) flavor.

Arguments
  • vco [struct_vco ,in] :: Vertical descriptor

  • sfcvalue [real ,in] :: Surface field reference for coordinate

Options
  • profm_opt (*) [real ,inout,pointer] :: Momemtum levels profile

  • proft_opt (*) [real ,inout,pointer] :: Thermodynamic levels profile

Call to

msg(), utl_abort()

subroutine  calcheightandpressure_mod/czp_ensurecompatibletops(vco_sourcegrid, vco_destgrid)
Purpose

This function checks if the top of a destination grid is ~equal or lower than the top of the source grid the code aborts if this is not the case

Arguments
  • vco_sourcegrid [struct_vco ,in,pointer] :: vertical coordinate source grid

  • vco_destgrid [struct_vco ,in,pointer] :: vertical coordinate destination grid

Called from

vinterp_gsv_r8(), vinterp_gsv_r4()

Call to

vco_getnumlev(), fetch3dlevels_r8(), utl_abort()

subroutine  calcheightandpressure_mod/calcheightcoeff_gsv(statevector)
Purpose

Calculating the coefficients of height for czp_calcHeight_tl/czp_calcHeight_ad

Arguments

statevector [struct_gsv ,in]

Call to

msg(), gsv_getvco(), gsv_getnumlev(), gpscompressibility(), gpscompressibility_tt(), gpscompressibility_hu(), gpscompressibility_p0_1(), gpscompressibility_p0_2(), phf_gravityalt(), phf_fottva(), phf_fotvt8(), phf_folnqva(), utl_abort()

subroutine  calcheightandpressure_mod/calcheightcoeff_col(column)
Purpose

Calculating the coefficients of height for czp_calcHeight_tl/czp_calcHeight_ad

Arguments

column [struct_columndata ,in]

Call to

msg(), col_getvco(), col_getnumlev(), col_getnumcol(), col_getallcolumns(), gpscompressibility(), gpscompressibility_tt(), gpscompressibility_hu(), gpscompressibility_p0_1(), gpscompressibility_p0_2(), phf_gravityalt(), phf_fottva(), phf_fotvt8(), phf_folnqva(), utl_abort()

function  calcheightandpressure_mod/gpscompressibility(p, t, q)
Arguments
  • p [real ,in]

  • t [real ,in]

  • q [real ,in]

Return

gpscompressibility [real ]

Call to

utl_abort()

function  calcheightandpressure_mod/gpscompressibility_tt(p, t, q)
Arguments
  • p [real ,in]

  • t [real ,in]

  • q [real ,in]

Return

gpscompressibility_tt [real ]

Called from

calcheightcoeff_gsv(), calcheightcoeff_col()

Call to

utl_abort()

function  calcheightandpressure_mod/gpscompressibility_hu(p, t, q)
Arguments
  • p [real ,in]

  • t [real ,in]

  • q [real ,in]

Return

gpscompressibility_hu [real ]

Called from

calcheightcoeff_gsv(), calcheightcoeff_col()

Call to

utl_abort()

function  calcheightandpressure_mod/gpscompressibility_p0_1(p, t, q, dpdp0)

gpscompressibility_P0_1 has dpdp0 dependency

Arguments
  • p [real ,in]

  • t [real ,in]

  • q [real ,in]

  • dpdp0 [real ,in]

Return

gpscompressibility_p0_1 [real ]

Called from

calcheightcoeff_gsv(), calcheightcoeff_col()

Call to

utl_abort()

function  calcheightandpressure_mod/gpscompressibility_p0_2(p, t, q)

gpscompressibility_P0_2 has NO dpdp0 dependency

Arguments
  • p [real ,in]

  • t [real ,in]

  • q [real ,in]

Return

gpscompressibility_p0_2 [real ]

Called from

calcheightcoeff_gsv(), calcheightcoeff_col()

Call to

utl_abort()