stateToColumn_mod¶
Dependency Diagrams:
![]()
Direct Dependency Diagram¶
![]()
Reverse Dependency Diagram¶
Description
MODULE stateToColumn_mod (prefix=’s2c’ category=’4. Data Object transformations’)
- Purpose
Non-linear, tangent-linear and adjoint versions of horizontal-temporal interpolation between a gridStateVector object and a columnData object.
Quick access
- Types
- Routines
checkcolumnstatevectormatch(),gettovsfootprintradius(),latlonchecks(),latlonchecksanlgrid(),myezsint_ad(),myezsint_nl(),myezsint_r8_nl(),myezsint_tl(),myezuvint_ad(),myezuvint_nl(),myezuvint_tl(),pressureprofilemonotonicitycheck(),s2c_ad(),s2c_bgcheck_bilin(),s2c_deallocinterpinfo(),s2c_getfootprintradius(),s2c_getweightsandgridpointindexes(),s2c_nl(),s2c_rejectzeroweightobs(),s2c_setupbilinearinterp(),s2c_setupfootprintinterp(),s2c_setuphorizinterp(),s2c_setupinterpinfo(),s2c_setuplakeinterp(),s2c_setupnearestneighbor(),s2c_tl()Needed modules
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’)
mpi(mpi_status_size())
midasmpi_mod: MODULE midasMpi_mod (prefix=’mmpi’ category=’8. Low-level utilities and constants’)
codeprecision_mod: MODULE codePrecision_mod (prefix=’pre’ category=’8. Low-level utilities and constants’)
gridstatevector_mod: MODULE gridStateVector_mod (prefix=’gsv’ category=’6. High-level data objects’)
obsspacedata_mod: MODULE obsSpaceData_mod (prefix=’obs’ category=’6. High-level data objects’)
columndata_mod: MODULE columnData_mod (prefix=’col’ category=’6. High-level data objects’)
horizontalcoord_mod: MODULE horizontalCoord_mod (prefix=’hco’ category=’7. Low-level data objects’)
obstimeinterp_mod: MODULE obsTimeInterp_mod (prefix=’oti’ category=’4. Data Object transformations’)
windrotation_mod: MODULE windRotation_mod (prefix=’uvr’ category=’4. Data Object transformations’)
utilities_mod: MODULE utilities_mod (prefix=’utl’ category=’8. Low-level utilities and constants’)
gridvariabletransforms_mod: MODULE gridVariableTransforms_mod (prefix=’gvt’ category=’4. Data Object transformations’)
varnamelist_mod: MODULE varNameList_mod (prefix=’vnl’ category=’7. Low-level data objects’)
slantprofilelatlon_mod: MODULE slantProfileLatLon_mod (prefix=’slp’ category=’5. Observation operators’)
tovsnl_mod: MODULE tovsNL_mod (prefix=’tvs’ category=’5. Observation operators’)
codtyp_mod: MODULE codtyp_mod (prefix=’codtyp’ category=’8. Low-level utilities and constants’)
getgridposition_mod: MODULE getGridPosition_mod (prefix=’gpos’ category=’8. Low-level utilities and constants’)
kdtree2_mod: MODULE kdTree2_mod (prefix=’kdtree2’ category=’8. Low-level utilities and constants’)
calcheightandpressure_mod: MODULE calcHeightAndPressure_mod (prefix=’czp’ category=’4. Data Object transformations’)
humiditylimits_mod: MODULE humidityLimits_mod (prefix=’qlim’ category=’4. Data Object transformations’)Types
- type statetocolumn_mod/struct_stepprocdata¶
lat-lon location of observations to be interpolated
- Type fields
% allheaderindex (*) [integer ,pointer]
% alllat (*,*) [real ,pointer]
% alllatrot (*,*,*) [real ,pointer]
% alllon (*,*) [real ,pointer]
% alllonrot (*,*,*) [real ,pointer]
% depotindexbeg (*,*,*) [integer ,pointer]
% depotindexend (*,*,*) [integer ,pointer]
% null [real ,pointer]
- type statetocolumn_mod/struct_interpinfo¶
- Type fields
% allnumheaderused (*,*) [integer ,pointer]
% hco [struct_hco ,pointer]
% initialized [logical ]
% inputstatevectortype [character ]
% interpweightdepot (*) [real ,allocatable] :: (depotIndex)
% latindexdepot (*) [integer ,pointer] :: (depotIndex)
% lonindexdepot (*) [integer ,pointer] :: (depotIndex)
% null [struct_hco ,pointer]
% oti [struct_oti ,pointer]
% stepprocdata (*,*) [struct_stepprocdata ,allocatable] :: (proc, step)
% uvr [struct_uvr ,pointer]
Variables
Subroutines and functions
- subroutine statetocolumn_mod/pressureprofilemonotonicitycheck(obsspacedata, column)¶
- Purpose
Check for non monotonic pressure profiles that can be computed in slantpathmode
- Arguments
obsspacedata [struct_obs ,inout]
column [struct_columndata ,inout]
- Called from
- Call to
obs_getheaderindex(),col_getcolumn(),utl_abort(),obs_headset_i(),obs_headelem_i(),obs_bodyset_i(),obs_bodyelem_i()
- subroutine statetocolumn_mod/latlonchecksanlgrid(obsspacedata, hco_core, moveobsatpole)¶
- Purpose
Check the lat/lon of observations and modify if necessary
- Arguments
obsspacedata [struct_obs ,inout]
hco_core [struct_hco ,in,pointer]
moveobsatpole [logical ,in]
- Called from
- Call to
obs_numheader(),obs_headelem_r(),gpos_getpositionxy(),obs_headelem_i(),obs_bodyset_i(),obs_headset_i()
- subroutine statetocolumn_mod/s2c_setupinterpinfo(interpinfo, obsspacedata, statevector, headerindexbeg, headerindexend, timeinterptype, rejectoutsideobs, inputstatevectortype[, lastcall_opt])¶
- Purpose
Setup all of the information needed to quickly perform the horizontal interpolation to the observation locations.
- Arguments
interpinfo [struct_interpinfo ,out]
obsspacedata [struct_obs ,inout]
statevector [struct_gsv ,in,target] :: IN
headerindexbeg [integer ,in]
headerindexend [integer ,in]
timeinterptype [character ,in]
rejectoutsideobs [logical ,in] :: IN
inputstatevectortype [character ,in]
- Options
lastcall_opt [logical ,in,]
- Called from
- Call to
utl_isnamelistpresent(),utl_abort(),oti_setup(),oti_gettimeinterpweight(),gsv_varexist(),uvr_setup(),gsv_getnumlev(),gsv_isallocated(),gsv_varnameslist(),gsv_allocate(),gsv_transposevarslevstotiles(),gsv_deallocate(),gvt_getstatevectortrial(),utl_tmg_start(),gsv_transposetilestompiglobal(),utl_tmg_stop(),s2c_getfootprintradius(),obs_headelem_r(),obs_headelem_i(),tvs_isidburptovs(),slp_calclatlontovs(),codtyp_get_codtyp(),slp_calclatlonro(),slp_calclatlonradar(),latlonchecks(),gsv_getlevfromk(),vnl_varlevelfromvarname(),gsv_getvarnamefromk(),kdtree2_3dposition(),kdtree2_create(),gpos_getpositionxy(),uvr_rotatelatlon(),s2c_setuphorizinterp(),s2c_rejectzeroweightobs(),kdtree2_destroy()
- subroutine statetocolumn_mod/s2c_tl(statevector_in, columnanlinc, columntrlonanlinclev, obsspacedata)¶
- Purpose
Tangent linear version of the horizontal interpolation, used for the increment (or perturbations).
- Arguments
statevector_in [struct_gsv ,in,target]
columnanlinc [struct_columndata ,inout]
columntrlonanlinclev [struct_columndata ,inout]
obsspacedata [struct_obs ,inout]
- Called from
aer_analysiserror(),aer_dayssincelastobs(),fso_ensemble(),simvar(),osd_calcinflation(),ose_compute_hbht_ensemble(),midas_diaghbht- Call to
utl_tmg_start(),gsv_isallocated(),utl_abort(),hco_equal(),s2c_deallocinterpinfo(),checkcolumnstatevectormatch(),gsv_allocate(),gsv_getdatakind(),gsv_copy(),gsv_varnameslist(),gsv_transposetilestovarslevs(),obs_numheader(),utl_tmg_stop(),s2c_setupinterpinfo(),col_getallcolumns(),gsv_getvarnamefromk(),myezuvint_tl(),myezsint_tl(),oti_gettimeinterpweightmpiglobal(),gsv_getlevfromk(),gsv_deallocate(),pressureprofilemonotonicitycheck()
- subroutine statetocolumn_mod/s2c_ad(statevector_out, columnanlinc, columntrlonanlinclev, obsspacedata)¶
- Purpose
Adjoint version of the horizontal interpolation, used for the cost function gradient with respect to the increment.
- Arguments
statevector_out [struct_gsv ,inout,target]
columnanlinc [struct_columndata ,inout]
columntrlonanlinclev [struct_columndata ,inout]
obsspacedata [struct_obs ,inout]
- Called from
- Call to
utl_tmg_start(),gsv_isallocated(),utl_abort(),hco_equal(),s2c_deallocinterpinfo(),gsv_allocate(),gsv_getdatakind(),gsv_varnameslist(),gsv_zero(),obs_numheader(),utl_tmg_stop(),s2c_setupinterpinfo(),col_getallcolumns(),gsv_getvarnamefromk(),gsv_getlevfromk(),oti_gettimeinterpweightmpiglobal(),myezuvint_ad(),myezsint_ad(),gsv_transposetilestovarslevsad(),gsv_copy(),gsv_deallocate(),pressureprofilemonotonicitycheck()
- subroutine statetocolumn_mod/s2c_nl(statevector, obsspacedata, column, hco_core, timeinterptype[, varname_opt[, numobsbatches_opt[, dealloc_opt[, moveobsatpole_opt[, besilent_opt]]]]])¶
- Purpose
Non-linear version of the horizontal interpolation, used for a full field (usually the background state when computing the innovation vector).
- Arguments
statevector [struct_gsv ,inout]
obsspacedata [struct_obs ,inout]
column [struct_columndata ,inout]
hco_core [struct_hco ,in,pointer]
timeinterptype [character ,in]
- Options
varname_opt [character ,in,]
numobsbatches_opt [integer ,in,]
dealloc_opt [logical ,in,]
moveobsatpole_opt [logical ,in,]
besilent_opt [logical ,in,]
- Called from
bmat1d_setupbens(),ocebg_bgchecksst(),bcs_getradiosondeweight(),inn_setupcolumnsontrllev(),omf_ominusfens(),oer_seterrbackscatanisice(),sstb_getbiascorrection(),midas_ensembleh,midas_letkf- Call to
utl_tmg_start(),utl_tmg_stop(),gsv_isallocated(),utl_abort(),hco_equal(),s2c_deallocinterpinfo(),checkcolumnstatevectormatch(),gsv_varnameslist(),gsv_allocate(),gsv_zero(),gsv_transposetilestovarslevs(),latlonchecksanlgrid(),col_getallcolumns(),obs_numheader(),s2c_setupinterpinfo(),gsv_getvarnamefromk(),myezuvint_nl(),myezsint_nl(),oti_gettimeinterpweightmpiglobal(),col_varexist(),col_getcolumn(),qlim_getminvaluecloud(),qlim_getmaxvaluecloud(),gsv_getheightsfc(),myezsint_r8_nl(),col_setheightsfc(),gsv_deallocate(),pressureprofilemonotonicitycheck()
- subroutine statetocolumn_mod/myezsint_nl(column_out, field_in, interpinfo, kindex, stepindex, procindex)¶
- Purpose
Scalar horizontal interpolation, replaces the ezsint routine from rmnlib.
- Arguments
column_out (*) [real ,out]
field_in (*,*) [real ,in]
interpinfo [struct_interpinfo ,in]
kindex [integer ,in]
stepindex [integer ,in]
procindex [integer ,in]
- Called from
- subroutine statetocolumn_mod/myezsint_r8_nl(column_out, field_in, interpinfo, kindex, stepindex, procindex)¶
- Purpose
Scalar horizontal interpolation, replaces the ezsint routine from rmnlib.
- Arguments
column_out (*) [real ,out]
field_in (*,*) [real ,in]
interpinfo [struct_interpinfo ,in]
kindex [integer ,in]
stepindex [integer ,in]
procindex [integer ,in]
- Called from
- subroutine statetocolumn_mod/myezsint_tl(column_out, field_in, interpinfo, kindex, stepindex, procindex)¶
- Purpose
Scalar horizontal interpolation, replaces the ezsint routine from rmnlib.
- Arguments
column_out (*) [real ,out]
field_in (*,*) [real ,in]
interpinfo [struct_interpinfo ,in]
kindex [integer ,in]
stepindex [integer ,in]
procindex [integer ,in]
- Called from
- subroutine statetocolumn_mod/myezsint_ad(column_in, field_out, interpinfo, kindex, stepindex, procindex)¶
- Purpose
Adjoint of the scalar horizontal interpolation.
- Arguments
column_in (*) [real ,in]
field_out (*,*) [real ,inout]
interpinfo [struct_interpinfo ,in]
kindex [integer ,in]
stepindex [integer ,in]
procindex [integer ,in]
- Called from
- subroutine statetocolumn_mod/myezuvint_nl(column_out, varname, fielduu_in, fieldvv_in, interpinfo, kindex, stepindex, procindex)¶
- Purpose
Vector horizontal interpolation, replaces the ezuvint routine from rmnlib.
- Arguments
column_out (*) [real ,out]
varname [character ,in]
fielduu_in (*,*) [real ,in]
fieldvv_in (*,*) [real ,in]
interpinfo [struct_interpinfo ,in]
kindex [integer ,in]
stepindex [integer ,in]
procindex [integer ,in]
- Called from
- Call to
- subroutine statetocolumn_mod/myezuvint_tl(column_out, varname, fielduu_in, fieldvv_in, interpinfo, kindex, stepindex, procindex)¶
- Purpose
Vector horizontal interpolation, replaces the ezuvint routine from rmnlib.
- Arguments
column_out (*) [real ,out]
varname [character ,in]
fielduu_in (*,*) [real ,in]
fieldvv_in (*,*) [real ,in]
interpinfo [struct_interpinfo ,in]
kindex [integer ,in]
stepindex [integer ,in]
procindex [integer ,in]
- Called from
- Call to
- subroutine statetocolumn_mod/myezuvint_ad(column_in, varname, fielduu_out, fieldvv_out, interpinfo, kindex, stepindex, procindex)¶
- Purpose
Adjoint of the vector horizontal interpolation.
- Arguments
column_in (*) [real ,in]
varname [character ,in]
fielduu_out (*,*) [real ,inout]
fieldvv_out (*,*) [real ,inout]
interpinfo [struct_interpinfo ,in]
kindex [integer ,in]
stepindex [integer ,in]
procindex [integer ,in]
- Called from
- Call to
- subroutine statetocolumn_mod/s2c_bgcheck_bilin(column, statevector, obsspacedata)¶
- Purpose
Special version of s2c_tl used for background check. This should be replaced by direct call to s2c_tl. It is not general enough to be used for new analysis variables.
- Arguments
column [struct_columndata ,inout]
statevector [struct_gsv ,in]
obsspacedata [struct_obs ,in]
- Called from
- Call to
utl_tmg_start(),col_getnumcol(),obs_headelem_r(),gpos_getpositionxy(),utl_abort(),col_varexist(),col_getcolumn(),gsv_varexist(),gsv_getnumlevfromvarname(),gsv_getoffsetfromvarname(),utl_tmg_stop()
- subroutine statetocolumn_mod/s2c_setuphorizinterp(footprintradius_r4, interpinfo, statevector, headerindex, kindex, stepindex, procindex, numgridpt)¶
- Purpose
To identify the appropriate horizontal interpolation scheme based on footprint radius value. Then to call the corresponding subroutine to determine the grid points and their associated weights.
- Arguments
footprintradius_r4 [real ,in] :: (metres)
interpinfo [struct_interpinfo ,inout]
statevector [struct_gsv ,in]
headerindex [integer ,in]
kindex [integer ,in]
stepindex [integer ,in]
procindex [integer ,in]
numgridpt (interpinfo%hco%numsubgrid) [integer ,out]
- Called from
- Call to
s2c_setupfootprintinterp(),s2c_setupbilinearinterp(),s2c_setuplakeinterp(),s2c_setupnearestneighbor(),utl_abort()
- function statetocolumn_mod/s2c_getfootprintradius(obsspacedata, statevector, headerindex)¶
- Purpose
To determine the footprint radius (metres) of the observation. In the case of bilinear horizontal interpolation, the returned footprint is zero (default).
- Arguments
obsspacedata [struct_obs ,in]
statevector [struct_gsv ,in]
headerindex [integer ,in]
- Return
fpr [real ]
- Called from
- Call to
obs_getfamily(),obs_elem_c(),obs_headelem_i(),utl_abort(),codtyp_get_name(),gettovsfootprintradius()
- subroutine statetocolumn_mod/s2c_rejectzeroweightobs(interpinfo, obsspacedata, mykbeg, mykend)¶
- Purpose
To flag an observation in obsSpaceData as being rejected if it has zero interpolation weight (usually because an ocean obs is touching land) on any mpi task.
- Arguments
interpinfo [struct_interpinfo ,inout]
obsspacedata [struct_obs ,inout]
mykbeg [integer ,in]
mykend [integer ,in]
- Called from
- Call to
obs_numheader(),obs_headelem_i(),obs_bodyset_i(),obs_headset_i()
- subroutine statetocolumn_mod/s2c_setupbilinearinterp(interpinfo, statevector, headerindex, kindex, stepindex, procindex, numgridpt)¶
- Purpose
To determine the grid points and their associated weights for the bilinear horizontal interpolation. If mask is present we currently can only handle a single 2D mask (like for sea ice or SST analysis). Will abort if multiple ocean levels present.
- Arguments
interpinfo [struct_interpinfo ,inout]
statevector [struct_gsv ,in]
headerindex [integer ,in]
kindex [integer ,in]
stepindex [integer ,in]
procindex [integer ,in]
numgridpt (interpinfo%hco%numsubgrid) [integer ,out]
- Called from
- Call to
- subroutine statetocolumn_mod/s2c_setupfootprintinterp(fpr, interpinfo, statevector, headerindex, kindex, stepindex, procindex, numgridpt)¶
- Purpose
To determine the grid points and their associated weights for the footprint horizontal interpolation.
- Arguments
fpr [real ,in] :: footprint radius (metres)
interpinfo [struct_interpinfo ,inout]
statevector [struct_gsv ,in]
headerindex [integer ,in]
kindex [integer ,in]
stepindex [integer ,in]
procindex [integer ,in]
numgridpt (interpinfo%hco%numsubgrid) [integer ,out]
- Called from
- Call to
gpos_getpositionxy(),utl_abort(),kdtree2_3dposition(),kdtree2_r_nearest()
- subroutine statetocolumn_mod/s2c_setuplakeinterp(interpinfo, statevector, headerindex, kindex, stepindex, procindex, numgridpt)¶
- Purpose
To determine the grid points and their associated weights for the lake horizontal interpolation.
- Arguments
interpinfo [struct_interpinfo ,inout]
statevector [struct_gsv ,in]
headerindex [integer ,in]
kindex [integer ,in]
stepindex [integer ,in]
procindex [integer ,in]
numgridpt (interpinfo%hco%numsubgrid) [integer ,out]
- Called from
- Call to
- subroutine statetocolumn_mod/s2c_setupnearestneighbor(interpinfo, statevector, headerindex, kindex, stepindex, procindex, numgridpt)¶
- Purpose
Determine the nearest grid points to the observations location
- Arguments
interpinfo [struct_interpinfo ,inout]
statevector [struct_gsv ,in]
headerindex [integer ,in]
kindex [integer ,in]
stepindex [integer ,in]
procindex [integer ,in]
numgridpt (interpinfo%hco%numsubgrid) [integer ,out]
- Called from
- Call to
- subroutine statetocolumn_mod/checkcolumnstatevectormatch(column, statevector)¶
- Purpose
To check column and statevector have identical nk and variables.
- Arguments
column [struct_columndata ,in]
statevector [struct_gsv ,in]
- Called from
- Call to
gsv_getnumk(),utl_abort(),gsv_getvarnamefromk(),col_getvarnamefromk()
- subroutine statetocolumn_mod/latlonchecks(obsspacedata, hco, headerindex, rejectoutsideobs, latlev_t, lonlev_t, latlev_m, lonlev_m[, latlev_s_opt[, lonlev_s_opt]])¶
- Purpose
To check if the obs are inside the domain.
- Arguments
obsspacedata [struct_obs ,inout]
hco [struct_hco ,in]
headerindex [integer ,in]
rejectoutsideobs [logical ,in]
latlev_t (*) [real ,inout]
lonlev_t (*) [real ,inout]
latlev_m (*) [real ,inout]
lonlev_m (*) [real ,inout]
- Options
latlev_s_opt [real ,inout,]
lonlev_s_opt [real ,inout,]
- Called from
- Call to
gpos_getpositionxy(),obs_headelem_i(),obs_bodyset_i(),obs_headset_i()
- function statetocolumn_mod/gettovsfootprintradius(obsspacedata, headerindex[, besilent_opt])¶
- Purpose
calculate foot-print radius for TOVS observations
- Arguments
obsspacedata [struct_obs ,in]
headerindex [integer ,in]
- Options
besilent_opt [logical ,in,]
- Return
footprintradius_r4 [real ]
- Called from
- Call to
- subroutine statetocolumn_mod/s2c_getweightsandgridpointindexes(headerindex, kindex, stepindex, procindex, interpweight, latindex, lonindex, gridptcount)¶
- Purpose
Returns the weights and grid point indexes for a single observation.
- Arguments
headerindex [integer ,in]
kindex [integer ,in]
stepindex [integer ,in]
procindex [integer ,in]
interpweight (*) [real ,out]
latindex (*) [integer ,out]
lonindex (*) [integer ,out]
gridptcount [integer ,out]
- Called from
- Call to
- subroutine statetocolumn_mod/s2c_deallocinterpinfo(inputstatevectortype)¶
- Purpose
Deallocate interpInfo_nl/tlad object.
- Arguments
inputstatevectortype [character ,in]
- Called from
- Call to