UFO
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_default_constr (self)
 
subroutine, public ufo_geovals_setup (self, vars, nlocs, nvars, nvals)
 Initializes and allocates self GeoVaLs with nlocs number of locations for vars variables. nvals array contains number of values to allocate for each of the variables. More...
 
subroutine, public ufo_geovals_partial_setup (self, vars, nlocs)
 Deprecated, use ufo_geovals_setup instead. Partially initializes self GeoVaLs with nlocs number of locations vars variables. Does not allocate geovals(i)vals. More...
 
subroutine, public ufo_geovals_allocate (self, vars, nlevels)
 Deprecated. Rely on ufo_geovals_setup to allocate GeoVaLs instead. Allocates GeoVaLs for vars variables with nlevels number of levels. If the GeoVaLs for this variable were allocated before with different size, aborts. More...
 
subroutine, public ufo_geovals_delete (self)
 
subroutine, public ufo_geovals_get_var (self, varname, geoval)
 
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_profmult (self, nlocs, values)
 
subroutine, public ufo_geovals_assign (self, rhs)
 
subroutine, public ufo_geovals_reorderzdir (self, varname, zdir)
 
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_schurmult (self, other)
 Schur product of two GeoVaLs objects. More...
 
subroutine, public ufo_geovals_copy (self, other)
 Copy one GeoVaLs object into another. More...
 
subroutine, public ufo_geovals_copy_one (self, other, loc_index)
 Copy one location from GeoVaLs into a new object. 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, private ufo_geovals_reset_sec_arg (self, other, nlocs)
 
subroutine, public ufo_geovals_split (self, other1, other2)
 
subroutine, public ufo_geovals_merge (self, other1, other2)
 
subroutine, public ufo_geovals_minmaxavg (self, kobs, kvar, 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, loc_multiplier, c_obspace, vars)
 
subroutine, public ufo_geovals_write_netcdf (self, filename)
 
subroutine check (action, status)
 
subroutine, public ufo_geovals_print (self, iobs)
 

Variables

integer, parameter max_string =800
 

Function/Subroutine Documentation

◆ check()

subroutine ufo_geovals_mod::check ( character (len=*), intent(in)  action,
integer, intent(in)  status 
)

Definition at line 1182 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_abs()

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

Definition at line 254 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 448 of file ufo_geovals_mod.F90.

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

◆ ufo_geovals_allocate()

subroutine, public ufo_geovals_mod::ufo_geovals_allocate ( type(ufo_geovals), intent(inout)  self,
type(oops_variables), intent(in)  vars,
integer, intent(in)  nlevels 
)

Deprecated. Rely on ufo_geovals_setup to allocate GeoVaLs instead. Allocates GeoVaLs for vars variables with nlevels number of levels. If the GeoVaLs for this variable were allocated before with different size, aborts.

Definition at line 143 of file ufo_geovals_mod.F90.

Here is the call graph for this function:
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(ufo_locations), 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 659 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 357 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 566 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_one()

subroutine, public ufo_geovals_mod::ufo_geovals_copy_one ( type(ufo_geovals), intent(inout)  self,
type(ufo_geovals), intent(in)  other,
integer, intent(in)  loc_index 
)

Copy one location from GeoVaLs into a new object.

Definition at line 600 of file ufo_geovals_mod.F90.

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

◆ ufo_geovals_default_constr()

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

Definition at line 67 of file ufo_geovals_mod.F90.

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 184 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 487 of file ufo_geovals_mod.F90.

Here is the call graph for this function:
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(len=*), intent(in)  varname,
type(ufo_geoval), intent(inout), pointer  geoval 
)

Definition at line 205 of file ufo_geovals_mod.F90.

Here is the call 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 949 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_merge()

subroutine, public ufo_geovals_mod::ufo_geovals_merge ( type(ufo_geovals), intent(inout)  self,
type(ufo_geovals), intent(in)  other1,
type(ufo_geovals), intent(in)  other2 
)

Definition at line 885 of file ufo_geovals_mod.F90.

Here is the call graph for this function:
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,
integer, intent(in)  kvar,
real(kind_real), intent(inout)  pmin,
real(kind_real), intent(inout)  pmax,
real(kind_real), intent(inout)  prms 
)

Definition at line 913 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 774 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_partial_setup()

subroutine, public ufo_geovals_mod::ufo_geovals_partial_setup ( type(ufo_geovals), intent(inout)  self,
type(oops_variables), intent(in)  vars,
integer, intent(in)  nlocs 
)

Deprecated, use ufo_geovals_setup instead. Partially initializes self GeoVaLs with nlocs number of locations vars variables. Does not allocate geovals(i)vals.

Definition at line 114 of file ufo_geovals_mod.F90.

Here is the call graph for this function:
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 1199 of file ufo_geovals_mod.F90.

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

◆ ufo_geovals_profmult()

subroutine, public ufo_geovals_mod::ufo_geovals_profmult ( type(ufo_geovals), intent(inout)  self,
integer(c_int), intent(in)  nlocs,
real(c_float), dimension(nlocs), intent(in)  values 
)

Definition at line 335 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_random()

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

Definition at line 295 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,
integer, intent(in)  loc_multiplier,
type(c_ptr), intent(in)  c_obspace,
type(oops_variables), intent(in)  vars 
)

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

read 1d variable

allocate geoval for this variable

read 2d variable

allocate geoval for this variable

only 1d & 2d vars

Definition at line 991 of file ufo_geovals_mod.F90.

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

◆ ufo_geovals_reorderzdir()

subroutine, public ufo_geovals_mod::ufo_geovals_reorderzdir ( type(ufo_geovals), intent(inout)  self,
character(len=*), intent(in)  varname,
character(len=*), intent(in)  zdir 
)

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_reset_sec_arg()

subroutine, private ufo_geovals_mod::ufo_geovals_reset_sec_arg ( type(ufo_geovals), intent(in)  self,
type(ufo_geovals), intent(inout)  other,
integer, intent(in)  nlocs 
)
private

Definition at line 826 of file ufo_geovals_mod.F90.

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 270 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 313 of file ufo_geovals_mod.F90.

Here is the caller graph for this function:

◆ ufo_geovals_schurmult()

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

Schur product of two GeoVaLs objects.

Definition at line 526 of file ufo_geovals_mod.F90.

Here is the call graph for this function:
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(oops_variables), intent(in)  vars,
integer, intent(in)  nlocs,
integer, intent(in)  nvars,
integer(c_size_t), dimension(nvars), intent(in)  nvals 
)

Initializes and allocates self GeoVaLs with nlocs number of locations for vars variables. nvals array contains number of values to allocate for each of the variables.

Definition at line 82 of file ufo_geovals_mod.F90.

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

◆ ufo_geovals_split()

subroutine, public ufo_geovals_mod::ufo_geovals_split ( type(ufo_geovals), intent(in)  self,
type(ufo_geovals), intent(inout)  other1,
type(ufo_geovals), intent(inout)  other2 
)

Definition at line 852 of file ufo_geovals_mod.F90.

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

◆ ufo_geovals_write_netcdf()

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

Definition at line 1146 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 238 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 19 of file ufo_geovals_mod.F90.