FV3 Bundle
ufo_geovals_mod Module Reference

Data Types

type  ufo_geoval
 type to hold interpolated field for one variable, one observation More...
 
type  ufo_geovals
 type to hold interpolated fields required by the obs operators More...
 

Functions/Subroutines

subroutine, public ufo_geovals_init (self)
 
subroutine, public ufo_geovals_setup (self, vars, nobs)
 
subroutine, public ufo_geovals_delete (self)
 
subroutine, public ufo_geovals_get_var (self, varname, geoval, status)
 
subroutine, public ufo_geovals_allocone (self)
 
subroutine, public ufo_geovals_zero (self)
 
subroutine, public ufo_geovals_abs (self)
 
subroutine, public ufo_geovals_rms (self, vrms)
 
subroutine, public ufo_geovals_random (self)
 
subroutine, public ufo_geovals_scalmult (self, zz)
 
subroutine, public ufo_geovals_assign (self, rhs)
 
subroutine, public ufo_geovals_add (self, other)
 Sum of two GeoVaLs objects. More...
 
subroutine, public ufo_geovals_diff (self, other)
 Difference between two GeoVaLs objects. More...
 
subroutine, public ufo_geovals_copy (self, other)
 Copy one GeoVaLs object into another. More...
 
subroutine, public ufo_geovals_analytic_init (self, locs, ic)
 Initialize a GeoVaLs object based on an analytic state. More...
 
subroutine, public ufo_geovals_normalize (self, other)
 Normalization of one GeoVaLs object by another. More...
 
subroutine, public ufo_geovals_dotprod (self, other, gprod)
 
subroutine, public ufo_geovals_minmaxavg (self, kobs, pmin, pmax, prms)
 
subroutine, public ufo_geovals_maxloc (self, mxval, iobs, ivar)
 Location where the summed geovals value is maximum. More...
 
subroutine, public ufo_geovals_read_netcdf (self, filename, vars)
 
subroutine, public ufo_geovals_print (self, iobs)
 

Variables

integer, parameter max_string =800
 

Function/Subroutine Documentation

◆ ufo_geovals_abs()

subroutine, public ufo_geovals_mod::ufo_geovals_abs ( type(ufo_geovals), intent(inout)  self)

Definition at line 187 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_add()

subroutine, public ufo_geovals_mod::ufo_geovals_add ( type(ufo_geovals), intent(inout)  self,
type(ufo_geovals), intent(in)  other 
)

Sum of two GeoVaLs objects.

Definition at line 317 of file ufo_geovals_mod.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ufo_geovals_allocone()

subroutine, public ufo_geovals_mod::ufo_geovals_allocone ( type(ufo_geovals), intent(inout)  self)

Definition at line 149 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_analytic_init()

subroutine, public ufo_geovals_mod::ufo_geovals_analytic_init ( type(ufo_geovals), intent(inout)  self,
type(ioda_locs), intent(in)  locs,
character(*), intent(in)  ic 
)

Initialize a GeoVaLs object based on an analytic state.

ufo_geovals_analytic_init_c() takes an existing ufo::GeoVaLs object and fills in values based on one of several analytic solutions. This initialization is intended to be used with the TestStateInterpolation() test; see there for further information.

Currently implemented options for analytic_init include:

  • dcmip-test-1-1: 3D deformational flow
  • dcmip-test-1-2: 3D Hadley-like meridional circulation
  • dcmip-test-3-1: Non-orographic gravity waves on a small planet
  • dcmip-test-4-0: Baroclinic instability
Warning
Currently only temperature is implemented. For variables other than temperature, the input GeoVaLs object is not changed. This effectively disables the interpolation test for that variable by setting the normalized error to zero.
Currently there is no conversion between temperature and virtual temperature
Date
May, 2018: Created by M. Miesch (JCSDA)
June, 2018: Added dcmip-test-4.0 (M. Miesch, JCSDA)
See also
test::TestStateInterpolation()

Definition at line 454 of file ufo_geovals_mod.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ufo_geovals_assign()

subroutine, public ufo_geovals_mod::ufo_geovals_assign ( type(ufo_geovals), intent(inout)  self,
type(ufo_geovals), intent(in)  rhs 
)

Definition at line 276 of file ufo_geovals_mod.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ufo_geovals_copy()

subroutine, public ufo_geovals_mod::ufo_geovals_copy ( type(ufo_geovals), intent(in)  self,
type(ufo_geovals), intent(inout)  other 
)

Copy one GeoVaLs object into another.

Definition at line 396 of file ufo_geovals_mod.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ufo_geovals_delete()

subroutine, public ufo_geovals_mod::ufo_geovals_delete ( type(ufo_geovals), intent(inout)  self)

Definition at line 95 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_diff()

subroutine, public ufo_geovals_mod::ufo_geovals_diff ( type(ufo_geovals), intent(inout)  self,
type(ufo_geovals), intent(in)  other 
)

Difference between two GeoVaLs objects.

Definition at line 356 of file ufo_geovals_mod.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ufo_geovals_dotprod()

subroutine, public ufo_geovals_mod::ufo_geovals_dotprod ( type(ufo_geovals), intent(in)  self,
type(ufo_geovals), intent(in)  other,
real(kind_real), intent(inout)  gprod 
)

Definition at line 607 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_get_var()

subroutine, public ufo_geovals_mod::ufo_geovals_get_var ( type(ufo_geovals), intent(in), target  self,
character(maxvarlen), intent(in)  varname,
type(ufo_geoval), intent(inout), pointer  geoval,
integer, intent(out), optional  status 
)

Definition at line 118 of file ufo_geovals_mod.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ufo_geovals_init()

subroutine, public ufo_geovals_mod::ufo_geovals_init ( type(ufo_geovals), intent(inout)  self)

Definition at line 60 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_maxloc()

subroutine, public ufo_geovals_mod::ufo_geovals_maxloc ( type(ufo_geovals), intent(in)  self,
real(kind_real), intent(inout)  mxval,
integer, intent(inout)  iobs,
integer, intent(inout)  ivar 
)

Location where the summed geovals value is maximum.

This routine computes the rms value over the vertical profile for each location and observation then returns the location number and the variable number where this rms value is maximum. Intended for use with the State interpotation test in which the input GeoVaLs object is a nondimensional, positive-definite error measurement.

Definition at line 667 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_minmaxavg()

subroutine, public ufo_geovals_mod::ufo_geovals_minmaxavg ( type(ufo_geovals), intent(in)  self,
integer, intent(inout)  kobs,
real(kind_real), intent(inout)  pmin,
real(kind_real), intent(inout)  pmax,
real(kind_real), intent(inout)  prms 
)

Definition at line 645 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_normalize()

subroutine, public ufo_geovals_mod::ufo_geovals_normalize ( type(ufo_geovals), intent(inout)  self,
type(ufo_geovals), intent(in)  other 
)

Normalization of one GeoVaLs object by another.

This is a normalization operator that first computes the normalization factor for each variable based on the rms amplitude of that variable across all locations in the reference GeoVaLs object (other). Then each element of the input GeoVals object (self) is divided by these normalization factors. The operation is done in place. So, after execution, the input GeoVaLs object will be nondimensional.

Warning
If the reference variable is identially zero across all locations, then the result of this operatution is set to zero for that variable. This is to used to bypass variables that do not have a reference value in the State interpolation test.

Compute normalization factors for the errors based on the rms amplitude of each variable across all of the selected locations. Use the "other" GeoVaLs object as a reference, since this may be the exact analytic answer

Definition at line 555 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_print()

subroutine, public ufo_geovals_mod::ufo_geovals_print ( type(ufo_geovals), intent(in)  self,
integer, intent(in)  iobs 
)

Definition at line 842 of file ufo_geovals_mod.F90.

Here is the call graph for this function:

◆ ufo_geovals_random()

subroutine, public ufo_geovals_mod::ufo_geovals_random ( type(ufo_geovals), intent(inout)  self)

Definition at line 234 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_read_netcdf()

subroutine, public ufo_geovals_mod::ufo_geovals_read_netcdf ( type(ufo_geovals), intent(inout)  self,
character(max_string), intent(in)  filename,
type(ufo_vars), intent(in)  vars 
)

round-robin distribute the observations to PEs Calculate how many obs. on each PE

get dimensions of variable

get variable type

read 1d vars (only double precision and integer for now)

allocate geoval for this variable

read 2d vars (only double precision and integer for now)

allocate geoval for this variable

only 1d & 2d vars

Definition at line 705 of file ufo_geovals_mod.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ufo_geovals_rms()

subroutine, public ufo_geovals_mod::ufo_geovals_rms ( type(ufo_geovals), intent(in)  self,
real(kind_real), intent(inout)  vrms 
)

Definition at line 206 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_scalmult()

subroutine, public ufo_geovals_mod::ufo_geovals_scalmult ( type(ufo_geovals), intent(inout)  self,
real(kind_real), intent(in)  zz 
)

Definition at line 254 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_setup()

subroutine, public ufo_geovals_mod::ufo_geovals_setup ( type(ufo_geovals), intent(inout)  self,
type(ufo_vars), intent(in)  vars,
integer, intent(in)  nobs 
)

Definition at line 73 of file ufo_geovals_mod.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ufo_geovals_zero()

subroutine, public ufo_geovals_mod::ufo_geovals_zero ( type(ufo_geovals), intent(inout)  self)

Definition at line 168 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

Variable Documentation

◆ max_string

integer, parameter ufo_geovals_mod::max_string =800
private

Definition at line 17 of file ufo_geovals_mod.F90.