diff --git a/Make-include b/Make-include index 5d47052ab8..cf85bcd271 100644 --- a/Make-include +++ b/Make-include @@ -39,6 +39,7 @@ MET_CPPFLAGS = -I${top_builddir}/src/basic/vx_cal \ -I${top_builddir}/src/libcode/vx_summary \ -I${top_builddir}/src/libcode/vx_time_series \ -I${top_builddir}/src/libcode/vx_series_data \ + -I${top_builddir}/src/libcode/vx_seeps \ -I${top_builddir}/src/libcode/vx_tc_util #-fPIC \ @@ -84,6 +85,7 @@ MET_LDFLAGS = -L${top_builddir}/src/basic/vx_cal \ -L${top_builddir}/src/libcode/vx_summary \ -L${top_builddir}/src/libcode/vx_time_series \ -L${top_builddir}/src/libcode/vx_series_data \ + -L${top_builddir}/src/libcode/vx_seeps \ -L${top_builddir}/src/libcode/vx_tc_util ENUM_TO_STRING = ${abs_top_builddir}/src/basic/enum_to_string/enum_to_string diff --git a/configure b/configure index bb104922ad..0713ecf0df 100755 --- a/configure +++ b/configure @@ -8848,7 +8848,7 @@ done # Create configured files -ac_config_files="$ac_config_files Makefile scripts/Rscripts/Makefile scripts/Rscripts/include/Makefile scripts/python/Makefile data/Makefile data/colortables/Makefile data/colortables/NCL_colortables/Makefile data/config/Makefile data/map/Makefile data/map/admin_by_country/Makefile data/poly/Makefile data/poly/HMT_masks/Makefile data/poly/NCEP_masks/Makefile data/wrappers/Makefile data/ps/Makefile data/table_files/Makefile data/tc_data/Makefile src/Makefile src/basic/Makefile src/basic/enum_to_string/Makefile src/basic/vx_cal/Makefile src/basic/vx_config/Makefile src/basic/vx_log/Makefile src/basic/vx_math/Makefile src/basic/vx_util/Makefile src/basic/vx_util_math/Makefile src/libcode/Makefile src/libcode/vx_afm/Makefile src/libcode/vx_analysis_util/Makefile src/libcode/vx_color/Makefile src/libcode/vx_data2d/Makefile src/libcode/vx_data2d_factory/Makefile src/libcode/vx_data2d_grib/Makefile src/libcode/vx_data2d_grib2/Makefile src/libcode/vx_data2d_nc_met/Makefile src/libcode/vx_data2d_nc_pinterp/Makefile src/libcode/vx_data2d_nccf/Makefile src/libcode/vx_geodesy/Makefile src/libcode/vx_gis/Makefile src/libcode/vx_gnomon/Makefile src/libcode/vx_grid/Makefile src/libcode/vx_gsl_prob/Makefile src/libcode/vx_nav/Makefile src/libcode/vx_solar/Makefile src/libcode/vx_nc_obs/Makefile src/libcode/vx_nc_util/Makefile src/libcode/vx_pb_util/Makefile src/libcode/vx_plot_util/Makefile src/libcode/vx_ps/Makefile src/libcode/vx_pxm/Makefile src/libcode/vx_render/Makefile src/libcode/vx_shapedata/Makefile src/libcode/vx_stat_out/Makefile src/libcode/vx_statistics/Makefile src/libcode/vx_time_series/Makefile src/libcode/vx_physics/Makefile src/libcode/vx_series_data/Makefile src/libcode/vx_regrid/Makefile src/libcode/vx_tc_util/Makefile src/libcode/vx_summary/Makefile src/libcode/vx_python3_utils/Makefile src/libcode/vx_data2d_python/Makefile src/libcode/vx_bool_calc/Makefile src/libcode/vx_pointdata_python/Makefile src/tools/Makefile src/tools/core/Makefile src/tools/core/ensemble_stat/Makefile src/tools/core/grid_stat/Makefile src/tools/core/mode/Makefile src/tools/core/mode_analysis/Makefile src/tools/core/pcp_combine/Makefile src/tools/core/point_stat/Makefile src/tools/core/series_analysis/Makefile src/tools/core/stat_analysis/Makefile src/tools/core/wavelet_stat/Makefile src/tools/other/Makefile src/tools/other/ascii2nc/Makefile src/tools/other/lidar2nc/Makefile src/tools/other/gen_ens_prod/Makefile src/tools/other/gen_vx_mask/Makefile src/tools/other/gis_utils/Makefile src/tools/other/ioda2nc/Makefile src/tools/other/madis2nc/Makefile src/tools/other/mode_graphics/Makefile src/tools/other/modis_regrid/Makefile src/tools/other/pb2nc/Makefile src/tools/other/plot_data_plane/Makefile src/tools/other/plot_point_obs/Makefile src/tools/other/wwmca_tool/Makefile src/tools/other/gsi_tools/Makefile src/tools/other/regrid_data_plane/Makefile src/tools/other/point2grid/Makefile src/tools/other/shift_data_plane/Makefile src/tools/other/mode_time_domain/Makefile src/tools/other/grid_diag/Makefile src/tools/tc_utils/Makefile src/tools/tc_utils/tc_dland/Makefile src/tools/tc_utils/tc_pairs/Makefile src/tools/tc_utils/tc_stat/Makefile src/tools/tc_utils/tc_gen/Makefile src/tools/tc_utils/rmw_analysis/Makefile src/tools/tc_utils/tc_rmw/Makefile" +ac_config_files="$ac_config_files Makefile scripts/Rscripts/Makefile scripts/Rscripts/include/Makefile scripts/python/Makefile data/Makefile data/climo/Makefile data/climo/seeps/Makefile data/colortables/Makefile data/colortables/NCL_colortables/Makefile data/config/Makefile data/map/Makefile data/map/admin_by_country/Makefile data/poly/Makefile data/poly/HMT_masks/Makefile data/poly/NCEP_masks/Makefile data/wrappers/Makefile data/ps/Makefile data/table_files/Makefile data/tc_data/Makefile src/Makefile src/basic/Makefile src/basic/enum_to_string/Makefile src/basic/vx_cal/Makefile src/basic/vx_config/Makefile src/basic/vx_log/Makefile src/basic/vx_math/Makefile src/basic/vx_util/Makefile src/basic/vx_util_math/Makefile src/libcode/Makefile src/libcode/vx_afm/Makefile src/libcode/vx_analysis_util/Makefile src/libcode/vx_color/Makefile src/libcode/vx_data2d/Makefile src/libcode/vx_data2d_factory/Makefile src/libcode/vx_data2d_grib/Makefile src/libcode/vx_data2d_grib2/Makefile src/libcode/vx_data2d_nc_met/Makefile src/libcode/vx_data2d_nc_pinterp/Makefile src/libcode/vx_data2d_nccf/Makefile src/libcode/vx_geodesy/Makefile src/libcode/vx_gis/Makefile src/libcode/vx_gnomon/Makefile src/libcode/vx_grid/Makefile src/libcode/vx_gsl_prob/Makefile src/libcode/vx_nav/Makefile src/libcode/vx_solar/Makefile src/libcode/vx_nc_obs/Makefile src/libcode/vx_nc_util/Makefile src/libcode/vx_pb_util/Makefile src/libcode/vx_plot_util/Makefile src/libcode/vx_ps/Makefile src/libcode/vx_pxm/Makefile src/libcode/vx_render/Makefile src/libcode/vx_shapedata/Makefile src/libcode/vx_stat_out/Makefile src/libcode/vx_statistics/Makefile src/libcode/vx_time_series/Makefile src/libcode/vx_physics/Makefile src/libcode/vx_series_data/Makefile src/libcode/vx_regrid/Makefile src/libcode/vx_tc_util/Makefile src/libcode/vx_summary/Makefile src/libcode/vx_python3_utils/Makefile src/libcode/vx_data2d_python/Makefile src/libcode/vx_bool_calc/Makefile src/libcode/vx_pointdata_python/Makefile src/libcode/vx_seeps/Makefile src/tools/Makefile src/tools/core/Makefile src/tools/core/ensemble_stat/Makefile src/tools/core/grid_stat/Makefile src/tools/core/mode/Makefile src/tools/core/mode_analysis/Makefile src/tools/core/pcp_combine/Makefile src/tools/core/point_stat/Makefile src/tools/core/series_analysis/Makefile src/tools/core/stat_analysis/Makefile src/tools/core/wavelet_stat/Makefile src/tools/other/Makefile src/tools/other/ascii2nc/Makefile src/tools/other/lidar2nc/Makefile src/tools/other/gen_ens_prod/Makefile src/tools/other/gen_vx_mask/Makefile src/tools/other/gis_utils/Makefile src/tools/other/ioda2nc/Makefile src/tools/other/madis2nc/Makefile src/tools/other/mode_graphics/Makefile src/tools/other/modis_regrid/Makefile src/tools/other/pb2nc/Makefile src/tools/other/plot_data_plane/Makefile src/tools/other/plot_point_obs/Makefile src/tools/other/wwmca_tool/Makefile src/tools/other/gsi_tools/Makefile src/tools/other/regrid_data_plane/Makefile src/tools/other/point2grid/Makefile src/tools/other/shift_data_plane/Makefile src/tools/other/mode_time_domain/Makefile src/tools/other/grid_diag/Makefile src/tools/tc_utils/Makefile src/tools/tc_utils/tc_dland/Makefile src/tools/tc_utils/tc_pairs/Makefile src/tools/tc_utils/tc_stat/Makefile src/tools/tc_utils/tc_gen/Makefile src/tools/tc_utils/rmw_analysis/Makefile src/tools/tc_utils/tc_rmw/Makefile" if test -n "$MET_DEVELOPMENT"; then @@ -9737,6 +9737,8 @@ do "scripts/Rscripts/include/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Rscripts/include/Makefile" ;; "scripts/python/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/python/Makefile" ;; "data/Makefile") CONFIG_FILES="$CONFIG_FILES data/Makefile" ;; + "data/climo/Makefile") CONFIG_FILES="$CONFIG_FILES data/climo/Makefile" ;; + "data/climo/seeps/Makefile") CONFIG_FILES="$CONFIG_FILES data/climo/seeps/Makefile" ;; "data/colortables/Makefile") CONFIG_FILES="$CONFIG_FILES data/colortables/Makefile" ;; "data/colortables/NCL_colortables/Makefile") CONFIG_FILES="$CONFIG_FILES data/colortables/NCL_colortables/Makefile" ;; "data/config/Makefile") CONFIG_FILES="$CONFIG_FILES data/config/Makefile" ;; @@ -9796,6 +9798,7 @@ do "src/libcode/vx_data2d_python/Makefile") CONFIG_FILES="$CONFIG_FILES src/libcode/vx_data2d_python/Makefile" ;; "src/libcode/vx_bool_calc/Makefile") CONFIG_FILES="$CONFIG_FILES src/libcode/vx_bool_calc/Makefile" ;; "src/libcode/vx_pointdata_python/Makefile") CONFIG_FILES="$CONFIG_FILES src/libcode/vx_pointdata_python/Makefile" ;; + "src/libcode/vx_seeps/Makefile") CONFIG_FILES="$CONFIG_FILES src/libcode/vx_seeps/Makefile" ;; "src/tools/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/Makefile" ;; "src/tools/core/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/core/Makefile" ;; "src/tools/core/ensemble_stat/Makefile") CONFIG_FILES="$CONFIG_FILES src/tools/core/ensemble_stat/Makefile" ;; diff --git a/configure.ac b/configure.ac index e580dcefd7..5414db8913 100644 --- a/configure.ac +++ b/configure.ac @@ -1184,6 +1184,8 @@ AC_CONFIG_FILES([Makefile scripts/Rscripts/include/Makefile scripts/python/Makefile data/Makefile + data/climo/Makefile + data/climo/seeps/Makefile data/colortables/Makefile data/colortables/NCL_colortables/Makefile data/config/Makefile @@ -1243,6 +1245,7 @@ AC_CONFIG_FILES([Makefile src/libcode/vx_data2d_python/Makefile src/libcode/vx_bool_calc/Makefile src/libcode/vx_pointdata_python/Makefile + src/libcode/vx_seeps/Makefile src/tools/Makefile src/tools/core/Makefile src/tools/core/ensemble_stat/Makefile diff --git a/data/Makefile.am b/data/Makefile.am index a08e207a13..ac1483ba59 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -17,6 +17,7 @@ ## MA 02110-1301, USA. SUBDIRS = \ + climo \ colortables \ config \ map \ @@ -24,7 +25,7 @@ SUBDIRS = \ ps \ table_files \ tc_data \ - wrappers + wrappers topdir = $(pkgdatadir) diff --git a/data/Makefile.in b/data/Makefile.in index 3d18dbc212..426a2b15bf 100644 --- a/data/Makefile.in +++ b/data/Makefile.in @@ -354,6 +354,7 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = \ + climo \ colortables \ config \ map \ @@ -361,7 +362,7 @@ SUBDIRS = \ ps \ table_files \ tc_data \ - wrappers + wrappers topdir = $(pkgdatadir) top_DATA = \ diff --git a/data/climo/Makefile.am b/data/climo/Makefile.am new file mode 100644 index 0000000000..82178b8020 --- /dev/null +++ b/data/climo/Makefile.am @@ -0,0 +1,23 @@ +## Makefile.am -- Process this file with automake to produce Makefile.in +## Copyright (C) 2000, 2006 Gary V. Vaughan +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +## MA 02110-1301, USA. + +SUBDIRS = seeps + +climodir = $(pkgdatadir)/climo + +MAINTAINERCLEANFILES = Makefile.in diff --git a/data/climo/Makefile.in b/data/climo/Makefile.in new file mode 100644 index 0000000000..c612befe6e --- /dev/null +++ b/data/climo/Makefile.in @@ -0,0 +1,640 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = data/climo +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir distdir-am +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUFRLIB_NAME = @BUFRLIB_NAME@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FC_LIBS = @FC_LIBS@ +FFLAGS = @FFLAGS@ +FLIBS = @FLIBS@ +GREP = @GREP@ +GRIB2CLIB_NAME = @GRIB2CLIB_NAME@ +GRIB2_LIBS = @GRIB2_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MET_BUFR = @MET_BUFR@ +MET_BUFRLIB = @MET_BUFRLIB@ +MET_CAIRO = @MET_CAIRO@ +MET_CAIROINC = @MET_CAIROINC@ +MET_CAIROLIB = @MET_CAIROLIB@ +MET_FREETYPE = @MET_FREETYPE@ +MET_FREETYPEINC = @MET_FREETYPEINC@ +MET_FREETYPELIB = @MET_FREETYPELIB@ +MET_GRIB2C = @MET_GRIB2C@ +MET_GRIB2CINC = @MET_GRIB2CINC@ +MET_GRIB2CLIB = @MET_GRIB2CLIB@ +MET_GSL = @MET_GSL@ +MET_GSLINC = @MET_GSLINC@ +MET_GSLLIB = @MET_GSLLIB@ +MET_HDF = @MET_HDF@ +MET_HDF5 = @MET_HDF5@ +MET_HDF5INC = @MET_HDF5INC@ +MET_HDF5LIB = @MET_HDF5LIB@ +MET_HDFEOS = @MET_HDFEOS@ +MET_HDFEOSINC = @MET_HDFEOSINC@ +MET_HDFEOSLIB = @MET_HDFEOSLIB@ +MET_HDFINC = @MET_HDFINC@ +MET_HDFLIB = @MET_HDFLIB@ +MET_NETCDF = @MET_NETCDF@ +MET_NETCDFINC = @MET_NETCDFINC@ +MET_NETCDFLIB = @MET_NETCDFLIB@ +MET_PYTHON_CC = @MET_PYTHON_CC@ +MET_PYTHON_LD = @MET_PYTHON_LD@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON_LIBS = @PYTHON_LIBS@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = seeps +climodir = $(pkgdatadir)/climo +MAINTAINERCLEANFILES = Makefile.in +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/climo/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign data/climo/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic cscopelist-am ctags ctags-am \ + distclean distclean-generic distclean-tags distdir dvi dvi-am \ + html html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/data/climo/seeps/Makefile.am b/data/climo/seeps/Makefile.am new file mode 100644 index 0000000000..0569fd8870 --- /dev/null +++ b/data/climo/seeps/Makefile.am @@ -0,0 +1,26 @@ +## Makefile.am -- Process this file with automake to produce Makefile.in +## Copyright (C) 2000, 2006 Gary V. Vaughan +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +## MA 02110-1301, USA. + +seepsdir = $(pkgdatadir)/climo/seeps + +seeps_DATA = \ + PPT24_seepsweights.nc + +EXTRA_DIST = ${seeps_DATA} + +MAINTAINERCLEANFILES = Makefile.in diff --git a/data/climo/seeps/Makefile.in b/data/climo/seeps/Makefile.in new file mode 100644 index 0000000000..911a2cbb2b --- /dev/null +++ b/data/climo/seeps/Makefile.in @@ -0,0 +1,518 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = data/climo/seeps +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(seepsdir)" +DATA = $(seeps_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUFRLIB_NAME = @BUFRLIB_NAME@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FC_LIBS = @FC_LIBS@ +FFLAGS = @FFLAGS@ +FLIBS = @FLIBS@ +GREP = @GREP@ +GRIB2CLIB_NAME = @GRIB2CLIB_NAME@ +GRIB2_LIBS = @GRIB2_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MET_BUFR = @MET_BUFR@ +MET_BUFRLIB = @MET_BUFRLIB@ +MET_CAIRO = @MET_CAIRO@ +MET_CAIROINC = @MET_CAIROINC@ +MET_CAIROLIB = @MET_CAIROLIB@ +MET_FREETYPE = @MET_FREETYPE@ +MET_FREETYPEINC = @MET_FREETYPEINC@ +MET_FREETYPELIB = @MET_FREETYPELIB@ +MET_GRIB2C = @MET_GRIB2C@ +MET_GRIB2CINC = @MET_GRIB2CINC@ +MET_GRIB2CLIB = @MET_GRIB2CLIB@ +MET_GSL = @MET_GSL@ +MET_GSLINC = @MET_GSLINC@ +MET_GSLLIB = @MET_GSLLIB@ +MET_HDF = @MET_HDF@ +MET_HDF5 = @MET_HDF5@ +MET_HDF5INC = @MET_HDF5INC@ +MET_HDF5LIB = @MET_HDF5LIB@ +MET_HDFEOS = @MET_HDFEOS@ +MET_HDFEOSINC = @MET_HDFEOSINC@ +MET_HDFEOSLIB = @MET_HDFEOSLIB@ +MET_HDFINC = @MET_HDFINC@ +MET_HDFLIB = @MET_HDFLIB@ +MET_NETCDF = @MET_NETCDF@ +MET_NETCDFINC = @MET_NETCDFINC@ +MET_NETCDFLIB = @MET_NETCDFLIB@ +MET_PYTHON_CC = @MET_PYTHON_CC@ +MET_PYTHON_LD = @MET_PYTHON_LD@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON_LIBS = @PYTHON_LIBS@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +seepsdir = $(pkgdatadir)/climo/seeps +seeps_DATA = \ + PPT24_seepsweights.nc + +EXTRA_DIST = ${seeps_DATA} +MAINTAINERCLEANFILES = Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/climo/seeps/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign data/climo/seeps/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-seepsDATA: $(seeps_DATA) + @$(NORMAL_INSTALL) + @list='$(seeps_DATA)'; test -n "$(seepsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(seepsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(seepsdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(seepsdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(seepsdir)" || exit $$?; \ + done + +uninstall-seepsDATA: + @$(NORMAL_UNINSTALL) + @list='$(seeps_DATA)'; test -n "$(seepsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(seepsdir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(seepsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-seepsDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-seepsDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic cscopelist-am \ + ctags-am distclean distclean-generic distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-seepsDATA install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am tags-am uninstall uninstall-am \ + uninstall-seepsDATA + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/data/climo/seeps/PPT24_seepsweights.nc b/data/climo/seeps/PPT24_seepsweights.nc new file mode 100644 index 0000000000..329c681d22 Binary files /dev/null and b/data/climo/seeps/PPT24_seepsweights.nc differ diff --git a/data/config/PointStatConfig_default b/data/config/PointStatConfig_default index a5669867da..f7e60a8e32 100644 --- a/data/config/PointStatConfig_default +++ b/data/config/PointStatConfig_default @@ -286,6 +286,8 @@ output_flag = { rps = NONE; // Only for HiRA. eclv = NONE; mpr = NONE; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/data/table_files/met_header_columns_V11.0.txt b/data/table_files/met_header_columns_V11.0.txt index d57e089cb0..7a448d8d17 100644 --- a/data/table_files/met_header_columns_V11.0.txt +++ b/data/table_files/met_header_columns_V11.0.txt @@ -6,6 +6,8 @@ V11.0 : STAT : ISC : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID V11.0 : STAT : MCTC : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL (N_CAT) F[0-9]*_O[0-9]* EC_VALUE V11.0 : STAT : MCTS : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL N_CAT ACC ACC_NCL ACC_NCU ACC_BCL ACC_BCU HK HK_BCL HK_BCU HSS HSS_BCL HSS_BCU GER GER_BCL GER_BCU HSS_EC HSS_EC_BCL HSS_EC_BCU EC_VALUE V11.0 : STAT : MPR : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL INDEX OBS_SID OBS_LAT OBS_LON OBS_LVL OBS_ELV FCST OBS OBS_QC CLIMO_MEAN CLIMO_STDEV CLIMO_CDF +V11.0 : STAT : SEEPS : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL S12 S13 S21 S23 S31 S32 PF1 PF2 PF3 PV1 PV2 PV3 MEAN_FCST MEAN_OBS SEEPS +V11.0 : STAT : SEEPS_MPR : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE OBS_SID OBS_LAT OBS_LON FCST OBS OBS_QC FCST_CAT OBS_CAT P1 P2 T1 T2 SEEPS V11.0 : STAT : NBRCNT : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL FBS FBS_BCL FBS_BCU FSS FSS_BCL FSS_BCU AFSS AFSS_BCL AFSS_BCU UFSS UFSS_BCL UFSS_BCU F_RATE F_RATE_BCL F_RATE_BCU O_RATE O_RATE_BCL O_RATE_BCU V11.0 : STAT : NBRCTC : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL FY_OY FY_ON FN_OY FN_ON V11.0 : STAT : NBRCTS : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL BASER BASER_NCL BASER_NCU BASER_BCL BASER_BCU FMEAN FMEAN_NCL FMEAN_NCU FMEAN_BCL FMEAN_BCU ACC ACC_NCL ACC_NCU ACC_BCL ACC_BCU FBIAS FBIAS_BCL FBIAS_BCU PODY PODY_NCL PODY_NCU PODY_BCL PODY_BCU PODN PODN_NCL PODN_NCU PODN_BCL PODN_BCU POFD POFD_NCL POFD_NCU POFD_BCL POFD_BCU FAR FAR_NCL FAR_NCU FAR_BCL FAR_BCU CSI CSI_NCL CSI_NCU CSI_BCL CSI_BCU GSS GSS_BCL GSS_BCU HK HK_NCL HK_NCU HK_BCL HK_BCU HSS HSS_BCL HSS_BCU ODDS ODDS_NCL ODDS_NCU ODDS_BCL ODDS_BCU LODDS LODDS_NCL LODDS_NCU LODDS_BCL LODDS_BCU ORSS ORSS_NCL ORSS_NCU ORSS_BCL ORSS_BCU EDS EDS_NCL EDS_NCU EDS_BCL EDS_BCU SEDS SEDS_NCL SEDS_NCU SEDS_BCL SEDS_BCU EDI EDI_NCL EDI_NCU EDI_BCL EDI_BCU SEDI SEDI_NCL SEDI_NCU SEDI_BCL SEDI_BCU BAGSS BAGSS_BCL BAGSS_BCU diff --git a/docs/Users_Guide/point-stat.rst b/docs/Users_Guide/point-stat.rst index d2be7d4701..4d240515b9 100644 --- a/docs/Users_Guide/point-stat.rst +++ b/docs/Users_Guide/point-stat.rst @@ -431,6 +431,8 @@ ________________________ rps = BOTH; // Only for HiRA eclv = BOTH; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } The **output_flag** array controls the type of output that the Point-Stat tool generates. Each flag corresponds to an output line type in the STAT file. Setting the flag to NONE indicates that the line type should not be generated. Setting the flag to STAT indicates that the line type should be written to the STAT file only. Setting the flag to BOTH indicates that the line type should be written to the STAT file as well as a separate ASCII file where the data is grouped by line type. The output flags correspond to the following output line types: @@ -475,6 +477,10 @@ The **output_flag** array controls the type of output that the Point-Stat tool g 20. **MPR** for Matched Pair data +21. **SEEPS** for averaged SEEPS (Stable Equitable Error in Probability Space) score + +22. **SEEPS_MPR** for SEEPS score of Matched Pair data + Note that the FHO and CTC line types are easily derived from each other. Users are free to choose which measures are most desired. The output line types are described in more detail in :numref:`point_stat-output`. Note that writing out matched pair data (MPR lines) for a large number of cases is generally not recommended. The MPR lines create very large output files and are only intended for use on a small set of cases. @@ -1447,4 +1453,120 @@ The first set of header columns are common to all of the output files generated - CLIMO_CDF - Climatological cumulative distribution function value +.. _table_PS_format_info_SEEPS_MPR: + +.. list-table:: Format information for SEEPS (Stable Equitable Error in Probability Space) of MPR (Matched Pair) output line type. + :widths: auto + :header-rows: 2 + + * - SEEPS_MPR OUTPUT FORMAT + - + - + * - Column Number + - SEEPS_MPR Column Name + - Description + * - 24 + - SEEPS_MPR + - SEEPS Matched Pair line type + * - 25 + - OBS_SID + - Station Identifier of observation + * - 26 + - OBS_LAT + - Latitude of the observation in degrees north + * - 27 + - OBS_LON + - Longitude of the observation in degrees east + * - 28 + - FCST + - Forecast value interpolated to the observation location + * - 29 + - OBS + - Observation value + * - 30 + - OBS_QC + - Quality control flag for observation + * - 31 + - FCST_CAT + - Forecast category to 3 by 3 matrix + * - 32 + - OBS_CAT + - Observationtegory to 3 by 3 matrix + * - 33 + - P1 + - Climo-derived probability value for this station (dry) + * - 34 + - P2 + - Climo-derived probability value for this station (dry + light) + * - 35 + - T1 + - Threshold 1 for p1 + * - 36 + - T2 + - Threshold 2 for p2 + * - 37 + - SEEPS + - SEEPS (Stable Equitable Error in Probability Space) score + + +.. _table_PS_format_info_SEEPS: + +.. list-table:: Format information for SEEPS (Stable Equitable Error in Probability Space) output line type. + :widths: auto + :header-rows: 2 + + * - SEEPS OUTPUT FORMAT + - + - + * - Column Number + - SEEPS Column Name + - Description + * - 24 + - SEEPS + - SEEPS line type + * - 25 + - TOTAL + - Total number of SEEPS matched pairs + * - 26 + - S12 + - Counts multiplied by the weights for FCST_CAT 1 and OBS_CAT 2 + * - 27 + - S13 + - Counts multiplied by the weights for FCST_CAT 1 and OBS_CAT 3 + * - 28 + - S21 + - Counts multiplied by the weights for FCST_CAT 2 and OBS_CAT 1 + * - 29 + - S23 + - Counts multiplied by the weights for FCST_CAT 2 and OBS_CAT 3 + * - 30 + - S31 + - Counts multiplied by the weights for FCST_CAT 3 and OBS_CAT 1 + * - 31 + - S32 + - Counts multiplied by the weights for FCST_CAT 3 and OBS_CAT 2 +LINE_TYPE TOTAL S12 S13 S21 S23 S31 S32 PV1 PV2 PV3 PF1 PF2 PF3 MEAN_FCST MEAN_OBS SEEPS + * - 32 + - PF1 + - marginal probabilities of the forecast values (FCST_CAT 1) + * - 33 + - PF2 + - marginal probabilities of the forecast values (FCST_CAT 2) + * - 34 + - PF3 + - marginal probabilities of the forecast values (FCST_CAT 3) + * - 35 + - PV1 + - marginal probabilities of the observed values (OBS_CAT 1) + * - 36 + - PV2 + - marginal probabilities of the observed values (OBS_CAT 2) + * - 37 + - PV3 + - marginal probabilities of the observed values (OBS_CAT 3) + * - 38 + - SEEPS + - Averaged SEEPS (Stable Equitable Error in Probability Space) score + + The STAT output files described for point_stat may be used as inputs to the Stat-Analysis tool. For more information on using the Stat-Analysis tool to create stratifications and aggregations of the STAT files produced by point_stat, please see :numref:`stat-analysis`. diff --git a/internal/test_unit/config/PB2NCConfig b/internal/test_unit/config/PB2NCConfig index 5225ffb9ef..4bce72e3ab 100644 --- a/internal/test_unit/config/PB2NCConfig +++ b/internal/test_unit/config/PB2NCConfig @@ -75,7 +75,7 @@ level_category = []; // BUFR variable names to retain or derive. // If emtpy, process all available variables. // -obs_bufr_var = [ "QOB", "TOB", "ZOB", "UOB", "VOB", +obs_bufr_var = [ "QOB", "TOB", "ZOB", "UOB", "VOB", "TP24", "D_DPT", "D_WIND", "D_RH", "D_MIXR" ]; //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_APCP b/internal/test_unit/config/PointStatConfig_APCP index b795c13f2a..d777ae8583 100644 --- a/internal/test_unit/config/PointStatConfig_APCP +++ b/internal/test_unit/config/PointStatConfig_APCP @@ -39,6 +39,9 @@ wind_thresh = [ NA ]; wind_logic = UNION; eclv_points = 0.05; +cat_thresh = [ >0.254, >0.635, >1.270, >2.540 ]; +message_type = "ADPSFC"; + fcst = { sid_inc = []; sid_exc = []; @@ -47,10 +50,8 @@ fcst = { field = [ { - name = "${FCST_FIELD_NAME}"; - level = "${FCST_FIELD_LEVEL}"; - cat_thresh = [ >0.254, >0.635, >1.270, >2.540 ]; - message_type = "ADPSFC"; + name = "${FCST_FIELD_NAME}"; + level = "${FCST_FIELD_LEVEL}"; } ]; @@ -126,6 +127,8 @@ output_flag = { rps = NONE; eclv = BOTH; mpr = NONE; + seeps = ${SEEPS_FLAG}; + seeps_mpr = ${SEEPS_FLAG}; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_APCP_HIRA b/internal/test_unit/config/PointStatConfig_APCP_HIRA index 44dbd4220b..f45252252a 100644 --- a/internal/test_unit/config/PointStatConfig_APCP_HIRA +++ b/internal/test_unit/config/PointStatConfig_APCP_HIRA @@ -129,6 +129,8 @@ output_flag = { rps = STAT; eclv = STAT; mpr = STAT; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_GTG_latlon b/internal/test_unit/config/PointStatConfig_GTG_latlon index f98475964f..0c7bf07e41 100644 --- a/internal/test_unit/config/PointStatConfig_GTG_latlon +++ b/internal/test_unit/config/PointStatConfig_GTG_latlon @@ -148,6 +148,8 @@ output_flag = { rps = NONE; eclv = BOTH; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_GTG_lc b/internal/test_unit/config/PointStatConfig_GTG_lc index b2133e7ee4..67cb871303 100644 --- a/internal/test_unit/config/PointStatConfig_GTG_lc +++ b/internal/test_unit/config/PointStatConfig_GTG_lc @@ -156,6 +156,8 @@ output_flag = { rps = NONE; eclv = BOTH; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_INTERP_OPTS b/internal/test_unit/config/PointStatConfig_INTERP_OPTS index eaf7027140..db5d996c24 100644 --- a/internal/test_unit/config/PointStatConfig_INTERP_OPTS +++ b/internal/test_unit/config/PointStatConfig_INTERP_OPTS @@ -139,6 +139,8 @@ output_flag = { rps = NONE; eclv = NONE; mpr = STAT; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_LAND_TOPO_MASK b/internal/test_unit/config/PointStatConfig_LAND_TOPO_MASK index cae0c06dee..6b856fcc1e 100644 --- a/internal/test_unit/config/PointStatConfig_LAND_TOPO_MASK +++ b/internal/test_unit/config/PointStatConfig_LAND_TOPO_MASK @@ -179,6 +179,8 @@ output_flag = { rps = NONE; eclv = NONE; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_MASK_SID b/internal/test_unit/config/PointStatConfig_MASK_SID index 4b11f2805e..b8c11030cd 100644 --- a/internal/test_unit/config/PointStatConfig_MASK_SID +++ b/internal/test_unit/config/PointStatConfig_MASK_SID @@ -134,6 +134,8 @@ output_flag = { rps = NONE; eclv = BOTH; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_PHYS b/internal/test_unit/config/PointStatConfig_PHYS index cce7b88b95..d93e5391a7 100644 --- a/internal/test_unit/config/PointStatConfig_PHYS +++ b/internal/test_unit/config/PointStatConfig_PHYS @@ -135,6 +135,8 @@ output_flag = { rps = NONE; eclv = BOTH; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_PHYS_pint b/internal/test_unit/config/PointStatConfig_PHYS_pint index e9927a2339..d70192a9ae 100644 --- a/internal/test_unit/config/PointStatConfig_PHYS_pint +++ b/internal/test_unit/config/PointStatConfig_PHYS_pint @@ -130,6 +130,8 @@ output_flag = { rps = NONE; eclv = BOTH; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_WINDS b/internal/test_unit/config/PointStatConfig_WINDS index 4a7644510e..609814fd4f 100644 --- a/internal/test_unit/config/PointStatConfig_WINDS +++ b/internal/test_unit/config/PointStatConfig_WINDS @@ -150,6 +150,8 @@ output_flag = { orank = NONE; eclv = NONE; mpr = NONE; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_aeronet b/internal/test_unit/config/PointStatConfig_aeronet index d99143041f..bbad04e26c 100644 --- a/internal/test_unit/config/PointStatConfig_aeronet +++ b/internal/test_unit/config/PointStatConfig_aeronet @@ -199,6 +199,8 @@ output_flag = { rps = NONE; eclv = NONE; mpr = STAT; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_airnow b/internal/test_unit/config/PointStatConfig_airnow index 244aeda748..0e4e48d710 100644 --- a/internal/test_unit/config/PointStatConfig_airnow +++ b/internal/test_unit/config/PointStatConfig_airnow @@ -229,6 +229,8 @@ output_flag = { rps = NONE; eclv = NONE; mpr = STAT; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_climo b/internal/test_unit/config/PointStatConfig_climo index b215e9b896..1621e61ec5 100644 --- a/internal/test_unit/config/PointStatConfig_climo +++ b/internal/test_unit/config/PointStatConfig_climo @@ -269,6 +269,8 @@ output_flag = { rps = NONE; eclv = NONE; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_climo_WMO b/internal/test_unit/config/PointStatConfig_climo_WMO index 29febac1df..a703ad8266 100644 --- a/internal/test_unit/config/PointStatConfig_climo_WMO +++ b/internal/test_unit/config/PointStatConfig_climo_WMO @@ -217,6 +217,8 @@ output_flag = { rps = BOTH; eclv = NONE; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_climo_prob b/internal/test_unit/config/PointStatConfig_climo_prob index b85293f226..8a924ef106 100644 --- a/internal/test_unit/config/PointStatConfig_climo_prob +++ b/internal/test_unit/config/PointStatConfig_climo_prob @@ -219,6 +219,8 @@ output_flag = { rps = NONE; eclv = BOTH; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_dup b/internal/test_unit/config/PointStatConfig_dup index 2d72cf364d..efd861241c 100644 --- a/internal/test_unit/config/PointStatConfig_dup +++ b/internal/test_unit/config/PointStatConfig_dup @@ -152,6 +152,8 @@ output_flag = { rps = NONE; eclv = STAT; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_mpr_thresh b/internal/test_unit/config/PointStatConfig_mpr_thresh index 5a482ab234..1a3a33851f 100644 --- a/internal/test_unit/config/PointStatConfig_mpr_thresh +++ b/internal/test_unit/config/PointStatConfig_mpr_thresh @@ -211,6 +211,8 @@ output_flag = { rps = NONE; eclv = NONE; mpr = NONE; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_obs_summary b/internal/test_unit/config/PointStatConfig_obs_summary index 3875c81010..e2d6bcef3d 100644 --- a/internal/test_unit/config/PointStatConfig_obs_summary +++ b/internal/test_unit/config/PointStatConfig_obs_summary @@ -141,6 +141,8 @@ output_flag = { rps = NONE; eclv = STAT; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_obs_summary_all b/internal/test_unit/config/PointStatConfig_obs_summary_all index 0ab61af959..972fa2dcbe 100644 --- a/internal/test_unit/config/PointStatConfig_obs_summary_all +++ b/internal/test_unit/config/PointStatConfig_obs_summary_all @@ -210,6 +210,8 @@ output_flag = { rps = NONE; eclv = STAT; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_prob b/internal/test_unit/config/PointStatConfig_prob index 91ec54e3de..20bd7a217b 100644 --- a/internal/test_unit/config/PointStatConfig_prob +++ b/internal/test_unit/config/PointStatConfig_prob @@ -137,6 +137,8 @@ output_flag = { rps = NONE; eclv = BOTH; mpr = NONE; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_python b/internal/test_unit/config/PointStatConfig_python index ba5ddefd93..8854bf604a 100644 --- a/internal/test_unit/config/PointStatConfig_python +++ b/internal/test_unit/config/PointStatConfig_python @@ -207,6 +207,8 @@ output_flag = { rps = NONE; eclv = NONE; mpr = STAT; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_qty_inc_exc b/internal/test_unit/config/PointStatConfig_qty_inc_exc index 2cdf627cae..8dc3f1413a 100644 --- a/internal/test_unit/config/PointStatConfig_qty_inc_exc +++ b/internal/test_unit/config/PointStatConfig_qty_inc_exc @@ -196,6 +196,8 @@ output_flag = { rps = NONE; eclv = NONE; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/PointStatConfig_sid_inc_exc b/internal/test_unit/config/PointStatConfig_sid_inc_exc index 31318d2d18..e20d929374 100644 --- a/internal/test_unit/config/PointStatConfig_sid_inc_exc +++ b/internal/test_unit/config/PointStatConfig_sid_inc_exc @@ -142,6 +142,8 @@ output_flag = { rps = NONE; eclv = NONE; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/ref_config/PointStatConfig_ADPUPA b/internal/test_unit/config/ref_config/PointStatConfig_ADPUPA index 63673104be..b88fe591c1 100644 --- a/internal/test_unit/config/ref_config/PointStatConfig_ADPUPA +++ b/internal/test_unit/config/ref_config/PointStatConfig_ADPUPA @@ -174,6 +174,8 @@ output_flag = { ecnt = NONE; eclv = NONE; mpr = NONE; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/ref_config/PointStatConfig_ONLYSF b/internal/test_unit/config/ref_config/PointStatConfig_ONLYSF index fa9363986b..e700666d93 100644 --- a/internal/test_unit/config/ref_config/PointStatConfig_ONLYSF +++ b/internal/test_unit/config/ref_config/PointStatConfig_ONLYSF @@ -184,6 +184,8 @@ output_flag = { ecnt = NONE; eclv = NONE; mpr = NONE; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/config/ref_config/PointStatConfig_WINDS b/internal/test_unit/config/ref_config/PointStatConfig_WINDS index 23cb75b2d6..a0dd7bdb04 100644 --- a/internal/test_unit/config/ref_config/PointStatConfig_WINDS +++ b/internal/test_unit/config/ref_config/PointStatConfig_WINDS @@ -167,6 +167,8 @@ output_flag = { ecnt = NONE; eclv = NONE; mpr = NONE; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/internal/test_unit/xml/unit_point_stat.xml b/internal/test_unit/xml/unit_point_stat.xml index dd607efaff..8eb398fa66 100644 --- a/internal/test_unit/xml/unit_point_stat.xml +++ b/internal/test_unit/xml/unit_point_stat.xml @@ -166,6 +166,7 @@ FCST_FIELD_NAME APCP FCST_FIELD_LEVEL A3 OBS_DICT fcst + SEEPS_FLAG NONE OUTPUT_PREFIX GRIB1_NAM_TRMM \ @@ -192,6 +193,7 @@ FCST_FIELD_NAME APCP FCST_FIELD_LEVEL A3 OBS_DICT fcst + SEEPS_FLAG NONE OUTPUT_PREFIX GRIB2_SREF_TRMM \ @@ -217,13 +219,8 @@ END_DS 1800 FCST_FIELD_NAME APCP_24 FCST_FIELD_LEVEL (*,*) - OBS_DICT { field = [ - { name = "APCP"; - level = "A24"; - cat_thresh = [ >0.254, >0.635, >1.270, >2.540 ]; - message_type = "ADPSFC"; - } - ]; } + OBS_DICT { field = [ { name = "APCP"; level = "A24"; } ]; } + SEEPS_FLAG NONE OUTPUT_PREFIX NCMET_NAM_HMTGAGE \ @@ -242,6 +239,35 @@ + + &MET_BIN;/point_stat + + BEG_DS -1800 + END_DS 1800 + FCST_FIELD_NAME APCP_24 + FCST_FIELD_LEVEL (*,*) + OBS_DICT { field = [ { name = "TP24"; level = "L0"; is_precipitation = TRUE; } ]; } + SEEPS_FLAG BOTH + OUTPUT_PREFIX NCMET_NAM_NDAS_SEEPS + + \ + &DATA_DIR_MODEL;/met_nc/nam/nam_2012040900_F036_APCP24.nc \ + &OUTPUT_DIR;/pb2nc/ndas.20120410.t12z.prepbufr.tm00.nc \ + &CONFIG_DIR;/PointStatConfig_APCP \ + -outdir &OUTPUT_DIR;/point_stat -v 1 + + + &OUTPUT_DIR;/point_stat/point_stat_NCMET_NAM_NDAS_SEEPS_360000L_20120410_120000V.stat + &OUTPUT_DIR;/point_stat/point_stat_NCMET_NAM_NDAS_SEEPS_360000L_20120410_120000V_fho.txt + &OUTPUT_DIR;/point_stat/point_stat_NCMET_NAM_NDAS_SEEPS_360000L_20120410_120000V_ctc.txt + &OUTPUT_DIR;/point_stat/point_stat_NCMET_NAM_NDAS_SEEPS_360000L_20120410_120000V_cts.txt + &OUTPUT_DIR;/point_stat/point_stat_NCMET_NAM_NDAS_SEEPS_360000L_20120410_120000V_cnt.txt + &OUTPUT_DIR;/point_stat/point_stat_NCMET_NAM_NDAS_SEEPS_360000L_20120410_120000V_sl1l2.txt + &OUTPUT_DIR;/point_stat/point_stat_NCMET_NAM_NDAS_SEEPS_360000L_20120410_120000V_seeps.txt + &OUTPUT_DIR;/point_stat/point_stat_NCMET_NAM_NDAS_SEEPS_360000L_20120410_120000V_seeps_mpr.txt + + + &MET_BIN;/point_stat @@ -249,13 +275,8 @@ END_DS 150000000 FCST_FIELD_NAME RAINNC FCST_FIELD_LEVEL (0,*,*) - OBS_DICT { field = [ - { name = "APCP"; - level = "A3"; - cat_thresh = [ >0.254, >0.635, >1.270, >2.540 ]; - message_type = "ADPSFC"; - } - ]; } + OBS_DICT { field = [ { name = "APCP"; level = "A3"; } ]; } + SEEPS_FLAG NONE OUTPUT_PREFIX NCPINT_TRMM \ diff --git a/scripts/config/PointStatConfig b/scripts/config/PointStatConfig index 8a4c18a5f0..b4d26b94b7 100644 --- a/scripts/config/PointStatConfig +++ b/scripts/config/PointStatConfig @@ -204,6 +204,8 @@ output_flag = { rps = NONE; // Only for HiRA eclv = BOTH; mpr = BOTH; + seeps = NONE; + seeps_mpr = NONE; } //////////////////////////////////////////////////////////////////////////////// diff --git a/src/basic/vx_config/config_constants.h b/src/basic/vx_config/config_constants.h index 3cc2fe14e2..e4b4d4d75a 100644 --- a/src/basic/vx_config/config_constants.h +++ b/src/basic/vx_config/config_constants.h @@ -121,6 +121,8 @@ enum STATLineType { stat_pjc, stat_prc, stat_mpr, + stat_seeps, + stat_seeps_mpr, stat_nbrctc, stat_nbrcts, stat_nbrcnt, @@ -150,41 +152,43 @@ enum STATLineType { // Corresponding line type strings // -static const char stat_sl1l2_str[] = "SL1L2"; -static const char stat_sal1l2_str[] = "SAL1L2"; -static const char stat_vl1l2_str[] = "VL1L2"; -static const char stat_val1l2_str[] = "VAL1L2"; -static const char stat_vcnt_str[] = "VCNT"; -static const char stat_fho_str[] = "FHO"; -static const char stat_ctc_str[] = "CTC"; -static const char stat_cts_str[] = "CTS"; -static const char stat_mctc_str[] = "MCTC"; -static const char stat_mcts_str[] = "MCTS"; -static const char stat_cnt_str[] = "CNT"; -static const char stat_pct_str[] = "PCT"; -static const char stat_pstd_str[] = "PSTD"; -static const char stat_pjc_str[] = "PJC"; -static const char stat_prc_str[] = "PRC"; -static const char stat_eclv_str[] = "ECLV"; -static const char stat_mpr_str[] = "MPR"; -static const char stat_nbrctc_str[] = "NBRCTC"; -static const char stat_nbrcts_str[] = "NBRCTS"; -static const char stat_nbrcnt_str[] = "NBRCNT"; -static const char stat_grad_str[] = "GRAD"; -static const char stat_dmap_str[] = "DMAP"; -static const char stat_isc_str[] = "ISC"; -static const char stat_wdir_str[] = "WDIR"; -static const char stat_ecnt_str[] = "ECNT"; -static const char stat_rps_str[] = "RPS"; -static const char stat_rhist_str[] = "RHIST"; -static const char stat_phist_str[] = "PHIST"; -static const char stat_orank_str[] = "ORANK"; -static const char stat_ssvar_str[] = "SSVAR"; -static const char stat_relp_str[] = "RELP"; -static const char stat_genmpr_str[] = "GENMPR"; -static const char stat_ssidx_str[] = "SSIDX"; -static const char stat_header_str[] = "LINE_TYPE"; -static const char stat_na_str[] = "NA"; +static const char stat_sl1l2_str[] = "SL1L2"; +static const char stat_sal1l2_str[] = "SAL1L2"; +static const char stat_vl1l2_str[] = "VL1L2"; +static const char stat_val1l2_str[] = "VAL1L2"; +static const char stat_vcnt_str[] = "VCNT"; +static const char stat_fho_str[] = "FHO"; +static const char stat_ctc_str[] = "CTC"; +static const char stat_cts_str[] = "CTS"; +static const char stat_mctc_str[] = "MCTC"; +static const char stat_mcts_str[] = "MCTS"; +static const char stat_cnt_str[] = "CNT"; +static const char stat_pct_str[] = "PCT"; +static const char stat_pstd_str[] = "PSTD"; +static const char stat_pjc_str[] = "PJC"; +static const char stat_prc_str[] = "PRC"; +static const char stat_eclv_str[] = "ECLV"; +static const char stat_mpr_str[] = "MPR"; +static const char stat_seeps_str[] = "SEEPS"; +static const char stat_seeps_mpr_str[] = "SEEPS_MPR"; +static const char stat_nbrctc_str[] = "NBRCTC"; +static const char stat_nbrcts_str[] = "NBRCTS"; +static const char stat_nbrcnt_str[] = "NBRCNT"; +static const char stat_grad_str[] = "GRAD"; +static const char stat_dmap_str[] = "DMAP"; +static const char stat_isc_str[] = "ISC"; +static const char stat_wdir_str[] = "WDIR"; +static const char stat_ecnt_str[] = "ECNT"; +static const char stat_rps_str[] = "RPS"; +static const char stat_rhist_str[] = "RHIST"; +static const char stat_phist_str[] = "PHIST"; +static const char stat_orank_str[] = "ORANK"; +static const char stat_ssvar_str[] = "SSVAR"; +static const char stat_relp_str[] = "RELP"; +static const char stat_genmpr_str[] = "GENMPR"; +static const char stat_ssidx_str[] = "SSIDX"; +static const char stat_header_str[] = "LINE_TYPE"; +static const char stat_na_str[] = "NA"; //////////////////////////////////////////////////////////////////////// diff --git a/src/basic/vx_config/config_util.cc b/src/basic/vx_config/config_util.cc index fa2f777307..5c1778bf39 100644 --- a/src/basic/vx_config/config_util.cc +++ b/src/basic/vx_config/config_util.cc @@ -2320,49 +2320,52 @@ const char * statlinetype_to_string(const STATLineType t) { const char *s = (const char *) 0; switch(t) { - case(stat_sl1l2): s = stat_sl1l2_str; break; - case(stat_sal1l2): s = stat_sal1l2_str; break; - case(stat_vl1l2): s = stat_vl1l2_str; break; - case(stat_val1l2): s = stat_val1l2_str; break; - case(stat_vcnt): s = stat_vcnt_str; break; - - case(stat_fho): s = stat_fho_str; break; - case(stat_ctc): s = stat_ctc_str; break; - case(stat_cts): s = stat_cts_str; break; - case(stat_mctc): s = stat_mctc_str; break; - case(stat_mcts): s = stat_mcts_str; break; - - case(stat_cnt): s = stat_cnt_str; break; - case(stat_pct): s = stat_pct_str; break; - case(stat_pstd): s = stat_pstd_str; break; - case(stat_pjc): s = stat_pjc_str; break; - case(stat_prc): s = stat_prc_str; break; - - case(stat_eclv): s = stat_eclv_str; break; - case(stat_mpr): s = stat_mpr_str; break; - case(stat_nbrctc): s = stat_nbrctc_str; break; - case(stat_nbrcts): s = stat_nbrcts_str; break; - case(stat_nbrcnt): s = stat_nbrcnt_str; break; - - case(stat_grad): s = stat_grad_str; break; - case(stat_dmap): s = stat_dmap_str; break; - case(stat_isc): s = stat_isc_str; break; - case(stat_wdir): s = stat_wdir_str; break; - case(stat_ecnt): s = stat_ecnt_str; break; - - case(stat_rps): s = stat_rps_str; break; - case(stat_rhist): s = stat_rhist_str; break; - case(stat_phist): s = stat_phist_str; break; - case(stat_orank): s = stat_orank_str; break; - case(stat_ssvar): s = stat_ssvar_str; break; - - case(stat_relp): s = stat_relp_str; break; - case(stat_genmpr): s = stat_genmpr_str; break; - case(stat_ssidx): s = stat_ssidx_str; break; - case(stat_header): s = stat_header_str; break; + case(stat_sl1l2): s = stat_sl1l2_str; break; + case(stat_sal1l2): s = stat_sal1l2_str; break; + case(stat_vl1l2): s = stat_vl1l2_str; break; + case(stat_val1l2): s = stat_val1l2_str; break; + case(stat_vcnt): s = stat_vcnt_str; break; + + case(stat_fho): s = stat_fho_str; break; + case(stat_ctc): s = stat_ctc_str; break; + case(stat_cts): s = stat_cts_str; break; + case(stat_mctc): s = stat_mctc_str; break; + case(stat_mcts): s = stat_mcts_str; break; + + case(stat_cnt): s = stat_cnt_str; break; + case(stat_pct): s = stat_pct_str; break; + case(stat_pstd): s = stat_pstd_str; break; + case(stat_pjc): s = stat_pjc_str; break; + case(stat_prc): s = stat_prc_str; break; + + case(stat_eclv): s = stat_eclv_str; break; + case(stat_mpr): s = stat_mpr_str; break; + case(stat_seeps): s = stat_seeps_str; break; + case(stat_seeps_mpr): s = stat_seeps_mpr_str; break; + case(stat_nbrctc): s = stat_nbrctc_str; break; + + case(stat_nbrcts): s = stat_nbrcts_str; break; + case(stat_nbrcnt): s = stat_nbrcnt_str; break; + case(stat_grad): s = stat_grad_str; break; + case(stat_dmap): s = stat_dmap_str; break; + case(stat_isc): s = stat_isc_str; break; + + case(stat_wdir): s = stat_wdir_str; break; + case(stat_ecnt): s = stat_ecnt_str; break; + case(stat_rps): s = stat_rps_str; break; + case(stat_rhist): s = stat_rhist_str; break; + case(stat_phist): s = stat_phist_str; break; + + case(stat_orank): s = stat_orank_str; break; + case(stat_ssvar): s = stat_ssvar_str; break; + case(stat_relp): s = stat_relp_str; break; + case(stat_genmpr): s = stat_genmpr_str; break; + case(stat_ssidx): s = stat_ssidx_str; break; + + case(stat_header): s = stat_header_str; break; case(no_stat_line_type): - default: s = stat_na_str; break; + default: s = stat_na_str; break; } return(s); @@ -2383,48 +2386,51 @@ void statlinetype_to_string(const STATLineType t, char *out) { STATLineType string_to_statlinetype(const char *s) { STATLineType t; - if(strcasecmp(s, stat_sl1l2_str) == 0) t = stat_sl1l2; - else if(strcasecmp(s, stat_sal1l2_str) == 0) t = stat_sal1l2; - else if(strcasecmp(s, stat_vl1l2_str) == 0) t = stat_vl1l2; - else if(strcasecmp(s, stat_val1l2_str) == 0) t = stat_val1l2; - else if(strcasecmp(s, stat_vcnt_str) == 0) t = stat_vcnt; - - else if(strcasecmp(s, stat_fho_str) == 0) t = stat_fho; - else if(strcasecmp(s, stat_ctc_str) == 0) t = stat_ctc; - else if(strcasecmp(s, stat_cts_str) == 0) t = stat_cts; - else if(strcasecmp(s, stat_mctc_str) == 0) t = stat_mctc; - else if(strcasecmp(s, stat_mcts_str) == 0) t = stat_mcts; - - else if(strcasecmp(s, stat_cnt_str) == 0) t = stat_cnt; - else if(strcasecmp(s, stat_pct_str) == 0) t = stat_pct; - else if(strcasecmp(s, stat_pstd_str) == 0) t = stat_pstd; - else if(strcasecmp(s, stat_pjc_str) == 0) t = stat_pjc; - else if(strcasecmp(s, stat_prc_str) == 0) t = stat_prc; - - else if(strcasecmp(s, stat_eclv_str) == 0) t = stat_eclv; - else if(strcasecmp(s, stat_mpr_str) == 0) t = stat_mpr; - else if(strcasecmp(s, stat_nbrctc_str) == 0) t = stat_nbrctc; - else if(strcasecmp(s, stat_nbrcts_str) == 0) t = stat_nbrcts; - else if(strcasecmp(s, stat_nbrcnt_str) == 0) t = stat_nbrcnt; - - else if(strcasecmp(s, stat_grad_str) == 0) t = stat_grad; - else if(strcasecmp(s, stat_dmap_str) == 0) t = stat_dmap; - else if(strcasecmp(s, stat_isc_str) == 0) t = stat_isc; - else if(strcasecmp(s, stat_wdir_str) == 0) t = stat_wdir; - else if(strcasecmp(s, stat_ecnt_str) == 0) t = stat_ecnt; - - else if(strcasecmp(s, stat_rps_str) == 0) t = stat_rps; - else if(strcasecmp(s, stat_rhist_str) == 0) t = stat_rhist; - else if(strcasecmp(s, stat_phist_str) == 0) t = stat_phist; - else if(strcasecmp(s, stat_orank_str) == 0) t = stat_orank; - else if(strcasecmp(s, stat_ssvar_str) == 0) t = stat_ssvar; - - else if(strcasecmp(s, stat_relp_str) == 0) t = stat_relp; - else if(strcasecmp(s, stat_genmpr_str) == 0) t = stat_genmpr; - else if(strcasecmp(s, stat_ssidx_str) == 0) t = stat_ssidx; - else if(strcasecmp(s, stat_header_str) == 0) t = stat_header; - - else t = no_stat_line_type; + if(strcasecmp(s, stat_sl1l2_str) == 0) t = stat_sl1l2; + else if(strcasecmp(s, stat_sal1l2_str) == 0) t = stat_sal1l2; + else if(strcasecmp(s, stat_vl1l2_str) == 0) t = stat_vl1l2; + else if(strcasecmp(s, stat_val1l2_str) == 0) t = stat_val1l2; + else if(strcasecmp(s, stat_vcnt_str) == 0) t = stat_vcnt; + + else if(strcasecmp(s, stat_fho_str) == 0) t = stat_fho; + else if(strcasecmp(s, stat_ctc_str) == 0) t = stat_ctc; + else if(strcasecmp(s, stat_cts_str) == 0) t = stat_cts; + else if(strcasecmp(s, stat_mctc_str) == 0) t = stat_mctc; + else if(strcasecmp(s, stat_mcts_str) == 0) t = stat_mcts; + + else if(strcasecmp(s, stat_cnt_str) == 0) t = stat_cnt; + else if(strcasecmp(s, stat_pct_str) == 0) t = stat_pct; + else if(strcasecmp(s, stat_pstd_str) == 0) t = stat_pstd; + else if(strcasecmp(s, stat_pjc_str) == 0) t = stat_pjc; + else if(strcasecmp(s, stat_prc_str) == 0) t = stat_prc; + + else if(strcasecmp(s, stat_eclv_str) == 0) t = stat_eclv; + else if(strcasecmp(s, stat_mpr_str) == 0) t = stat_mpr; + else if(strcasecmp(s, stat_seeps_str) == 0) t = stat_seeps; + else if(strcasecmp(s, stat_seeps_mpr_str) == 0) t = stat_seeps_mpr; + else if(strcasecmp(s, stat_nbrctc_str) == 0) t = stat_nbrctc; + + else if(strcasecmp(s, stat_nbrcts_str) == 0) t = stat_nbrcts; + else if(strcasecmp(s, stat_nbrcnt_str) == 0) t = stat_nbrcnt; + else if(strcasecmp(s, stat_grad_str) == 0) t = stat_grad; + else if(strcasecmp(s, stat_dmap_str) == 0) t = stat_dmap; + else if(strcasecmp(s, stat_isc_str) == 0) t = stat_isc; + + else if(strcasecmp(s, stat_wdir_str) == 0) t = stat_wdir; + else if(strcasecmp(s, stat_ecnt_str) == 0) t = stat_ecnt; + else if(strcasecmp(s, stat_rps_str) == 0) t = stat_rps; + else if(strcasecmp(s, stat_rhist_str) == 0) t = stat_rhist; + else if(strcasecmp(s, stat_phist_str) == 0) t = stat_phist; + + else if(strcasecmp(s, stat_orank_str) == 0) t = stat_orank; + else if(strcasecmp(s, stat_ssvar_str) == 0) t = stat_ssvar; + else if(strcasecmp(s, stat_relp_str) == 0) t = stat_relp; + else if(strcasecmp(s, stat_genmpr_str) == 0) t = stat_genmpr; + else if(strcasecmp(s, stat_ssidx_str) == 0) t = stat_ssidx; + + else if(strcasecmp(s, stat_header_str) == 0) t = stat_header; + + else t = no_stat_line_type; return(t); } diff --git a/src/basic/vx_log/concat_string.cc b/src/basic/vx_log/concat_string.cc index 03669e9e28..6635ecc9e4 100644 --- a/src/basic/vx_log/concat_string.cc +++ b/src/basic/vx_log/concat_string.cc @@ -25,6 +25,11 @@ using namespace std; #include "str_wrappers.h" +//////////////////////////////////////////////////////////////////////// + +static StringArray env_name_list; +static StringArray nested_env_name_list; + //////////////////////////////////////////////////////////////////////// @@ -1201,8 +1206,11 @@ if ((ptr = getenv(env_name)) == NULL) return(false); env_value = ptr; str = env_value; -mlog << Debug(10) << method_name - << " " << env_name << " to " << env_value << "\n"; +if (!env_name_list.has(env_name)) { + env_name_list.add(env_name); + mlog << Debug(10) << method_name + << " " << env_name << " to " << env_value << "\n"; +} int count_replaced = 0; string nested_value; @@ -1241,8 +1249,11 @@ while ((pos = str.find('$', pos)) != string::npos) { } nested_value = ptr; str.replace(pos, (pos_end - pos), nested_value); - mlog << Debug(7) << method_name << " " << nested_name - << " to " << nested_value << "\n"; + if (!nested_env_name_list.has(nested_name)) { + nested_env_name_list.add(nested_name); + mlog << Debug(7) << method_name << " " << nested_name + << " to " << nested_value << "\n"; + } count_replaced++; } diff --git a/src/basic/vx_util/ascii_header.cc b/src/basic/vx_util/ascii_header.cc index 9262714746..adf307e47a 100644 --- a/src/basic/vx_util/ascii_header.cc +++ b/src/basic/vx_util/ascii_header.cc @@ -127,6 +127,7 @@ void AsciiHeaderLine::clear() { void AsciiHeaderLine::set_col_names(const char *s) { ConcatString cs; StringArray tok; + const char *method_name = "AsciiHeaderLine::set_col_names(const char *) -> "; // Parse the header column names ColNames.parse_wsss(s); @@ -139,7 +140,7 @@ void AsciiHeaderLine::set_col_names(const char *s) { // Can only have one variable index column if(VarIndexName.nonempty()) { - mlog << Error << "\nAsciiHeaderLine::set(const char *line) -> " + mlog << Error << "\n" << method_name << "can't have multiple variable index columns in line:\n" << s << "\n\n"; exit(1); @@ -160,7 +161,7 @@ void AsciiHeaderLine::set_col_names(const char *s) { // Check that the variable index column has already been set if(VarIndexName.empty()) { - mlog << Error << "\nAsciiHeaderLine::set(const char *line) -> " + mlog << Error << "\n" << method_name << "lines with variable length columns must also " << "contain a variable index column:\n" << s << "\n\n"; @@ -223,8 +224,8 @@ int AsciiHeaderLine::col_offset(const char *name, const int dim) const { // Search for column names using regular expressions for(i=0, match=bad_data_int; i= length(dim)) { - mlog << Error << "\nAsciiHeaderLine::col_name() -> " + mlog << Error << "\n" << method_name << "range check error for data/line type \"" << DataType << "/" << LineType << "\" and offset = " << offset << "\n\n"; @@ -404,6 +406,7 @@ void AsciiHeader::read(const char *version) { DataLine line; AsciiHeaderLine header_line; LineDataFile in; + const char *method_name = "AsciiHeader::read() -> "; // Set the delimiter for parsing this data line.set_delimiter(ascii_header_delim); @@ -419,7 +422,7 @@ void AsciiHeader::read(const char *version) { // Open the data file if(!in.open(file_name.c_str())) { - mlog << Error << "\nAsciiHeader::read() -> " + mlog << Error << "\n" << method_name << "trouble reading file:\n" << file_name << "\n\n"; exit(1); } @@ -432,7 +435,7 @@ void AsciiHeader::read(const char *version) { // Check for the expected number of tokens if(line.n_items() != 4) { - mlog << Error << "\nAsciiHeader::read() -> " + mlog << Error << "\n" << method_name << "expected 4 tokens but found " << line.n_items() << " on line number " << line.line_number() << " of file:\n" << file_name << "\n\n"; @@ -462,7 +465,7 @@ void AsciiHeader::read(const char *version) { const AsciiHeaderLine * AsciiHeader::header(const char *version, const char *data_type, const char *line_type) { - + const char *method_name = "AsciiHeader::header() -> "; ConcatString version_mm(parse_version_major_minor(version)); // Check if the version needs to be loaded @@ -480,7 +483,7 @@ const AsciiHeaderLine * AsciiHeader::header(const char *version, // Check for no match if(it == Headers.end()) { - mlog << Error << "\nAsciiHeaderLine::header() -> " + mlog << Error << "\n" << method_name << "can't find header columns for MET version \"" << version << "\", data type \"" << data_type << "\", line type \"" << line_type << "\"!\n\n"; diff --git a/src/basic/vx_util/stat_column_defs.h b/src/basic/vx_util/stat_column_defs.h index 85273a1397..111829c07a 100644 --- a/src/basic/vx_util/stat_column_defs.h +++ b/src/basic/vx_util/stat_column_defs.h @@ -155,7 +155,8 @@ static const char * vcnt_columns [] = { "SPEED_ABSERR", "SPEED_ABSERR_BCL", "SPEED_ABSERR_BCU", "DIR_ERR", "DIR_ERR_BCL", "DIR_ERR_BCU", "DIR_ABSERR", "DIR_ABSERR_BCL", "DIR_ABSERR_BCU", - "ANOM_CORR", "ANOM_CORR_NCL", "ANOM_CORR_NCU", "ANOM_CORR_BCL", "ANOM_CORR_BCU", + "ANOM_CORR", "ANOM_CORR_NCL", "ANOM_CORR_NCU", + "ANOM_CORR_BCL", "ANOM_CORR_BCU", "ANOM_CORR_UNCNTR", "ANOM_CORR_UNCNTR_BCL", "ANOM_CORR_UNCNTR_BCU", }; @@ -361,6 +362,23 @@ static const char * job_ramp_mpr_columns [] = { "CATEGORY" }; +static const char * seeps_mpr_columns [] = { + "OBS_SID", "OBS_LAT", "OBS_LON", + "FCST", "OBS", "OBS_QC", + "FCST_CAT", "OBS_CAT", "P1", + "P2", "T1", "T2", + "SEEPS" +}; + +static const char * seeps_columns [] = { + "TOTAL", "S12", "S13", + "S21", "S23", "S31", + "S32", "PF1", "PF2", + "PF3", "PV1", "PV2", + "PV3", "MEAN_FCST", "MEAN_OBS", + "SEEPS" +}; + //////////////////////////////////////////////////////////////////////// static const int max_stat_col = 100; @@ -380,6 +398,8 @@ static const int n_sal1l2_columns = sizeof(sal1l2_columns)/sizeof(*sal1l2_ static const int n_vl1l2_columns = sizeof(vl1l2_columns)/sizeof(*vl1l2_columns); static const int n_val1l2_columns = sizeof(val1l2_columns)/sizeof(*val1l2_columns); static const int n_vcnt_columns = sizeof(vcnt_columns)/sizeof(*vcnt_columns); +static const int n_seeps_columns = sizeof(seeps_columns)/sizeof(*seeps_columns); +static const int n_seeps_mpr_columns = sizeof(seeps_mpr_columns)/sizeof(*seeps_mpr_columns); static const int n_pct_columns = sizeof(pct_columns)/sizeof(*pct_columns); static const int n_pstd_columns = sizeof(pstd_columns)/sizeof(*pstd_columns); diff --git a/src/basic/vx_util_math/Makefile.am b/src/basic/vx_util_math/Makefile.am index 445c312ec3..d1d3fd8da4 100644 --- a/src/basic/vx_util_math/Makefile.am +++ b/src/basic/vx_util_math/Makefile.am @@ -8,8 +8,6 @@ MAINTAINERCLEANFILES = Makefile.in include ${top_srcdir}/Make-include -OPT_PYTHON_SOURCES = - # The library noinst_LIBRARIES = libvx_util_math.a diff --git a/src/basic/vx_util_math/Makefile.in b/src/basic/vx_util_math/Makefile.in index 66ac10cad7..969d375ad2 100644 --- a/src/basic/vx_util_math/Makefile.in +++ b/src/basic/vx_util_math/Makefile.in @@ -328,7 +328,6 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ MAINTAINERCLEANFILES = Makefile.in -OPT_PYTHON_SOURCES = # The library noinst_LIBRARIES = libvx_util_math.a diff --git a/src/libcode/Makefile.am b/src/libcode/Makefile.am index 7d6f82fb1e..b22ff5ea90 100644 --- a/src/libcode/Makefile.am +++ b/src/libcode/Makefile.am @@ -60,6 +60,7 @@ SUBDIRS += vx_data2d_factory \ vx_regrid \ vx_nc_obs \ vx_solar \ - vx_bool_calc + vx_bool_calc \ + vx_seeps MAINTAINERCLEANFILES = Makefile.in diff --git a/src/libcode/Makefile.in b/src/libcode/Makefile.in index 81233c2ca0..631e84600e 100644 --- a/src/libcode/Makefile.in +++ b/src/libcode/Makefile.in @@ -162,7 +162,7 @@ DIST_SUBDIRS = vx_grid vx_data2d vx_nc_util vx_data2d_grib \ vx_render vx_ps vx_plot_util vx_shapedata vx_statistics \ vx_stat_out vx_analysis_util vx_tc_util vx_summary \ vx_time_series vx_physics vx_series_data vx_regrid vx_nc_obs \ - vx_solar vx_bool_calc + vx_solar vx_bool_calc vx_seeps am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ @@ -341,7 +341,7 @@ SUBDIRS = vx_grid vx_data2d vx_nc_util vx_data2d_grib vx_data2d_nc_met \ vx_render vx_ps vx_plot_util vx_shapedata vx_statistics \ vx_stat_out vx_analysis_util vx_tc_util vx_summary \ vx_time_series vx_physics vx_series_data vx_regrid vx_nc_obs \ - vx_solar vx_bool_calc + vx_solar vx_bool_calc vx_seeps MAINTAINERCLEANFILES = Makefile.in all: all-recursive diff --git a/src/libcode/vx_seeps/Makefile.am b/src/libcode/vx_seeps/Makefile.am new file mode 100644 index 0000000000..2e8bd0f20e --- /dev/null +++ b/src/libcode/vx_seeps/Makefile.am @@ -0,0 +1,16 @@ +## @start 1 +## Makefile.am -- Process this file with automake to produce Makefile.in +## @end 1 + +MAINTAINERCLEANFILES = Makefile.in + +# Include the project definitions + +include ${top_srcdir}/Make-include + +# The library + +noinst_LIBRARIES = libvx_seeps.a +libvx_seeps_a_SOURCES = \ + seeps.cc seeps.h +libvx_seeps_a_CPPFLAGS = ${MET_CPPFLAGS} diff --git a/src/libcode/vx_seeps/Makefile.in b/src/libcode/vx_seeps/Makefile.in new file mode 100644 index 0000000000..a8801149e5 --- /dev/null +++ b/src/libcode/vx_seeps/Makefile.in @@ -0,0 +1,635 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/libcode/vx_seeps +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +AR = ar +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libvx_seeps_a_AR = $(AR) $(ARFLAGS) +libvx_seeps_a_LIBADD = +am_libvx_seeps_a_OBJECTS = libvx_seeps_a-seeps.$(OBJEXT) +libvx_seeps_a_OBJECTS = $(am_libvx_seeps_a_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/libvx_seeps_a-seeps.Po +am__mv = mv -f +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libvx_seeps_a_SOURCES) +DIST_SOURCES = $(libvx_seeps_a_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUFRLIB_NAME = @BUFRLIB_NAME@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FC_LIBS = @FC_LIBS@ +FFLAGS = @FFLAGS@ +FLIBS = @FLIBS@ +GREP = @GREP@ +GRIB2CLIB_NAME = @GRIB2CLIB_NAME@ +GRIB2_LIBS = @GRIB2_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MET_BUFR = @MET_BUFR@ +MET_BUFRLIB = @MET_BUFRLIB@ +MET_CAIRO = @MET_CAIRO@ +MET_CAIROINC = @MET_CAIROINC@ +MET_CAIROLIB = @MET_CAIROLIB@ +MET_FREETYPE = @MET_FREETYPE@ +MET_FREETYPEINC = @MET_FREETYPEINC@ +MET_FREETYPELIB = @MET_FREETYPELIB@ +MET_GRIB2C = @MET_GRIB2C@ +MET_GRIB2CINC = @MET_GRIB2CINC@ +MET_GRIB2CLIB = @MET_GRIB2CLIB@ +MET_GSL = @MET_GSL@ +MET_GSLINC = @MET_GSLINC@ +MET_GSLLIB = @MET_GSLLIB@ +MET_HDF = @MET_HDF@ +MET_HDF5 = @MET_HDF5@ +MET_HDF5INC = @MET_HDF5INC@ +MET_HDF5LIB = @MET_HDF5LIB@ +MET_HDFEOS = @MET_HDFEOS@ +MET_HDFEOSINC = @MET_HDFEOSINC@ +MET_HDFEOSLIB = @MET_HDFEOSLIB@ +MET_HDFINC = @MET_HDFINC@ +MET_HDFLIB = @MET_HDFLIB@ +MET_NETCDF = @MET_NETCDF@ +MET_NETCDFINC = @MET_NETCDFINC@ +MET_NETCDFLIB = @MET_NETCDFLIB@ +MET_PYTHON_CC = @MET_PYTHON_CC@ +MET_PYTHON_LD = @MET_PYTHON_LD@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +OPENMP_CFLAGS = @OPENMP_CFLAGS@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON_LIBS = @PYTHON_LIBS@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +MAINTAINERCLEANFILES = Makefile.in + +# The library +noinst_LIBRARIES = libvx_seeps.a +libvx_seeps_a_SOURCES = \ + seeps.cc seeps.h + +libvx_seeps_a_CPPFLAGS = ${MET_CPPFLAGS} +all: all-am + +.SUFFIXES: +.SUFFIXES: .cc .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libcode/vx_seeps/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/libcode/vx_seeps/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +libvx_seeps.a: $(libvx_seeps_a_OBJECTS) $(libvx_seeps_a_DEPENDENCIES) $(EXTRA_libvx_seeps_a_DEPENDENCIES) + $(AM_V_at)-rm -f libvx_seeps.a + $(AM_V_AR)$(libvx_seeps_a_AR) libvx_seeps.a $(libvx_seeps_a_OBJECTS) $(libvx_seeps_a_LIBADD) + $(AM_V_at)$(RANLIB) libvx_seeps.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libvx_seeps_a-seeps.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.cc.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cc.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +libvx_seeps_a-seeps.o: seeps.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_seeps_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libvx_seeps_a-seeps.o -MD -MP -MF $(DEPDIR)/libvx_seeps_a-seeps.Tpo -c -o libvx_seeps_a-seeps.o `test -f 'seeps.cc' || echo '$(srcdir)/'`seeps.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvx_seeps_a-seeps.Tpo $(DEPDIR)/libvx_seeps_a-seeps.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='seeps.cc' object='libvx_seeps_a-seeps.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_seeps_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libvx_seeps_a-seeps.o `test -f 'seeps.cc' || echo '$(srcdir)/'`seeps.cc + +libvx_seeps_a-seeps.obj: seeps.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_seeps_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libvx_seeps_a-seeps.obj -MD -MP -MF $(DEPDIR)/libvx_seeps_a-seeps.Tpo -c -o libvx_seeps_a-seeps.obj `if test -f 'seeps.cc'; then $(CYGPATH_W) 'seeps.cc'; else $(CYGPATH_W) '$(srcdir)/seeps.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libvx_seeps_a-seeps.Tpo $(DEPDIR)/libvx_seeps_a-seeps.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='seeps.cc' object='libvx_seeps_a-seeps.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libvx_seeps_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libvx_seeps_a-seeps.obj `if test -f 'seeps.cc'; then $(CYGPATH_W) 'seeps.cc'; else $(CYGPATH_W) '$(srcdir)/seeps.cc'; fi` + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/libvx_seeps_a-seeps.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/libvx_seeps_a-seeps.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-noinstLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Include the project definitions + +include ${top_srcdir}/Make-include + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/libcode/vx_seeps/seeps.cc b/src/libcode/vx_seeps/seeps.cc new file mode 100644 index 0000000000..fa8ce18715 --- /dev/null +++ b/src/libcode/vx_seeps/seeps.cc @@ -0,0 +1,498 @@ + + +//////////////////////////////////////////////////////////////////////// + + +using namespace std; + +#include +#include +#include +#include +#include +#include +#include + +#include "file_exists.h" + +#include "string_fxns.h" +#include "vx_log.h" +#include "nc_utils.h" +#include "seeps.h" + +//////////////////////////////////////////////////////////////////////// + +bool standalone_debug_seeps = false; + +static SeepsClimo *seeps_Climo = 0; + +static const char *def_seeps_filename = "MET_BASE/climo/seeps/PPT24_seepsweights.nc"; + +static const char *var_name_sid = "sid"; +static const char *var_name_lat = "lat"; +static const char *var_name_lon = "lon"; +static const char *var_name_elv = "elv"; + +//////////////////////////////////////////////////////////////////////// + +SeepsClimo *get_seeps_climo() { + if (! seeps_Climo) seeps_Climo = new SeepsClimo(); + return seeps_Climo; +} + +//////////////////////////////////////////////////////////////////////// + +void release_seeps_climo() { + if (seeps_Climo) { delete seeps_Climo; seeps_Climo = 0; } +} + +//////////////////////////////////////////////////////////////////////// + + +SeepsClimo::SeepsClimo() { + + ConcatString seeps_name= get_seeps_climo_filename(); + if (file_exists(seeps_name.c_str())) { + read_records(seeps_name); + } +} + +//////////////////////////////////////////////////////////////////////// + +SeepsClimo::~SeepsClimo() { + clear(); +} + +//////////////////////////////////////////////////////////////////////// + +void SeepsClimo::clear() { + for (map::iterator it=seeps_score_00_map.begin(); + it!=seeps_score_00_map.end(); ++it) { + delete it->second; + } + + for (map::iterator it=seeps_score_12_map.begin(); + it!=seeps_score_12_map.end(); ++it) { + delete it->second; + } + + seeps_score_00_map.clear(); + seeps_score_12_map.clear(); +}; + +//////////////////////////////////////////////////////////////////////// + +SeepsClimoRecord *SeepsClimo::create_climo_record( + int sid, float lat, float lon, float elv, + float *p1, float *p2, float *t1, float *t2, float *scores) { + int offset; + SeepsClimoRecord *record = new SeepsClimoRecord(); + + record->sid = sid; + record->lat = lat; + record->lon = lon; + record->elv = elv; + if (standalone_debug_seeps && SAMPLE_STATION_ID == sid) { + cout << " sid=" << sid << ", lat=" << lat << ", lon=" << lon << ", elv=" << elv << "\n"; + } + for (int idx=0; idxp1[idx] = p1[idx]; + record->p2[idx] = p2[idx]; + record->t1[idx] = t1[idx]; + record->t2[idx] = t2[idx]; + + if (standalone_debug_seeps && SAMPLE_STATION_ID == sid) { + cout << str_format("\t%2d: %6.3f %6.3f %6.3f %6.3f ", + (idx+1), record->p1[idx], record->p2[idx], record->t1[idx], record->t2[idx]); + } + for (int idx_m=0; idx_mscores[idx][idx_m] = scores[offset]; + if (standalone_debug_seeps && SAMPLE_STATION_ID == sid) { + cout << str_format(" %.3f", record->scores[idx][idx_m]); + } + } + if (standalone_debug_seeps && SAMPLE_STATION_ID == sid) cout << "\n"; + } + + return record; +} + +//////////////////////////////////////////////////////////////////////// + +SeepsRecord *SeepsClimo::get_record(int sid, int month, int hour) { + SeepsRecord *record = 0; + const char *method_name = "SeepsClimo::get_record() -> "; + + if (seeps_ready) { + SeepsClimoRecord *climo_record = 0; + map::iterator it; + if (hour < 6 || hour >= 18) { + it = seeps_score_00_map.find(sid); + if (it != seeps_score_00_map.end()) climo_record = it->second; + } + else { + it = seeps_score_12_map.find(sid); + if (it != seeps_score_12_map.end()) climo_record = it->second; + } + if (climo_record) { + + record = new SeepsRecord; + record->sid = climo_record->sid; + record->lat = climo_record->lat; + record->lon = climo_record->lon; + record->elv = climo_record->elv; + record->month = month; + record->p1 = climo_record->p1[month-1]; + record->p2 = climo_record->p2[month-1]; + record->t1 = climo_record->t1[month-1]; + record->t2 = climo_record->t2[month-1]; + for (int idx=0; idxscores[idx] = climo_record->scores[month-1][idx]; + } + } + } + else { + mlog << Error << "\n" << method_name + << "The SEEPS climo data is missing!" + << " Turn off SEEPS and SEEPS_MPR to continue\n\n"; + exit(1); + } + return record; +} + +//////////////////////////////////////////////////////////////////////// + +ConcatString SeepsClimo::get_seeps_climo_filename() { + ConcatString seeps_filename; + const char *method_name = "SeepsClimo::get_seeps_climo_filename() -> "; + + // Use the MET_TMP_DIR environment variable, if set. + bool use_env = get_env(MET_ENV_SEEPS_CLIMO_NAME, seeps_filename); + if(use_env) { + seeps_filename = replace_path(seeps_filename); + } + else seeps_filename = replace_path(def_seeps_filename); + + if (seeps_ready = file_exists(seeps_filename.c_str())) { + mlog << Debug(7) << method_name << "SEEPS climo name=\"" + << seeps_filename.c_str() << "\"\n"; + } + else { + ConcatString message = " "; + if (use_env) { + message.add("from the env. name "); + message.add(MET_ENV_SEEPS_CLIMO_NAME); + } + mlog << Warning << "\n" << method_name + << "The SEEPS climo name \"" << seeps_filename.c_str() + << "\"" << message << " does not exist!\n\n"; + } + + return seeps_filename; +} + +//////////////////////////////////////////////////////////////////////// + +float SeepsClimo::get_score(int sid, float p_fcst, float p_obs, + int month, int hour) { + float score = (float)bad_data_double; + SeepsRecord *record = get_record(sid, month, hour); + + if (record) { + // Determine location in contingency table + int ic = (p_obs>record->t1)+(p_obs>record->t2); + int jc = (p_fcst>record->t1)+(p_fcst>record->t2); + + score = record->scores[(jc*3)+ic]; + } + + return score; +} + +//////////////////////////////////////////////////////////////////////// + +SeepsScore *SeepsClimo::get_seeps_score(int sid, float p_fcst, + float p_obs, int month, int hour) { + SeepsScore *score = 0; + SeepsRecord *record = get_record(sid, month, hour); + + if (record) { + score = new SeepsScore(); + score->p1 = record->p1; + score->p2 = record->p1; + score->t1 = record->t1; + score->t2 = record->t2; + + score->obs_cat = (p_obs>record->t1)+(p_obs>record->t2); + score->model_cat = (p_fcst>record->t1)+(p_fcst>record->t2); + score->score = record->scores[(score->model_cat*3)+score->obs_cat]; + } + + return score; +} + + +//////////////////////////////////////////////////////////////////////// + +void SeepsClimo::print_all() { + const char *method_name = "SeepsClimo::print_all() -> "; + + cout << "\n"; + cout << "=============== 00Z ===============\n"; + cout << " sid\tlat\tlon\telv\n"; + cout << "\tmonth\tp1\tp2\tt1\tt2\tscores (3 by 3 matrix)\n"; + for (map::iterator it=seeps_score_00_map.begin(); + it!=seeps_score_00_map.end(); ++it) { + print_record(it->second); + } + + cout << "\n"; + cout << "=============== 12Z ===============\n"; + cout << " sid\tlat\tlon\telv\n"; + cout << "\tmonth\tp1\tp2\tt1\tt2\tscores (3 by 3 matrix)\n"; + for (map::iterator it=seeps_score_12_map.begin(); + it!=seeps_score_12_map.end(); ++it) { + print_record(it->second); + } + +} + +//////////////////////////////////////////////////////////////////////// + +void SeepsClimo::print_record(SeepsClimoRecord *record, bool with_header) { + if (with_header) { + cout << " sid\tlat\tlon\telv\n"; + cout << "\tmonth\tp1\tp2\tt1\tt2\tscores (3 by 3 matrix)\n"; + } + cout << " " << record->sid << "\t" << record->lat << "\t" << record->lon + << "\t" << record->elv << "\n"; + for (int idx=0; idxp1[idx] << "\t" << record->p2[idx] + << "\t" << record->t1[idx] << "\t" << record->t2[idx]; + for (int idx2=0; idx2scores[idx][idx2]; + } + cout << "\n"; + } +} + +//////////////////////////////////////////////////////////////////////// + +void SeepsClimo::print_record(SeepsRecord *record, bool with_header) { + if (with_header) cout << " sid\tlat\tlon\telv\tp1\tp2\tt1\tt2\tscores (3 by 3 matrix)\n"; + + cout << " " << record->sid << "\t" << record->lat << "\t" << record->lon + << "\t" << record->elv << "\t" << record->p1 << "\t" << record->p2 + << "\t" << record->t1 << "\t" << record->t2; + for (int idx=0; idxscores[idx]; + } + cout << " for month " << record->month << "\n"; +} + +//////////////////////////////////////////////////////////////////////// + +void SeepsClimo::read_records(ConcatString filename) { + clock_t clock_time = clock(); + float p1_00_buf[SEEPS_MONTH]; + float p2_00_buf[SEEPS_MONTH]; + float t1_00_buf[SEEPS_MONTH]; + float t2_00_buf[SEEPS_MONTH]; + float p1_12_buf[SEEPS_MONTH]; + float p2_12_buf[SEEPS_MONTH]; + float t1_12_buf[SEEPS_MONTH]; + float t2_12_buf[SEEPS_MONTH]; + float matrix_00_buf[SEEPS_MONTH*SEEPS_MATRIX_SIZE]; + float matrix_12_buf[SEEPS_MONTH*SEEPS_MATRIX_SIZE]; + NcFile *nc_file = open_ncfile(filename.c_str()); + const char *method_name = "SeepsClimo::read_records() -> "; + + // dimensions: month = 12 ; nstn = 5293 ; nmatrix = 9 ; + get_dim(nc_file, dim_name_nstn, nstn, true); + mlog << Debug(3) << method_name << "dimension nstn = " << nstn << "\n"; + if (standalone_debug_seeps) cout << "dimension nstn = " << nstn << "\n"; + + int *sid_array = new int[nstn]; + float *lat_array = new float[nstn]; + float *lon_array = new float[nstn]; + float *elv_array = new float[nstn]; + float *p1_00_array = new float[nstn*SEEPS_MONTH]; + float *p2_00_array = new float[nstn*SEEPS_MONTH]; + float *t1_00_array = new float[nstn*SEEPS_MONTH]; + float *t2_00_array = new float[nstn*SEEPS_MONTH]; + float *p1_12_array = new float[nstn*SEEPS_MONTH]; + float *p2_12_array = new float[nstn*SEEPS_MONTH]; + float *t1_12_array = new float[nstn*SEEPS_MONTH]; + float *t2_12_array = new float[nstn*SEEPS_MONTH]; + float *matrix_00_array = new float[nstn*SEEPS_MONTH*SEEPS_MATRIX_SIZE]; + float *matrix_12_array = new float[nstn*SEEPS_MONTH*SEEPS_MATRIX_SIZE]; + + NcVar var_sid = get_nc_var(nc_file, var_name_sid); + NcVar var_lat = get_nc_var(nc_file, var_name_lat); + NcVar var_lon = get_nc_var(nc_file, var_name_lon); + NcVar var_elv = get_nc_var(nc_file, var_name_elv); + NcVar var_p1_00 = get_nc_var(nc_file, var_name_p1_00); + NcVar var_p2_00 = get_nc_var(nc_file, var_name_p2_00); + NcVar var_t1_00 = get_nc_var(nc_file, var_name_t1_00); + NcVar var_t2_00 = get_nc_var(nc_file, var_name_t2_00); + NcVar var_p1_12 = get_nc_var(nc_file, var_name_p1_12); + NcVar var_p2_12 = get_nc_var(nc_file, var_name_p2_12); + NcVar var_t1_12 = get_nc_var(nc_file, var_name_t1_12); + NcVar var_t2_12 = get_nc_var(nc_file, var_name_t2_12); + NcVar var_matrix_00 = get_nc_var(nc_file, var_name_matrix_00); + NcVar var_matrix_12 = get_nc_var(nc_file, var_name_matrix_12); + + if (IS_INVALID_NC(var_sid) || !get_nc_data(&var_sid, sid_array)) { + mlog << Error << "\n" << method_name + << "Did not get sid\n\n"; + exit(1); + } + if (IS_INVALID_NC(var_lat) || !get_nc_data(&var_lat, lat_array)) { + mlog << Error << "\n" << method_name + << "Did not get lat\n\n"; + exit(1); + } + if (IS_INVALID_NC(var_lon) || !get_nc_data(&var_lon, lon_array)) { + mlog << Error << "\n" << method_name + << "Did not get lon\n\n"; + exit(1); + } + if (IS_INVALID_NC(var_elv) || !get_nc_data(&var_elv, elv_array)) { + mlog << Error << "\n" << method_name + << "Did not get elv\n\n"; + exit(1); + } + if (IS_INVALID_NC(var_p1_00) || !get_nc_data(&var_p1_00, p1_00_array)) { + mlog << Error << "\n" << method_name + << "Did not get p1_00\n\n"; + exit(1); + } + if (IS_INVALID_NC(var_p2_00) || !get_nc_data(&var_p2_00, p2_00_array)) { + mlog << Error << "\n" << method_name + << "Did not get p2_00\n\n"; + exit(1); + } + if (IS_INVALID_NC(var_t1_00) || !get_nc_data(&var_t1_00, t1_00_array)) { + mlog << Error << "\n" << method_name + << "Did not get t1_00\n\n"; + exit(1); + } + if (IS_INVALID_NC(var_t2_00) || !get_nc_data(&var_t2_00, t2_00_array)) { + mlog << Error << "\n" << method_name + << "Did not get t2_00\n\n"; + exit(1); + } + if (IS_INVALID_NC(var_p1_12) || !get_nc_data(&var_p1_12, p1_12_array)) { + mlog << Error << "\n" << method_name + << "Did not get p1_12\n\n"; + exit(1); + } + if (IS_INVALID_NC(var_p2_12) || !get_nc_data(&var_p2_12, p2_12_array)) { + mlog << Error << "\n" << method_name + << "Did not get p2_12\n\n"; + exit(1); + } + if (IS_INVALID_NC(var_t1_12) || !get_nc_data(&var_t1_12, t1_12_array)) { + mlog << Error << "\n" << method_name + << "Did not get t1_12\n\n"; + exit(1); + } + if (IS_INVALID_NC(var_t2_12) || !get_nc_data(&var_t2_12, t2_12_array)) { + mlog << Error << "\n" << method_name + << "Did not get t2_12\n\n"; + exit(1); + } + if (IS_INVALID_NC(var_matrix_00) || !get_nc_data(&var_matrix_00, matrix_00_array)) { + mlog << Error << "\n" << method_name + << "Did not get matrix_00\n\n"; + exit(1); + } + if (IS_INVALID_NC(var_matrix_12) || !get_nc_data(&var_matrix_12, matrix_12_array)) { + mlog << Error << "\n" << method_name + << "Did not get matrix_12\n\n"; + exit(1); + } + + SeepsClimoRecord *rec_00; + SeepsClimoRecord *rec_12; + for (int idx=0; idxclose(); + + float duration = (float)(clock() - clock_time)/CLOCKS_PER_SEC; + mlog << Debug(4) << method_name << "took " << duration << " seconds\n"; + if (standalone_debug_seeps) cout << method_name << "took " << duration << " seconds\n"; + +} + +//////////////////////////////////////////////////////////////////////// + +void SeepsAggScore::init() { + + n_obs = 0; + c12 = 0; + c13 = 0; + c21 = 0; + c23 = 0; + c31 = 0; + c32 = 0; + s12 = 0.; + s13 = 0.; + s21 = 0.; + s23 = 0.; + s31 = 0.; + s32 = 0.; + pv1 = 0.; + pv2 = 0.; + pv3 = 0.; + pf1 = 0.; + pf2 = 0.; + pf3 = 0.; + mean_fcst = bad_data_double; + mean_obs = bad_data_double; + score = bad_data_double; + +} + +//////////////////////////////////////////////////////////////////////// diff --git a/src/libcode/vx_seeps/seeps.h b/src/libcode/vx_seeps/seeps.h new file mode 100644 index 0000000000..ad6d52691a --- /dev/null +++ b/src/libcode/vx_seeps/seeps.h @@ -0,0 +1,163 @@ + + +//////////////////////////////////////////////////////////////////////// + + +#ifndef __SEEPS_H__ +#define __SEEPS_H__ + + +//////////////////////////////////////////////////////////////////////// + + +#include + +#include "concat_string.h" + + +//////////////////////////////////////////////////////////////////////// + +#define SEEPS_MONTH 12 +#define SEEPS_MATRIX_SIZE 9 + +#define SAMPLE_STATION_ID 11035 + +//////////////////////////////////////////////////////////////////////// + +static const char *MET_ENV_SEEPS_CLIMO_NAME = "MET_SEEPS_CLIMO_NAME"; + +static const char *dim_name_nstn = "nstn"; + +static const char *var_name_p1_00 = "p1_00"; +static const char *var_name_p2_00 = "p2_00"; +static const char *var_name_t1_00 = "t1_00"; +static const char *var_name_t2_00 = "t2_00"; +static const char *var_name_p1_12 = "p1_12"; +static const char *var_name_p2_12 = "p2_12"; +static const char *var_name_t1_12 = "t1_12"; +static const char *var_name_t2_12 = "t2_12"; +static const char *var_name_matrix_00 = "matrix_00"; +static const char *var_name_matrix_12 = "matrix_12"; + +//////////////////////////////////////////////////////////////////////// + +struct SeepsScore { + int obs_cat; // i = obs category 0,1,2 + int model_cat; // j = model category 0,1,2 + float p1; + float p2; + float t1; + float t2; + float score; +}; + +//////////////////////////////////////////////////////////////////////// + +struct SeepsAggScore { + void init(); + + int n_obs; + int c12; + int c13; + int c21; + int c23; + int c31; + int c32; + float s12; + float s13; + float s21; + float s23; + float s31; + float s32; + float pv1; // marginal probabilities of the observed values + float pv2; + float pv3; + float pf1; // marginal probabilities of the forecast values + float pf2; + float pf3; + float mean_fcst; + float mean_obs; + float score; +}; + +//////////////////////////////////////////////////////////////////////// + + +struct SeepsRecord { + int sid; + int month; // 1 to 12, not 0 to 11 + float lat; + float lon; + float elv; + float p1; + float p2; + float t1; + float t2; + float scores[SEEPS_MATRIX_SIZE]; +}; + +//////////////////////////////////////////////////////////////////////// + +struct SeepsClimoRecord { + int sid; + float lat; + float lon; + float elv; + float p1[SEEPS_MONTH]; + float p2[SEEPS_MONTH]; + float t1[SEEPS_MONTH]; + float t2[SEEPS_MONTH]; + float scores[SEEPS_MONTH][SEEPS_MATRIX_SIZE]; +}; + +//////////////////////////////////////////////////////////////////////// + +class SeepsClimo { + + private: + + bool seeps_ready; + int nstn; + map seeps_score_00_map; + map seeps_score_12_map; + + SeepsClimoRecord *create_climo_record(int sid, float lat, float lon, float elv, + float *p1, float *p2, float *t1, float *t2, + float *scores); + ConcatString get_seeps_climo_filename(); + void print_record(SeepsClimoRecord *record, bool with_header=false); + void read_records(ConcatString filename); + + public: + + SeepsClimo(); + ~SeepsClimo(); + + void clear(); + SeepsRecord *get_record(int sid, int month, int hour=0); + float get_score(int sid, float p_fcst, float p_obs, int month, int hour=0); + SeepsScore *get_seeps_score(int sid, float p_fcst, float p_obs, int month, int hour=0); + void print_all(); + void print_record(SeepsRecord *record, bool with_header=false); + + // + // + // + + SeepsRecord get_seeps_record(int sid) const; + +}; + +//////////////////////////////////////////////////////////////////////// + +extern SeepsClimo *get_seeps_climo(); +extern void release_seeps_climo(); + +//////////////////////////////////////////////////////////////////////// + + +#endif /* __SEEPS_H__ */ + + +//////////////////////////////////////////////////////////////////////// + diff --git a/src/libcode/vx_stat_out/stat_columns.cc b/src/libcode/vx_stat_out/stat_columns.cc index f90a3f3ab7..885479bf5c 100644 --- a/src/libcode/vx_stat_out/stat_columns.cc +++ b/src/libcode/vx_stat_out/stat_columns.cc @@ -1567,6 +1567,108 @@ void write_mpr_row(StatHdrColumns &shc, const PairDataPoint *pd_ptr, //////////////////////////////////////////////////////////////////////// +void write_seeps_row(StatHdrColumns &shc, const PairDataPoint *pd_ptr, + STATOutputType out_type, + AsciiTable &stat_at, int &stat_row, + AsciiTable &txt_at, int &txt_row, + bool update_thresh) { + const char *method_name = "write_seeps_row() -> "; + + // SEEPS line type + shc.set_line_type(stat_seeps_str); + + // Set the threshold columns, if requested. + if(update_thresh) { + shc.set_fcst_thresh(na_str); + shc.set_obs_thresh(na_str); + shc.set_thresh_logic(SetLogic_None); + shc.set_cov_thresh(na_str); + } + + // Not Applicable + shc.set_alpha(bad_data_double); + + // Write a line + if(pd_ptr->seeps.n_obs > 0 && + !is_bad_data(pd_ptr->seeps.score)) { + + // Write the header columns + write_header_cols(shc, stat_at, stat_row); + + // Write the data columns + write_seeps_cols(pd_ptr, stat_at, stat_row, n_header_columns); + + // If requested, copy row to the text file + if(out_type == STATOutputType_Both) { + copy_ascii_table_row(stat_at, stat_row, txt_at, txt_row); + + // Increment the text row counter + txt_row++; + } + + // Increment the STAT row counter + stat_row++; + } + + return; +} + +//////////////////////////////////////////////////////////////////////// + +void write_seeps_mpr_row(StatHdrColumns &shc, const PairDataPoint *pd_ptr, + STATOutputType out_type, + AsciiTable &stat_at, int &stat_row, + AsciiTable &txt_at, int &txt_row, + bool update_thresh) { + + // SEEPS line type + shc.set_line_type(stat_seeps_mpr_str); + + // Set the threshold columns, if requested. + if(update_thresh) { + shc.set_fcst_thresh(na_str); + shc.set_obs_thresh(na_str); + shc.set_thresh_logic(SetLogic_None); + shc.set_cov_thresh(na_str); + } + + // Not Applicable + shc.set_alpha(bad_data_double); + + // Write a line for each matched pair + for(int i=0; in_obs; i++) { + + if(i >= pd_ptr->seeps_mpr.size()) break; + if(!pd_ptr->seeps_mpr[i] || + is_bad_data(pd_ptr->seeps_mpr[i]->score)) continue; + + // Set the observation valid time + shc.set_obs_valid_beg(pd_ptr->vld_ta[i]); + shc.set_obs_valid_end(pd_ptr->vld_ta[i]); + + // Write the header columns + write_header_cols(shc, stat_at, stat_row); + + // Write the data columns + write_seeps_mpr_cols(pd_ptr, i, stat_at, stat_row, n_header_columns); + + // If requested, copy row to the text file + if(out_type == STATOutputType_Both) { + copy_ascii_table_row(stat_at, stat_row, txt_at, txt_row); + + // Increment the text row counter + txt_row++; + } + + // Increment the STAT row counter + stat_row++; + } + + return; +} + +//////////////////////////////////////////////////////////////////////// + void write_isc_row(StatHdrColumns &shc, const ISCInfo &isc_info, STATOutputType out_type, AsciiTable &stat_at, int &stat_row, @@ -3966,6 +4068,85 @@ void write_mpr_cols(const PairDataPoint *pd_ptr, int i, //////////////////////////////////////////////////////////////////////// +void write_seeps_cols(const PairDataPoint *pd_ptr, + AsciiTable &at, int r, int c) { + // + // Stable Equitable Error in Probability Space (SEEPS) + // Dump out the SEEPS line: + // TOTAL S12, S13, + // S21, S23, S31, + // S32, PF1, PF2, + // PF3, PV1, PV2, + // PV3, MEAN_FCST, MEAN_OBS, + // SEEPS + // + + at.set_entry(r, c+0, pd_ptr->seeps.n_obs); // Total Number of Pairs + + at.set_entry(r, c+1, bad_data_double); // pd_ptr->seeps.s12); // s12 + at.set_entry(r, c+2, bad_data_double); // pd_ptr->seeps.s13); // S13 + at.set_entry(r, c+3, bad_data_double); // pd_ptr->seeps.s21); // s21 + at.set_entry(r, c+4, bad_data_double); // pd_ptr->seeps.s23); // s23 + at.set_entry(r, c+5, bad_data_double); // pd_ptr->seeps.s31); // s31 + at.set_entry(r, c+6, bad_data_double); // pd_ptr->seeps.s32); // s32 + + at.set_entry(r, c+7, bad_data_double); // pd_ptr->seeps.pf1); // pf1 + at.set_entry(r, c+8, bad_data_double); // pd_ptr->seeps.pf2); // pf2 + at.set_entry(r, c+9, bad_data_double); // pd_ptr->seeps.pf3); // pf3 + + at.set_entry(r, c+10, bad_data_double); // pd_ptr->seeps.pv1); // pv1 + at.set_entry(r, c+11, bad_data_double); // pd_ptr->seeps.pv2); // pv2 + at.set_entry(r, c+12, bad_data_double); // pd_ptr->seeps.pv3); // pv3 + + at.set_entry(r, c+13, pd_ptr->seeps.mean_fcst); // mean_fcst + at.set_entry(r, c+14, pd_ptr->seeps.mean_obs); // mean_obs + + at.set_entry(r, c+15, pd_ptr->seeps.score); // SEEPS score + + return; +} + +//////////////////////////////////////////////////////////////////////// + +void write_seeps_mpr_cols(const PairDataPoint *pd_ptr, int i, + AsciiTable &at, int r, int c) { + // + // Stable Equitable Error in Probability Space (SEEPS) + // Dump out the SEEPS line: + // OBS_SID, OBS_LAT, OBS_LON, + // FCST, OBS, OBS_QC, + // FCST_CAT, OBS_CAT, P1, + // P2, T1, T2, + // SEEPS + // + + at.set_entry(r, c+0, (string)pd_ptr->sid_sa[i]); // Station ID + + at.set_entry(r, c+1, pd_ptr->lat_na[i]); // Latitude + + at.set_entry(r, c+2, pd_ptr->lon_na[i]); // Longitude + + at.set_entry(r, c+3, pd_ptr->f_na[i]); // Forecast Value + + at.set_entry(r, c+4, pd_ptr->o_na[i]); // Observation Value + + at.set_entry(r, c+5, (string)pd_ptr->o_qc_sa[i]); // Observation Quality Control + + at.set_entry(r, c+6, pd_ptr->seeps_mpr[i]->model_cat); // model category + at.set_entry(r, c+7, pd_ptr->seeps_mpr[i]->obs_cat); // observation category + + at.set_entry(r, c+8, pd_ptr->seeps_mpr[i]->p1); // p1 + at.set_entry(r, c+9, pd_ptr->seeps_mpr[i]->p2); // p2 + + at.set_entry(r, c+10, pd_ptr->seeps_mpr[i]->t1); // t1 + at.set_entry(r, c+11, pd_ptr->seeps_mpr[i]->t2); // t2 + + at.set_entry(r, c+12, pd_ptr->seeps_mpr[i]->score); // SEEPS score + +} + +//////////////////////////////////////////////////////////////////////// + void write_isc_cols(const ISCInfo &isc_info, int i, AsciiTable &at, int r, int c) { diff --git a/src/libcode/vx_stat_out/stat_columns.h b/src/libcode/vx_stat_out/stat_columns.h index 5090c1dbb2..27b16aa66b 100644 --- a/src/libcode/vx_stat_out/stat_columns.h +++ b/src/libcode/vx_stat_out/stat_columns.h @@ -104,6 +104,12 @@ extern void write_dmap_row (StatHdrColumns &, const DMAPInfo &, STATOutputType, extern void write_mpr_row (StatHdrColumns &, const PairDataPoint *, STATOutputType, AsciiTable &, int &, AsciiTable &, int &, bool update_thresh = true); +extern void write_seeps_row (StatHdrColumns &, const PairDataPoint *, STATOutputType, + AsciiTable &, int &, AsciiTable &, int &, + bool update_thresh = true); +extern void write_seeps_mpr_row (StatHdrColumns &, const PairDataPoint *, STATOutputType, + AsciiTable &, int &, AsciiTable &, int &, + bool update_thresh = true); extern void write_isc_row (StatHdrColumns &, const ISCInfo &, STATOutputType, AsciiTable &, int &, AsciiTable &, int &); extern void write_ecnt_row (StatHdrColumns &, const ECNTInfo &, STATOutputType, @@ -173,6 +179,10 @@ extern void write_dmap_cols (const DMAPInfo &, AsciiTable &, int, int); extern void write_mpr_cols (const PairDataPoint *, int, AsciiTable &, int, int); +extern void write_seeps_cols (const PairDataPoint *, + AsciiTable &, int, int); +extern void write_seeps_mpr_cols (const PairDataPoint *, int, + AsciiTable &, int, int); extern void write_isc_cols (const ISCInfo &, int, AsciiTable &, int, int); extern void write_ecnt_cols (const ECNTInfo &, diff --git a/src/libcode/vx_statistics/compute_stats.cc b/src/libcode/vx_statistics/compute_stats.cc index 35705314eb..1364fcd11b 100644 --- a/src/libcode/vx_statistics/compute_stats.cc +++ b/src/libcode/vx_statistics/compute_stats.cc @@ -1376,3 +1376,82 @@ void compute_ecnt_mean(const ECNTInfo *ecnt_info, int n, } //////////////////////////////////////////////////////////////////////// +// +// Compute aggregated SEEPS. +// +//////////////////////////////////////////////////////////////////////// + +void compute_aggregated_seeps(const PairDataPoint *pd, SeepsAggScore *seeps) { + static const char *method_name = "compute_seeps_agg() -> "; + + // + // Check that the forecast and observation arrays of the same length + // + if(pd->f_na.n() != pd->o_na.n()) { + mlog << Error << "\n" << method_name + << "the forecast and observation arrays must have the same " + << "length!\n\n"; + throw(1); + } + + SeepsScore *seeps_mpr; + int count, count_diagonal; + int c12, c13, c21, c23, c31, c32; + double score, obs_sum, fcst_sum; + + score = obs_sum = fcst_sum = 0.0; + count = count_diagonal = c12 = c13 = c21 = c23 = c31 = c32 = 0; + for(int i=0; in_obs; i++) { + + if (i >= pd->seeps_mpr.size()) break; + seeps_mpr = pd->seeps_mpr[i]; + if (!seeps_mpr || is_eq(seeps_mpr->score, bad_data_double)) continue; + + count++; + obs_sum += pd->o_na[i]; // Observation Value + fcst_sum += pd->f_na[i]; // Forecast Value + score += seeps_mpr->score; + + if (seeps_mpr->model_cat == 0) { + if (seeps_mpr->obs_cat == 1) c12++; + else if(seeps_mpr->obs_cat == 2) c13++; + else count_diagonal++; + // pd.pf1 + } + else if (seeps_mpr->model_cat == 1) { + if (seeps_mpr->obs_cat == 0) c21++; + else if(seeps_mpr->obs_cat == 2) c23++; + else count_diagonal++; + // pd.pf2 + } + else if (seeps_mpr->model_cat == 2) { + if (seeps_mpr->obs_cat == 0) c31++; + else if (seeps_mpr->obs_cat == 1) c32++; + else count_diagonal++; + // pd.pf3 + } + } + if (count > 0) { + seeps->n_obs = count; + seeps->mean_fcst = fcst_sum / count; + seeps->mean_obs = obs_sum / count; + seeps->score = score / count; + } + seeps->c12 = c12; + seeps->c13 = c13; + seeps->c21 = c21; + seeps->c23 = c23; + seeps->c31 = c31; + seeps->c32 = c32; + + if (count != (c12+c13+c21+c23+c31+c32+count_diagonal)){ + mlog << Debug(2) << method_name + << "INFO check count: all=" << count << " s12=" << c12<< " s13=" << c13 + << " s21=" << c21 << " s23=" << c23 + << " s31=" << c31 << " s32=" << c32 << "\n"; + } + + return; +} + +//////////////////////////////////////////////////////////////////////// diff --git a/src/libcode/vx_statistics/compute_stats.h b/src/libcode/vx_statistics/compute_stats.h index 083438e8fe..2d46624ad7 100644 --- a/src/libcode/vx_statistics/compute_stats.h +++ b/src/libcode/vx_statistics/compute_stats.h @@ -60,6 +60,8 @@ extern void compute_i_mean_stdev(const NumArray &, bool, double, int, CIInfo &, CIInfo &); +extern void compute_aggregated_seeps(const PairDataPoint *pd, SeepsAggScore *seeps); + //////////////////////////////////////////////////////////////////////// // // Compute means of statistics for climatological bins. diff --git a/src/libcode/vx_statistics/pair_data_point.cc b/src/libcode/vx_statistics/pair_data_point.cc index cc8a156ed9..48d8b6c068 100644 --- a/src/libcode/vx_statistics/pair_data_point.cc +++ b/src/libcode/vx_statistics/pair_data_point.cc @@ -68,7 +68,9 @@ PairDataPoint & PairDataPoint::operator=(const PairDataPoint &pd) { void PairDataPoint::init_from_scratch() { + seeps_mpr.clear(); clear(); + seeps_climo = get_seeps_climo(); return; } @@ -80,6 +82,11 @@ void PairDataPoint::clear() { PairBase::clear(); f_na.clear(); + for (int idx=0; idx= n_obs) { mlog << Error << "\nPairDataPoint::set_point_pair() -> " @@ -182,6 +222,7 @@ void PairDataPoint::set_point_pair(int i_obs, const char *sid, o, qc, cmn, csd, wgt); f_na.set(i_obs, f); + *seeps_mpr[i_obs] = *seeps; return; } @@ -194,6 +235,7 @@ bool PairDataPoint::add_grid_pair(double f, double o, add_grid_obs(o, cmn, csd, wgt); f_na.add(f); + seeps_mpr.push_back(NULL); return(true); } @@ -233,6 +275,31 @@ bool PairDataPoint::add_grid_pair(const NumArray &f_in, const NumArray &o_in, //////////////////////////////////////////////////////////////////////// +static int seeps_record_count = 0; +static int seeps_debug_level = 9; + +SeepsScore *PairDataPoint::compute_seeps(const char *sid, double f, + double o, unixtime ut) { + SeepsScore *seeps = 0; + int month, day, year, hour, minute, second; + + int sid_no = atoi(sid); + if (sid_no) { + unix_to_mdyhms(ut, month, day, year, hour, minute, second); + seeps = seeps_climo->get_seeps_score(sid_no, f, o, month, hour); + if (mlog.verbosity_level() >= seeps_debug_level + && seeps && !is_eq(seeps->score, bad_data_double) + && !is_eq(seeps->score, 0) && seeps_record_count < 10) { + mlog << Debug(seeps_debug_level) + << "PairDataPoint::compute_seeps() score = " << seeps->score << "\n"; + seeps_record_count++; + } + } + return seeps; +} + +//////////////////////////////////////////////////////////////////////// + PairDataPoint PairDataPoint::subset_pairs_cnt_thresh( const SingleThresh &ft, const SingleThresh &ot, const SetLogic type) const { @@ -269,11 +336,13 @@ PairDataPoint PairDataPoint::subset_pairs_cnt_thresh( // Handle point data if(is_point_vx()) { - out_pd.add_point_pair(sid_sa[i].c_str(), lat_na[i], + if (out_pd.add_point_pair(sid_sa[i].c_str(), lat_na[i], lon_na[i], x_na[i], y_na[i], vld_ta[i], lvl_na[i], elv_na[i], f_na[i], o_na[i], o_qc_sa[i].c_str(), - cmn_na[i], csd_na[i], wgt_na[i]); + cmn_na[i], csd_na[i], wgt_na[i])) { + out_pd.set_seeps_score(seeps_mpr[i], i); + } } // Handle gridded data else { @@ -938,6 +1007,14 @@ void VxPairDataPoint::add_point_obs(float *hdr_arr, const char *hdr_typ_str, return; } + bool precip_flag = fcst_info->is_precipitation() && + obs_info->is_precipitation(); + int precip_interval = bad_data_int; + if (precip_flag) { + if (wgt_dp) precip_interval = wgt_dp->accum(); + else precip_interval = fcst_dpa[0].accum(); + } + hdr_lat = hdr_arr[0]; hdr_lon = hdr_arr[1]; hdr_elv = hdr_arr[2]; @@ -1116,6 +1193,9 @@ void VxPairDataPoint::add_point_obs(float *hdr_arr, const char *hdr_typ_str, // Look through all of the PairDataPoint objects to see if the // observation should be added. + bool has_seeps = false; + SeepsScore *seeps = 0; + // Check the message types for(i=0; i seeps_mpr; + SeepsAggScore seeps; ////////////////////////////////////////////////////////////////// @@ -54,10 +58,11 @@ class PairDataPoint : public PairBase { bool add_point_pair(const char *, double, double, double, double, unixtime, double, double, double, double, const char *, double, double, double); + void set_seeps_score(SeepsScore *, int index=-1); void set_point_pair(int, const char *, double, double, double, double, unixtime, double, double, double, double, - const char *, double, double, double); + const char *, double, double, double, SeepsScore *); bool add_grid_pair(double, double, double, double, double); @@ -68,6 +73,8 @@ class PairDataPoint : public PairBase { PairDataPoint subset_pairs_cnt_thresh(const SingleThresh &ft, const SingleThresh &ot, const SetLogic type) const; + SeepsScore *compute_seeps(const char *, double, double, unixtime); + }; //////////////////////////////////////////////////////////////////////// @@ -219,6 +226,8 @@ class VxPairDataPoint { void set_mpr_thresh(const StringArray &, const ThreshArray &); + void set_seeps_thresh(const StringArray &, const ThreshArray &); + void set_climo_cdf_info_ptr(const ClimoCDFInfo *); void set_msg_typ_sfc(const StringArray &); @@ -231,6 +240,10 @@ class VxPairDataPoint { const char *, float *, Grid &, const char * = 0, const DataPlane * = 0); + void add_prec_point_obs(float *, const char *, const char *, unixtime, + const char *, float *, Grid &, int month, int hour, + const char * = 0, const DataPlane * = 0); + int get_n_pair() const; void set_duplicate_flag(DuplicateType duplicate_flag); @@ -249,6 +262,7 @@ class VxPairDataPoint { void inc_count(int ***&, int, int, int); }; + //////////////////////////////////////////////////////////////////////// // // Miscellanous functions @@ -270,6 +284,16 @@ extern void apply_mpr_thresh_mask(DataPlane &, DataPlane &, DataPlane &, DataPlane &, const StringArray &, const ThreshArray &); +extern bool check_seeps_thresh(double, double, + const StringArray &, const ThreshArray &, + ConcatString * = 0); + +extern double get_seeps_column_value(double, double, + const char *); + +extern void apply_seeps_thresh_mask(DataPlane &, DataPlane &, + const StringArray &, const ThreshArray &); + // Apply conditional thresholds to subset the wind pairs extern void subset_wind_pairs(const PairDataPoint &, const PairDataPoint &, const SingleThresh &, diff --git a/src/tools/core/ensemble_stat/Makefile.am b/src/tools/core/ensemble_stat/Makefile.am index 93e20e695c..96d06158e7 100644 --- a/src/tools/core/ensemble_stat/Makefile.am +++ b/src/tools/core/ensemble_stat/Makefile.am @@ -31,6 +31,7 @@ ensemble_stat_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_color \ -lvx_util_math \ diff --git a/src/tools/core/ensemble_stat/Makefile.in b/src/tools/core/ensemble_stat/Makefile.in index 74a0a1ec6d..9d532022da 100644 --- a/src/tools/core/ensemble_stat/Makefile.in +++ b/src/tools/core/ensemble_stat/Makefile.in @@ -338,6 +338,7 @@ ensemble_stat_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_color \ -lvx_util_math \ diff --git a/src/tools/core/grid_stat/Makefile.am b/src/tools/core/grid_stat/Makefile.am index b5f6f4d69f..4569f0ff7e 100644 --- a/src/tools/core/grid_stat/Makefile.am +++ b/src/tools/core/grid_stat/Makefile.am @@ -31,6 +31,7 @@ grid_stat_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_cal \ -lvx_util_math \ diff --git a/src/tools/core/grid_stat/Makefile.in b/src/tools/core/grid_stat/Makefile.in index b03b73c0ea..f167bb520d 100644 --- a/src/tools/core/grid_stat/Makefile.in +++ b/src/tools/core/grid_stat/Makefile.in @@ -337,6 +337,7 @@ grid_stat_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_cal \ -lvx_util_math \ diff --git a/src/tools/core/mode/Makefile.am b/src/tools/core/mode/Makefile.am index b27dd4cd75..4e1692b1c1 100644 --- a/src/tools/core/mode/Makefile.am +++ b/src/tools/core/mode/Makefile.am @@ -50,6 +50,7 @@ mode_LDADD = -lvx_pxm \ -lvx_data2d \ -lvx_nc_util \ -lvx_regrid \ + -lvx_seeps \ -lvx_grid \ -lvx_config \ -lvx_bool_calc \ diff --git a/src/tools/core/mode/Makefile.in b/src/tools/core/mode/Makefile.in index a3518c1137..9bc47116ec 100644 --- a/src/tools/core/mode/Makefile.in +++ b/src/tools/core/mode/Makefile.in @@ -375,6 +375,7 @@ mode_LDADD = -lvx_pxm \ -lvx_data2d \ -lvx_nc_util \ -lvx_regrid \ + -lvx_seeps \ -lvx_grid \ -lvx_config \ -lvx_bool_calc \ diff --git a/src/tools/core/point_stat/Makefile.am b/src/tools/core/point_stat/Makefile.am index 71d7b83188..53e5719408 100644 --- a/src/tools/core/point_stat/Makefile.am +++ b/src/tools/core/point_stat/Makefile.am @@ -30,6 +30,7 @@ point_stat_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_gsl_prob \ -lvx_color \ diff --git a/src/tools/core/point_stat/Makefile.in b/src/tools/core/point_stat/Makefile.in index 27a47751d8..7c1d1f2f9d 100644 --- a/src/tools/core/point_stat/Makefile.in +++ b/src/tools/core/point_stat/Makefile.in @@ -337,6 +337,7 @@ point_stat_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_gsl_prob \ -lvx_color \ diff --git a/src/tools/core/point_stat/point_stat.cc b/src/tools/core/point_stat/point_stat.cc index 470992b99b..d14c149cd8 100644 --- a/src/tools/core/point_stat/point_stat.cc +++ b/src/tools/core/point_stat/point_stat.cc @@ -123,6 +123,7 @@ using namespace std; #include "vx_nc_util.h" #include "vx_regrid.h" #include "vx_log.h" +#include "seeps.h" #include "nc_obs_util.h" #include "nc_point_obs_in.h" @@ -132,6 +133,10 @@ using namespace std; #include "pointdata_python.h" #endif +//////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////// #define BUFFER_SIZE (DEF_NC_BUFFER_SIZE/2) @@ -156,6 +161,7 @@ static void do_vl1l2 (VL1L2Info *&, int, const PairDataPoint *, const PairDa static void do_pct (const PointStatVxOpt &, const PairDataPoint *); static void do_hira_ens ( int, const PairDataPoint *); static void do_hira_prob ( int, const PairDataPoint *); +static void do_seeps_agg (const PairDataPoint *); static void finish_txt_files(); @@ -365,8 +371,8 @@ void setup_txt_files() { // Determine the maximum number of data columns max_col = (max_prob_col > max_stat_col ? max_prob_col : max_stat_col); - max_col = (max_mctc_col > max_col ? max_mctc_col : max_col); - max_col = (max_orank_col > max_col ? max_orank_col : max_col); + if (max_mctc_col > max_col) max_col = max_mctc_col; + if (max_orank_col > max_col) max_col = max_orank_col; // Add the header columns max_col += n_header_columns + 1; @@ -747,6 +753,7 @@ void process_obs_file(int i_nc) { // Process each observation in the file int str_length, block_size; + int prev_grib_code = bad_data_int; for(int i_block_start_idx=0; i_block_start_idx buf_size) block_size = buf_size; @@ -798,19 +805,22 @@ void process_obs_file(int i_nc) { // Store the variable name int org_grib_code = met_point_obs->get_grib_code_or_var_index(obs_arr); int grib_code = org_grib_code; - if (use_var_id && grib_code < var_names.n()) { - var_name = var_names[grib_code]; - grib_code = bad_data_int; - } - else { - var_name = ""; - } + if (prev_grib_code != org_grib_code) { + if (use_var_id && grib_code < var_names.n()) { + var_name = var_names[grib_code]; + grib_code = bad_data_int; + } + else { + var_name = ""; + } - // Check for wind components - is_ugrd = ( use_var_id && var_name == ugrd_abbr_str ) || - (!use_var_id && nint(grib_code) == ugrd_grib_code); - is_vgrd = ( use_var_id && var_name == vgrd_abbr_str ) || - (!use_var_id && nint(grib_code) == vgrd_grib_code); + // Check for wind components + is_ugrd = ( use_var_id && var_name == ugrd_abbr_str ) || + (!use_var_id && nint(grib_code) == ugrd_grib_code); + is_vgrd = ( use_var_id && var_name == vgrd_abbr_str ) || + (!use_var_id && nint(grib_code) == vgrd_grib_code); + prev_grib_code = org_grib_code; + } // If the current observation is UGRD, save it as the // previous. If vector winds are to be computed, UGRD @@ -1017,6 +1027,27 @@ void process_scores() { shc.set_obs_valid_end(conf_info.vx_opt[i].vx_pd.end_ut); } + // Write out the SEEPS MPR lines + if(conf_info.vx_opt[i].output_flag[i_seeps_mpr] != STATOutputType_None) { + write_seeps_mpr_row(shc, pd_ptr, + conf_info.vx_opt[i].output_flag[i_seeps_mpr], + stat_at, i_stat_row, + txt_at[i_seeps_mpr], i_txt_row[i_seeps_mpr]); + + // Reset the observation valid time + shc.set_obs_valid_beg(conf_info.vx_opt[i].vx_pd.beg_ut); + shc.set_obs_valid_end(conf_info.vx_opt[i].vx_pd.end_ut); + } + + // Write out the SEEPS lines + if(conf_info.vx_opt[i].output_flag[i_seeps] != STATOutputType_None) { + compute_aggregated_seeps(pd_ptr, &pd_ptr->seeps); + write_seeps_row(shc, pd_ptr, + conf_info.vx_opt[i].output_flag[i_seeps], + stat_at, i_stat_row, + txt_at[i_seeps], i_txt_row[i_seeps]); + } + // Compute CTS scores if(!conf_info.vx_opt[i].vx_pd.fcst_info->is_prob() && conf_info.vx_opt[i].fcat_ta.n() > 0 && @@ -1901,6 +1932,8 @@ void do_hira_prob(int i_vx, const PairDataPoint *pd_ptr) { // Set flag for specific humidity bool spfh_flag = conf_info.vx_opt[i_vx].vx_pd.fcst_info->is_specific_humidity() && conf_info.vx_opt[i_vx].vx_pd.obs_info->is_specific_humidity(); + bool precip_flag = conf_info.vx_opt[i_vx].vx_pd.fcst_info->is_precipitation() && + conf_info.vx_opt[i_vx].vx_pd.obs_info->is_precipitation(); shc.set_interp_mthd(InterpMthd_Nbrhd, conf_info.vx_opt[i_vx].hira_info.shape); diff --git a/src/tools/core/point_stat/point_stat.h b/src/tools/core/point_stat/point_stat.h index 72651ede4f..0a24e9209a 100644 --- a/src/tools/core/point_stat/point_stat.h +++ b/src/tools/core/point_stat/point_stat.h @@ -71,7 +71,8 @@ static const char **txt_columns[n_txt] = { val1l2_columns, pct_columns, pstd_columns, pjc_columns, prc_columns, ecnt_columns, orank_columns, rps_columns, eclv_columns, - mpr_columns, vcnt_columns + mpr_columns, vcnt_columns, seeps_mpr_columns, + seeps_columns }; // Length of header columns @@ -82,7 +83,8 @@ static const int n_txt_columns[n_txt] = { n_val1l2_columns, n_pct_columns, n_pstd_columns, n_pjc_columns, n_prc_columns, n_ecnt_columns, n_orank_columns, n_rps_columns, n_eclv_columns, - n_mpr_columns, n_vcnt_columns + n_mpr_columns, n_vcnt_columns, n_seeps_mpr_columns, + n_seeps_columns }; // Text file abbreviations @@ -93,7 +95,8 @@ static const char *txt_file_abbr[n_txt] = { "val1l2", "pct", "pstd", "pjc", "prc", "ecnt", "orank", "rps", "eclv", - "mpr", "vcnt" + "mpr", "vcnt", "seeps_mpr", + "seeps" }; //////////////////////////////////////////////////////////////////////// diff --git a/src/tools/core/point_stat/point_stat_conf_info.cc b/src/tools/core/point_stat/point_stat_conf_info.cc index f2eb3cb06a..4067714758 100644 --- a/src/tools/core/point_stat/point_stat_conf_info.cc +++ b/src/tools/core/point_stat/point_stat_conf_info.cc @@ -1099,10 +1099,11 @@ void PointStatVxOpt::set_perc_thresh(const PairDataPoint *pd_ptr) { int PointStatVxOpt::n_txt_row(int i_txt_row) const { int n = 0; int n_bin; + const char *method_name = "PointStatVxOpt::n_txt_row(int) -> "; // Range check if(i_txt_row < 0 || i_txt_row >= n_txt) { - mlog << Error << "\nPointStatVxOpt::n_txt_row(int) -> " + mlog << Error << "\n" << method_name << "range check error for " << i_txt_row << "\n\n"; exit(1); } @@ -1280,13 +1281,24 @@ int PointStatVxOpt::n_txt_row(int i_txt_row) const { break; + case(i_seeps_mpr): + // Compute the number of matched pairs to be written + n = vx_pd.get_n_pair(); + + break; + + case(i_seeps): + // Compute the number of matched pairs to be written + n = vx_pd.get_n_pair(); + + break; + default: - mlog << Error << "\nPointStatVxOpt::n_txt_row(int) -> " + mlog << Error << "\n" << method_name << "unexpected output type index value: " << i_txt_row << "\n\n"; exit(1); } - return(n); } diff --git a/src/tools/core/point_stat/point_stat_conf_info.h b/src/tools/core/point_stat/point_stat_conf_info.h index 60a3c2b8d9..2b47ce1188 100644 --- a/src/tools/core/point_stat/point_stat_conf_info.h +++ b/src/tools/core/point_stat/point_stat_conf_info.h @@ -51,36 +51,40 @@ static const int i_rps = 16; static const int i_eclv = 17; static const int i_mpr = 18; static const int i_vcnt = 19; +static const int i_seeps_mpr = 20; +static const int i_seeps = 21; -static const int n_txt = 20; +static const int n_txt = 22; // Text file type static const STATLineType txt_file_type[n_txt] = { - stat_fho, // 0 - stat_ctc, // 1 - stat_cts, // 2 - stat_mctc, // 3 - stat_mcts, // 4 - - stat_cnt, // 5 - stat_sl1l2, // 6 - stat_sal1l2, // 7 - stat_vl1l2, // 8 - stat_val1l2, // 9 - - stat_pct, // 10 - stat_pstd, // 11 - stat_pjc, // 12 - stat_prc, // 13 - stat_ecnt, // 14 - - stat_orank, // 15 - stat_rps, // 16 - stat_eclv, // 17 - stat_mpr, // 18 - stat_vcnt, // 19 - + stat_fho, // 0 + stat_ctc, // 1 + stat_cts, // 2 + stat_mctc, // 3 + stat_mcts, // 4 + + stat_cnt, // 5 + stat_sl1l2, // 6 + stat_sal1l2, // 7 + stat_vl1l2, // 8 + stat_val1l2, // 9 + + stat_pct, // 10 + stat_pstd, // 11 + stat_pjc, // 12 + stat_prc, // 13 + stat_ecnt, // 14 + + stat_orank, // 15 + stat_rps, // 16 + stat_eclv, // 17 + stat_mpr, // 18 + stat_vcnt, // 19 + + stat_seeps_mpr, // 20 + stat_seeps // 21 }; //////////////////////////////////////////////////////////////////////// diff --git a/src/tools/core/series_analysis/Makefile.am b/src/tools/core/series_analysis/Makefile.am index 8fa606e640..6681bf63de 100644 --- a/src/tools/core/series_analysis/Makefile.am +++ b/src/tools/core/series_analysis/Makefile.am @@ -31,6 +31,7 @@ series_analysis_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_cal \ -lvx_util_math \ diff --git a/src/tools/core/series_analysis/Makefile.in b/src/tools/core/series_analysis/Makefile.in index 4be65d6267..0b8493b157 100644 --- a/src/tools/core/series_analysis/Makefile.in +++ b/src/tools/core/series_analysis/Makefile.in @@ -339,6 +339,7 @@ series_analysis_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_cal \ -lvx_util_math \ diff --git a/src/tools/core/stat_analysis/Makefile.am b/src/tools/core/stat_analysis/Makefile.am index def83f9bd1..0949473aab 100644 --- a/src/tools/core/stat_analysis/Makefile.am +++ b/src/tools/core/stat_analysis/Makefile.am @@ -34,6 +34,7 @@ stat_analysis_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_time_series \ -lvx_pb_util \ diff --git a/src/tools/core/stat_analysis/Makefile.in b/src/tools/core/stat_analysis/Makefile.in index 86c221d0ff..fb6bd3781a 100644 --- a/src/tools/core/stat_analysis/Makefile.in +++ b/src/tools/core/stat_analysis/Makefile.in @@ -347,6 +347,7 @@ stat_analysis_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_time_series \ -lvx_pb_util \ diff --git a/src/tools/core/wavelet_stat/Makefile.am b/src/tools/core/wavelet_stat/Makefile.am index d9714100f9..f5c836affd 100644 --- a/src/tools/core/wavelet_stat/Makefile.am +++ b/src/tools/core/wavelet_stat/Makefile.am @@ -37,6 +37,7 @@ wavelet_stat_LDADD = -lvx_pxm \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_cal \ -lvx_util_math \ diff --git a/src/tools/core/wavelet_stat/Makefile.in b/src/tools/core/wavelet_stat/Makefile.in index 0a4adf646f..757c040f8f 100644 --- a/src/tools/core/wavelet_stat/Makefile.in +++ b/src/tools/core/wavelet_stat/Makefile.in @@ -344,6 +344,7 @@ wavelet_stat_LDADD = -lvx_pxm \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_cal \ -lvx_util_math \ diff --git a/src/tools/other/gen_ens_prod/Makefile.am b/src/tools/other/gen_ens_prod/Makefile.am index 0aec8c990b..de1913ed11 100644 --- a/src/tools/other/gen_ens_prod/Makefile.am +++ b/src/tools/other/gen_ens_prod/Makefile.am @@ -31,6 +31,7 @@ gen_ens_prod_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_color \ -lvx_util_math \ diff --git a/src/tools/other/gen_ens_prod/Makefile.in b/src/tools/other/gen_ens_prod/Makefile.in index d7196530d3..f89cc6b0d4 100644 --- a/src/tools/other/gen_ens_prod/Makefile.in +++ b/src/tools/other/gen_ens_prod/Makefile.in @@ -338,6 +338,7 @@ gen_ens_prod_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_color \ -lvx_util_math \ diff --git a/src/tools/other/gsi_tools/Makefile.am b/src/tools/other/gsi_tools/Makefile.am index 19036d082b..7f4f5acdf5 100644 --- a/src/tools/other/gsi_tools/Makefile.am +++ b/src/tools/other/gsi_tools/Makefile.am @@ -49,6 +49,7 @@ gsid2mpr_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_gsl_prob \ -lvx_cal \ @@ -95,6 +96,7 @@ gsidens2orank_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_gsl_prob \ -lvx_cal \ diff --git a/src/tools/other/gsi_tools/Makefile.in b/src/tools/other/gsi_tools/Makefile.in index 8523d96707..550b454f44 100644 --- a/src/tools/other/gsi_tools/Makefile.in +++ b/src/tools/other/gsi_tools/Makefile.in @@ -389,6 +389,7 @@ gsid2mpr_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_gsl_prob \ -lvx_cal \ @@ -436,6 +437,7 @@ gsidens2orank_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_gsl_prob \ -lvx_cal \ diff --git a/src/tools/tc_utils/tc_gen/Makefile.am b/src/tools/tc_utils/tc_gen/Makefile.am index 42351a2c66..7f739ade46 100644 --- a/src/tools/tc_utils/tc_gen/Makefile.am +++ b/src/tools/tc_utils/tc_gen/Makefile.am @@ -33,6 +33,7 @@ tc_gen_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_pb_util \ -lvx_cal \ diff --git a/src/tools/tc_utils/tc_gen/Makefile.in b/src/tools/tc_utils/tc_gen/Makefile.in index 9d1544ffa0..0bda9b9032 100644 --- a/src/tools/tc_utils/tc_gen/Makefile.in +++ b/src/tools/tc_utils/tc_gen/Makefile.in @@ -340,6 +340,7 @@ tc_gen_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_pb_util \ -lvx_cal \ diff --git a/src/tools/tc_utils/tc_stat/Makefile.am b/src/tools/tc_utils/tc_stat/Makefile.am index 955d2ed6a3..02b7d39821 100644 --- a/src/tools/tc_utils/tc_stat/Makefile.am +++ b/src/tools/tc_utils/tc_stat/Makefile.am @@ -34,6 +34,7 @@ tc_stat_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_gsl_prob \ -lvx_pb_util \ diff --git a/src/tools/tc_utils/tc_stat/Makefile.in b/src/tools/tc_utils/tc_stat/Makefile.in index 64d44c7c7d..e2f297ef2d 100644 --- a/src/tools/tc_utils/tc_stat/Makefile.in +++ b/src/tools/tc_utils/tc_stat/Makefile.in @@ -343,6 +343,7 @@ tc_stat_LDADD = -lvx_stat_out \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ + -lvx_seeps \ -lvx_config \ -lvx_gsl_prob \ -lvx_pb_util \