gps_mod

link to source code

Dependency Diagrams:

gps_mod.svg

Direct Dependency Diagram

gps_mod_rev.svg

Reverse Dependency Diagram

Description

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

Purpose

Code related to GPS-RO and ground-based GPS observation operators.

Quick access

Types

gps_diff, gps_profile, gps_profilezd

Variables

gps_bgckband, gps_gb_dzmax, gps_gb_dzmin, gps_gb_irefopt, gps_gb_iztdop, gps_gb_l1obs, gps_gb_lassmet, gps_gb_lbevis, gps_gb_llblmet, gps_gb_ltestop, gps_gb_maxdata, gps_gb_numztd, gps_gb_ysferrwgt, gps_gb_yzderrwgt, gps_gb_yztderr, gps_hsfmin, gps_htpmax, gps_htpmaxer, gps_level_ro, gps_level_ro_bnd, gps_level_ro_bndandref, gps_level_ro_ref, gps_ncvmx, gps_numroprofiles, gps_p_md, gps_p_mw, gps_p_wa, gps_p_wb, gps_ro_maxprfsize, gps_robnorm, gps_roerror, gps_ronsigma, gps_surfmin, gps_vro_indexprf, gps_wgps, gps_ztd_index

Routines

gps_bndopv1(), gps_geopotential(), gps_gravityalt(), gps_gravitysrf(), gps_iprofile_from_index(), gps_iztd_from_index(), gps_pw(), gps_refopv(), gps_setupgb(), gps_setupro(), gps_struct1sw(), gps_struct1sw_v2(), gps_structztd(), gps_structztd_v2(), gps_ztdopv(), gpsbend(), gpsbend1(), gpsbendlayer(), gpsbendunit(), gpsbndopv(), gpsbvf(), gpsbvfopv(), gpscmp(), gpscompressibility(), gpsden(), gpsdiffacos(), gpsdiffasfd(), gpsdiffasff(), gpsdiffatan(), gpsdiffcos(), gpsdiffdvdf(), gpsdiffdvfd(), gpsdiffdvff(), gpsdiffdvfi(), gpsdiffdvif(), gpsdifferf(), gpsdiffexp(), gpsdifflog(), gpsdiffmldf(), gpsdiffmlfd(), gpsdiffmlff(), gpsdiffmlfi(), gpsdiffmlif(), gpsdiffpwdf(), gpsdiffpwfd(), gpsdiffpwff(), gpsdiffpwfi(), gpsdiffpwif(), gpsdiffsbdf(), gpsdiffsbfd(), gpsdiffsbff(), gpsdiffsbfi(), gpsdiffsbif(), gpsdiffsmdf(), gpsdiffsmfd(), gpsdiffsmff(), gpsdiffsmfi(), gpsdiffsmif(), gpsdiffsqr(), gpsdifftan(), gpshgtopv(), gpsradii(), gpsro_eotvos_dh(), gpstemopv(), gpswmropv()

Needed modules

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

  • utilities_mod: MODULE utilities_mod (prefix=’utl’ 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’)

Types

  • type  gps_mod/gps_diff
    Type fields
  • type  gps_mod/gps_profile
    Type fields
    • % ast (ngpssize+ngpsxlow) [gps_diff ]

    • % bbst [logical ]

    • % bst (ngpssize+ngpsxlow) [gps_diff ]

    • % dst (ngpssize) [gps_diff ]

    • % geoid [real ]

    • % gst (ngpssize) [gps_diff ]

    • % ngpslev [integer ]

    • % p0 [gps_diff ]

    • % pst (ngpssize) [gps_diff ]

    • % qst (ngpssize) [gps_diff ]

    • % rad [real ]

    • % radm [real ]

    • % radn [real ]

    • % razm [real ]

    • % rlat [real ]

    • % rlon [real ]

    • % rmt [real ]

    • % rst (ngpssize) [gps_diff ]

    • % tst (ngpssize) [gps_diff ]

  • type  gps_mod/gps_profilezd
    Type fields
    • % bpst [logical ]

    • % gst (ngpssize) [gps_diff ]

    • % ngpslev [integer ]

    • % p0 [gps_diff ]

    • % pst (ngpssize) [gps_diff ]

    • % qst (ngpssize) [gps_diff ]

    • % rlat [real ]

    • % rlon [real ]

    • % rmt [real ]

    • % rst (ngpssize) [gps_diff ]

    • % tst (ngpssize) [gps_diff ]

    • % ztd (ngpssize) [gps_diff ]

Variables

  • gps_mod/gps_bgckband [real,public]
  • gps_mod/gps_gb_dzmax [real,public]

    need to give it a default value here in case setup not called

  • gps_mod/gps_gb_dzmin [real,public]
  • gps_mod/gps_gb_irefopt [integer,public]
  • gps_mod/gps_gb_iztdop [integer,public]
  • gps_mod/gps_gb_l1obs [logical,public]
  • gps_mod/gps_gb_lassmet [logical,public]
  • gps_mod/gps_gb_lbevis [logical,public]
  • gps_mod/gps_gb_llblmet [logical,public]
  • gps_mod/gps_gb_ltestop [logical,public]
  • gps_mod/gps_gb_maxdata [integer,parameter/public]

    (max_gps_sites) * (max_num_obs in 6h)

  • gps_mod/gps_gb_numztd [integer,public]

    number of ZTD data to be assimilated

  • gps_mod/gps_gb_ysferrwgt [real,public]
  • gps_mod/gps_gb_yzderrwgt [real,public]
  • gps_mod/gps_gb_yztderr [real,public]
  • gps_mod/gps_hsfmin [real,public]
  • gps_mod/gps_htpmax [real,public]
  • gps_mod/gps_htpmaxer [real,public]
  • gps_mod/gps_level_ro [integer,public]
  • gps_mod/gps_level_ro_bnd [integer,public/parameter]
  • gps_mod/gps_level_ro_bndandref [integer,public/parameter]
  • gps_mod/gps_level_ro_ref [integer,public/parameter]
  • gps_mod/gps_ncvmx [integer,parameter/public]
  • gps_mod/gps_numroprofiles [integer,public]
  • gps_mod/gps_p_md [real,parameter/public]

    From Aparicio(2011)

  • gps_mod/gps_p_mw [real,parameter/public]

    From Aparicio(2011)

  • gps_mod/gps_p_wa [real,parameter/public]
  • gps_mod/gps_p_wb [real,parameter/public]
  • gps_mod/gps_ro_maxprfsize [integer,public]
  • gps_mod/gps_robnorm [logical,public]
  • gps_mod/gps_roerror [character,public]
  • gps_mod/gps_ronsigma [real,public]
  • gps_mod/gps_surfmin [real,public]
  • gps_mod/gps_vro_indexprf (*,*) [integer,allocatable/public]

    index for each profile

  • gps_mod/gps_wgps (1024,4) [real,public]
  • gps_mod/gps_ztd_index (*) [integer,allocatable/public]

    INDEX_HEADER in CMA (ObsSpace) for each ZTD observation

Subroutines and functions

function  gps_mod/gps_gravitysrf(slat)
Purpose

Normal gravity on ellipsoidal surface

Arguments

slat [real ,in] :: sin(Latitude)

Return

gps_gravitysrf [real ] :: Normal gravity (m/s2)

Called from

gps_gravityalt(), gps_struct1sw(), gps_structztd(), oer_seterrgpsro(), setfgedif()

function  gps_mod/gps_gravityalt(slat, altitude)
Purpose

Normal gravity above the ellipsoidal surface

Arguments
  • slat [real ,in] :: sin(Latitude)

  • altitude [real ,in] :: Altitude (m)

Return

gps_gravityalt [real ] :: Normal gravity (m/s2)

Called from

gps_geopotential(), gps_struct1sw(), gps_structztd(), gps_structztd_v2(), gpsbvf(), gps_ztdopv(), gps_pw()

Call to

gps_gravitysrf()

function  gps_mod/gps_geopotential(latitude, altitude)
Purpose

Geopotential energy at a given point. Result is based on the WGS84 approximate expression for the gravity acceleration as a function of latitude and altitude, integrated with the trapezoidal rule.

Arguments
  • latitude [real ,in] :: (rad)

  • altitude [real ,in] ::

Return

gps_geopotential [real ] :: Geopotential (m2/s2)

Call to

gps_gravityalt()

subroutine  gps_mod/gpsradii(latitude, radn, radm)
Arguments
  • latitude [real ,in]

  • radn [real ,out]

  • radm [real ,out]

Called from

gps_struct1sw(), gps_struct1sw_v2()

subroutine  gps_mod/gpsdiffasfd(gd1, d2)
Arguments
  • gd1 [gps_diff ,out]

  • d2 [real ,in]

subroutine  gps_mod/gpsdiffasff(gd1, gd2)
Arguments
  • gd1 [gps_diff ,out]

  • gd2 [gps_diff ,in]

function  gps_mod/gpsdiffsmfd(gd1, d2)
Arguments
  • gd1 [gps_diff ,in]

  • d2 [real ,in]

Return

gpsdiffsmfd [gps_diff ]

function  gps_mod/gpsdiffsmdf(d1, gd2)
Arguments
  • d1 [real ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffsmdf [gps_diff ]

function  gps_mod/gpsdiffsmfi(gd1, i2)
Arguments
  • gd1 [gps_diff ,in]

  • i2 [integer ,in]

Return

gpsdiffsmfi [gps_diff ]

function  gps_mod/gpsdiffsmif(i1, gd2)
Arguments
  • i1 [integer ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffsmif [gps_diff ]

function  gps_mod/gpsdiffsmff(gd1, gd2)
Arguments
  • gd1 [gps_diff ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffsmff [gps_diff ]

function  gps_mod/gpsdiffsbfd(gd1, d2)
Arguments
  • gd1 [gps_diff ,in]

  • d2 [real ,in]

Return

gpsdiffsbfd [gps_diff ]

function  gps_mod/gpsdiffsbdf(d1, gd2)
Arguments
  • d1 [real ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffsbdf [gps_diff ]

function  gps_mod/gpsdiffsbfi(gd1, i2)
Arguments
  • gd1 [gps_diff ,in]

  • i2 [integer ,in]

Return

gpsdiffsbfi [gps_diff ]

function  gps_mod/gpsdiffsbif(i1, gd2)
Arguments
  • i1 [integer ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffsbif [gps_diff ]

function  gps_mod/gpsdiffsbff(gd1, gd2)
Arguments
  • gd1 [gps_diff ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffsbff [gps_diff ]

function  gps_mod/gpsdiffmlfd(gd1, d2)
Arguments
  • gd1 [gps_diff ,in]

  • d2 [real ,in]

Return

gpsdiffmlfd [gps_diff ]

function  gps_mod/gpsdiffmldf(d1, gd2)
Arguments
  • d1 [real ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffmldf [gps_diff ]

function  gps_mod/gpsdiffmlfi(gd1, i2)
Arguments
  • gd1 [gps_diff ,in]

  • i2 [integer ,in]

Return

gpsdiffmlfi [gps_diff ]

function  gps_mod/gpsdiffmlif(i1, gd2)
Arguments
  • i1 [integer ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffmlif [gps_diff ]

function  gps_mod/gpsdiffmlff(gd1, gd2)
Arguments
  • gd1 [gps_diff ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffmlff [gps_diff ]

function  gps_mod/gpsdiffdvfd(gd1, d2)
Arguments
  • gd1 [gps_diff ,in]

  • d2 [real ,in]

Return

gpsdiffdvfd [gps_diff ]

function  gps_mod/gpsdiffdvdf(d1, gd2)
Arguments
  • d1 [real ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffdvdf [gps_diff ]

function  gps_mod/gpsdiffdvfi(gd1, i2)
Arguments
  • gd1 [gps_diff ,in]

  • i2 [integer ,in]

Return

gpsdiffdvfi [gps_diff ]

function  gps_mod/gpsdiffdvif(i1, gd2)
Arguments
  • i1 [integer ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffdvif [gps_diff ]

function  gps_mod/gpsdiffdvff(gd1, gd2)
Arguments
  • gd1 [gps_diff ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffdvff [gps_diff ]

function  gps_mod/gpsdiffpwfd(gd1, d2)
Arguments
  • gd1 [gps_diff ,in]

  • d2 [real ,in]

Return

gpsdiffpwfd [gps_diff ]

function  gps_mod/gpsdiffpwdf(d1, gd2)
Arguments
  • d1 [real ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffpwdf [gps_diff ]

function  gps_mod/gpsdiffpwfi(gd1, i2)
Arguments
  • gd1 [gps_diff ,in]

  • i2 [integer ,in]

Return

gpsdiffpwfi [gps_diff ]

function  gps_mod/gpsdiffpwif(i1, gd2)
Arguments
  • i1 [integer ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffpwif [gps_diff ]

function  gps_mod/gpsdiffpwff(gd1, gd2)
Arguments
  • gd1 [gps_diff ,in]

  • gd2 [gps_diff ,in]

Return

gpsdiffpwff [gps_diff ]

function  gps_mod/gpsdiffsqr(gd1)
Arguments

gd1 [gps_diff ,in]

Return

gpsdiffsqr [gps_diff ]

function  gps_mod/gpsdiffexp(gd1)
Arguments

gd1 [gps_diff ,in]

Return

gpsdiffexp [gps_diff ]

function  gps_mod/gpsdifflog(gd1)
Arguments

gd1 [gps_diff ,in]

Return

gpsdifflog [gps_diff ]

function  gps_mod/gpsdiffcos(gd1)
Arguments

gd1 [gps_diff ,in]

Return

gpsdiffcos [gps_diff ]

function  gps_mod/gpsdifftan(gd1)
Arguments

gd1 [gps_diff ,in]

Return

gpsdifftan [gps_diff ]

function  gps_mod/gpsdiffacos(gd1)
Arguments

gd1 [gps_diff ,in]

Return

gpsdiffacos [gps_diff ]

function  gps_mod/gpsdiffatan(gd1)
Arguments

gd1 [gps_diff ,in]

Return

gpsdiffatan [gps_diff ]

function  gps_mod/gpsdifferf(gd1)
Arguments

gd1 [gps_diff ,in]

Return

gpsdifferf [gps_diff ]

subroutine  gps_mod/gps_struct1sw(ngpslev, rlat, rlon, razm, rmt, rad, geoid, rp0, rpp, rdp, rtt, rhu, ruu, rvv, prf[, printheight_opt])
Arguments
  • ngpslev [integer ,in]

  • rlat [real ,in]

  • rlon [real ,in]

  • razm [real ,in]

  • rmt [real ,in]

  • rad [real ,in]

  • geoid [real ,in]

  • rp0 [real ,in]

  • rpp (ngpssize) [real ,in]

  • rdp (ngpssize) [real ,in]

  • rtt (ngpssize) [real ,in]

  • rhu (ngpssize) [real ,in]

  • ruu (ngpssize) [real ,in]

  • rvv (ngpssize) [real ,in]

  • prf [gps_profile ,out]

Options

printheight_opt [logical ,inout,]

Called from

setfgedif()

Call to

gpsradii(), gpscompressibility(), gps_gravitysrf(), gps_gravityalt()

subroutine  gps_mod/gps_struct1sw_v2(ngpslev, rlat, rlon, razm, rmt, rad, geoid, rp0, rpp, rtt, rhu, ruu, rvv, ralt, prf)
Arguments
  • ngpslev [integer ,in]

  • rlat [real ,in]

  • rlon [real ,in]

  • razm [real ,in]

  • rmt [real ,in]

  • rad [real ,in]

  • geoid [real ,in]

  • rp0 [real ,in]

  • rpp (ngpssize) [real ,in]

  • rtt (ngpssize) [real ,in]

  • rhu (ngpssize) [real ,in]

  • ruu (ngpssize) [real ,in]

  • rvv (ngpssize) [real ,in]

  • ralt (ngpssize) [real ,in]

  • prf [gps_profile ,out]

Called from

oer_seterrgpsro(), oop_gpsro_nl(), oop_calcgpsrojacobian()

Call to

gpsradii(), gpsro_eotvos_dh(), gpscompressibility()

function  gps_mod/gpscompressibility(p, t, q)
Arguments
  • p [gps_diff ,in]

  • t [gps_diff ,in]

  • q [gps_diff ,in]

Return

gpscompressibility [gps_diff ]

Called from

calcheight_gsv_nl_vcode5xxx(), calcpressure_gsv_nl_vcode2100x(), calcpressure_col_nl_vcode2100x(), calcheightcoeff_gsv(), calcheightcoeff_col(), gps_struct1sw(), gps_struct1sw_v2()

subroutine  gps_mod/gpsro_eotvos_dh(ngpslev, rlat, ralt, ruu, rvv, ralt_e)
Arguments
  • ngpslev [integer ,in,]

  • rlat [real ,in]

  • ralt (ngpslev) [real ,in]

  • ruu (ngpslev) [real ,in]

  • rvv (ngpslev) [real ,in]

  • ralt_e (ngpslev) [real ,out]

Called from

gps_struct1sw_v2()

subroutine  gps_mod/gps_structztd(ngpslev, rlat, rlon, rmt, rp0, rpp, rdp, rtt, rhu, lbevis, refopt, prf)
Purpose

This subroutine fills GPS profiles of type gps_profilezd (for ZTD operator)

Arguments

Arguments
  • refopt [integer ,in] ::

    =1 –> use conventional expression for refractivity N

    =2 –> use new Aparicio & Laroche refractivity N

  • ngpslev [integer ,in] :: number of profile levels

  • rlat [real ,in] :: radians

  • rlon [real ,in] :: radians

  • rmt [real ,in] :: height (ASL) of model surface (m)

  • rp0 [real ,in] :: surface pressure (Pa)

  • rpp (ngpssize) [real ,in] :: pressure P at each level (Pa)

  • rdp (ngpssize) [real ,in] :: dP/dP0 at each level (Pa/Pa)

  • rtt (ngpssize) [real ,in] :: temperature T at each level (C)

  • rhu (ngpssize) [real ,in] :: q at each level

  • lbevis [logical ,in] :: determines which set of refractivity constants to use (Bevis or Rueger)

  • prf [gps_profilezd ,out]

Call to

gps_gravitysrf(), gps_gravityalt()

subroutine  gps_mod/gps_structztd_v2(ngpslev, rlat, rlon, rmt, rp0, rpp, rtt, rhu, ralt, lbevis, refopt, prf)
Purpose

This subroutine fills GPS profiles of type gps_profilezd (for ZTD operator)

Arguments

Arguments
  • refopt [integer ,in] ::

    1 –> use conventional expression for refractivity N

    =2 –> use new Aparicio & Laroche refractivity N

  • ngpslev [integer ,in] :: number of profile levels

  • rlat [real ,in] :: radians

  • rlon [real ,in] :: radians

  • rmt [real ,in] :: height (ASL) of model surface (m)

  • rp0 [real ,in] :: surface pressure (Pa)

  • rpp (ngpssize) [real ,in] :: pressure P at each level (Pa)

  • rtt (ngpssize) [real ,in] :: temperature T at each level (C)

  • rhu (ngpssize) [real ,in] :: q at each level

  • ralt (ngpssize) [real ,in] :: altitude at each level

  • lbevis [logical ,in] :: determines which set of refractivity constants to use (Bevis or Rueger)

  • prf [gps_profilezd ,out]

Called from

oop_gpsgb_nl(), oop_calcgpsgbjacobian(), setfgegps()

Call to

gps_gravityalt()

subroutine  gps_mod/gpscmp(prf, cmp)
Arguments
  • prf [gps_profile ,in]

  • cmp (*) [gps_diff ,out]

Called from

gpsden()

subroutine  gps_mod/gpsden(prf, den)
Arguments
  • prf [gps_profile ,in]

  • den (*) [gps_diff ,out]

Called from

gpsbvf()

Call to

gpscmp()

subroutine  gps_mod/gpsbvf(prf, bvf)
Arguments
  • prf [gps_profile ,in]

  • bvf (ngpssize) [gps_diff ,out]

Called from

gpsbvfopv()

Call to

gpsden(), gps_gravityalt()

subroutine  gps_mod/gps_refopv(hv, nval, prf, refopv)
Purpose

GPSRO Refractivity operator

Arguments
  • hv (*) [real ,in] :: an array of height values

  • nval [integer ,in]

  • prf [gps_profile ,in] :: local profile

  • refopv (*) [gps_diff ,out] :: an array of refractivity values (with derivatives)

Called from

oer_seterrgpsro(), oop_gpsro_nl(), oop_calcgpsrojacobian(), setfgedif()

subroutine  gps_mod/gpshgtopv(pr, prf, hgtopv)
Arguments
  • pr [real ,in]

  • prf [gps_profile ,in]

  • hgtopv [gps_diff ,out]

subroutine  gps_mod/gpstemopv(pr, nval, prf, temopv)
Arguments
  • pr (*) [real ,in]

  • nval [integer ,in]

  • prf [gps_profile ,in]

  • temopv (*) [gps_diff ,out]

subroutine  gps_mod/gpswmropv(pr, prf, wmropv)
Arguments
  • pr (*) [real ,in]

  • prf [gps_profile ,in]

  • wmropv (*) [gps_diff ,out]

subroutine  gps_mod/gpsbvfopv(hv, nval, prf, bvfopv)
Arguments
  • hv (*) [real ,in]

  • nval [integer ,in]

  • prf [gps_profile ,in]

  • bvfopv (*) [gps_diff ,out]

Call to

gpsbvf()

subroutine  gps_mod/gps_ztdopv(hv, prf, lbevis, dzmin, ztdopv, rpobs, mode)
Purpose

GB-GPS ZTD operator

Arguments

Arguments
  • dzmin [real ,in] :: Minimum DZ = Zobs-Zmod (m) for which DZ adjustment to ZTD will be made when Zobs < Zmod.

  • mode [integer ,in] ::

    1 = normal mode: use stored ZTD profiles

    2 = Vedel & Huang ZTD formulation: ZTD = ZHD(Pobs) + ZWD

    Pobs computed from P0 using CMC hydrostatic extrapolation.

  • hv [real ,in] :: height of ZTD observation Zobs (m)

  • prf [gps_profilezd ,in] :: local model profile (type gps_profilezd)

  • lbevis [logical ,in] :: true/false –> use Bevis instead of Rueger k values

  • ztdopv [gps_diff ,out] :: ZTD (m) at height of observation (with derivatives)

  • rpobs [real ,out] :: Pressure (Pa) at height of observation

Called from

oop_gpsgb_nl(), oop_calcgpsgbjacobian(), setfgegps()

Call to

gps_gravityalt()

subroutine  gps_mod/gps_pw(prf, pw)
Purpose

To compute lowest level PW (kg/m2) using layer mean Q and layer delta_p (Pa)

Arguments
  • prf [gps_profilezd ,in]

  • pw [real ,out]

Called from

oop_gpsgb_nl(), oop_calcgpsgbjacobian()

Call to

gps_gravityalt()

subroutine  gps_mod/gpsbend(prf)
Arguments

prf [gps_profile ,inout]

Called from

gpsbndopv()

subroutine  gps_mod/gpsbend1(prf)
Arguments

prf [gps_profile ,inout]

Call to

gpsbendlayer()

subroutine  gps_mod/gpsbendlayer(ra, th, nu0, nexp, angle0, angle, bend, lok)
Arguments

Arguments
  • nu0 [gps_diff ,in] :: nexp: Refraction index coefs: n=1+nu0*exp(nexp*(r-ra));

  • nexp [gps_diff ,in] :: in in 1/m

  • ra [gps_diff ,in] :: Radius of inner shell (m)

  • th [gps_diff ,in] :: Shell thickness (m)

  • angle0 [gps_diff ,in] :: Ray angle above horizon at ra

  • angle [gps_diff ,out] :: Ray angle above horizon at rb

  • bend [gps_diff ,out] :: Accumulated bending over the layer

  • lok [logical ,out]

Called from

gpsbend1()

Call to

gpsbendunit()

subroutine  gps_mod/gpsbendunit(ra, th, nu0, nexp, angle0, angle, bend, lok)
Arguments

Arguments
  • nu0 [gps_diff ,in] :: nexp: Refraction index coefs: n=1+nu0*exp(nexp*(r-ra));

  • nexp [gps_diff ,in] :: in 1/m

  • ra [gps_diff ,in] :: Radius of inner shell (m)

  • th [gps_diff ,in] :: Shell thickness (m)

  • angle0 [gps_diff ,in] :: Ray angle above horizon at ra

  • angle [gps_diff ,out] :: Ray angle above horizon at rb

  • bend [gps_diff ,inout] :: Accumulated bending over the layer

  • lok [logical ,out]

Called from

gpsbendlayer()

subroutine  gps_mod/gpsbndopv(impv, azmv, nval, prf, bstv)
Arguments
  • impv (*) [real ,in]

  • azmv (*) [real ,in]

  • nval [integer ,in]

  • prf [gps_profile ,inout]

  • bstv (*) [gps_diff ,out]

Call to

gpsbend()

subroutine  gps_mod/gps_bndopv1(impv, azmv, nval, prf, bstv)
Purpose

Computation of the observation operator for Bending

Note

The Operator is based from Assimilation experiments withCHAMP GPS radio occultation measurements (S. B. HEALY and J.-N. THEPAUT, 2005)

Arguments
  • impv (*) [real ,in]

  • azmv (*) [real ,in]

  • nval [integer ,in]

  • prf [gps_profile ,in]

  • bstv (*) [gps_diff ,out]

Called from

oer_seterrgpsro(), oop_gpsro_nl(), oop_calcgpsrojacobian(), setfgedif()

subroutine  gps_mod/gps_setupro()
Called from

inn_setupobs()

Call to

utl_abort()

function  gps_mod/gps_iprofile_from_index(index_bn)
Arguments

index_bn [integer ,in]

Return

gps_iprofile_from_index [integer ]

Called from

bgck_gpsro(), oer_seterrgpsro(), oop_gpsro_nl(), oop_calcgpsrojacobian(), setfgedif()

subroutine  gps_mod/gps_setupgb()
Purpose

Initialisation of ground-based GPS - to read and to initialize GB-GPS namelist parameters and print information on options selected.

Called from

inn_setupobs()

Call to

utl_abort()

function  gps_mod/gps_iztd_from_index(index_bn)
Arguments

index_bn [integer ,in]

Return

gps_iztd_from_index [integer ]

Called from

oop_calcgpsgbjacobian()