diff --git a/docs/UsersGuide/Makefile b/docs/UsersGuide/Makefile deleted file mode 100644 index 69fe55ecf..000000000 --- a/docs/UsersGuide/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -SOURCEDIR = source -BUILDDIR = build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/docs/UsersGuide/README b/docs/UsersGuide/README deleted file mode 100644 index 30617076c..000000000 --- a/docs/UsersGuide/README +++ /dev/null @@ -1,29 +0,0 @@ -Steps to build and use the Sphinx documentation tool: - -1) Get Sphinx and sphinxcontrib-bibtex installed on your desktop from - http://www.sphinx-doc.org/en/master/usage/installation.html - https://sphinxcontrib-bibtex.readthedocs.io/en/latest/quickstart.html#installation - -2) Create a Sphinx documentation root directory: - % mkdir docs - % cd docs - -3) Initialize your Sphinx project (set up an initial directory structure) using - % sphinx-quickstart - - See http://www.sphinx-doc.org/en/master/usage/quickstart.html or - https://sphinx-rtd-tutorial.readthedocs.io/en/latest/sphinx-quickstart.html - - for help. You can answer (ENTER) to most of the questions. - -To build html: - -From the directory above source and build, the sphinx project directory: - -make html - -Sphinx uses Latex to export the documentation as a PDF file. To build pdf: - -make latexpdf - -It will generate a PDF file in ./build/latex/.pdf diff --git a/docs/UsersGuide/build/.gitignore b/docs/UsersGuide/build/.gitignore deleted file mode 100644 index 5e7d2734c..000000000 --- a/docs/UsersGuide/build/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/docs/UsersGuide/make.bat b/docs/UsersGuide/make.bat deleted file mode 100644 index 543c6b13b..000000000 --- a/docs/UsersGuide/make.bat +++ /dev/null @@ -1,35 +0,0 @@ -@ECHO OFF - -pushd %~dp0 - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set SOURCEDIR=source -set BUILDDIR=build - -if "%1" == "" goto help - -%SPHINXBUILD% >NUL 2>NUL -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - exit /b 1 -) - -%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% -goto end - -:help -%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% - -:end -popd diff --git a/docs/UsersGuide/requirements.txt b/docs/UsersGuide/requirements.txt deleted file mode 100644 index ef36addc6..000000000 --- a/docs/UsersGuide/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -sphinxcontrib-bibtex diff --git a/docs/UsersGuide/source/Acknowledgement.rst b/docs/UsersGuide/source/Acknowledgement.rst deleted file mode 100644 index f8847c31d..000000000 --- a/docs/UsersGuide/source/Acknowledgement.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. _acknowledgement: -.. include:: prolog.inc - ---------------- -Acknowledgement ---------------- - -This user's guide is constructed with contributions from distributed developers. We give our special acknowledgement to these contributors and reviewers, including, but not limited to: - -National Centers for Environmental Prediction (NCEP) Environmental Modeling Center (EMC): |br| -*Jim Abeles, Eric Aligo, Tom Black, Benjamin Blake, Jacob Carley, Dusan Jovic, Jim Purser, Eric Rogers, Ed Strobach, and Fanglin Yang* - -National Center for Atmospheric Research (NCAR) and Developmental Testbed Center (DTC): |br| -*Laurie Carson, Michael Kavulich, Julie Schramm, Don Stark, and Jamie Wolff* - -National Oceanic and Atmospheric Administration (NOAA) Earth System Research Laboratory (ESRL): |br| -*Jeff Beck, Gerard Ketefian, and Linlin Pan* - -The community support and code management effort is sponsored by NOAA's Office of Oceanic and Atmospheric Research (OAR). This work is also facilitated by NCAR. NCAR is supported by the National Science Foundation (NSF). - diff --git a/docs/UsersGuide/source/Chapter1.rst b/docs/UsersGuide/source/Chapter1.rst deleted file mode 100644 index d416db7f6..000000000 --- a/docs/UsersGuide/source/Chapter1.rst +++ /dev/null @@ -1,27 +0,0 @@ -*************************************** -Summary of the FV3SAR model -*************************************** - -======================== -Basics of the FV3 Solver -======================== - -=========================================== -Handling of Boundary and Initial Conditions -=========================================== - -======================= -The Gnomonic Projection -======================= - ------------------------- -Grid Space Heterogeneity ------------------------- - ------------------------------------------------------------- -Optimization of the Gnomonic Projection for Regional Domains ------------------------------------------------------------- - -================================= -Available Preset Regional Domains -================================= diff --git a/docs/UsersGuide/source/Chapter2.rst b/docs/UsersGuide/source/Chapter2.rst deleted file mode 100644 index cbcd116d4..000000000 --- a/docs/UsersGuide/source/Chapter2.rst +++ /dev/null @@ -1,264 +0,0 @@ -*************************************** -Software Installation -*************************************** - -=========================================== -System Requirements -=========================================== -The FV3SAR model is supported on the NOAA HPC Theia and NCAR -Supercomputer Cheyenne. Intel is the only currently supported -compiler for building the pre-processing utilities and the FV3SAR model. - -------------------------------------------- -External Libraries -------------------------------------------- -Several external support libraries are required but not included with -the source code. Most of these libraries are installed as part of the -compiler installation. For FV3SAR, these libraries are: - -* Intel compiler -* impi -* ESMFv7.1.0 -* netCDF -* HDF5 -* pnetCDF - -------------------------------------------- -NCEP Libraries -------------------------------------------- -A number of the NCEP (National Center for Environmental Prediction) production -libraries are necessary for building and running the FV3SAR pre-processing utilities -and model (:numref:`Table %s `). These libraries are not part of the source -code distribution. If they are not already installed on your computer platform, you may -have to download some or all the source code from `NCEP `_ -and build the libraries yourself. Note that these libraries must be built with the same compiler -used to build the pre-processing utilities FV3SAR model. Another option is to clone the `git -repository `_ and follow the build instructions. -This currently includes only the libraries used by the FV3SAR model. - -.. _ncep_libs: - -.. table:: *NCEP libraries necessary to build the FV3SAR pre-processing utilities and the model. - X indicates that the library is required.* - - +------------------------+----------------------+-------------+ - | **NCEP Library** | **Pre-Processing** | **FV3SAR** | - +========================+======================+=============+ - | ``bacio/v2.0.1`` | | X | - +------------------------+----------------------+-------------+ - | ``bacio/v2.0.2`` | X | | - +------------------------+----------------------+-------------+ - | ``gfsio/v1.1.0`` | X | | - +------------------------+----------------------+-------------+ - | ``ip/v2.0.0`` | X | X | - +------------------------+----------------------+-------------+ - | ``ip/v3.0.0`` | X | | - +------------------------+----------------------+-------------+ - | ``landsfcutil/v2.1.0`` | X | | - +------------------------+----------------------+-------------+ - | ``nemsio/v2.2.3`` | X | X | - +------------------------+----------------------+-------------+ - | ``nemsiogfs/v2.0.1`` | X | | - +------------------------+----------------------+-------------+ - | ``sfcio/v1.0.0`` | X | | - +------------------------+----------------------+-------------+ - | ``sigio/v2.0.1`` | X | | - +------------------------+----------------------+-------------+ - | ``sp/v2.0.2`` | X | X | - +------------------------+----------------------+-------------+ - | ``w3emc/v2.0.5`` | X | X | - +------------------------+----------------------+-------------+ - | ``w3emc/v2.2.0`` | X | | - +------------------------+----------------------+-------------+ - | ``w3nco/v2.0.6`` | X | X | - +------------------------+----------------------+-------------+ - -.. _ObtainingCode: - -================================ -Obtaining the FV3SAR Source Code -================================ -In order to run FV3SAR, the user must get the FV3SAR workflow scripts -and the NEMSfv3gfs model source code. These steps assume that the -necessary NCEP libraries are built and available as modules on your machine. - -The source code for the FV3SAR workflow, which includes pre-processing utilities, -and the regional model reside in two separate NOAA VLAB repositories. -You will need a NOAA account to check out the code; the ``${USER}`` -variable used below is your NEMS User ID used to log into VLab, -not to be confused with the NEMS (NOAA Environmental Modeling System) -infrastructure. The pre-processing and workflow utilities are located in the -fv3gfs_workflow repository. To clone this repository, create a -directory called ``${BASEDIR}``, clone the repository and check out the -``community`` branch: - -.. code-block:: console - - % mkdir ${BASEDIR} - % cd ${BASEDIR} - % git clone ssh://${USER}@vlab.ncep.noaa.gov:29418/regional_workflow - % cd regional_workflow - % git checkout community - -The model source code is located in the NEMSfv3gfs repository, which includes -three submodules: FMS, FV3, and NEMS. All four of these repositories are hosted -in VLab. You will need to clone the main repository, -checkout the ``regional_fv3_nemsfv3gfs`` branch, and check out the appropriate -branch for each submodule. - -Normally, the appropriate branches to check out are shown in :numref:`Table %s `: - -.. _repo_branches: - -.. table:: *Branches to check out to obtain NEMSfv3gfs source code and three submodules.* - - +-----------------+-----------------------------+ - | **Repository** | **Branch Name** | - +=================+=============================+ - | ``NEMSfv3gfs`` | ``regional_fv3_nemsfv3gfs`` | - +-----------------+-----------------------------+ - | ``FV3`` | ``regional_fv3`` | - +-----------------+-----------------------------+ - | ``FMS`` | ``GFS-FMS`` | - +-----------------+-----------------------------+ - | ``NEMS`` | ``master`` | - +-----------------+-----------------------------+ - -using the following commands: - -.. code-block:: console - - % cd ${BASEDIR} - % git clone --recursive ssh://${USER}@vlab.ncep.noaa.gov:29418/NEMSfv3gfs - % cd NEMSfv3gfs - % git checkout regional_fv3_nemsfv3gfs - % cd FV3 - % git checkout regional_fv3 - % cd ${BASEDIR}/NEMSfv3gfs - % cd FMS - % git checkout GFS-FMS - % cd ${BASEDIR}/NEMSfv3gfs - % cd NEMS - % git checkout master - -However, it turns out that as of 12/13/2018, the code(s) in the “HEAD”s of one or -more of these branches cause(s) one of the post-processing (UPP) tasks in the workflow -for the test run on the RAP domain to hang/fail (the one for forecast hour 6). Thus, -we will for now check out specific commits in these repos that we know will give a -successful run. The hash numbers of these commits are shown in :numref:`Table %s `: - -.. _commit_hashes: - -.. table:: *Specific commits to checkout to achieve a successful run.* - - +-----------------+------------------+ - | **Repository** | **Commit Hash** | - +=================+==================+ - | ``NEMSfv3gfs`` | ``8c97373`` | - +-----------------+------------------+ - | ``FV3`` | ``3ef9be7`` | - +-----------------+------------------+ - | ``FMS`` | ``d4937c8`` | - +-----------------+------------------+ - | ``NEMS`` | ``10325d4`` | - +-----------------+------------------+ - -For convenience, a script named ``checkout_NEMSfv3gfs.sh`` has been created in -the directory ``$BASEDIR/regional_workflow/ush`` to perform these clone and checkout -steps. This script can check out either the heads of the above branches or the -specific commits listed above (the commit hashes are hard-coded into the script). -To have it check out the commits, call this script as follows: - -.. code-block:: console - - % cd ${BASEDIR}/regional_workflow/ush - % ./checkout_NEMSfv3gfs.sh "hash" - -To have the script check out the branch heads, change the first argument from -``hash`` to ``head``, or simply call the script without an argument. - -=========================================== -Building the FV3SAR Source Code -=========================================== -To run the end-to-end FV3SAR forecasting system, the pre-processing utilities, -the FV3SAR model, and the post-porcessing components must be built. This section -describes the steps for the supported compilers on the available platforms. The -directory ``${BASEDIR}`` is assumed to be where the code has been checked -out as described in Section ObtainingCode_. - -To build the FV3SAR pre-processing utilities on theia: - -.. code-block:: console - - % cd ${BASEDIR}/regional_workflow/regional - % ./build_regional theia >& out.build_regional - -Other supported build platforms are ``"cheyenne``, ``wcoss_cray``, or ``odin``. -When the build completes, there should be 9 executables under ``${BASEDIR}/regional_workflow/exec``: - -.. code-block:: console - - % ls ${BASEDIR}/regional_workflow/exec - filter_topo global_chgres make_solo_mosaic - fregrid make_hgrid ml01rg2.x - fregrid_parallel make_hgrid_parallel shave.x - -To build the FV3 model executable: - -.. code-block:: console - - % cd ${BASEDIR}/NEMSfv3gfs/tests - % ./compile.sh ${BASEDIR}/NEMSfv3gfs/FV3 theia.intel "32BIT=Y" 32bit YES NO >& make.out.32bit - -Note the following: - -* The second argument to the ``compile.sh`` script is ``theia.intel``, not just ``theia``. - Other build targets are: - ``cheyenne.gnu, cheyenne.intel, cheyenne.pgi, odin, theia.gnu, theia.intel, theia.pgi`` or ``wcoss_cray``. - -* This is a production build, not a debug build. We don't do the debug build because it is very slow - to run, and you'll time out in the queue. - -* The build takes about 12 minutes to complete. If successful, there should be a file named - ``fv3_32bit.exe`` in the directory ``${BASEDIR}/NEMSfv3gfs/tests``. - -There are other command-line options available when running ``compile.sh`` and are shown in -:numref:`Table %s `. - -.. _build_options: - -.. table:: *Command-line options to build FV3SAR.* - - +---------------------+-----------------------+---------------------------------+--------------+ - | **Argument Number** | **Argument Name** | **Example** | **Optional** | - +=====================+=======================+=================================+==============+ - | 1 | path to FV3 directory | ``${PWD}../FV3`` | No | - +---------------------+-----------------------+---------------------------------+--------------+ - | 2 | ``BUILD_TARGET`` | ``theia.intel, cheyenne.intel`` | No | - +---------------------+-----------------------+---------------------------------+--------------+ - | 3 | ``MAKE_OPT`` | ``DEBUG=Y 32BIT=Y REPRO=N`` | Yes | - +---------------------+-----------------------+---------------------------------+--------------+ - | 4 | ``BUILD_NAME`` | ``32bit`` | Yes | - +---------------------+-----------------------+---------------------------------+--------------+ - | 5 | ``clean_before`` | ``YES`` | Yes | - +---------------------+-----------------------+---------------------------------+--------------+ - | 6 | ``clean_after`` | ``YES`` | Yes | - +---------------------+-----------------------+---------------------------------+--------------+ - -To build with debugging flags, add the following quantities to the ``compile.sh`` command: - -.. code-block:: console - - % ./compile.sh ../FV3 ${BUILD_TARGET} "32BIT=Y DEBUG=Y" 32bit [clean_before] [clean_after] >& make.out.32bit - -The last two optional arguments ``clean_before`` and ``clean_after`` control whether or not to run -make clean to remove temporary files. The default values are ``YES``. Specifying ``NO`` will skip -cleaning step, which will speed up repeating compilation, which is useful for debugging. - -Currently all the fixed fields necessary to run a uniform global case without a nest are in subdirectories -on each supported machine: - -* ``/gpfs/hps3/emc/global/noscrub/emc.glopara/git/fv3gfs/fix/fix_fv3`` on the cray -* ``/scratch4/NCEPDEV/global/save/glopara/git/fv3gfs/fix/fix_fv3`` on theia -* ``/glade/p/ral/jntp/GMTB/FV3GFS_V1_RELEASE/fix/fix_am/`` on Cheyenne - diff --git a/docs/UsersGuide/source/Chapter3.rst b/docs/UsersGuide/source/Chapter3.rst deleted file mode 100644 index 46f16c792..000000000 --- a/docs/UsersGuide/source/Chapter3.rst +++ /dev/null @@ -1,170 +0,0 @@ -.. _config_regional_workflow: - -*************************************** -Configuring the FV3SAR Workflow -*************************************** - -The following steps describe how to create a user-specific configuration -file in order to run your experiment in a given environment. - -1. Create a user-specific configuration file named ``config.sh`` in the subdirectory - ``ush`` under the ``$BASEDIR/regional_workflow`` directory containing appropriate - variable settings for your environment, experiment, etc. - - A configuration file named ``config_defaults.sh`` containing default values already - exists in the ``ush`` subdirectory (this file is part of the ``regional_workflow`` - repository). The setup script (called ``setup.sh`` and located in ``ush``) that - will be called in the workflow generation step below first sources ``config_defaults.sh`` - and then sources ``config.sh`` if the latter exists. Thus, any settings in ``config.sh`` - will overwrite the ones in ``config_defaults.sh``. - - Instead of creating a ``config.sh`` script with custom settings, a user can directly - modify the variable settings in ``config_defaults.sh``. However, we do not recommend - this approach because if this file is then pushed to the remote ``regional_workflow`` - repository, that repository will contain in its copy of ``config_defaults.sh`` variable - settings that are specific to your environment and/or experiment. If others then pull - from this repository, they will inherit these settings, but these settings will likely - not be appropriate for their environment and/or experiment. To avoid this situation, - we’ve designed the setup script to read in the local configuration file ``config.sh`` - that users can (and should) create locally in the ush directory and which should remain - out of the repository. We use ``config_defaults.sh`` to document the variables, setting - them to dummy/placeholder values that will be overwritten by the settings in ``config.sh``. - - For the experiment(s) we will run, we do not need to include in ``config.sh`` all the - variables defined in ``config_defaults.sh``; we only need to include the most relevant - ones (the rest will keep their settings in ``config_default.sh``). Thus, include in your - ``config.sh`` the following variable settings: - -.. code-block:: console - - # - MACHINE="THEIA" - ACCOUNT="gsd-fv3" - QUEUE_DEFAULT="debug" - QUEUE_HPSS="service" - QUEUE_RUN_FV3SAR="batch" - # - BASEDIR="/path/to/directory/of/regional_workflow/and/NEMSfv3gfs/clones" - TMPDIR="/path/to/temporary/work/directories" - UPPDIR="/path/to/UPP/executable/directory" - CCPP="false" - # - CDATE="2018060400" - # - fcst_len_hrs="6" - BC_update_intvl_hrs="6" - # - run_title="my_test" - # - #predef_domain="RAP" - predef_domain="HRRR" - # - if [ "$predef_domain" = "RAP" ]; then - layout_x="14" # One possibility: 14 for RAP, 20 for HRRR. - layout_y="14" # One possibility: 14 for RAP, 20 for HRRR. - write_tasks_per_group="14" # One possibility: 14 for RAP, 20 for HRRR. - elif [ "$predef_domain" = "HRRR" ]; then - layout_x="20" # One possibility: 14 for RAP, 20 for HRRR. - layout_y="20" # One possibility: 14 for RAP, 20 for HRRR. - write_tasks_per_group="20" # One possibility: 14 for RAP, 20 for HRRR. - fi - # - preexisting_dir_method="delete" - #preexisting_dir_method="rename" - #preexisting_dir_method="quit" - -Note that the variable values in this code snippet still need to be customized for -your environment and/or experiment. This customization is described in the next step. - -.. warning:: - The following table and the queue information in Step 2 are specific to the NOAA HPC machine theia. - -.. _tasks_queues: - -.. table:: *Workflow task names and the queue submission.* - - +-------------------------+-----------------------------+ - | **Task Name** | **Queue** | - +=========================+=============================+ - | ``make_grid_orog`` | ``QUEUE_DEFAULT`` | - +-------------------------+-----------------------------+ - | ``get_GFS_files`` | ``QUEUE_HPSS`` | - +-------------------------+-----------------------------+ - | ``make_surf_IC_BC0`` | ``QUEUE_DEFAULT`` | - +-------------------------+-----------------------------+ - | ``make_BC1_to_BCend`` | ``QUEUE_DEFAULT`` | - +-------------------------+-----------------------------+ - | ``stage`` | ``QUEUE_DEFAULT`` | - +-------------------------+-----------------------------+ - | ``run_FV3SAR`` | ``QUEUE_RUN_FV3SAR`` | - +-------------------------+-----------------------------+ - | ``post_00 ... post_NN`` | ``QUEUE_DEFAULT`` | - +-------------------------+-----------------------------+ - - -2. Customize the variables in your ``config.sh`` as follows (note that you can find - documentation on what each of these variables represent in ``config_defaults.sh``): - - * Since we're running on theia, leave ``MACHINE`` set to ``"THEIA"``. - - * If you have access to the ``gsd-fv3`` account, leave ``ACCOUNT`` set to ``"gsd-fv3"``. - Otherwise, set ``ACCOUNT`` to one of the accounts you're a member of. - - * Leave ``QUEUE_HPSS`` and ``QUEUE_RUN_FV3SAR`` unchanged, but you can change - ``QUEUE_DEFAULT`` if you like. The workflow tasks and the queues they will - get submitted to are shown in :numref:`Table %s `. - - From :numref:`Table %s `, we can see that the task that gets the - GFS analysis and forecast files (``get_GFS_files``) is submitted to the queue - defined by ``QUEUE_HPSS``, the forecast task (``run_FV3SAR``) is submitted to - the queue defined by ``QUEUE_RUN_FV3SAR``, and all remaining tasks are submitted - to the queue defined by ``QUEUE_DEFAULT``. The theia admins require that any jobs - that access the HPSS run in the ``"service"`` queue, so you have to leave ``QUEUE_HPSS`` - set to ``"service"``. Also, leave ``QUEUE_RUN_FV3SAR`` set to ``"batch"`` because if - you change it to ``“debug”``, the forecast will not complete within the 30 min maximum - walltime of the ``"debug"`` queue, causing the job to time out. For debugging tests, - set ``QUEUE_DEFAULT`` to ``"debug"`` to get the remaining tasks (i.e. the ones other - than ``get_GFS_file`` and ``run_FV3SAR``) in the queue faster. For production runs, - set it to ``"batch"``. - - * Edit ``BASEDIR`` to be your top-level directory. - - * Edit ``TMPDIR`` to be your work directory, wherever you want that to be. A subdirectory - will be created under this directory for each experiment for which you generate a - workflow (using ``generate_FV3SAR_wflow.sh``; see below). Since the run directory that - the setup script (``setup.sh`` in ``ush``) will create will be in ``$BASEDIR/run_dirs``, - it is convenient to set ``TMPDIR`` to ``$BASEDIR/work_dirs`` so that the work and run - directories will be at the same directory level. This is not necessary, however; you - can use another location for ``TMPDIR`` that is independent of ``BASEDIR``. - - * Leave ``UPPDIR`` unchanged for now. This is set to where Jeff's version of UPP is located. - We need to decide where in the SAR directory structure to put UPP and document how to build - it to work with the FV3SAR. - - * Leave ``CDATE``, ``fcst_len_hrs``, and ``BC_update_intvl_hrs`` unchanged since we know - the workflow should complete with these settings. We can explore other values of these - variables later. - - * Change ``run_title`` to a descriptive string for your run. This will get appended to - the end of the names of your run and work directories. - - * Leave ``predef_domain`` set to ``"HRRR"``. If that works, you can later try the - ``"RAP"`` setting. This variable sets the regional domain to one of these two - predefined domains. It does this by setting the grid parameters (i.e. ``RES``, - ``lon_ctr_T6``, etc defined in ``config_defaults.sh``) to predefined values. - If you want a domain other than one of these two defaults, then you have to first - set predef_domain to an empty string and then copy the grid parameters from - ``config_defaults.sh`` to ``config.sh`` and set them to the values you want. - But don't do that for now. - - * Leave the ``layout_x``, ``layout_y``, and write_tasks_per_group settings - unchanged for now. You will likely have to change these if you decide to use a custom domain. - - * Set ``preexisting_dir_method`` to the method you want to use to handle pre-existing - versions of run and work directories. The workflow generation script (``generate_FV3SAR_wflow.sh``, - discussed below) will create run and work directories for your experiment. If one or both - of those directories already exist, the setting of ``preexisting_dir_method`` determines what - will be done with them. If this variable is set to ``"delete"``, pre-existing directories will - be deleted and replaced with new ones; if it is set to ``"rename"``, they will get renamed - (by appending ``"_old001"``, ``"_old002"``, etc to their names); and if it is set to ``"quit"``, - the workflow generation script will fail if it finds any pre-existing directories. diff --git a/docs/UsersGuide/source/Chapter4.rst b/docs/UsersGuide/source/Chapter4.rst deleted file mode 100644 index d3ce887c5..000000000 --- a/docs/UsersGuide/source/Chapter4.rst +++ /dev/null @@ -1,261 +0,0 @@ -.. _running_regional_workflow: - -**************************** -Running the FV3SAR Workflow -**************************** -The steps described in this section assume the config.sh file -has been created following the steps outlined in -section :ref:`config_regional_workflow`. In this section, the run and -work directories will be created and a script to run the rocoto -workflow will be generated to run the FV3SAR. - -1. Create the run and work directories and a rocoto workflow XML - for your experiment by running ``generate_FV3SAR_wflow.sh`` in - the ``fv3sar_wflow/ush directory``: - -.. code-block:: console - - % cd $BASEDIR/regional_workflow/ush - % generate_FV3SAR_wflow.sh - -This will create a run directory and a work directory, and it will -put the rocoto workflow XML (called ``FV3SAR_wflow.xml``) in the -run directory. Towards the end of the output that ``generate_FV3SAR_wflow.sh`` -generates, you'll find the locations of the run and work directories -(``RUNDIR=...`` and ``WORKDIR=...``). Note that the workflow always -creates the run directory as a subdirectory under ``$BASEDIR/run_dirs``, -and it creates the work directory as a subdirectory under ``$TMPDIR``. - -The output from ``generate_FV3SAR_wflow.sh`` will contain the commands -you can use to launch the workflow and check on its status (also discussed -in the next step below). It will also contain the line you need to add -to your crontab (using the command ``"crontab -e"``) in order to continuously -resubmit the workflow to the queue. - -2. Regardless of whether or not you added an entry to your crontab for automatic - resubmission, you can go to the run directory and launch the rocoto workflow - as follows (assuming you've already loaded rocoto using ``"module load rocoto"``): - -.. code-block:: console - - % cd $RUNDIR - % rocotorun -w FV3SAR_wflow.xml -d FV3SAR_wflow.db -v 10 - -This will launch the first task in the workflow if it's the first time you're -issuing it. If it's not the first time, it will launch the next task if it -has completed the current one, relaunch the current one if it failed (and -if the number of times you’ve tried to launch the task hasn’t yet exceeded -the maxtries value defined for the task in the workflow XML), or do nothing -if the current one is still running. After issuing this command, you can -check on the status of the workflow using: - -.. code-block:: console - - % rocotostat -w FV3SAR_wflow.xml -d FV3SAR_wflow.db -v 10 - -This will generate a table similar to the following: - -.. code-block:: console - - CYCLE TASK JOBID STATE EXIT STATUS TRIES DURATION - ================================================================================================== - 201806040000 make_grid_orog druby://tfe05:33377 SUBMITTING - 0 0.0 - 201806040000 get_GFS_files - - - - - - 201806040000 make_surf_IC_BC0 - - - - - - 201806040000 make_BC1_to_BCend - - - - - - 201806040000 stage - - - - - - 201806040000 run_FV3SAR - - - - - - 201806040000 post_00 - - - - - - 201806040000 post_01 - - - - - - 201806040000 post_02 - - - - - - 201806040000 post_03 - - - - - - 201806040000 post_04 - - - - - - 201806040000 post_05 - - - - - - 201806040000 post_06 - - - - - - -Note that you first have to issue the ``rocotorun`` command above in order to get -updated results from the ``rocotostat`` command. Since it's inconvenient to have -to keep issuing the ``rocotorun`` command to keep the workflow moving along -(i.e. in order to launch the next task if the current one has completed, etc), -you can modify your crontab as described at the end of the output from -``generate_FV3SAR_wflow.sh`` in order to automatically relaunch the workflow with -some specified frequency (e.g. every 3 minutes). - -If all goes well, the workflow should step through all the tasks and finish. The -workflow will have completed when the ``rocotostat`` command generates a table in -which the ``STATE`` for all tasks is ``SUCCEEDED``, something like this: - -.. code-block:: console - - CYCLE TASK JOBID STATE EXIT STATUS TRIES DURATION - =============================================================================================== - 201806040000 make_grid_orog 36437677 SUCCEEDED 0 1 262.0 - 201806040000 get_GFS_files 36437726 SUCCEEDED 0 1 71.0 - 201806040000 make_surf_IC_BC0 36437730 SUCCEEDED 0 1 293.0 - 201806040000 make_BC1_to_BCend 36437731 SUCCEEDED 0 1 242.0 - 201806040000 stage 36437765 SUCCEEDED 0 1 38.0 - 201806040000 run_FV3SAR 36437802 SUCCEEDED 0 1 1653.0 - 201806040000 post_00 36438577 SUCCEEDED 0 1 309.0 - 201806040000 post_01 36438624 SUCCEEDED 0 1 294.0 - 201806040000 post_02 36438696 SUCCEEDED 0 1 319.0 - 201806040000 post_03 36438705 SUCCEEDED 0 1 288.0 - 201806040000 post_04 36438441 SUCCEEDED 0 2 293.0 - 201806040000 post_05 36438808 SUCCEEDED 0 1 313.0 - 201806040000 post_06 36438809 SUCCEEDED 0 1 304.0 - -If a job fails, you can find the log file for the job under the run directory -in ``$RUNDIR/log``. Each job will have its own log. This directory will also -have the overall log file for the workflow called ``FV3_$CDATE.log``, where -``CDATE`` is the starting date of the forecast that you set in ``config.sh``. - -================================ -Comparing run output to baseline -================================ - -.. warning:: - The this section is specific to the NOAA HPC machine theia. - -Baseline runs have been created for both the RAP and HRRR domains. The run -directories for these are at the following locations: - -RAP: -``/scratch3/BMC/fim/Gerard.Ketefian/FV3SAR_baseline_runs/run_dirs/C384_S0p63_RR3_RAP`` - -HRRR: -``/scratch3/BMC/fim/Gerard.Ketefian/FV3SAR_baseline_runs/run_dirs/C384_S1p65_RR5_HRRR`` - -These baselines have been generated using code from the specific commits of the -``NEMSfv3gfs`` repo and its submodules (``FV3``, ``FMS``, and ``NEMS``) mentioned -above (i.e. the ones for which all tasks in the workflows for both the RAP and -HRRR domains complete successfully). Thus, your runs should match these baselines -(assuming you passed the argument ``"hash"`` to the checkout script ``checkout_NEMSfv3gfs.sh`` -described above). As described next, you can use the script ``cmp_rundirs_ncfiles.sh`` -to compare your runs to the baselines. - -The script ``cmp_rundirs_ncfiles.sh`` in the ``ush`` directory compares the NetCDF -files in two specified run directories and their ``INPUT`` subdirectories. Run it as follows: - -.. code-block:: console - - % cd $BASEDIR/regional_workflow/ush - % ./cmp_rundirs_ncfiles.sh "$rundir1" "$rundir2" - -Here, ``rundir1`` and ``rundir2`` are the two run directories you want to compare. -Thus, for example, to compare your RAP run to the baseline, you would use your run -directory for ``rundir1`` and the baseline RAP directory listed above for ``rundir2`` -(or vice versa). - -Below is sample output from running the ``cmp_rundirs_ncfiles.sh`` script to compare -a RAP run to the baseline. You can see that all NetCDF files in the INPUT subdirectory -and the main run directory are identical to their counterparts in the baseline except -for the file ``C384_mosaic.nc``. This is normal because this file contains variables -that contain the full paths to grid files in the run or work directories, and those -full paths will be different because the two run or work directories are different. - -.. code-block:: console - - % ./cmp_rundirs_ncfiles.sh /scratch3/BMC/fim/Gerard.Ketefian/FV3SAR_test_gsk/run_dirs/C384_S0p63_RR3_RAP_my_test /scratch3/BMC/fim/Gerard.Ketefian/FV3SAR_baseline_runs/run_dirs/C384_S0p63_RR3_RAP - - rundir1 = "/scratch3/BMC/fim/Gerard.Ketefian/FV3SAR_test_gsk/run_dirs/C384_S0p63_RR3_RAP_my_test" - rundir2 = "/scratch3/BMC/fim/Gerard.Ketefian/FV3SAR_baseline_runs/run_dirs/C384_S0p63_RR3_RAP" - - Comparing files in subdirectory "INPUT" ... - =========================================== - - Comparing file "C384_grid.tile7.halo3.nc" in subdirectory "INPUT" ... - Files are identical. - - Comparing file "C384_grid.tile7.halo4.nc" in subdirectory "INPUT" ... - Files are identical. - - File "C384_grid.tile7.nc" in "/scratch3/BMC/fim/Gerard.Ketefian/FV3SAR_test_gsk/run_dirs/C384_S0p63_RR3_RAP_my_test/INPUT" is a symbolic link. Skipping. - - Comparing file "C384_mosaic.nc" in subdirectory "INPUT" ... - DIFFER : VARIABLE : gridlocation : POSITION : [34] : VALUES : F <> r - ===>>> FILES ARE DIFFERENT!!! - - Comparing file "C384_oro_data.tile7.halo0.nc" in subdirectory "INPUT" ... - Files are identical. - - Comparing file "C384_oro_data.tile7.halo4.nc" in subdirectory "INPUT" ... - Files are identical. - - Comparing file "gfs_bndy.tile7.000.nc" in subdirectory "INPUT" ... - Files are identical. - - Comparing file "gfs_bndy.tile7.006.nc" in subdirectory "INPUT" ... - Files are identical. - - Comparing file "gfs_ctrl.nc" in subdirectory "INPUT" ... - Files are identical. - - File "gfs_data.nc" in "/scratch3/BMC/fim/Gerard.Ketefian/FV3SAR_test_gsk/run_dirs/C384_S0p63_RR3_RAP_my_test/INPUT" is a symbolic link. Skipping. - - Comparing file "gfs_data.tile7.nc" in subdirectory "INPUT" ... - Files are identical. - - File "grid_spec.nc" in "/scratch3/BMC/fim/Gerard.Ketefian/FV3SAR_test_gsk/run_dirs/C384_S0p63_RR3_RAP_my_test/INPUT" is a symbolic link. Skipping. - - File "grid.tile7.halo4.nc" in "/scratch3/BMC/fim/Gerard.Ketefian/FV3SAR_test_gsk/run_dirs/C384_S0p63_RR3_RAP_my_test/INPUT" is a symbolic link. Skipping. - - File "oro_data.nc" in "/scratch3/BMC/fim/Gerard.Ketefian/FV3SAR_test_gsk/run_dirs/C384_S0p63_RR3_RAP_my_test/INPUT" is a symbolic link. Skipping. - - File "oro_data.tile7.halo4.nc" in "/scratch3/BMC/fim/Gerard.Ketefian/FV3SAR_test_gsk/run_dirs/C384_S0p63_RR3_RAP_my_test/INPUT" is a symbolic link. Skipping. - - File "sfc_data.nc" in "/scratch3/BMC/fim/Gerard.Ketefian/FV3SAR_test_gsk/run_dirs/C384_S0p63_RR3_RAP_my_test/INPUT" is a symbolic link. Skipping. - - - Comparing file "sfc_data.tile7.nc" in subdirectory "INPUT" ... - Files are identical. - - Comparing files in subdirectory "." ... - ======================================= - - Comparing file "atmos_static.nc" in subdirectory "." ... - Files are identical. - - Comparing file "dynf000.nc" in subdirectory "." ... - Files are identical. - - Comparing file "dynf001.nc" in subdirectory "." ... - Files are identical. - - Comparing file "dynf002.nc" in subdirectory "." ... - Files are identical. - - Comparing file "dynf003.nc" in subdirectory "." ... - Files are identical. - - Comparing file "dynf004.nc" in subdirectory "." ... - Files are identical. - - Comparing file "dynf005.nc" in subdirectory "." ... - Files are identical. - - Comparing file "dynf006.nc" in subdirectory "." ... - Files are identical. - - Comparing file "grid_spec.nc" in subdirectory "." ... - Files are identical. - - Comparing file "phyf000.nc" in subdirectory "." ... - Files are identical. - - Comparing file "phyf001.nc" in subdirectory "." ... - Files are identical. - - Comparing file "phyf002.nc" in subdirectory "." ... - Files are identical. - - Comparing file "phyf003.nc" in subdirectory "." ... - Files are identical. - - Comparing file "phyf004.nc" in subdirectory "." ... - Files are identical. - - Comparing file "phyf005.nc" in subdirectory "." ... - Files are identical. - - Comparing file "phyf006.nc" in subdirectory "." ... - Files are identical. - diff --git a/docs/UsersGuide/source/Introduction.rst b/docs/UsersGuide/source/Introduction.rst deleted file mode 100644 index 3b304d9e9..000000000 --- a/docs/UsersGuide/source/Introduction.rst +++ /dev/null @@ -1,41 +0,0 @@ -.. _introduction: -.. include:: prolog.inc - ------------- -Introduction ------------- - -This document contains the Finite-Volume Cubed-Sphere Standalone Regional (FV3SAR) Model User's Guide. It provides an overview of the FV3SAR, the fundamentals of obtaining, building and running the FV3SAR. There is also a description of the FV3SAR community workflow and its components. - -For the latest version of the released code, please visit the `FV3SAR DTC Website `_ - -Please send questions and comments to the help desk: `xxx-help@ucar.edu` - -This document and the annual releases are made available through a community effort jointly led by the Developmental Testbed Center (DTC) and the National Centers for Environmental Prediction (NCEP) Environmental Modeling Center (EMC), in collaboration with other developers. To help sustain this effort, we recommend for those who use the community release, the helpdesk, the User's Guide, and other DTC services, please refer to this community effort in their work and publications. - - -How To Use This Document ------------------------- - -This table describes the type changes and symbols used in this guide. - -+------------------------+------------------------------+---------------------------------------+ -| **Typeface or Symbol** | **Meaning** | **Example** | -+========================+==============================+=======================================+ -| ``AaBbCc123`` | The names of commands, | Edit your ``.bashrc`` |br| | -| | files, and directories; |br| | Use ``ls -a`` to list all files. |br| | -| | on-screen computer output | ``host$ You have mail!`` | -+------------------------+------------------------------+---------------------------------------+ -| :mod:`AaBbCc123` | What you type contrasted | ``host$`` :mod:`su` | -| | with on-screen computer | | -| | output | | -+------------------------+------------------------------+---------------------------------------+ -| ``%`` | Command-line prompt | ``% cd $TOP_DIR`` | -+------------------------+------------------------------+---------------------------------------+ - -Following these typefaces and conventions, shell commands, code examples, namelist varialbes, etc. -will be presented in this style: - -.. code-block:: console - - % mkdir ${TOP_DIR} diff --git a/docs/UsersGuide/source/_static/custom.css b/docs/UsersGuide/source/_static/custom.css deleted file mode 100644 index 25f207a22..000000000 --- a/docs/UsersGuide/source/_static/custom.css +++ /dev/null @@ -1,6 +0,0 @@ -.red { color: red; } -.bolditalic { - font-family: "Courier New", Courier, monospace; - font-weight: bold; - font-style: italic; -} diff --git a/docs/UsersGuide/source/_templates/.gitignore b/docs/UsersGuide/source/_templates/.gitignore deleted file mode 100644 index 5e7d2734c..000000000 --- a/docs/UsersGuide/source/_templates/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore diff --git a/docs/UsersGuide/source/conf.py b/docs/UsersGuide/source/conf.py deleted file mode 100644 index b95750740..000000000 --- a/docs/UsersGuide/source/conf.py +++ /dev/null @@ -1,202 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Configuration file for the Sphinx documentation builder. -# -# This file does only contain a selection of the most common options. For a -# full list see the documentation: -# http://www.sphinx-doc.org/en/master/config - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -import os -import sys -sys.path.insert(0, os.path.abspath('.')) - - -# -- Project information ----------------------------------------------------- - -project = 'FV3SAR' -copyright = '2019, ' -author = ' ' - -# The short X.Y version -version = '' -# The full version, including alpha/beta/rc tags -release = 'v1.0' - -numfig = True - -# -- General configuration --------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.doctest', - 'sphinx.ext.intersphinx', - 'sphinx.ext.todo', - 'sphinx.ext.coverage', - 'sphinx.ext.mathjax', - 'sphinx.ext.ifconfig', - 'sphinx.ext.viewcode', - 'sphinx.ext.githubpages', - 'sphinx.ext.napoleon', - 'sphinxcontrib.bibtex' -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The master toctree document. -master_doc = 'index' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = [] - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = None - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = 'classic' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# -# html_theme_options = {} -html_theme_options = {"body_max_width": "none"} - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -def setup(app): - app.add_stylesheet('custom.css') # may also be an URL - -# Custom sidebar templates, must be a dictionary that maps document names -# to template names. -# -# The default sidebars (for documents that don't match any pattern) are -# defined by theme itself. Builtin themes are using these templates by -# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', -# 'searchbox.html']``. -# -# html_sidebars = {} - - -# -- Options for HTMLHelp output --------------------------------------------- - -# Output file base name for HTML help builder. -htmlhelp_basename = 'FV3SAR' - - -# -- Options for LaTeX output ------------------------------------------------ - -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - 'papersize': 'letterpaper', - - # The font size ('10pt', '11pt' or '12pt'). - 'pointsize': '11pt', - - # Additional stuff for the LaTeX preamble. - 'preamble': r''' - \usepackage{charter} - \usepackage[defaultsans]{lato} - \usepackage{inconsolata} - ''', - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, 'FV3SAR.tex', 'FV3SAR Documentation', - ' ', 'manual'), -] - - -# -- Options for manual page output ------------------------------------------ - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'FV3SAR', 'FV3SAR Documentation', - [author], 1) -] - - -# -- Options for Texinfo output ---------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, 'FV3SAR', 'FV3SAR Documentation', - author, 'FV3SAR', 'One line description of project.', - 'Miscellaneous'), -] - - -# -- Options for Epub output ------------------------------------------------- - -# Bibliographic Dublin Core info. -epub_title = project - -# The unique identifier of the text. This can be a ISBN number -# or the project homepage. -# -# epub_identifier = '' - -# A unique identification for the text. -# -# epub_uid = '' - -# A list of files that should not be packed into the epub file. -epub_exclude_files = ['search.html'] - - -# -- Extension configuration ------------------------------------------------- - -# -- Options for intersphinx extension --------------------------------------- - -# Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'https://docs.python.org/': None} - -# -- Options for todo extension ---------------------------------------------- - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = True diff --git a/docs/UsersGuide/source/index.rst b/docs/UsersGuide/source/index.rst deleted file mode 100644 index 1a0a50a93..000000000 --- a/docs/UsersGuide/source/index.rst +++ /dev/null @@ -1,17 +0,0 @@ -.. ccpp_docs documentation master file, created by - sphinx-quickstart on Tue Feb 12 08:48:32 2019. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -FV3SAR User's Guide -=================== - -.. toctree:: - :maxdepth: 3 - - Introduction - Chapter1 - Chapter2 - Chapter3 - Chapter4 - Acknowledgement diff --git a/docs/UsersGuide/source/prolog.inc b/docs/UsersGuide/source/prolog.inc deleted file mode 100644 index 516e6eb6a..000000000 --- a/docs/UsersGuide/source/prolog.inc +++ /dev/null @@ -1,4 +0,0 @@ -.. # define a hard line break for HTML -.. |br| raw:: html - -
diff --git a/modulefiles/tasks/wcoss_cray/get_extrn_ics.local b/modulefiles/tasks/wcoss_cray/get_extrn_ics.local deleted file mode 100644 index d540aea2c..000000000 --- a/modulefiles/tasks/wcoss_cray/get_extrn_ics.local +++ /dev/null @@ -1,11 +0,0 @@ -#%Module##################################################### -## Module file for get_extrn_ics task. -############################################################# - -module purge - -module use /usrx/local/prod/modulefiles -module load hpss/4.1.0.3 - -module use /usrx/local/nceplibs/modulefiles -module load srw-app-python/1.0.0 diff --git a/modulefiles/tasks/wcoss_cray/get_extrn_lbcs.local b/modulefiles/tasks/wcoss_cray/get_extrn_lbcs.local deleted file mode 100644 index d7ec3794e..000000000 --- a/modulefiles/tasks/wcoss_cray/get_extrn_lbcs.local +++ /dev/null @@ -1,11 +0,0 @@ -#%Module##################################################### -## Module file for get_extrn_lbcs task. -############################################################# - -module purge - -module use /usrx/local/prod/modulefiles -module load hpss/4.1.0.3 - -module use /usrx/local/nceplibs/modulefiles -module load srw-app-python/1.0.0 diff --git a/modulefiles/tasks/wcoss_cray/get_obs.local b/modulefiles/tasks/wcoss_cray/get_obs.local deleted file mode 100644 index 43ce12ebb..000000000 --- a/modulefiles/tasks/wcoss_cray/get_obs.local +++ /dev/null @@ -1,9 +0,0 @@ -#%Module##################################################### -## Module file for get_obs_ccpa, get_obs_mrms, get_obs_ndas -############################################################# - -module purge - -module use /usrx/local/prod/modulefiles -module load hpss/4.1.0.3 - diff --git a/modulefiles/tasks/wcoss_cray/make_grid.local b/modulefiles/tasks/wcoss_cray/make_grid.local deleted file mode 100644 index edee5d724..000000000 --- a/modulefiles/tasks/wcoss_cray/make_grid.local +++ /dev/null @@ -1,15 +0,0 @@ -#%Module - -module use /opt/cray/ari/modulefiles -module load alps -module load gni-headers -module load pmi/5.0.11 -module load rca -module load udreg -module load ugni -module load xpmem - -module use /usrx/local/nceplibs/modulefiles -module load srw-app-python/1.0.0 - -module list diff --git a/modulefiles/tasks/wcoss_cray/make_ics.local b/modulefiles/tasks/wcoss_cray/make_ics.local deleted file mode 100644 index 04eb686e1..000000000 --- a/modulefiles/tasks/wcoss_cray/make_ics.local +++ /dev/null @@ -1,17 +0,0 @@ -#%Module - -module use /opt/cray/ari/modulefiles -module load alps -module load gni-headers -module load pmi/5.0.11 -module load rca -module load udreg -module load ugni -module load xpmem - -module use /usrx/local/prod/modulefiles -module load hpss/4.1.0.3 - -module use /usrx/local/nceplibs/modulefiles -module load srw-app-python/1.0.0 - diff --git a/modulefiles/tasks/wcoss_cray/make_lbcs.local b/modulefiles/tasks/wcoss_cray/make_lbcs.local deleted file mode 100644 index 04eb686e1..000000000 --- a/modulefiles/tasks/wcoss_cray/make_lbcs.local +++ /dev/null @@ -1,17 +0,0 @@ -#%Module - -module use /opt/cray/ari/modulefiles -module load alps -module load gni-headers -module load pmi/5.0.11 -module load rca -module load udreg -module load ugni -module load xpmem - -module use /usrx/local/prod/modulefiles -module load hpss/4.1.0.3 - -module use /usrx/local/nceplibs/modulefiles -module load srw-app-python/1.0.0 - diff --git a/modulefiles/tasks/wcoss_cray/make_orog.local b/modulefiles/tasks/wcoss_cray/make_orog.local deleted file mode 100644 index c43175532..000000000 --- a/modulefiles/tasks/wcoss_cray/make_orog.local +++ /dev/null @@ -1,12 +0,0 @@ -#%Module - -module use /opt/cray/ari/modulefiles -module load alps -module load gni-headers -module load pmi/5.0.11 -module load rca -module load udreg -module load ugni -module load xpmem - -module list diff --git a/modulefiles/tasks/wcoss_cray/make_sfc_climo.local b/modulefiles/tasks/wcoss_cray/make_sfc_climo.local deleted file mode 100644 index c43175532..000000000 --- a/modulefiles/tasks/wcoss_cray/make_sfc_climo.local +++ /dev/null @@ -1,12 +0,0 @@ -#%Module - -module use /opt/cray/ari/modulefiles -module load alps -module load gni-headers -module load pmi/5.0.11 -module load rca -module load udreg -module load ugni -module load xpmem - -module list diff --git a/modulefiles/tasks/wcoss_cray/run_fcst.local b/modulefiles/tasks/wcoss_cray/run_fcst.local deleted file mode 100644 index edee5d724..000000000 --- a/modulefiles/tasks/wcoss_cray/run_fcst.local +++ /dev/null @@ -1,15 +0,0 @@ -#%Module - -module use /opt/cray/ari/modulefiles -module load alps -module load gni-headers -module load pmi/5.0.11 -module load rca -module load udreg -module load ugni -module load xpmem - -module use /usrx/local/nceplibs/modulefiles -module load srw-app-python/1.0.0 - -module list diff --git a/modulefiles/tasks/wcoss_cray/run_post.local b/modulefiles/tasks/wcoss_cray/run_post.local deleted file mode 100644 index 4529dd2f3..000000000 --- a/modulefiles/tasks/wcoss_cray/run_post.local +++ /dev/null @@ -1,18 +0,0 @@ -#%Module - -module use /opt/cray/ari/modulefiles -module load alps -module load gni-headers -module load pmi/5.0.11 -module load rca -module load udreg -module load ugni -module load xpmem - -module use /usrx/local/prod/modulefiles -module load hpss/4.1.0.3 - -module use /usrx/local/nceplibs/modulefiles -module load srw-app-python/1.0.0 - - diff --git a/modulefiles/tasks/wcoss_cray/run_vx.local b/modulefiles/tasks/wcoss_cray/run_vx.local deleted file mode 100644 index 6dbf48c0f..000000000 --- a/modulefiles/tasks/wcoss_cray/run_vx.local +++ /dev/null @@ -1,13 +0,0 @@ -#%Module - -module use /opt/cray/ari/modulefiles -module load alps -module load gni-headers -module load pmi/5.0.11 -module load rca -module load udreg -module load ugni -module load xpmem - -module use /gpfs/hps3/emc/meso/noscrub/emc.metplus/modulefiles -module load met/10.0.0 diff --git a/modulefiles/tasks/wcoss_dell_p3/get_extrn_ics.local b/modulefiles/tasks/wcoss_dell_p3/get_extrn_ics.local index 1502c04d5..9900015d1 100644 --- a/modulefiles/tasks/wcoss_dell_p3/get_extrn_ics.local +++ b/modulefiles/tasks/wcoss_dell_p3/get_extrn_ics.local @@ -4,6 +4,3 @@ module purge module load HPSS/5.0.2.5 - -module use /usrx/local/nceplibs/dev/modulefiles -module load srw-app-python/1.0.0 diff --git a/modulefiles/tasks/wcoss_dell_p3/get_extrn_lbcs.local b/modulefiles/tasks/wcoss_dell_p3/get_extrn_lbcs.local index 74e8f878c..4a8b7431f 100644 --- a/modulefiles/tasks/wcoss_dell_p3/get_extrn_lbcs.local +++ b/modulefiles/tasks/wcoss_dell_p3/get_extrn_lbcs.local @@ -4,6 +4,3 @@ module purge module load HPSS/5.0.2.5 - -module use /usrx/local/nceplibs/dev/modulefiles -module load srw-app-python/1.0.0 diff --git a/modulefiles/tasks/wcoss_dell_p3/run_post.local b/modulefiles/tasks/wcoss_dell_p3/run_post.local deleted file mode 100644 index 9e6f62305..000000000 --- a/modulefiles/tasks/wcoss_dell_p3/run_post.local +++ /dev/null @@ -1,7 +0,0 @@ -#%Module - -module load lsf/10.1 - -module use /usrx/local/nceplibs/dev/modulefiles -module load srw-app-python/1.0.0 - diff --git a/scripts/exregional_make_grid.sh b/scripts/exregional_make_grid.sh index ebc580a4d..742770630 100755 --- a/scripts/exregional_make_grid.sh +++ b/scripts/exregional_make_grid.sh @@ -83,36 +83,10 @@ print_input_args valid_args # #----------------------------------------------------------------------- # -case "$MACHINE" in +source $USHDIR/source_machine_file.sh +eval ${PRE_TASK_CMDS} - "WCOSS_CRAY") - { save_shell_opts; set +x; } > /dev/null 2>&1 - . $MODULESHOME/init/sh - module load PrgEnv-intel cfp-intel-sandybridge/1.1.0 - module list - { restore_shell_opts; } > /dev/null 2>&1 - export NODES=1 - export RUN_CMD_SERIAL="aprun -n 1 -N 1 -j 1 -d 1 -cc depth" - export KMP_AFFINITY=disabled - ulimit -s unlimited - ulimit -a - ;; - - "WCOSS_DELL_P3") - { save_shell_opts; set +x; } > /dev/null 2>&1 - module list - { restore_shell_opts; } > /dev/null 2>&1 - export RUN_CMD_SERIAL="mpirun" - ulimit -s unlimited - ;; - - *) - source ${MACHINE_FILE} - ;; - -esac - -if [ -z ${RUN_CMD_SERIAL:-} ] ; then +if [ -z "${RUN_CMD_SERIAL:-}" ] ; then print_err_msg_exit " \ Run command was not set in machine file. \ Please set RUN_CMD_SERIAL for your platform" diff --git a/scripts/exregional_make_ics.sh b/scripts/exregional_make_ics.sh index 7161f16aa..8a63b1978 100755 --- a/scripts/exregional_make_ics.sh +++ b/scripts/exregional_make_ics.sh @@ -86,27 +86,12 @@ export OMP_STACKSIZE=${OMP_STACKSIZE_MAKE_ICS} # #----------------------------------------------------------------------- # -case "$MACHINE" in - - "WCOSS_CRAY") - ulimit -s unlimited - RUN_CMD_UTILS="aprun -b -j1 -n48 -N12 -d1 -cc depth" - ;; - - "WCOSS_DELL_P3") - ulimit -s unlimited - RUN_CMD_UTILS="mpirun" - ;; - - *) - source ${MACHINE_FILE} - ;; - -esac +source $USHDIR/source_machine_file.sh +eval ${PRE_TASK_CMDS} nprocs=$(( NNODES_MAKE_ICS*PPN_MAKE_ICS )) -if [ -z ${RUN_CMD_UTILS:-} ] ; then +if [ -z "${RUN_CMD_UTILS:-}" ] ; then print_err_msg_exit "\ Run command was not set in machine file. \ Please set RUN_CMD_UTILS for your platform" @@ -153,12 +138,10 @@ case "${CCPP_PHYS_SUITE}" in "FV3_GFS_2017_gfdlmp" | \ "FV3_GFS_2017_gfdlmp_regional" | \ "FV3_GFS_v16" | \ - "FV3_GFS_v15p2" | "FV3_CPT_v0" ) + "FV3_GFS_v15p2" ) varmap_file="GFSphys_var_map.txt" ;; # - "FV3_GSD_v0" | \ - "FV3_GSD_SAR" | \ "FV3_RRFS_v1alpha" | \ "FV3_RRFS_v1beta" | \ "FV3_GFS_v15_thompson_mynn_lam3km" | \ diff --git a/scripts/exregional_make_lbcs.sh b/scripts/exregional_make_lbcs.sh index f123dfc40..e1d40fb88 100755 --- a/scripts/exregional_make_lbcs.sh +++ b/scripts/exregional_make_lbcs.sh @@ -86,27 +86,12 @@ export OMP_STACKSIZE=${OMP_STACKSIZE_MAKE_LBCS} # #----------------------------------------------------------------------- # -case "$MACHINE" in - - "WCOSS_CRAY") - ulimit -s unlimited - RUN_CMD_UTILS="aprun -b -j1 -n48 -N12 -d1 -cc depth" - ;; - - "WCOSS_DELL_P3") - ulimit -s unlimited - RUN_CMD_UTILS="mpirun" - ;; - - *) - source ${MACHINE_FILE} - ;; - -esac +source $USHDIR/source_machine_file.sh +eval ${PRE_TASK_CMDS} nprocs=$(( NNODES_MAKE_LBCS*PPN_MAKE_LBCS )) -if [ -z ${RUN_CMD_UTILS:-} ] ; then +if [ -z "${RUN_CMD_UTILS:-}" ] ; then print_err_msg_exit "\ Run command was not set in machine file. \ Please set RUN_CMD_UTILS for your platform" @@ -151,12 +136,10 @@ case "${CCPP_PHYS_SUITE}" in "FV3_GFS_2017_gfdlmp" | \ "FV3_GFS_2017_gfdlmp_regional" | \ "FV3_GFS_v16" | \ - "FV3_GFS_v15p2" | "FV3_CPT_v0" ) + "FV3_GFS_v15p2" ) varmap_file="GFSphys_var_map.txt" ;; # - "FV3_GSD_v0" | \ - "FV3_GSD_SAR" | \ "FV3_RRFS_v1alpha" | \ "FV3_RRFS_v1beta" | \ "FV3_GFS_v15_thompson_mynn_lam3km" | \ diff --git a/scripts/exregional_make_orog.sh b/scripts/exregional_make_orog.sh index 430aa6a8d..1a4d528f2 100755 --- a/scripts/exregional_make_orog.sh +++ b/scripts/exregional_make_orog.sh @@ -95,33 +95,10 @@ export OMP_STACKSIZE=${OMP_STACKSIZE_MAKE_OROG} # #----------------------------------------------------------------------- # -case "$MACHINE" in +source $USHDIR/source_machine_file.sh +eval ${PRE_TASK_CMDS} - "WCOSS_CRAY") - { save_shell_opts; set +x; } > /dev/null 2>&1 - . $MODULESHOME/init/sh - module load PrgEnv-intel cfp-intel-sandybridge/1.1.0 - module list - { restore_shell_opts; } > /dev/null 2>&1 - NODES=1 - RUN_CMD_SERIAL="aprun -n 1 -N 1 -j 1 -d 1 -cc depth" - ulimit -s unlimited - ulimit -a - ;; - - "WCOSS_DELL_P3") - ulimit -s unlimited - ulimit -a - RUN_CMD_SERIAL="mpirun" - ;; - - *) - source ${MACHINE_FILE} - ;; - -esac - -if [ -z ${RUN_CMD_SERIAL:-} ] ; then +if [ -z "${RUN_CMD_SERIAL:-}" ] ; then print_err_msg_exit "\ Run command was not set in machine file. \ Please set RUN_CMD_SERIAL for your platform" diff --git a/scripts/exregional_make_sfc_climo.sh b/scripts/exregional_make_sfc_climo.sh index ada492987..129cfcb75 100755 --- a/scripts/exregional_make_sfc_climo.sh +++ b/scripts/exregional_make_sfc_climo.sh @@ -136,32 +136,12 @@ EOF # #----------------------------------------------------------------------- # -case "$MACHINE" in - - "WCOSS_CRAY") - RUN_CMD_UTILS=${APRUN:-"aprun -j 1 -n 6 -N 6"} - ;; - - "WCOSS_DELL_P3") -# Specify computational resources. - export NODES=2 - export ntasks=48 - export ptile=24 - export threads=1 - export MP_LABELIO=yes - export OMP_NUM_THREADS=$threads - RUN_CMD_UTILS="mpirun" - ;; - - *) - source ${MACHINE_FILE} - ;; - -esac +source $USHDIR/source_machine_file.sh +eval ${PRE_TASK_CMDS} nprocs=$(( NNODES_MAKE_SFC_CLIMO*PPN_MAKE_SFC_CLIMO )) -if [ -z ${RUN_CMD_UTILS:-} ] ; then +if [ -z "${RUN_CMD_UTILS:-}" ] ; then print_err_msg_exit "\ Run command was not set in machine file. \ Please set RUN_CMD_UTILS for your platform" diff --git a/scripts/exregional_run_ensgridvx.sh b/scripts/exregional_run_ensgridvx.sh index 78cb5c2ba..df1b91cd4 100755 --- a/scripts/exregional_run_ensgridvx.sh +++ b/scripts/exregional_run_ensgridvx.sh @@ -146,11 +146,11 @@ export LOG_SUFFIX # if [ ${VAR} == "APCP" ]; then acc="${ACCUM}h" # for stats output prefix in EnsembleStatConfig - ${METPLUS_PATH}/ush/master_metplus.py \ + ${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${METPLUS_CONF}/EnsembleStat_${VAR}${acc}.conf else - ${METPLUS_PATH}/ush/master_metplus.py \ + ${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${METPLUS_CONF}/EnsembleStat_${VAR}.conf fi diff --git a/scripts/exregional_run_ensgridvx_mean.sh b/scripts/exregional_run_ensgridvx_mean.sh index b255adb86..bd50e3cff 100755 --- a/scripts/exregional_run_ensgridvx_mean.sh +++ b/scripts/exregional_run_ensgridvx_mean.sh @@ -155,11 +155,11 @@ export LOG_SUFFIX # if [ ${VAR} == "APCP" ]; then export acc="${ACCUM}h" - ${METPLUS_PATH}/ush/master_metplus.py \ + ${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${METPLUS_CONF}/GridStat_${VAR}${acc}_mean.conf else - ${METPLUS_PATH}/ush/master_metplus.py \ + ${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${METPLUS_CONF}/GridStat_${VAR}_mean.conf fi diff --git a/scripts/exregional_run_ensgridvx_prob.sh b/scripts/exregional_run_ensgridvx_prob.sh index 2ed9bdfea..7345c1728 100755 --- a/scripts/exregional_run_ensgridvx_prob.sh +++ b/scripts/exregional_run_ensgridvx_prob.sh @@ -155,11 +155,11 @@ export LOG_SUFFIX # if [ ${VAR} == "APCP" ]; then export acc="${ACCUM}h" - ${METPLUS_PATH}/ush/master_metplus.py \ + ${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${METPLUS_CONF}/GridStat_${VAR}${acc}_prob.conf else - ${METPLUS_PATH}/ush/master_metplus.py \ + ${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${METPLUS_CONF}/GridStat_${VAR}_prob.conf fi diff --git a/scripts/exregional_run_enspointvx.sh b/scripts/exregional_run_enspointvx.sh index 571711bf5..544f0f006 100755 --- a/scripts/exregional_run_enspointvx.sh +++ b/scripts/exregional_run_enspointvx.sh @@ -137,11 +137,11 @@ export MODEL export NET export NUM_ENS_MEMBERS -${METPLUS_PATH}/ush/master_metplus.py \ +${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${METPLUS_CONF}/EnsembleStat_conus_sfc.conf -${METPLUS_PATH}/ush/master_metplus.py \ +${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${METPLUS_CONF}/EnsembleStat_upper_air.conf diff --git a/scripts/exregional_run_enspointvx_mean.sh b/scripts/exregional_run_enspointvx_mean.sh index 4cd6039b9..b65c9bd34 100755 --- a/scripts/exregional_run_enspointvx_mean.sh +++ b/scripts/exregional_run_enspointvx_mean.sh @@ -138,11 +138,11 @@ export MET_CONFIG export MODEL export NET -${METPLUS_PATH}/ush/master_metplus.py \ +${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${METPLUS_CONF}/PointStat_conus_sfc_mean.conf -${METPLUS_PATH}/ush/master_metplus.py \ +${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${METPLUS_CONF}/PointStat_upper_air_mean.conf # diff --git a/scripts/exregional_run_enspointvx_prob.sh b/scripts/exregional_run_enspointvx_prob.sh index 50d4e606f..b315faac3 100755 --- a/scripts/exregional_run_enspointvx_prob.sh +++ b/scripts/exregional_run_enspointvx_prob.sh @@ -138,11 +138,11 @@ export MET_CONFIG export MODEL export NET -${METPLUS_PATH}/ush/master_metplus.py \ +${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${METPLUS_CONF}/PointStat_conus_sfc_prob.conf -${METPLUS_PATH}/ush/master_metplus.py \ +${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${METPLUS_CONF}/PointStat_upper_air_prob.conf # diff --git a/scripts/exregional_run_fcst.sh b/scripts/exregional_run_fcst.sh index 10e1d6240..d7c3d48f6 100755 --- a/scripts/exregional_run_fcst.sh +++ b/scripts/exregional_run_fcst.sh @@ -99,34 +99,12 @@ export OMP_STACKSIZE=${OMP_STACKSIZE_RUN_FCST} # #----------------------------------------------------------------------- # -case "$MACHINE" in - - "WCOSS_CRAY") - ulimit -s unlimited - ulimit -a - - if [ ${PE_MEMBER01} -gt 24 ];then - RUN_CMD_FCST="aprun -b -j1 -n${PE_MEMBER01} -N24 -d1 -cc depth" - else - RUN_CMD_FCST="aprun -b -j1 -n${PE_MEMBER01} -N${PE_MEMBER01} -d1 -cc depth" - fi - ;; - - "WCOSS_DELL_P3") - ulimit -s unlimited - ulimit -a - RUN_CMD_FCST="mpirun -l -np ${PE_MEMBER01}" - ;; - - *) - source ${MACHINE_FILE} - ;; - -esac +source $USHDIR/source_machine_file.sh +eval ${PRE_TASK_CMDS} nprocs=$(( NNODES_RUN_FCST*PPN_RUN_FCST )) -if [ -z ${RUN_CMD_FCST:-} ] ; then +if [ -z "${RUN_CMD_FCST:-}" ] ; then print_err_msg_exit "\ Run command was not set in machine file. \ Please set RUN_CMD_FCST for your platform" diff --git a/scripts/exregional_run_gridstatvx.sh b/scripts/exregional_run_gridstatvx.sh index e979cbe55..63288c44e 100755 --- a/scripts/exregional_run_gridstatvx.sh +++ b/scripts/exregional_run_gridstatvx.sh @@ -160,13 +160,13 @@ export NET # if [ ${VAR} == "APCP" ]; then export acc="${ACCUM}h" # for stats output prefix in GridStatConfig - ${METPLUS_PATH}/ush/master_metplus.py \ + ${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ - -c ${METPLUS_CONF}/${VAR}_${acc}.conf + -c ${METPLUS_CONF}/GridStat_${VAR}${acc}.conf else - ${METPLUS_PATH}/ush/master_metplus.py \ + ${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ - -c ${METPLUS_CONF}/${VAR}.conf + -c ${METPLUS_CONF}/GridStat_${VAR}.conf fi # diff --git a/scripts/exregional_run_pointstatvx.sh b/scripts/exregional_run_pointstatvx.sh index 705e086a8..458b87749 100755 --- a/scripts/exregional_run_pointstatvx.sh +++ b/scripts/exregional_run_pointstatvx.sh @@ -141,11 +141,11 @@ export MET_CONFIG export MODEL export NET -${METPLUS_PATH}/ush/master_metplus.py \ +${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${METPLUS_CONF}/PointStat_conus_sfc.conf -${METPLUS_PATH}/ush/master_metplus.py \ +${METPLUS_PATH}/ush/run_metplus.py \ -c ${METPLUS_CONF}/common.conf \ -c ${METPLUS_CONF}/PointStat_upper_air.conf diff --git a/scripts/exregional_run_post.sh b/scripts/exregional_run_post.sh index a9b07efef..c7aafd399 100755 --- a/scripts/exregional_run_post.sh +++ b/scripts/exregional_run_post.sh @@ -92,42 +92,11 @@ export OMP_STACKSIZE=${OMP_STACKSIZE_RUN_POST} # #----------------------------------------------------------------------- # -case "$MACHINE" in - - "WCOSS_CRAY") - -# Specify computational resources. - export NODES=2 - export ntasks=48 - export ptile=24 - export threads=1 - export MP_LABELIO=yes - export OMP_NUM_THREADS=$threads - - RUN_CMD_POST="aprun -j 1 -n${ntasks} -N${ptile} -d${threads} -cc depth" - ;; - - "WCOSS_DELL_P3") - -# Specify computational resources. - export NODES=2 - export ntasks=48 - export ptile=24 - export threads=1 - export MP_LABELIO=yes - export OMP_NUM_THREADS=$threads - - RUN_CMD_POST="mpirun" - ;; - - *) - source ${MACHINE_FILE} - ;; - -esac +source $USHDIR/source_machine_file.sh +eval ${PRE_TASK_CMDS} nprocs=$(( NNODES_RUN_POST*PPN_RUN_POST )) -if [ -z ${RUN_CMD_POST:-} ] ; then +if [ -z "${RUN_CMD_POST:-}" ] ; then print_err_msg_exit "\ Run command was not set in machine file. \ Please set RUN_CMD_POST for your platform" @@ -171,6 +140,24 @@ temporary work directory (tmp_dir): fi cp_vrfy ${post_config_fp} ./postxconfig-NT.txt cp_vrfy ${UPP_DIR}/parm/params_grib2_tbl_new . +if [ ${USE_CRTM} = "TRUE" ]; then + cp_vrfy ${CRTM_DIR}/fix/EmisCoeff/IR_Water/Big_Endian/Nalli.IRwater.EmisCoeff.bin ./ + cp_vrfy ${CRTM_DIR}/fix/EmisCoeff/MW_Water/Big_Endian/FAST*.bin ./ + cp_vrfy ${CRTM_DIR}/fix/EmisCoeff/IR_Land/SEcategory/Big_Endian/NPOESS.IRland.EmisCoeff.bin ./ + cp_vrfy ${CRTM_DIR}/fix/EmisCoeff/IR_Snow/SEcategory/Big_Endian/NPOESS.IRsnow.EmisCoeff.bin ./ + cp_vrfy ${CRTM_DIR}/fix/EmisCoeff/IR_Ice/SEcategory/Big_Endian/NPOESS.IRice.EmisCoeff.bin ./ + cp_vrfy ${CRTM_DIR}/fix/AerosolCoeff/Big_Endian/AerosolCoeff.bin ./ + cp_vrfy ${CRTM_DIR}/fix/CloudCoeff/Big_Endian/CloudCoeff.bin ./ + cp_vrfy ${CRTM_DIR}/fix/SpcCoeff/Big_Endian/*.bin ./ + cp_vrfy ${CRTM_DIR}/fix/TauCoeff/ODPS/Big_Endian/*.bin ./ + print_info_msg " +==================================================================== +Copying the external CRTM fix files from CRTM_DIR to the temporary +work directory (tmp_dir): + CRTM_DIR = \"${CRTM_DIR}\" + tmp_dir = \"${tmp_dir}\" +====================================================================" +fi # #----------------------------------------------------------------------- # @@ -196,7 +183,7 @@ tmmark="tm00" # #----------------------------------------------------------------------- # -# Create a text file (itag) containing arguments to pass to the post- +# Create the namelist file (itag) containing arguments to pass to the post- # processor's executable. # #----------------------------------------------------------------------- @@ -236,7 +223,7 @@ post_dd=${post_time:6:2} post_hh=${post_time:8:2} post_mn=${post_time:10:2} # -# Create the input text file to the post-processor executable. +# Create the input namelist file to the post-processor executable. # if [ ${FCST_MODEL} = "fv3gfs_aqm" ]; then post_itag_add="aqfcmaq_on=.true.," @@ -244,12 +231,14 @@ else post_itag_add="" fi cat > itag <&1 ) - log_tail=$( tail -n ${num_tail_lines} log.launch_FV3LAM_wflow ) -# -# Record the tail from the log file into the status report file. -# - print_info_msg "$msg" >> "${expts_status_fp}" - print_info_msg "${log_tail}" >> "${expts_status_fp}" + log_tail=$( tail -n ${num_tail_lines} "${launch_wflow_log_fn}" ) # # Print the workflow status to the screen. # wflow_status=$( printf "${log_tail}" | grep "Workflow status:" ) # wflow_status="${wflow_status## }" # Not sure why this doesn't work to strip leading spaces. - wflow_status=$( printf "${wflow_status}" "%s" | sed -r 's|^[ ]*||g' ) - msg="${wflow_status}" - print_info_msg "$msg" - + wflow_status=$( printf "${wflow_status}" "%s" | sed -r 's|^[ ]*||g' ) # Remove leading spaces. + print_info_msg "${wflow_status}" print_info_msg "\ $separator " # +# Combine message above with the last num_tail_lines lines from the workflow +# launch log file and place the result in the status report file. +# + msg=$msg" +${wflow_status} + +The last ${num_tail_lines} lines of this experiment's workflow launch log file +(\"${launch_wflow_log_fn}\") are: + +${log_tail} + + +" + print_info_msg "$msg" >> "${expts_status_fp}" +# # Change location back to the experiments base directory. # cd_vrfy "${expts_basedir}" diff --git a/tests/WE2E/machine_suites/hera.txt b/tests/WE2E/machine_suites/hera.txt index 35b26e9b1..608af4192 100644 --- a/tests/WE2E/machine_suites/hera.txt +++ b/tests/WE2E/machine_suites/hera.txt @@ -1 +1,12 @@ -grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GSD_SAR +grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15p2 +grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16 +grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_RAP_suite_HRRR +grid_RRFS_CONUS_25km_ics_GSMGFS_lbcs_GSMGFS_suite_GFS_v15p2 +grid_RRFS_CONUS_25km_ics_HRRR_lbcs_HRRR_suite_HRRR +grid_RRFS_CONUS_25km_ics_HRRR_lbcs_HRRR_suite_RRFS_v1beta +grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_HRRR +grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_RRFS_v1alpha +grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_RRFS_v1beta +nco_grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15p2 +nco_grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_GFS_v15p2 +nco_grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_HRRR diff --git a/tests/WE2E/machine_suites/jet.txt b/tests/WE2E/machine_suites/jet.txt index 35b26e9b1..608af4192 100644 --- a/tests/WE2E/machine_suites/jet.txt +++ b/tests/WE2E/machine_suites/jet.txt @@ -1 +1,12 @@ -grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GSD_SAR +grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15p2 +grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16 +grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_RAP_suite_HRRR +grid_RRFS_CONUS_25km_ics_GSMGFS_lbcs_GSMGFS_suite_GFS_v15p2 +grid_RRFS_CONUS_25km_ics_HRRR_lbcs_HRRR_suite_HRRR +grid_RRFS_CONUS_25km_ics_HRRR_lbcs_HRRR_suite_RRFS_v1beta +grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_HRRR +grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_RRFS_v1alpha +grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_RRFS_v1beta +nco_grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15p2 +nco_grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_GFS_v15p2 +nco_grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_HRRR diff --git a/tests/WE2E/run_WE2E_tests.sh b/tests/WE2E/run_WE2E_tests.sh index f15fb9efa..bfab3128a 100755 --- a/tests/WE2E/run_WE2E_tests.sh +++ b/tests/WE2E/run_WE2E_tests.sh @@ -682,7 +682,7 @@ Please correct and rerun." # Set the machine-specific configuration settings by sourcing the # machine file in the ush directory - source $MACHINE_FILE + source $ushdir/source_machine_file.sh expt_config_str=${expt_config_str}"\ # diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_GSD_HRRR_AK_50km_ics_RAP_lbcs_RAP_suite_GSD_SAR.sh b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_GSD_HRRR_AK_50km_ics_RAP_lbcs_RAP_suite_GSD_SAR.sh deleted file mode 100644 index 18ad96810..000000000 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_GSD_HRRR_AK_50km_ics_RAP_lbcs_RAP_suite_GSD_SAR.sh +++ /dev/null @@ -1,50 +0,0 @@ -# -# TEST PURPOSE/DESCRIPTION: -# ------------------------ -# -# This test is to ensure that the workflow running in community mode -# completes successfully on the GSD_HRRR_AK_50km grid using the GSD_SAR -# physics suite with ICs and LBCs derived from the RAP. -# -# Note that this test specifies computational resource parameters for -# the MAKE_ICS_TN, MAKE_LBCS_TN, and RUN_POST_TN rocoto tasks in order -# allow the chgres_cube and UPP codes to complete these tasks successfully -# on this very coarse grid. -# - -RUN_ENVIR="community" -PREEXISTING_DIR_METHOD="rename" - -PREDEF_GRID_NAME="GSD_HRRR_AK_50km" -CCPP_PHYS_SUITE="FV3_GSD_SAR" - -EXTRN_MDL_NAME_ICS="RAP" -EXTRN_MDL_NAME_LBCS="RAP" -USE_USER_STAGED_EXTRN_FILES="TRUE" - -DATE_FIRST_CYCL="20190520" -DATE_LAST_CYCL="20190520" -CYCL_HRS=( "00" ) - -FCST_LEN_HRS="6" -LBC_SPEC_INTVL_HRS="6" -# -# For a coarse grid such as this, the number of MPI processes (= NNODES*PPN) -# can't be too large for the make_ics and make_lbcs tasks (both of which -# use chgres_cube); otherwise, the chgres_cube code will fail. -# -NNODES_MAKE_ICS="1" -PPN_MAKE_ICS="12" -WTIME_MAKE_ICS="00:30:00" - -NNODES_MAKE_LBCS="1" -PPN_MAKE_LBCS="12" -WTIME_MAKE_LBCS="00:30:00" -# -# For a coarse grid such as this, the number of MPI processes (= NNODES*PPN) -# can't be too large for the run_post metatask (which uses the UPP code); -# otherwise, the UPP code will fail. -# -NNODES_RUN_POST="1" -PPN_RUN_POST="12" -WTIME_RUN_POST="00:30:00" diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_AK_13km_ics_RAP_lbcs_RAP_suite_GSD_SAR.sh b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_AK_13km_ics_RAP_lbcs_RAP_suite_GSD_SAR.sh deleted file mode 100644 index 44642ece9..000000000 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_AK_13km_ics_RAP_lbcs_RAP_suite_GSD_SAR.sh +++ /dev/null @@ -1,25 +0,0 @@ -# -# TEST PURPOSE/DESCRIPTION: -# ------------------------ -# -# This test is to ensure that the workflow running in community mode -# completes successfully on the RRFS_AK_13km grid using the GSD_SAR -# physics suite with ICs and LBCs derived from the RAP. -# - -RUN_ENVIR="community" -PREEXISTING_DIR_METHOD="rename" - -PREDEF_GRID_NAME="RRFS_AK_13km" -CCPP_PHYS_SUITE="FV3_GSD_SAR" - -EXTRN_MDL_NAME_ICS="RAP" -EXTRN_MDL_NAME_LBCS="RAP" -USE_USER_STAGED_EXTRN_FILES="TRUE" - -DATE_FIRST_CYCL="20200801" -DATE_LAST_CYCL="20200801" -CYCL_HRS=( "00" ) - -FCST_LEN_HRS="6" -LBC_SPEC_INTVL_HRS="6" diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_AK_3km_ics_RAP_lbcs_RAP_suite_GSD_SAR.sh b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_AK_3km_ics_RAP_lbcs_RAP_suite_GSD_SAR.sh deleted file mode 100644 index e2da03a3b..000000000 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_AK_3km_ics_RAP_lbcs_RAP_suite_GSD_SAR.sh +++ /dev/null @@ -1,25 +0,0 @@ -# -# TEST PURPOSE/DESCRIPTION: -# ------------------------ -# -# This test is to ensure that the workflow running in community mode -# completes successfully on the RRFS_AK_3km grid using the GSD_SAR -# physics suite with ICs and LBCs derived from the RAP. -# - -RUN_ENVIR="community" -PREEXISTING_DIR_METHOD="rename" - -PREDEF_GRID_NAME="RRFS_AK_3km" -CCPP_PHYS_SUITE="FV3_GSD_SAR" - -EXTRN_MDL_NAME_ICS="RAP" -EXTRN_MDL_NAME_LBCS="RAP" -USE_USER_STAGED_EXTRN_FILES="TRUE" - -DATE_FIRST_CYCL="20200801" -DATE_LAST_CYCL="20200801" -CYCL_HRS=( "00" ) - -FCST_LEN_HRS="6" -LBC_SPEC_INTVL_HRS="6" diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_13km_ics_HRRR_lbcs_RAP_suite_GSD_SAR.sh b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_13km_ics_HRRR_lbcs_RAP_suite_GSD_SAR.sh deleted file mode 100644 index 18a62f18d..000000000 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_13km_ics_HRRR_lbcs_RAP_suite_GSD_SAR.sh +++ /dev/null @@ -1,26 +0,0 @@ -# -# TEST PURPOSE/DESCRIPTION: -# ------------------------ -# -# This test is to ensure that the workflow running in community mode -# completes successfully on the RRFS_CONUS_13km grid using the GSD_SAR -# physics suite with ICs derived from the HRRR and LBCs derived from the -# RAP. -# - -RUN_ENVIR="community" -PREEXISTING_DIR_METHOD="rename" - -PREDEF_GRID_NAME="RRFS_CONUS_13km" -CCPP_PHYS_SUITE="FV3_GSD_SAR" - -EXTRN_MDL_NAME_ICS="HRRR" -EXTRN_MDL_NAME_LBCS="RAP" -USE_USER_STAGED_EXTRN_FILES="TRUE" - -DATE_FIRST_CYCL="20200810" -DATE_LAST_CYCL="20200810" -CYCL_HRS=( "00" ) - -FCST_LEN_HRS="6" -LBC_SPEC_INTVL_HRS="3" diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GSD_SAR.sh b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GSD_SAR.sh deleted file mode 100644 index a313c8d1d..000000000 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GSD_SAR.sh +++ /dev/null @@ -1,25 +0,0 @@ -# -# TEST PURPOSE/DESCRIPTION: -# ------------------------ -# -# This test is to ensure that the workflow running in community mode -# completes successfully on the RRFS_CONUS_25km grid using the GSD_SAR -# physics suite with ICs and LBCs derived from the FV3GFS. -# - -RUN_ENVIR="community" -PREEXISTING_DIR_METHOD="rename" - -PREDEF_GRID_NAME="RRFS_CONUS_25km" -CCPP_PHYS_SUITE="FV3_GSD_SAR" - -EXTRN_MDL_NAME_ICS="FV3GFS" -EXTRN_MDL_NAME_LBCS="FV3GFS" -USE_USER_STAGED_EXTRN_FILES="TRUE" - -DATE_FIRST_CYCL="20190701" -DATE_LAST_CYCL="20190701" -CYCL_HRS=( "00" ) - -FCST_LEN_HRS="6" -LBC_SPEC_INTVL_HRS="3" diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_GSMGFS_lbcs_GSMGFS_suite_CPT_v0.sh b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_GSMGFS_lbcs_GSMGFS_suite_CPT_v0.sh deleted file mode 100644 index aae81d6eb..000000000 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_GSMGFS_lbcs_GSMGFS_suite_CPT_v0.sh +++ /dev/null @@ -1,25 +0,0 @@ -# -# TEST PURPOSE/DESCRIPTION: -# ------------------------ -# -# This test is to ensure that the workflow running in community mode -# completes successfully on the RRFS_CONUS_25km grid using the CPT_v0 -# physics suite with ICs and LBCs derived from the GSMGFS. -# - -RUN_ENVIR="community" -PREEXISTING_DIR_METHOD="rename" - -PREDEF_GRID_NAME="RRFS_CONUS_25km" -CCPP_PHYS_SUITE="FV3_CPT_v0" - -EXTRN_MDL_NAME_ICS="GSMGFS" -EXTRN_MDL_NAME_LBCS="GSMGFS" -USE_USER_STAGED_EXTRN_FILES="TRUE" - -DATE_FIRST_CYCL="20190520" -DATE_LAST_CYCL="20190520" -CYCL_HRS=( "00" ) - -FCST_LEN_HRS="6" -LBC_SPEC_INTVL_HRS="6" diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_HRRR_lbcs_HRRR_suite_GSD_SAR.sh b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_HRRR_lbcs_HRRR_suite_GSD_SAR.sh deleted file mode 100644 index cc239add0..000000000 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_HRRR_lbcs_HRRR_suite_GSD_SAR.sh +++ /dev/null @@ -1,25 +0,0 @@ -# -# TEST PURPOSE/DESCRIPTION: -# ------------------------ -# -# This test is to ensure that the workflow running in community mode -# completes successfully on the RRFS_CONUS_25km grid using the GSD_SAR -# physics suite with ICs and LBCs derived from the HRRR. -# - -RUN_ENVIR="community" -PREEXISTING_DIR_METHOD="rename" - -PREDEF_GRID_NAME="RRFS_CONUS_25km" -CCPP_PHYS_SUITE="FV3_GSD_SAR" - -EXTRN_MDL_NAME_ICS="HRRR" -EXTRN_MDL_NAME_LBCS="HRRR" -USE_USER_STAGED_EXTRN_FILES="TRUE" - -DATE_FIRST_CYCL="20200810" -DATE_LAST_CYCL="20200810" -CYCL_HRS=( "00" ) - -FCST_LEN_HRS="24" -LBC_SPEC_INTVL_HRS="3" diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_GSD_SAR.sh b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_GSD_SAR.sh deleted file mode 100644 index 1bd56f000..000000000 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_GSD_SAR.sh +++ /dev/null @@ -1,26 +0,0 @@ -# -# TEST PURPOSE/DESCRIPTION: -# ------------------------ -# -# This test is to ensure that the workflow running in community mode -# completes successfully on the RRFS_CONUS_25km grid using the GSD_SAR -# physics suite with ICs derived from the HRRR and LBCs derived from the -# RAP. -# - -RUN_ENVIR="community" -PREEXISTING_DIR_METHOD="rename" - -PREDEF_GRID_NAME="RRFS_CONUS_25km" -CCPP_PHYS_SUITE="FV3_GSD_SAR" - -EXTRN_MDL_NAME_ICS="HRRR" -EXTRN_MDL_NAME_LBCS="RAP" -USE_USER_STAGED_EXTRN_FILES="TRUE" - -DATE_FIRST_CYCL="20200810" -DATE_LAST_CYCL="20200810" -CYCL_HRS=( "00" ) - -FCST_LEN_HRS="24" -LBC_SPEC_INTVL_HRS="3" diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_GSD_v0.sh b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_GSD_v0.sh deleted file mode 100644 index 21ab6e7ab..000000000 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_HRRR_lbcs_RAP_suite_GSD_v0.sh +++ /dev/null @@ -1,26 +0,0 @@ -# -# TEST PURPOSE/DESCRIPTION: -# ------------------------ -# -# This test is to ensure that the workflow running in community mode -# completes successfully on the RRFS_CONUS_25km grid using the GSD_v0 -# physics suite with ICs derived from the HRRR and LBCs derived from the -# RAP. -# - -RUN_ENVIR="community" -PREEXISTING_DIR_METHOD="rename" - -PREDEF_GRID_NAME="RRFS_CONUS_25km" -CCPP_PHYS_SUITE="FV3_GSD_v0" - -EXTRN_MDL_NAME_ICS="HRRR" -EXTRN_MDL_NAME_LBCS="RAP" -USE_USER_STAGED_EXTRN_FILES="TRUE" - -DATE_FIRST_CYCL="20190520" -DATE_LAST_CYCL="20190520" -CYCL_HRS=( "00" ) - -FCST_LEN_HRS="6" -LBC_SPEC_INTVL_HRS="6" diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_NAM_lbcs_NAM_suite_GSD_SAR.sh b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_NAM_lbcs_NAM_suite_GSD_SAR.sh deleted file mode 100644 index 8a7c1c102..000000000 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_25km_ics_NAM_lbcs_NAM_suite_GSD_SAR.sh +++ /dev/null @@ -1,25 +0,0 @@ -# -# TEST PURPOSE/DESCRIPTION: -# ------------------------ -# -# This test is to ensure that the workflow running in community mode -# completes successfully on the RRFS_CONUS_25km grid using the GSD_SAR -# physics suite with ICs and LBCs derived from the NAM. -# - -RUN_ENVIR="community" -PREEXISTING_DIR_METHOD="rename" - -PREDEF_GRID_NAME="RRFS_CONUS_25km" -CCPP_PHYS_SUITE="FV3_GSD_SAR" - -EXTRN_MDL_NAME_ICS="NAM" -EXTRN_MDL_NAME_LBCS="NAM" -USE_USER_STAGED_EXTRN_FILES="TRUE" - -DATE_FIRST_CYCL="20150602" -DATE_LAST_CYCL="20150602" -CYCL_HRS=( "12" ) - -FCST_LEN_HRS="24" -LBC_SPEC_INTVL_HRS="3" diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_3km_ics_HRRR_lbcs_RAP_suite_GSD_SAR.sh b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_3km_ics_HRRR_lbcs_RAP_suite_GSD_SAR.sh deleted file mode 100644 index 35301c466..000000000 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_CONUS_3km_ics_HRRR_lbcs_RAP_suite_GSD_SAR.sh +++ /dev/null @@ -1,26 +0,0 @@ -# -# TEST PURPOSE/DESCRIPTION: -# ------------------------ -# -# This test is to ensure that the workflow running in community mode -# completes successfully on the RRFS_CONUS_3km grid using the GSD_SAR -# physics suite with ICs derived from the HRRR and LBCs derived from the -# RAP. -# - -RUN_ENVIR="community" -PREEXISTING_DIR_METHOD="rename" - -PREDEF_GRID_NAME="RRFS_CONUS_3km" -CCPP_PHYS_SUITE="FV3_GSD_SAR" - -EXTRN_MDL_NAME_ICS="HRRR" -EXTRN_MDL_NAME_LBCS="RAP" -USE_USER_STAGED_EXTRN_FILES="TRUE" - -DATE_FIRST_CYCL="20200810" -DATE_LAST_CYCL="20200810" -CYCL_HRS=( "00" ) - -FCST_LEN_HRS="6" -LBC_SPEC_INTVL_HRS="3" diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_NA_13km_ics_FV3GFS_lbcs_FV3GFS_suite_GSD_v0.sh b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_NA_13km_ics_FV3GFS_lbcs_FV3GFS_suite_GSD_v0.sh deleted file mode 100644 index 763945bf8..000000000 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_NA_13km_ics_FV3GFS_lbcs_FV3GFS_suite_GSD_v0.sh +++ /dev/null @@ -1,25 +0,0 @@ -# -# TEST PURPOSE/DESCRIPTION: -# ------------------------ -# -# This test is to ensure that the workflow running in community mode -# completes successfully on the RRFS_NA_13km grid using the GSD_v0 -# physics suite with ICs and LBCs derived from the FV3GFS. -# - -RUN_ENVIR="community" -PREEXISTING_DIR_METHOD="rename" - -PREDEF_GRID_NAME="RRFS_NA_13km" -CCPP_PHYS_SUITE="FV3_GSD_v0" - -EXTRN_MDL_NAME_ICS="FV3GFS" -EXTRN_MDL_NAME_LBCS="FV3GFS" -USE_USER_STAGED_EXTRN_FILES="TRUE" - -DATE_FIRST_CYCL="20190701" -DATE_LAST_CYCL="20190701" -CYCL_HRS=( "00" ) - -FCST_LEN_HRS="6" -LBC_SPEC_INTVL_HRS="3" diff --git a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_SUBCONUS_3km_ics_HRRR_lbcs_RAP_suite_GSD_SAR.sh b/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_SUBCONUS_3km_ics_HRRR_lbcs_RAP_suite_GSD_SAR.sh deleted file mode 100644 index 4c2ff9f19..000000000 --- a/tests/WE2E/test_configs/grids_extrn_mdls_suites_community/config.grid_RRFS_SUBCONUS_3km_ics_HRRR_lbcs_RAP_suite_GSD_SAR.sh +++ /dev/null @@ -1,26 +0,0 @@ -# -# TEST PURPOSE/DESCRIPTION: -# ------------------------ -# -# This test is to ensure that the workflow running in community mode -# completes successfully on the RRFS_SUBCONUS_3km grid using the GSD_SAR -# physics suite with ICs derived from the HRRR and LBCs derived from the -# RAP. -# - -RUN_ENVIR="community" -PREEXISTING_DIR_METHOD="rename" - -PREDEF_GRID_NAME="RRFS_SUBCONUS_3km" -CCPP_PHYS_SUITE="FV3_GSD_SAR" - -EXTRN_MDL_NAME_ICS="HRRR" -EXTRN_MDL_NAME_LBCS="RAP" -USE_USER_STAGED_EXTRN_FILES="TRUE" - -DATE_FIRST_CYCL="20200801" -DATE_LAST_CYCL="20200801" -CYCL_HRS=( "00" ) - -FCST_LEN_HRS="6" -LBC_SPEC_INTVL_HRS="3" diff --git a/tests/WE2E/test_configs/wflow_features/config.get_from_HPSS_ics_HRRR_lbcs_RAP.sh b/tests/WE2E/test_configs/wflow_features/config.get_from_HPSS_ics_HRRR_lbcs_RAP.sh index 84e93130f..d535bc5d5 100644 --- a/tests/WE2E/test_configs/wflow_features/config.get_from_HPSS_ics_HRRR_lbcs_RAP.sh +++ b/tests/WE2E/test_configs/wflow_features/config.get_from_HPSS_ics_HRRR_lbcs_RAP.sh @@ -13,7 +13,7 @@ RUN_ENVIR="community" PREEXISTING_DIR_METHOD="rename" PREDEF_GRID_NAME="RRFS_CONUS_25km" -CCPP_PHYS_SUITE="FV3_GSD_SAR" +CCPP_PHYS_SUITE="FV3_HRRR" EXTRN_MDL_NAME_ICS="HRRR" EXTRN_MDL_NAME_LBCS="RAP" diff --git a/tests/WE2E/test_configs/wflow_features/config.get_from_HPSS_ics_RAP_lbcs_RAP.sh b/tests/WE2E/test_configs/wflow_features/config.get_from_HPSS_ics_RAP_lbcs_RAP.sh index 62fafdf86..bed8ceb8c 100644 --- a/tests/WE2E/test_configs/wflow_features/config.get_from_HPSS_ics_RAP_lbcs_RAP.sh +++ b/tests/WE2E/test_configs/wflow_features/config.get_from_HPSS_ics_RAP_lbcs_RAP.sh @@ -11,7 +11,7 @@ RUN_ENVIR="community" PREEXISTING_DIR_METHOD="rename" PREDEF_GRID_NAME="RRFS_CONUS_25km" -CCPP_PHYS_SUITE="FV3_GSD_SAR" +CCPP_PHYS_SUITE="FV3_HRRR" EXTRN_MDL_NAME_ICS="RAP" EXTRN_MDL_NAME_LBCS="RAP" diff --git a/tests/WE2E/test_configs/wflow_features/config.specify_DT_ATMOS_LAYOUT_XY_BLOCKSIZE.sh b/tests/WE2E/test_configs/wflow_features/config.specify_DT_ATMOS_LAYOUT_XY_BLOCKSIZE.sh index 68fa31537..18699dd51 100644 --- a/tests/WE2E/test_configs/wflow_features/config.specify_DT_ATMOS_LAYOUT_XY_BLOCKSIZE.sh +++ b/tests/WE2E/test_configs/wflow_features/config.specify_DT_ATMOS_LAYOUT_XY_BLOCKSIZE.sh @@ -11,7 +11,7 @@ RUN_ENVIR="community" PREEXISTING_DIR_METHOD="rename" PREDEF_GRID_NAME="RRFS_CONUS_25km" -CCPP_PHYS_SUITE="FV3_GSD_SAR" +CCPP_PHYS_SUITE="FV3_HRRR" EXTRN_MDL_NAME_ICS="HRRR" EXTRN_MDL_NAME_LBCS="RAP" diff --git a/ush/config_defaults.sh b/ush/config_defaults.sh index 6de917fa2..4c7b4d7e8 100644 --- a/ush/config_defaults.sh +++ b/ush/config_defaults.sh @@ -507,54 +507,54 @@ WRITE_DOPOST="FALSE" # # CCPA_OBS_DIR: # User-specified location of top-level directory where CCPA hourly -# precipitation files used by METplus are located. This parameter needs -# to be set for both user-provided observations and for observations -# that are retrieved from the NOAA HPSS (if the user has access) via -# the get_obs_ccpa_tn task (activated in workflow by setting  +# precipitation files used by METplus are located. This parameter needs +# to be set for both user-provided observations and for observations +# that are retrieved from the NOAA HPSS (if the user has access) via +# the get_obs_ccpa_tn task (activated in workflow by setting # RUN_TASK_GET_OBS_CCPA="TRUE"). In the case of pulling observations # directly from NOAA HPSS, the data retrieved will be placed in this # directory. Please note, this path must be defind as # /full-path-to-obs/ccpa/proc. METplus is configured to verify 01-, -# 03-, 06-, and 24-h accumulated precipitation using hourly CCPA files.  +# 03-, 06-, and 24-h accumulated precipitation using hourly CCPA files. # METplus configuration files require the use of predetermined directory # structure and file names. Therefore, if the CCPA files are user # provided, they need to follow the anticipated naming structure: -# {YYYYMMDD}/ccpa.t{HH}z.01h.hrap.conus.gb2, where YYYY is the 4-digit -# valid year, MM the 2-digit valid month, DD the 2-digit valid day of -# the month, and HH the 2-digit valid hour of the day. In addition, a +# {YYYYMMDD}/ccpa.t{HH}z.01h.hrap.conus.gb2, where YYYY is the 4-digit +# valid year, MM the 2-digit valid month, DD the 2-digit valid day of +# the month, and HH the 2-digit valid hour of the day. In addition, a # caveat is noted for using hourly CCPA data. There is a problem with # the valid time in the metadata for files valid from 19 - 00 UTC (or -# files  under the '00' directory). The script to pull the CCPA data +# files under the '00' directory). The script to pull the CCPA data # from the NOAA HPSS has an example of how to account for this as well -# as organizing the data into a more intuitive format: +# as organizing the data into a more intuitive format: # regional_workflow/scripts/exregional_get_ccpa_files.sh. When a fix # is provided, it will be accounted for in the # exregional_get_ccpa_files.sh script. # # MRMS_OBS_DIR: -# User-specified location of top-level directory where MRMS composite -# reflectivity files used by METplus are located. This parameter needs -# to be set for both user-provided observations and for observations -# that are retrieved from the NOAA HPSS (if the user has access) via the -# get_obs_mrms_tn task (activated in workflow by setting  -# RUN_TASK_GET_OBS_MRMS="TRUE"). In the case of pulling observations +# User-specified location of top-level directory where MRMS composite +# reflectivity files used by METplus are located. This parameter needs +# to be set for both user-provided observations and for observations +# that are retrieved from the NOAA HPSS (if the user has access) via the +# get_obs_mrms_tn task (activated in workflow by setting +# RUN_TASK_GET_OBS_MRMS="TRUE"). In the case of pulling observations # directly from NOAA HPSS, the data retrieved will be placed in this # directory. Please note, this path must be defind as # /full-path-to-obs/mrms/proc. METplus configuration files require the -# use of predetermined directory structure and file names. Therefore, if -# the MRMS files are user provided, they need to follow the anticipated +# use of predetermined directory structure and file names. Therefore, if +# the MRMS files are user provided, they need to follow the anticipated # naming structure: -# {YYYYMMDD}/MergedReflectivityQCComposite_00.50_{YYYYMMDD}-{HH}{mm}{SS}.grib2, -# where YYYY is the 4-digit valid year, MM the 2-digit valid month, DD -# the 2-digit valid day of the month, HH the 2-digit valid hour of the +# {YYYYMMDD}/MergedReflectivityQCComposite_00.50_{YYYYMMDD}-{HH}{mm}{SS}.grib2, +# where YYYY is the 4-digit valid year, MM the 2-digit valid month, DD +# the 2-digit valid day of the month, HH the 2-digit valid hour of the # day, mm the 2-digit valid minutes of the hour, and SS is the two-digit # valid seconds of the hour. In addition, METplus is configured to look # for a MRMS composite reflectivity file for the valid time of the # forecast being verified; since MRMS composite reflectivity files do # not always exactly match the valid time, a script, within the main # script to retrieve MRMS data from the NOAA HPSS, is used to identify -# and rename the MRMS composite reflectivity file to match the valid -# time of the forecast. The script to pull the MRMS data from the NOAA +# and rename the MRMS composite reflectivity file to match the valid +# time of the forecast. The script to pull the MRMS data from the NOAA # HPSS has an example of the expected file naming structure: # regional_workflow/scripts/exregional_get_mrms_files.sh. This script # calls the script used to identify the MRMS file closest to the valid @@ -562,23 +562,23 @@ WRITE_DOPOST="FALSE" # # NDAS_OBS_DIR: # User-specified location of top-level directory where NDAS prepbufr -# files used by METplus are located. This parameter needs to be set for -# both user-provided observations and for observations that are -# retrieved from the NOAA HPSS (if the user has access) via the +# files used by METplus are located. This parameter needs to be set for +# both user-provided observations and for observations that are +# retrieved from the NOAA HPSS (if the user has access) via the # get_obs_ndas_tn task (activated in workflow by setting  # RUN_TASK_GET_OBS_NDAS="TRUE"). In the case of pulling observations # directly from NOAA HPSS, the data retrieved will be placed in this # directory. Please note, this path must be defind as # /full-path-to-obs/ndas/proc. METplus is configured to verify # near-surface variables hourly and upper-air variables at times valid -# at 00 and 12 UTC with NDAS prepbufr files. METplus configuration files -# require the use of predetermined file names. Therefore, if the NDAS -# files are user provided, they need to follow the anticipated naming -# structure: prepbufr.ndas.{YYYYMMDDHH}, where YYYY is the 4-digit valid -# year, MM the 2-digit valid month, DD the 2-digit valid day of the -# month, and HH the 2-digit valid hour of the day. The script to pull +# at 00 and 12 UTC with NDAS prepbufr files. METplus configuration files +# require the use of predetermined file names. Therefore, if the NDAS +# files are user provided, they need to follow the anticipated naming +# structure: prepbufr.ndas.{YYYYMMDDHH}, where YYYY is the 4-digit valid +# year, MM the 2-digit valid month, DD the 2-digit valid day of the +# month, and HH the 2-digit valid hour of the day. The script to pull # the NDAS data from the NOAA HPSS has an example of how to rename the -# NDAS data into a more intuitive format with the valid time listed in +# NDAS data into a more intuitive format with the valid time listed in # the file name: regional_workflow/scripts/exregional_get_ndas_files.sh # #----------------------------------------------------------------------- @@ -1505,6 +1505,7 @@ FIXgsm_FILES_TO_COPY_TO_FIXam=( \ "global_zorclim.1x1.grb" \ "global_sfc_emissivity_idx.txt" \ "global_solarconstant_noaa_an.txt" \ +"global_albedo4.1x1.grb" \ "geo_em.d01.lat-lon.2.5m.HGT_M.nc" \ "HGT.Beljaars_filtered.lat-lon.30s_res.nc" \ "replace_with_FIXgsm_ozone_prodloss_filename" \ @@ -1555,6 +1556,7 @@ CYCLEDIR_LINKS_TO_FIXam_FILES_MAPPING=( \ "co2historicaldata_glob.txt | global_co2historicaldata_glob.txt" \ "co2monthlycyc.txt | co2monthlycyc.txt" \ "global_h2oprdlos.f77 | global_h2o_pltc.f77" \ +"global_albedo4.1x1.grb | global_albedo4.1x1.grb" \ "global_zorclim.1x1.grb | global_zorclim.1x1.grb" \ "sfc_emissivity_idx.txt | global_sfc_emissivity_idx.txt" \ "solarconstant_noaa_an.txt | global_solarconstant_noaa_an.txt" \ @@ -1732,6 +1734,28 @@ CUSTOM_POST_CONFIG_FP="" # #----------------------------------------------------------------------- # +# Set parameters associated with outputting satellite fields in the UPP +# grib2 files using the Community Radiative Transfer Model (CRTM). +# +# USE_CRTM: +# Flag that defines whether external CRTM coefficient files have been +# staged by the user in order to output synthetic statellite products +# available within the UPP. If this is set to "TRUE", then the workflow +# will check for these files in the directory CRTM_DIR. Otherwise, it is +# assumed that no satellite fields are being requested in the UPP +# configuration. +# +# CRTM_DIR: +# This is the path to the top CRTM fix file directory. This is only used +# if USE_CRTM is set to "TRUE". +# +#----------------------------------------------------------------------- +# +USE_CRTM="FALSE" +CRTM_DIR="" +# +#----------------------------------------------------------------------- +# # Set parameters associated with running ensembles. Definitions: # # DO_ENSEMBLE: @@ -1786,27 +1810,62 @@ USE_ZMTNBLCK="FALSE" # #----------------------------------------------------------------------- # -# Set default SPP stochastic physics options. -# Each SPP option is an array, applicable (in order) to the scheme/parameter -# listed in SPP_VAR_LIST. Enter each value of the array in config.sh as -# shown below without commas or single quotes (e.g., SPP_VAR_LIST= -# ( "pbl" "lsm" "mp" ). Both commas and single quotes will be added by -# Jinja when creating the namelist. +# Set default SPP stochastic physics options. Each SPP option is an array, +# applicable (in order) to the scheme/parameter listed in SPP_VAR_LIST. +# Enter each value of the array in config.sh as shown below without commas +# or single quotes (e.g., SPP_VAR_LIST=( "pbl" "sfc" "mp" "rad" "gwd" ). +# Both commas and single quotes will be added by Jinja when creating the +# namelist. # # Note that SPP is currently only available for specific physics schemes # used in the RAP/HRRR physics suite. Users need to be aware of which SDF # is chosen when turning this option on. # +# Patterns evolve and are applied at each time step. +# #----------------------------------------------------------------------- # -DO_SPP="FALSE" -SPP_VAR_LIST=( "pbl" ) -SPP_MAG_LIST=( "0.2" ) #Variable "spp_prt_list" in input.nml -SPP_LSCALE=( "150000.0" ) -SPP_TSCALE=( "21600.0" ) #Variable "spp_tau" in input.nml -SPP_SIGTOP1=( "0.1" ) -SPP_SIGTOP2=( "0.025" ) -SPP_STDDEV_CUTOFF=( "1.5" ) +DO_SPP="false" +SPP_VAR_LIST=( "pbl" "sfc" "mp" "rad" "gwd" ) +SPP_MAG_LIST=( "0.2" "0.2" "0.75" "0.2" "0.2" ) #Variable "spp_prt_list" in input.nml +SPP_LSCALE=( "150000.0" "150000.0" "150000.0" "150000.0" "150000.0" ) +SPP_TSCALE=( "21600.0" "21600.0" "21600.0" "21600.0" "21600.0" ) #Variable "spp_tau" in input.nml +SPP_SIGTOP1=( "0.1" "0.1" "0.1" "0.1" "0.1") +SPP_SIGTOP2=( "0.025" "0.025" "0.025" "0.025" "0.025" ) +SPP_STDDEV_CUTOFF=( "1.5" "1.5" "2.5" "1.5" "1.5" ) +ISEED_SPP=( "4" "4" "4" "4" "4" ) +# +#----------------------------------------------------------------------- +# +# Turn on SPP in Noah or RUC LSM (support for Noah MP is in progress). +# Please be aware of the SDF that you choose if you wish to turn on LSM +# SPP. +# +# SPP in LSM schemes is handled in the &nam_sfcperts namelist block +# instead of in &nam_sppperts, where all other SPP is implemented. +# +# The default perturbation frequency is determined by the fhcyc namelist +# entry. Since that parameter is set to zero in the SRW App, use +# LSM_SPP_EACH_STEP to perturb every time step. +# +# Perturbations to soil moisture content (SMC) are only applied at the +# first time step. +# +# LSM perturbations include SMC - soil moisture content (volume fraction), +# VGF - vegetation fraction, ALB - albedo, SAL - salinity, +# EMI - emissivity, ZOL - surface roughness (cm), and STC - soil temperature. +# +# Only five perturbations at a time can be applied currently, but all seven +# are shown below. In addition, only one unique iseed value is allowed +# at the moment, and is used for each pattern. +# +DO_LSM_SPP="false" #If true, sets lndp_type=2 +LSM_SPP_TSCALE=( "21600" "21600" "21600" "21600" "21600" "21600" "21600" ) +LSM_SPP_LSCALE=( "150000" "150000" "150000" "150000" "150000" "150000" "150000" ) +ISEED_LSM_SPP=( "9" ) +LSM_SPP_VAR_LIST=( "smc" "vgf" "alb" "sal" "emi" "zol" "stc" ) +LSM_SPP_MAG_LIST=( "0.2" "0.001" "0.001" "0.001" "0.001" "0.001" "0.2" ) +LSM_SPP_EACH_STEP="true" #Sets lndp_each_step=.true. # #----------------------------------------------------------------------- # @@ -1914,3 +1973,6 @@ OMP_STACKSIZE_RUN_FCST="1024m" KMP_AFFINITY_RUN_POST="scatter" OMP_NUM_THREADS_RUN_POST="1" OMP_STACKSIZE_RUN_POST="1024m" +# +#----------------------------------------------------------------------- +# diff --git a/ush/constants.sh b/ush/constants.sh index fb19e61f8..0d68019ae 100644 --- a/ush/constants.sh +++ b/ush/constants.sh @@ -15,3 +15,11 @@ degs_per_radian=$( bc -l <<< "360.0/(2.0*$pi_geom)" ) # Radius of the Earth in meters. radius_Earth="6371200.0" +# +#----------------------------------------------------------------------- +# +# Other. +# +#----------------------------------------------------------------------- +# +valid_vals_BOOLEAN=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no") diff --git a/ush/generate_FV3LAM_wflow.sh b/ush/generate_FV3LAM_wflow.sh index 4776c3d45..7c840a955 100755 --- a/ush/generate_FV3LAM_wflow.sh +++ b/ush/generate_FV3LAM_wflow.sh @@ -59,6 +59,7 @@ ushdir="${scrfunc_dir}" #----------------------------------------------------------------------- # . $ushdir/source_util_funcs.sh +. $ushdir/get_crontab_contents.sh . $ushdir/set_FV3nml_sfc_climo_filenames.sh # #----------------------------------------------------------------------- @@ -500,37 +501,45 @@ if [ "${USE_CRON_TO_RELAUNCH}" = "TRUE" ]; then print_info_msg "$VERBOSE" " Copying contents of user cron table to backup file: crontab_backup_fp = \"${crontab_backup_fp}\"" - if [ "$MACHINE" = "WCOSS_DELL_P3" ]; then - cp_vrfy "/u/$USER/cron/mycrontab" "${crontab_backup_fp}" - else - crontab -l > ${crontab_backup_fp} - fi -# -# Below, we use "grep" to determine whether the crontab line that the -# variable CRONTAB_LINE contains is already present in the cron table. -# For that purpose, we need to escape the asterisks in the string in -# CRONTAB_LINE with backslashes. Do this next. -# + + called_from_cron=${called_from_cron:-"FALSE"} + get_crontab_contents called_from_cron=${called_from_cron} \ + outvarname_crontab_cmd="crontab_cmd" \ + outvarname_crontab_contents="crontab_contents" + # To create the backup crontab file and add a new job to the user's + # existing cron table, use the "printf" command, not "echo", to print + # out variables. This is because "echo" will add a newline at the end + # of its output even if its input argument is a null string, resulting + # in extranous blank lines in the backup crontab file and/or the cron + # table itself. Using "printf" prevents the appearance of these blank + # lines. + printf "%s" "${crontab_contents}" > "${crontab_backup_fp}" + # + # Below, we use "grep" to determine whether the crontab line that the + # variable CRONTAB_LINE contains is already present in the cron table. + # For that purpose, we need to escape the asterisks in the string in + # CRONTAB_LINE with backslashes. Do this next. + # crontab_line_esc_astr=$( printf "%s" "${CRONTAB_LINE}" | \ $SED -r -e "s%[*]%\\\\*%g" ) -# -# In the grep command below, the "^" at the beginning of the string be- -# ing passed to grep is a start-of-line anchor while the "$" at the end -# of the string is an end-of-line anchor. Thus, in order for grep to -# find a match on any given line of the output of "crontab -l", that -# line must contain exactly the string in the variable crontab_line_- -# esc_astr without any leading or trailing characters. This is to eli- -# minate situations in which a line in the output of "crontab -l" con- -# tains the string in crontab_line_esc_astr but is precedeeded, for ex- -# ample, by the comment character "#" (in which case cron ignores that -# line) and/or is followed by further commands that are not part of the -# string in crontab_line_esc_astr (in which case it does something more -# than the command portion of the string in crontab_line_esc_astr does). -# - if [ "$MACHINE" = "WCOSS_DELL_P3" ];then + # + # In the grep command below, the "^" at the beginning of the string + # passed to grep is a start-of-line anchor, and the "$" at the end is + # an end-of-line anchor. Thus, in order for grep to find a match on + # any given line of the cron table's contents, that line must contain + # exactly the string in the variable crontab_line_esc_astr without any + # leading or trailing characters. This is to eliminate situations in + # which a line in the cron table contains the string in crontab_line_esc_astr + # but is precedeeded, for example, by the comment character "#" (in which + # case cron ignores that line) and/or is followed by further commands + # that are not part of the string in crontab_line_esc_astr (in which + # case it does something more than the command portion of the string in + # crontab_line_esc_astr does). + # + if [ "$MACHINE" = "WCOSS_DELL_P3" ]; then grep_output=$( grep "^${crontab_line_esc_astr}$" "/u/$USER/cron/mycrontab" ) else - grep_output=$( crontab -l | grep "^${crontab_line_esc_astr}$" ) + grep_output=$( printf "%s" "${crontab_contents}" | grep "^${crontab_line_esc_astr}$" ) fi exit_status=$? @@ -548,10 +557,17 @@ Adding the following line to the user's cron table in order to automatically resubmit SRW workflow: CRONTAB_LINE = \"${CRONTAB_LINE}\"" - if [ "$MACHINE" = "WCOSS_DELL_P3" ];then - echo "${CRONTAB_LINE}" >> "/u/$USER/cron/mycrontab" + if [ "$MACHINE" = "WCOSS_DELL_P3" ]; then + printf "%s\n" "${CRONTAB_LINE}" >> "/u/$USER/cron/mycrontab" else - ( crontab -l; echo "${CRONTAB_LINE}" ) | crontab - + # Add a newline to the end of crontab_contents only if it is not empty. + # This is needed so that when CRONTAB_LINE is printed out, it appears on + # a separate line. + crontab_contents=${crontab_contents:+"${crontab_contents}"$'\n'} + # When printing CRONTAB_LINE, add a newline at the end. This is necessary + # on certain machines (e.g. Cheyenne) while on others, it doesn't make + # a difference. + ( printf "%s" "${crontab_contents}"; printf "%s\n" "${CRONTAB_LINE}" ) | ${crontab_cmd} fi fi @@ -768,6 +784,12 @@ settings="\ 'do_shum': ${DO_SHUM}, 'do_sppt': ${DO_SPPT}, 'do_skeb': ${DO_SKEB}, + 'do_spp': ${DO_SPP}, + 'n_var_spp': ${N_VAR_SPP}, + 'n_var_lndp': ${N_VAR_LNDP}, + 'lndp_type': ${LNDP_TYPE}, + 'lndp_each_step': ${LSM_SPP_EACH_STEP}, + 'fhcyc': ${FHCYC_LSM_SPP_OR_NOT}, } 'nam_stochy': { 'shum': ${SHUM_MAG}, @@ -839,7 +861,42 @@ done # settings="$settings }" - +# +# Add the relevant SPP namelist variables to "settings" when running with +# SPP turned on. Otherwise only include an empty "nam_sppperts" stanza. +# +settings="$settings +'nam_sppperts': {" +if [ "${DO_SPP}" = "TRUE" ]; then + settings="$settings + 'iseed_spp': [ $( printf "%s, " "${ISEED_SPP[@]}" ) ], + 'spp_lscale': [ $( printf "%s, " "${SPP_LSCALE[@]}" ) ], + 'spp_prt_list': [ $( printf "%s, " "${SPP_MAG_LIST[@]}" ) ], + 'spp_sigtop1': [ $( printf "%s, " "${SPP_SIGTOP1[@]}" ) ], + 'spp_sigtop2': [ $( printf "%s, " "${SPP_SIGTOP2[@]}" ) ], + 'spp_stddev_cutoff': [ $( printf "%s, " "${SPP_STDDEV_CUTOFF[@]}" ) ], + 'spp_tau': [ $( printf "%s, " "${SPP_TSCALE[@]}" ) ], + 'spp_var_list': [ $( printf "%s, " "${SPP_VAR_LIST[@]}" ) ]," +fi +settings="$settings + }" +# +# Add the relevant LSM SPP namelist variables to "settings" when running with +# LSM SPP turned on. +# +settings="$settings +'nam_sfcperts': {" +if [ "${DO_LSM_SPP}" = "TRUE" ]; then + settings="$settings + 'lndp_type': ${LNDP_TYPE}, + 'lndp_tau': [ $( printf "%s, " "${LSM_SPP_TSCALE[@]}" ) ], + 'lndp_lscale': [ $( printf "%s, " "${LSM_SPP_LSCALE[@]}" ) ], + 'iseed_lndp': [ $( printf "%s, " "${ISEED_LSM_SPP[@]}" ) ], + 'lndp_var_list': [ $( printf "%s, " "${LSM_SPP_VAR_LIST[@]}" ) ], + 'lndp_prt_list': [ $( printf "%s, " "${LSM_SPP_MAG_LIST[@]}" ) ]," +fi +settings="$settings + }" print_info_msg $VERBOSE " The variable \"settings\" specifying values of the weather model's namelist variables has been set as follows: @@ -912,8 +969,8 @@ cp_vrfy $USHDIR/${EXPT_CONFIG_FN} $EXPTDIR # # For convenience, print out the commands that need to be issued on the # command line in order to launch the workflow and to check its status. -# Also, print out the command that should be placed in the user's cron- -# tab in order for the workflow to be continually resubmitted. +# Also, print out the line that should be placed in the user's cron table +# in order for the workflow to be continually resubmitted. # #----------------------------------------------------------------------- # @@ -978,14 +1035,14 @@ Note that: task(s) to the queue. 2) In order for the output of the rocotostat command to be up-to-date, - the rocotorun command must be issued immediately before the rocoto- - stat command. + the rocotorun command must be issued immediately before issuing the + rocotostat command. For automatic resubmission of the workflow (say every 3 minutes), the following line can be added to the user's crontab (use \"crontab -e\" to edit the cron table): -*/3 * * * * cd $EXPTDIR && ./launch_FV3LAM_wflow.sh +*/3 * * * * cd $EXPTDIR && ./launch_FV3LAM_wflow.sh called_from_cron=\"TRUE\" " fi diff --git a/ush/get_crontab_contents.sh b/ush/get_crontab_contents.sh new file mode 100644 index 000000000..9aae44115 --- /dev/null +++ b/ush/get_crontab_contents.sh @@ -0,0 +1,83 @@ +# +#----------------------------------------------------------------------- +# +# This file defines a function that returns the contents of the user's +# cron table as well as the command to use to manipulate the cron table +# (i.e. the "crontab" command, but on some platforms the version or +# location of this may change depending on other circumstances, e.g. on +# Cheyenne, this depends on whether a script that wants to call "crontab" +# is itself being called from a cron job). Arguments are as follows: +# +# called_from_cron: +# Boolean flag that specifies whether this function (and the scripts or +# functions that are calling it) are called as part of a cron job. Must +# be set to "TRUE" or "FALSE". +# +# outvarname_crontab_cmd: +# Name of the output variable that will contain the command to issue for +# the system "crontab" command. +# +# outvarname_crontab_contents: +# Name of the output variable that will contain the contents of the +# user's cron table. +# +#----------------------------------------------------------------------- +# +function get_crontab_contents() { + + { save_shell_opts; set -u +x; } > /dev/null 2>&1 + + local valid_args=( \ + "called_from_cron" \ + "outvarname_crontab_cmd" \ + "outvarname_crontab_contents" \ + ) + process_args valid_args "$@" + print_input_args "valid_args" + + local __crontab_cmd__ \ + __crontab_contents__ + # + # Make sure called_from_cron is set to a valid value. + # + source $USHDIR/constants.sh + check_var_valid_value "called_from_cron" "valid_vals_BOOLEAN" + called_from_cron=$( boolify ${called_from_cron} ) + + if [ "$MACHINE" = "WCOSS_DELL_P3" ]; then + __crontab_cmd__="" + __crontab_contents__=$( cat "/u/$USER/cron/mycrontab" ) + else + __crontab_cmd__="crontab" + # + # On Cheyenne, simply typing "crontab" will launch the crontab command + # at "/glade/u/apps/ch/opt/usr/bin/crontab". This is a containerized + # version of crontab that will work if called from scripts that are + # themselves being called as cron jobs. In that case, we must instead + # call the system version of crontab at /usr/bin/crontab. + # + if [ "$MACHINE" = "CHEYENNE" ]; then + if [ -n "${called_from_cron}" ] && [ "${called_from_cron}" = "TRUE" ]; then + __crontab_cmd__="/usr/bin/crontab" + fi + fi + __crontab_contents__=$( ${__crontab_cmd__} -l ) + fi + # + # On Cheyenne, the output of the "crontab -l" command contains a 3-line + # header (comments) at the top that is not actually part of the user's + # cron table. This needs to be removed to avoid adding an unnecessary + # copy of this header to the user's cron table. + # + if [ "$MACHINE" = "CHEYENNE" ]; then + __crontab_contents__=$( printf "%s" "${__crontab_contents__}" | tail -n +4 ) + fi + # + # Set output variables. + # + printf -v ${outvarname_crontab_cmd} "%s" "${__crontab_cmd__}" + printf -v ${outvarname_crontab_contents} "%s" "${__crontab_contents__}" + + { restore_shell_opts; } > /dev/null 2>&1 + +} diff --git a/ush/init_env.sh b/ush/init_env.sh new file mode 100644 index 000000000..d88376632 --- /dev/null +++ b/ush/init_env.sh @@ -0,0 +1,51 @@ +# +#----------------------------------------------------------------------- +# +# This file defines a function that sources scripts (usually system +# scripts) to initialize various commands in the environment, e.g. the +# "module" command. The full paths to these scripts are specified in +# the machine files in the array ENV_INIT_SCRIPTS_FPS. +# +# env_init_scripts_fps: +# Full paths to the system scripts to source. +# +#----------------------------------------------------------------------- +# +function init_env() { + + { save_shell_opts; set -u +x; } > /dev/null 2>&1 + + local valid_args=( \ + "env_init_scripts_fps" \ + ) + process_args valid_args "$@" + print_input_args "valid_args" + + local num_scripts \ + n \ + fp + + num_scripts="${#env_init_scripts_fps[@]}" + for (( n=0; n<${num_scripts}; n++ )); do + fp="${env_init_scripts_fps[$n]}" + print_info_msg "$DEBUG" "\ +Attempting to source script: + fp = \"$fp\"" + if [ -f "$fp" ]; then + # The scripts being sourced here may have undefined variables, but since + # they are system scripts outside of the SRW App, they cannot be changed. + # Thus, we allow for undefined variables by temporarily using "set +u". + set +u + source "$fp" && print_info_msg "$DEBUG" "Succeeded." + set -u + else + print_err_msg_exit "\ +The script to source does not exist or is not a regular file: + fp = \"$fp\"" + fi + + done + + { restore_shell_opts; } > /dev/null 2>&1 + +} diff --git a/ush/launch_FV3LAM_wflow.sh b/ush/launch_FV3LAM_wflow.sh index e35dc80b0..183df2c8f 100755 --- a/ush/launch_FV3LAM_wflow.sh +++ b/ush/launch_FV3LAM_wflow.sh @@ -1,4 +1,4 @@ -#!/bin/bash -l +#!/bin/bash # #----------------------------------------------------------------------- @@ -31,9 +31,6 @@ else fi scrfunc_fn=$( basename "${scrfunc_fp}" ) scrfunc_dir=$( dirname "${scrfunc_fp}" ) - -ushdir="${scrfunc_dir}" -. $ushdir/source_util_funcs.sh # #----------------------------------------------------------------------- # @@ -93,12 +90,48 @@ fi # #----------------------------------------------------------------------- # -# Source the variable definitions file for the experiment. +# Source necessary files. # #----------------------------------------------------------------------- # . $exptdir/var_defns.sh -. ${USHDIR}/source_util_funcs.sh +. $USHDIR/source_machine_file.sh +. $USHDIR/constants.sh +. $USHDIR/source_util_funcs.sh +. $USHDIR/init_env.sh +. $USHDIR/get_crontab_contents.sh +# +#----------------------------------------------------------------------- +# +# Declare arguments. +# +#----------------------------------------------------------------------- +# +valid_args=( \ + "called_from_cron" \ + ) +process_args valid_args "$@" +print_input_args "valid_args" +# +#----------------------------------------------------------------------- +# +# Make sure called_from_cron is set to a valid value. +# +#----------------------------------------------------------------------- +# +called_from_cron=${called_from_cron:-"FALSE"} +check_var_valid_value "called_from_cron" "valid_vals_BOOLEAN" +called_from_cron=$(boolify ${called_from_cron}) +# +#----------------------------------------------------------------------- +# +# Initialize the environment, e.g. by making the "module" command as well +# as others available. +# +#----------------------------------------------------------------------- +# +env_init_scripts_fps_str="( "$(printf "\"%s\" " "${ENV_INIT_SCRIPTS_FPS[@]}")")" +init_env env_init_scripts_fps="${env_init_scripts_fps_str}" # #----------------------------------------------------------------------- # @@ -117,7 +150,6 @@ expt_name="${EXPT_SUBDIR}" #----------------------------------------------------------------------- # env_fp="${SR_WX_APP_TOP_DIR}/env/${WFLOW_ENV_FN}" -module purge source "${env_fp}" || print_err_msg_exit "\ Sourcing platform-specific environment file (env_fp) for the workflow task failed: @@ -155,23 +187,22 @@ cd_vrfy "$exptdir" # # Issue the rocotorun command to (re)launch the next task in the workflow. # Then check for error messages in the output of rocotorun. If any are -# found, it means the end-to-end run of the workflow failed. In this -# case, we remove the crontab entry that launches the workflow, and we -# append an appropriate failure message at the end of the launch log -# file. +# found, it means the end-to-end run of the workflow failed, so set the +# status of the workflow to "FAILURE". # #----------------------------------------------------------------------- # tmp_fn="rocotorun_output.txt" rocotorun_cmd="rocotorun -w \"${WFLOW_XML_FN}\" -d \"${rocoto_database_fn}\" -v 10" -eval ${rocotorun_cmd} > ${tmp_fn} 2>&1 +eval ${rocotorun_cmd} > ${tmp_fn} 2>&1 || \ + print_err_msg_exit "\ +Call to \"rocotorun\" failed with return code $?." rocotorun_output=$( cat "${tmp_fn}" ) rm "${tmp_fn}" error_msg="sbatch: error: Batch job submission failed:" -# Job violates accounting/QOS policy (job submit limit, user's size and/or time limits)" while read -r line; do - grep_output=$( printf "$line" | grep "${error_msg}" ) + grep_output=$( printf "%s" "$line" | grep "${error_msg}" ) if [ $? -eq 0 ]; then wflow_status="FAILURE" break @@ -182,19 +213,20 @@ done <<< "${rocotorun_output}" # # Issue the rocotostat command to obtain a table specifying the status # of each task. Then check for dead tasks in the output of rocotostat. -# If any are found, it means the end-to-end run of the workflow failed. -# In this case, we remove the crontab entry that launches the workflow, -# and we append an appropriate failure message at the end of the launch -# log file. +# If any are found, it means the end-to-end run of the workflow failed, +# so set the status of the workflow (wflow_status) to "FAILURE". # #----------------------------------------------------------------------- # rocotostat_cmd="rocotostat -w \"${WFLOW_XML_FN}\" -d \"${rocoto_database_fn}\" -v 10" +rocotostat_output=$( eval ${rocotostat_cmd} 2>&1 || \ + print_err_msg_exit "\ +Call to \"rocotostat\" failed with return code $?." + ) -rocotostat_output=$( eval ${rocotostat_cmd} 2>&1 ) error_msg="DEAD" while read -r line; do - grep_output=$( printf "$line" | grep "${error_msg}" ) + grep_output=$( printf "%s" "$line" | grep "${error_msg}" ) if [ $? -eq 0 ]; then wflow_status="FAILURE" break @@ -208,7 +240,7 @@ done <<< "${rocotostat_output}" # #----------------------------------------------------------------------- # -printf " +printf "%s" " ======================================================================== Start of output from script \"${scrfunc_fn}\". @@ -241,8 +273,8 @@ ${rocotostat_output} # the status of each cycle in the workflow. The output of this command # has the following format: # -# CYCLE STATE ACTIVATED DEACTIVATED -# 201905200000 Active Nov 07 2019 00:23:30 - +# CYCLE STATE ACTIVATED DEACTIVATED +# 201905200000 Active Nov 07 2019 00:23:30 - # ... # # Thus, the first row is a header line containing the column titles, and @@ -313,7 +345,7 @@ fi # #----------------------------------------------------------------------- # -printf " +printf "%s" " Summary of workflow status: ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -329,9 +361,9 @@ End of output from script \"${scrfunc_fn}\". # #----------------------------------------------------------------------- # -# If the workflow status is now either "SUCCESS" or "FAILURE", indicate -# this by appending an appropriate workflow completion message to the -# end of the launch log file. +# If the workflow status (wflow_status) has been set to either "SUCCESS" +# or "FAILURE", indicate this by appending an appropriate workflow +# completion message to the end of the launch log file. # #----------------------------------------------------------------------- # @@ -383,29 +415,41 @@ script for this experiment: crontab_line_esc_astr=$( printf "%s" "${CRONTAB_LINE}" | \ $SED -r -e "s%[*]%\\\\*%g" ) # +# Get the full contents of the user's cron table. +# + get_crontab_contents called_from_cron=${called_from_cron} \ + outvarname_crontab_cmd="crontab_cmd" \ + outvarname_crontab_contents="crontab_contents" +# +# Remove the line in the contents of the cron table corresponding to the +# current forecast experiment (if that line is part of the contents). +# Then record the results back into the user's cron table. +# # In the string passed to the grep command below, we use the line start # and line end anchors ("^" and "$", respectively) to ensure that we # only find lines in the crontab that contain exactly the string in # crontab_line_esc_astr without any leading or trailing characters. # - if [ "$MACHINE" = "WCOSS_DELL_P3" ];then - grep -v "^${crontab_line_esc_astr}$" "/u/$USER/cron/mycrontab" \ - > tmpfile && mv_vrfy tmpfile "/u/$USER/cron/mycrontab" + crontab_contents=$( echo "${crontab_contents}" | grep -v "^${crontab_line_esc_astr}$" ) + + if [ "$MACHINE" = "WCOSS_DELL_P3" ]; then + echo "${crontab_contents}" > "/u/$USER/cron/mycrontab" else - ( crontab -l | grep -v "^${crontab_line_esc_astr}$" ) | crontab - + echo "${crontab_contents}" | ${crontab_cmd} fi + fi # # Print the workflow completion message to the launch log file. # - printf "$msg" >> ${WFLOW_LAUNCH_LOG_FN} 2>&1 + printf "%s" "$msg" >> ${WFLOW_LAUNCH_LOG_FN} 2>&1 # # If the stdout from this script is being sent to the screen (e.g. it is # not being redirected to a file), then also print out the workflow # completion message to the screen. # if [ -t 1 ]; then - printf "$msg" + printf "%s" "$msg" fi fi diff --git a/ush/load_modules_run_task.sh b/ush/load_modules_run_task.sh index 28b0f5647..56c005faa 100755 --- a/ush/load_modules_run_task.sh +++ b/ush/load_modules_run_task.sh @@ -3,12 +3,14 @@ # #----------------------------------------------------------------------- # -# Source the variable definitions file and the bash utility functions. +# Source necessary files. # #----------------------------------------------------------------------- # . ${GLOBAL_VAR_DEFNS_FP} +. $USHDIR/source_machine_file.sh . $USHDIR/source_util_funcs.sh +. $USHDIR/init_env.sh # #----------------------------------------------------------------------- # @@ -65,56 +67,13 @@ fi # #----------------------------------------------------------------------- # -# Source the script that initializes the Lmod (Lua-based module) system/ -# software for handling modules. This script defines the module() and -# other functions. These are needed so we can perform the "module use -# ..." and "module load ..." calls later below that are used to load the -# appropriate module file for the specified task. +# Initialize the environment, e.g. by making available the "module" +# command as well as others. # #----------------------------------------------------------------------- # -print_info_msg "$VERBOSE" " -Initializing the shell function \"module()\" (and others) in order to be -able to use \"module load ...\" to load necessary modules ..." - -case "$MACHINE" in -# - "WCOSS_CRAY") - . /opt/modules/default/init/sh - ;; -# - "WCOSS_DELL_P3") - . /usrx/local/prod/lmod/lmod/init/sh - ;; -# - "HERA") - . /apps/lmod/lmod/init/sh - ;; -# - "ORION") - . /apps/lmod/lmod/init/sh - ;; -# - "JET") - . /apps/lmod/lmod/init/sh - ;; -# - "CHEYENNE") - . /glade/u/apps/ch/opt/lmod/8.1.7/lmod/8.1.7/init/sh - ;; -# - *) - if [[ -n ${LMOD_PATH:-""} && -f ${LMOD_PATH:-""} ]] ; then - . ${LMOD_PATH} - else - print_err_msg_exit "\ - The script to source to initialize lmod (module loads) has not yet been - specified for the current machine (MACHINE): - MACHINE = \"$MACHINE\"" - fi - ;; -# -esac +env_init_scripts_fps_str="( "$(printf "\"%s\" " "${ENV_INIT_SCRIPTS_FPS[@]}")")" +init_env env_init_scripts_fps="${env_init_scripts_fps_str}" # #----------------------------------------------------------------------- # @@ -131,7 +90,6 @@ jjob_fp="$2" # #----------------------------------------------------------------------- # - machine=$(echo_lowercase $MACHINE) env_fp="${SR_WX_APP_TOP_DIR}/env/${BUILD_ENV_FN}" module use "${SR_WX_APP_TOP_DIR}/env" diff --git a/ush/machine/cheyenne.sh b/ush/machine/cheyenne.sh old mode 100755 new mode 100644 index a707901db..6cf61061a --- a/ush/machine/cheyenne.sh +++ b/ush/machine/cheyenne.sh @@ -1,27 +1,20 @@ #!/bin/bash -set -x - function file_location() { # Return the default location of external model files on disk local external_file_fmt external_model location - external_model=${1} external_file_fmt=${2} + location="" case ${external_model} in "FV3GFS") location='/glade/p/ral/jntp/UFS_CAM/COMGFS/gfs.${yyyymmdd}/${hh}' ;; - "*") - print_info_msg"\ - External model \'${external_model}\' does not have a default - location on Cheyenne. Please set a user-defined file location." - ;; esac echo ${location:-} @@ -33,10 +26,16 @@ EXTRN_MDL_SYSBASEDIR_ICS=${EXTRN_MDL_SYSBASEDIR_ICS:-$(file_location \ ${FV3GFS_FILE_FMT_ICS})} EXTRN_MDL_SYSBASEDIR_LBCS=${EXTRN_MDL_SYSBASEDIR_LBCS:-$(file_location \ ${EXTRN_MDL_NAME_LBCS} \ - ${FV3GFS_FILE_FMT_ICS})} + ${FV3GFS_FILE_FMT_LBCS})} + +# System scripts to source to initialize various commands within workflow +# scripts (e.g. "module"). +if [ -z ${ENV_INIT_SCRIPTS_FPS:-""} ]; then + ENV_INIT_SCRIPTS_FPS=( "/etc/profile" ) +fi -# System Installations -MODULE_INIT_PATH=${MODULE_INIT_PATH:-/glade/u/apps/ch/opt/lmod/8.1.7/lmod/8.1.7/init/sh} +# Commands to run at the start of each workflow task. +PRE_TASK_CMDS='{ ulimit -s unlimited; ulimit -a; }' # Architecture information WORKFLOW_MANAGER="rocoto" @@ -54,23 +53,21 @@ TOPO_DIR=${TOPO_DIR:-"/glade/p/ral/jntp/UFS_CAM/fix/fix_orog"} SFC_CLIMO_INPUT_DIR=${SFC_CLIMO_INPUT_DIR:-"/glade/p/ral/jntp/UFS_CAM/fix/climo_fields_netcdf"} FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"/needs/to/be/specified"} +# Run commands for executables RUN_CMD_SERIAL="time" RUN_CMD_UTILS='mpirun -np $nprocs' RUN_CMD_FCST='mpirun -np ${PE_MEMBER01}' RUN_CMD_POST='mpirun -np $nprocs' -# MET Installation Locations -MET_INSTALL_DIR="/glade/p/ral/jntp/MET/MET_releases/10.0.0" -METPLUS_PATH="/glade/p/ral/jntp/MET/METplus/METplus-4.0.0" -CCPA_OBS_DIR="/glade/p/ral/jntp/UFS_SRW_app/develop/obs_data/ccpa/proc" -MRMS_OBS_DIR="/glade/p/ral/jntp/UFS_SRW_app/develop/obs_data/mrms/proc" -NDAS_OBS_DIR="/glade/p/ral/jntp/UFS_SRW_app/develop/obs_data/ndas/proc" -MET_BIN_EXEC="bin" +# MET/METplus-Related Paths +MET_INSTALL_DIR=${MET_INSTALL_DIR:-"/glade/p/ral/jntp/MET/MET_releases/10.0.0"} +METPLUS_PATH=${METPLUS_PATH:-"/glade/p/ral/jntp/MET/METplus/METplus-4.0.0"} +CCPA_OBS_DIR=${CCPA_OBS_DIR:-"/glade/p/ral/jntp/UFS_SRW_app/develop/obs_data/ccpa/proc"} +MRMS_OBS_DIR=${MRMS_OBS_DIR:-"/glade/p/ral/jntp/UFS_SRW_app/develop/obs_data/mrms/proc"} +NDAS_OBS_DIR=${NDAS_OBS_DIR:-"/glade/p/ral/jntp/UFS_SRW_app/develop/obs_data/ndas/proc"} +MET_BIN_EXEC=${MET_BIN_EXEC:-"bin"} # Test Data Locations -TEST_PREGEN_BASEDIR=/glade/p/ral/jntp/UFS_CAM/FV3LAM_pregen -TEST_COMINgfs=/glade/scratch/ketefian/NCO_dirs/COMGFS -TEST_EXTRN_MDL_SOURCE_BASEDIR=/glade/p/ral/jntp/UFS_SRW_app/staged_extrn_mdl_files - -ulimit -s unlimited -ulimit -a +TEST_PREGEN_BASEDIR="/glade/p/ral/jntp/UFS_SRW_app/FV3LAM_pregen" +TEST_COMINgfs="/glade/p/ral/jntp/UFS_SRW_app/COMGFS" +TEST_EXTRN_MDL_SOURCE_BASEDIR="/glade/p/ral/jntp/UFS_SRW_app/staged_extrn_mdl_files" diff --git a/ush/machine/hera.sh b/ush/machine/hera.sh old mode 100755 new mode 100644 index 864a51c84..bb0f77313 --- a/ush/machine/hera.sh +++ b/ush/machine/hera.sh @@ -1,7 +1,5 @@ #!/bin/bash -set -x - function file_location() { # Return the default location of external model files on disk @@ -11,31 +9,33 @@ function file_location() { external_model=${1} external_file_fmt=${2} + location="" case ${external_model} in "FV3GFS") location='/scratch1/NCEPDEV/rstprod/com/gfs/prod/gfs.${yyyymmdd}/${hh}/atmos' ;; - *) - print_info_msg"\ - External model \'${external_model}\' does not have a default - location on Hera. Will try to pull from HPSS" - ;; esac echo ${location:-} -} +} EXTRN_MDL_SYSBASEDIR_ICS=${EXTRN_MDL_SYSBASEDIR_ICS:-$(file_location \ ${EXTRN_MDL_NAME_ICS} \ ${FV3GFS_FILE_FMT_ICS})} EXTRN_MDL_SYSBASEDIR_LBCS=${EXTRN_MDL_SYSBASEDIR_LBCS:-$(file_location \ ${EXTRN_MDL_NAME_LBCS} \ - ${FV3GFS_FILE_FMT_ICS})} + ${FV3GFS_FILE_FMT_LBCS})} + +# System scripts to source to initialize various commands within workflow +# scripts (e.g. "module"). +if [ -z ${ENV_INIT_SCRIPTS_FPS:-""} ]; then + ENV_INIT_SCRIPTS_FPS=( "/etc/profile" ) +fi -# System Installations -MODULE_INIT_PATH=${MODULE_INIT_PATH:-/apps/lmod/lmod/init/sh} +# Commands to run at the start of each workflow task. +PRE_TASK_CMDS='{ ulimit -s unlimited; ulimit -a; }' # Architecture information WORKFLOW_MANAGER="rocoto" @@ -56,26 +56,23 @@ TOPO_DIR=${TOPO_DIR:-"/scratch1/NCEPDEV/global/glopara/fix/fix_orog"} SFC_CLIMO_INPUT_DIR=${SFC_CLIMO_INPUT_DIR:-"/scratch1/NCEPDEV/global/glopara/fix/fix_sfc_climo"} FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"/scratch2/BMC/det/FV3LAM_pregen"} +# Run commands for executables RUN_CMD_SERIAL="time" RUN_CMD_UTILS="srun" RUN_CMD_FCST="srun" RUN_CMD_POST="srun" -# MET Installation Locations -MET_INSTALL_DIR="/contrib/met/10.0.0" -METPLUS_PATH="/contrib/METplus/METplus-4.0.0" -CCPA_OBS_DIR="/scratch2/BMC/det/UFS_SRW_app/develop/obs_data/ccpa/proc" -MRMS_OBS_DIR="/scratch2/BMC/det/UFS_SRW_app/develop/obs_data/mrms/proc" -NDAS_OBS_DIR="/scratch2/BMC/det/UFS_SRW_app/develop/obs_data/ndas/proc" -MET_BIN_EXEC="bin" +# MET/METplus-Related Paths +MET_INSTALL_DIR=${MET_INSTALL_DIR:-"/contrib/met/10.0.0"} +METPLUS_PATH=${METPLUS_PATH:-"/contrib/METplus/METplus-4.0.0"} +CCPA_OBS_DIR=${CCPA_OBS_DIR:-"/scratch2/BMC/det/UFS_SRW_app/develop/obs_data/ccpa/proc"} +MRMS_OBS_DIR=${MRMS_OBS_DIR:-"/scratch2/BMC/det/UFS_SRW_app/develop/obs_data/mrms/proc"} +NDAS_OBS_DIR=${NDAS_OBS_DIR:-"/scratch2/BMC/det/UFS_SRW_app/develop/obs_data/ndas/proc"} +MET_BIN_EXEC=${MET_BIN_EXEC:-"bin"} # Test Data Locations -TEST_PREGEN_BASEDIR=/scratch2/BMC/det/FV3LAM_pregen -TEST_COMINgfs=/scratch2/NCEPDEV/fv3-cam/noscrub/UFS_SRW_App/COMGFS -TEST_EXTRN_MDL_SOURCE_BASEDIR=/scratch2/BMC/det/Gerard.Ketefian/UFS_CAM/staged_extrn_mdl_files -TEST_ALT_EXTRN_MDL_SYSBASEDIR_ICS=/scratch2/BMC/det/UFS_SRW_app/dummy_FV3GFS_sys_dir -TEST_ALT_EXTRN_MDL_SYSBASEDIR_LBCS=/scratch2/BMC/det/UFS_SRW_app/dummy_FV3GFS_sys_dir - - -ulimit -s unlimited -ulimit -a +TEST_PREGEN_BASEDIR="/scratch2/BMC/det/UFS_SRW_app/FV3LAM_pregen" +TEST_COMINgfs="/scratch2/NCEPDEV/fv3-cam/noscrub/UFS_SRW_App/COMGFS" +TEST_EXTRN_MDL_SOURCE_BASEDIR="/scratch2/BMC/det/UFS_SRW_app/develop/model_data" +TEST_ALT_EXTRN_MDL_SYSBASEDIR_ICS="/scratch2/BMC/det/UFS_SRW_app/dummy_FV3GFS_sys_dir" +TEST_ALT_EXTRN_MDL_SYSBASEDIR_LBCS="/scratch2/BMC/det/UFS_SRW_app/dummy_FV3GFS_sys_dir" diff --git a/ush/machine/jet.sh b/ush/machine/jet.sh old mode 100755 new mode 100644 index 9b5472ecf..dac90d549 --- a/ush/machine/jet.sh +++ b/ush/machine/jet.sh @@ -1,7 +1,5 @@ #!/bin/bash -set -x - function file_location() { # Return the default location of external model files on disk @@ -11,7 +9,9 @@ function file_location() { external_model=${1} external_file_fmt=${2} + location="" case ${external_model} in + "FV3GFS") case $external_file_fmt in "nemsio") @@ -31,26 +31,27 @@ function file_location() { "HRRR") location='/public/data/grids/hrrr/conus/wrfprs/grib2' ;; - "*") - print_info_msg"\ - External model \'${external_model}\' does not have a default - location on Jet. Will try to pull from HPSS." - ;; esac echo ${location:-} -} +} EXTRN_MDL_SYSBASEDIR_ICS=${EXTRN_MDL_SYSBASEDIR_ICS:-$(file_location \ ${EXTRN_MDL_NAME_ICS} \ ${FV3GFS_FILE_FMT_ICS})} EXTRN_MDL_SYSBASEDIR_LBCS=${EXTRN_MDL_SYSBASEDIR_LBCS:-$(file_location \ ${EXTRN_MDL_NAME_LBCS} \ - ${FV3GFS_FILE_FMT_ICS})} + ${FV3GFS_FILE_FMT_LBCS})} + +# System scripts to source to initialize various commands within workflow +# scripts (e.g. "module"). +if [ -z ${ENV_INIT_SCRIPTS_FPS:-""} ]; then + ENV_INIT_SCRIPTS_FPS=( "/etc/profile" ) +fi -# System Installations -MODULE_INIT_PATH=${MODULE_INIT_PATH:-/apps/lmod/lmod/init/sh} +# Commands to run at the start of each workflow task. +PRE_TASK_CMDS='{ ulimit -s unlimited; ulimit -a; }' # Architecture information WORKFLOW_MANAGER="rocoto" @@ -71,16 +72,13 @@ TOPO_DIR=${TOPO_DIR:-"/lfs4/HFIP/hfv3gfs/glopara/git/fv3gfs/fix/fix_orog"} SFC_CLIMO_INPUT_DIR=${SFC_CLIMO_INPUT_DIR:-"/lfs4/HFIP/hfv3gfs/glopara/git/fv3gfs/fix/fix_sfc_climo"} FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"/mnt/lfs4/BMC/wrfruc/FV3-LAM/pregen"} +# Run commands for executables RUN_CMD_SERIAL="time" RUN_CMD_UTILS="srun" RUN_CMD_FCST="srun" RUN_CMD_POST="srun" # Test Data Locations -TEST_PREGEN_BASEDIR=/mnt/lfs4/BMC/wrfruc/FV3-LAM/pregen -TEST_COMINgfs=/lfs1/HFIP/hwrf-data/hafs-input/COMGFS -TEST_EXTRN_MDL_SOURCE_BASEDIR=/mnt/lfs1/BMC/gsd-fv3/Gerard.Ketefian/UFS_CAM/staged_extrn_mdl_files - - -ulimit -s unlimited -ulimit -a +TEST_PREGEN_BASEDIR="/mnt/lfs4/BMC/wrfruc/UFS_SRW_app/FV3LAM_pregen" +TEST_COMINgfs="/mnt/lfs4/BMC/wrfruc/UFS_SRW_app/COMGFS" +TEST_EXTRN_MDL_SOURCE_BASEDIR="/mnt/lfs4/BMC/wrfruc/UFS_SRW_app/staged_extrn_mdl_files" diff --git a/ush/machine/noaacloud.sh b/ush/machine/noaacloud.sh new file mode 100755 index 000000000..fe4276661 --- /dev/null +++ b/ush/machine/noaacloud.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +set -x + +function file_location() { + + # Return the default location of external model files on disk + + local external_file_fmt external_model location + + external_model=${1} + external_file_fmt=${2} + + case ${external_model} in + + "FV3GFS") + location='/contrib/GST/model_data/FV3GFS/${yyyymmdd}${hh}' + ;; + *) + print_info_msg"\ + External model \'${external_model}\' does not have a default + location on Hera. Will try to pull from HPSS" + ;; + + esac + echo ${location:-} +} + + +EXTRN_MDL_SYSBASEDIR_ICS=${EXTRN_MDL_SYSBASEDIR_ICS:-$(file_location \ + ${EXTRN_MDL_NAME_ICS} \ + ${FV3GFS_FILE_FMT_ICS})} +EXTRN_MDL_SYSBASEDIR_LBCS=${EXTRN_MDL_SYSBASEDIR_LBCS:-$(file_location \ + ${EXTRN_MDL_NAME_LBCS} \ + ${FV3GFS_FILE_FMT_ICS})} + +# System scripts to source to initialize various commands within workflow +# scripts (e.g. "module"). +if [ -z ${ENV_INIT_SCRIPTS_FPS:-""} ]; then + ENV_INIT_SCRIPTS_FPS=( "/etc/profile" ) +fi + + +# Commands to run at the start of each workflow task. +PRE_TASK_CMDS='{ ulimit -s unlimited; ulimit -a; }' + +# Architecture information +WORKFLOW_MANAGER="rocoto" +NCORES_PER_NODE=${NCORES_PER_NODE:-36} +SCHED=${SCHED:-"slurm"} + +# UFS SRW App specific paths +FIXgsm=${FIXgsm:-"/contrib/EPIC/fix/fix_am"} +FIXaer=${FIXaer:-"/contrib/EPIC/fix/fix_aer"} +FIXlut=${FIXlut:-"/contrib/EPIC/fix/fix_lut"} +TOPO_DIR=${TOPO_DIR:-"/contrib/EPIC/fix/fix_orog"} +SFC_CLIMO_INPUT_DIR=${SFC_CLIMO_INPUT_DIR:-"/contrib/EPIC/fix/fix_sfc_climo"} +FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"/scratch2/BMC/det/FV3LAM_pregen"} + +RUN_CMD_SERIAL="time" +#Run Commands currently differ for GNU/openmpi +#RUN_CMD_UTILS='mpirun --mca btl tcp,vader,self -np $nprocs' +#RUN_CMD_FCST='mpirun --mca btl tcp,vader,self -np ${PE_MEMBER01}' +#RUN_CMD_POST='mpirun --mca btl tcp,vader,self -np $nprocs' +RUN_CMD_UTILS='srun --mpi=pmi2 -n $nprocs' +RUN_CMD_FCST='srun --mpi=pmi2 -n ${PE_MEMBER01}' +RUN_CMD_POST='srun --mpi=pmi2 -n $nprocs' + +# MET Installation Locations +# MET Plus is not yet supported on noaacloud + diff --git a/ush/machine/odin.sh b/ush/machine/odin.sh old mode 100755 new mode 100644 index a9245f521..1bceaa873 --- a/ush/machine/odin.sh +++ b/ush/machine/odin.sh @@ -1,7 +1,5 @@ #!/bin/bash -set -x - function file_location() { # Return the default location of external model files on disk @@ -11,6 +9,7 @@ function file_location() { external_model=${1} external_file_fmt=${2} + location="" case ${external_model} in "GSMGFS") @@ -19,11 +18,7 @@ function file_location() { "FV3GFS") location='/scratch/ywang/test_runs/FV3_regional/gfs/${yyyymmdd}' ;; - "*") - print_info_msg"\ - External model \'${external_model}\' does not have a default - location on Odin Please set a user-defined file location." - ;; + esac echo ${location:-} @@ -34,7 +29,16 @@ EXTRN_MDL_SYSBASEDIR_ICS=${EXTRN_MDL_SYSBASEDIR_ICS:-$(file_location \ ${FV3GFS_FILE_FMT_ICS})} EXTRN_MDL_SYSBASEDIR_LBCS=${EXTRN_MDL_SYSBASEDIR_LBCS:-$(file_location \ ${EXTRN_MDL_NAME_LBCS} \ - ${FV3GFS_FILE_FMT_ICS})} + ${FV3GFS_FILE_FMT_LBCS})} + +# System scripts to source to initialize various commands within workflow +# scripts (e.g. "module"). +if [ -z ${ENV_INIT_SCRIPTS_FPS:-""} ]; then + ENV_INIT_SCRIPTS_FPS=() +fi + +# Commands to run at the start of each workflow task. +PRE_TASK_CMDS='{ ulimit -s unlimited; ulimit -a; }' # Architecture information WORKFLOW_MANAGER="rocoto" @@ -55,10 +59,8 @@ TOPO_DIR=${TOPO_DIR:-"/scratch/ywang/fix/theia_fix/fix_orog"} SFC_CLIMO_INPUT_DIR=${SFC_CLIMO_INPUT_DIR:-"/scratch/ywang/fix/climo_fields_netcdf"} FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"/needs/to/be/specified"} +# Run commands for executables RUN_CMD_SERIAL="srun -n 1" RUN_CMD_UTILS='srun -n $nprocs' RUN_CMD_FCST='srun -n ${PE_MEMBER01}' RUN_CMD_POST="srun -n 1" - -ulimit -s unlimited -ulimit -a diff --git a/ush/machine/orion.sh b/ush/machine/orion.sh old mode 100755 new mode 100644 index 9ed722375..5f4abc0d9 --- a/ush/machine/orion.sh +++ b/ush/machine/orion.sh @@ -1,7 +1,5 @@ #!/bin/bash -set -x - function file_location() { # Return the default location of external model files on disk @@ -12,29 +10,26 @@ function file_location() { external_model=${1} external_file_fmt=${2} - case ${external_model} in - - "*") - print_info_msg"\ - External model \'${external_model}\' does not have a default - location on Orion. Please set a user-defined file location." - ;; - - esac + location="" echo ${location:-} } - EXTRN_MDL_SYSBASEDIR_ICS=${EXTRN_MDL_SYSBASEDIR_ICS:-$(file_location \ ${EXTRN_MDL_NAME_ICS} \ - ${FV3GFS_FILE_FMT_ICS})} + ${FV3GFS_FILE_FMT_ICS})} EXTRN_MDL_SYSBASEDIR_LBCS=${EXTRN_MDL_SYSBASEDIR_LBCS:-$(file_location \ ${EXTRN_MDL_NAME_LBCS} \ - ${FV3GFS_FILE_FMT_ICS})} + ${FV3GFS_FILE_FMT_LBCS})} -# System Installations -MODULE_INIT_PATH=${MODULE_INIT_PATH:-/apps/lmod/lmod/init/sh} +# System scripts to source to initialize various commands within workflow +# scripts (e.g. "module"). +if [ -z ${ENV_INIT_SCRIPTS_FPS:-""} ]; then + ENV_INIT_SCRIPTS_FPS=( "/etc/profile" ) +fi + +# Commands to run at the start of each workflow task. +PRE_TASK_CMDS='{ ulimit -s unlimited; ulimit -a; }' # Architecture information WORKFLOW_MANAGER="rocoto" @@ -55,6 +50,7 @@ TOPO_DIR=${TOPO_DIR:-"/work/noaa/global/glopara/fix/fix_orog"} SFC_CLIMO_INPUT_DIR=${SFC_CLIMO_INPUT_DIR:-"/work/noaa/global/glopara/fix/fix_sfc_climo"} FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"/needs/to/be/specified"} +# Run commands for executables RUN_CMD_SERIAL="time" RUN_CMD_UTILS="srun" RUN_CMD_FCST='srun -n ${PE_MEMBER01}' @@ -62,6 +58,3 @@ RUN_CMD_POST="srun" # Test Data Locations TEST_EXTRN_MDL_SOURCE_BASEDIR=/work/noaa/gsd-fv3-dev/gsketefia/UFS/staged_extrn_mdl_files - -ulimit -s unlimited -ulimit -a diff --git a/ush/machine/singularity.sh b/ush/machine/singularity.sh new file mode 100644 index 000000000..528e1dbd5 --- /dev/null +++ b/ush/machine/singularity.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +function file_location() { + + # Return the default location of external model files on disk + + local external_file_fmt external_model location + + external_model=${1} + external_file_fmt=${2} + + location="" + echo ${location:-} + +} + +EXTRN_MDL_SYSBASEDIR_ICS=${EXTRN_MDL_SYSBASEDIR_ICS:-$(file_location \ + ${EXTRN_MDL_NAME_ICS} \ + ${FV3GFS_FILE_FMT_ICS})} +EXTRN_MDL_SYSBASEDIR_LBCS=${EXTRN_MDL_SYSBASEDIR_LBCS:-$(file_location \ + ${EXTRN_MDL_NAME_LBCS} \ + ${FV3GFS_FILE_FMT_LBCS})} + +# System scripts to source to initialize various commands within workflow +# scripts (e.g. "module"). +if [ -z ${ENV_INIT_SCRIPTS_FPS:-""} ]; then + ENV_INIT_SCRIPTS_FPS=( "/usr/share/lmod/6.6/init/profile" ) +fi + +# Commands to run at the start of each workflow task. +PRE_TASK_CMDS='{ ulimit -s unlimited; ulimit -a; }' + +# Architecture information +WORKFLOW_MANAGER="rocoto" +NCORES_PER_NODE=${NCORES_PER_NODE:-40} +SCHED=${SCHED:-"slurm"} +PARTITION_DEFAULT=${PARTITION_DEFAULT:-""} +QUEUE_DEFAULT=${QUEUE_DEFAULT:-"batch"} +PARTITION_HPSS=${PARTITION_HPSS:-"service"} +QUEUE_HPSS=${QUEUE_HPSS:-"batch"} +PARTITION_FCST=${PARTITION_FCST:-""} +QUEUE_FCST=${QUEUE_FCST:-"batch"} + +# UFS SRW App specific paths +FIXgsm=${FIXgsm:-"/contrib/global/glopara/fix/fix_am"} +FIXaer=${FIXaer:-"/contrib/global/glopara/fix/fix_aer"} +FIXlut=${FIXlut:-"/contrib/global/glopara/fix/fix_lut"} +TOPO_DIR=${TOPO_DIR:-"/contrib/global/glopara/fix/fix_orog"} +SFC_CLIMO_INPUT_DIR=${SFC_CLIMO_INPUT_DIR:-"/contrib/global/glopara/fix/fix_sfc_climo"} +FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"/needs/to/be/specified"} + +# Run commands for executables +RUN_CMD_SERIAL="time" +RUN_CMD_UTILS='mpirun -np $nprocs --oversubscribe' +RUN_CMD_FCST='mpirun -n ${PE_MEMBER01} --oversubscribe' +RUN_CMD_POST='mpirun -np $nprocs --oversubscribe' diff --git a/ush/machine/stampede.sh b/ush/machine/stampede.sh old mode 100755 new mode 100644 index 0ba943680..41afa5fc1 --- a/ush/machine/stampede.sh +++ b/ush/machine/stampede.sh @@ -1,7 +1,5 @@ #!/bin/bash -set -x - function file_location() { # Return the default location of external model files on disk @@ -11,6 +9,7 @@ function file_location() { external_model=${1} external_file_fmt=${2} + location="" case ${external_model} in "GSMGFS") @@ -18,23 +17,27 @@ function file_location() { "FV3GFS") location='/scratch/00315/tg455890/GDAS/20190530/2019053000_mem001' ;; - "*") - print_err_msg_exit"\ - External model \'${external_model}\' does not have a default - location on Jet Please set a user-defined file location." - ;; esac echo ${location:-} -} +} -SYSBASEDIR_ICS=${EXTRN_MDL_SYSBASEDIR_ICS:-$(file_location \ +EXTRN_MDL_SYSBASEDIR_ICS=${EXTRN_MDL_SYSBASEDIR_ICS:-$(file_location \ ${EXTRN_MDL_NAME_ICS} \ ${FV3GFS_FILE_FMT_ICS})} EXTRN_MDL_SYSBASEDIR_LBCS=${EXTRN_MDL_SYSBASEDIR_LBCS:-$(file_location \ ${EXTRN_MDL_NAME_LBCS} \ - ${FV3GFS_FILE_FMT_ICS})} + ${FV3GFS_FILE_FMT_LBCS})} + +# System scripts to source to initialize various commands within workflow +# scripts (e.g. "module"). +if [ -z ${ENV_INIT_SCRIPTS_FPS:-""} ]; then + ENV_INIT_SCRIPTS_FPS=() +fi + +# Commands to run at the start of each workflow task. +PRE_TASK_CMDS='{ ulimit -s unlimited; ulimit -a; }' # Architecture information WORKFLOW_MANAGER="rocoto" @@ -55,10 +58,8 @@ TOPO_DIR=${TOPO_DIR:-"/work/00315/tg455890/stampede2/regional_fv3/fix_orog"} SFC_CLIMO_INPUT_DIR=${SFC_CLIMO_INPUT_DIR:-"/work/00315/tg455890/stampede2/regional_fv3/climo_fields_netcdf"} FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"/needs/to/be/specified"} +# Run commands for executables RUN_CMD_SERIAL="time" RUN_CMD_UTILS='ibrun -np $nprocs' RUN_CMD_FCST='ibrun -np $nprocs' RUN_CMD_POST='ibrun -np $nprocs' - -ulimit -s unlimited -ulimit -a diff --git a/ush/machine/wcoss_cray.sh b/ush/machine/wcoss_cray.sh deleted file mode 100755 index 9d2836df5..000000000 --- a/ush/machine/wcoss_cray.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash - -set -x - -function file_location() { - - # Return the default location of external model files on disk - - local external_file_fmt external_model location - - external_model=${1} - external_file_fmt=${2} - - case ${external_model} in - - "FV3GFS") - location='/gpfs/dell1/nco/ops/com/gfs/prod/gfs.${yyyymmdd}/${hh}/atmos' - ;; - "RAP") - location='/gpfs/hps/nco/ops/com/rap/prod' - ;; - "HRRR") - location='/gpfs/hps/nco/ops/com/hrrr/prod' - ;; - "NAM") - location='/gpfs/dell1/nco/ops/com/nam/prod' - ;; - "*") - print_err_msg_exit"\ - External model \'${external_model}\' does not have a default - location on Jet Please set a user-defined file location." - ;; - - esac - echo ${location:-} -} - - -EXTRN_MDL_SYSBASEDIR_ICS=${EXTRN_MDL_SYSBASEDIR_ICS:-$(file_location \ - ${EXTRN_MDL_NAME_ICS} \ - ${FV3GFS_FILE_FMT_ICS})} -EXTRN_MDL_SYSBASEDIR_LBCS=${EXTRN_MDL_SYSBASEDIR_LBCS:-$(file_location \ - ${EXTRN_MDL_NAME_LBCS} \ - ${FV3GFS_FILE_FMT_ICS})} - -# System Installations -MODULE_INIT_PATH=${MODULE_INIT_PATH:-/opt/modules/default/init/sh} - -# Architecture information -WORKFLOW_MANAGER="rocoto" -NCORES_PER_NODE=${NCORES_PER_NODE:-24} -SCHED=${SCHED:-"lsfcray"} -QUEUE_DEFAULT=${QUEUE_DEFAULT:-"dev"} -QUEUE_HPSS=${QUEUE_HPSS:-"dev_transfer"} -QUEUE_FCST=${QUEUE_FCST:-"dev"} -RELATIVE_LINK_FLAG="" - -# UFS SRW App specific paths -FIXgsm=${FIXgsm:-"/gpfs/hps3/emc/global/noscrub/emc.glopara/git/fv3gfs/fix/fix_am"} -FIXaer=${FIXaer:-"/gpfs/hps3/emc/global/noscrub/emc.glopara/git/fv3gfs/fix/fix_aer"} -FIXlut=${FIXlut:-"/gpfs/hps3/emc/global/noscrub/emc.glopara/git/fv3gfs/fix/fix_lut"} -TOPO_DIR=${TOPO_DIR:-"/gpfs/hps3/emc/global/noscrub/emc.glopara/git/fv3gfs/fix/fix_orog"} -SFC_CLIMO_INPUT_DIR=${SFC_CLIMO_INPUT_DIR:-"/gpfs/hps3/emc/global/noscrub/emc.glopara/git/fv3gfs/fix/fix_sfc_climo"} -FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"/gpfs/hps3/emc/meso/noscrub/UFS_SRW_App/FV3LAM_pregen"} - -# MET Installation Locations -MET_INSTALL_DIR="/gpfs/hps3/emc/meso/noscrub/emc.metplus/met/10.0.0" -METPLUS_PATH="/gpfs/hps3/emc/meso/noscrub/emc.metplus/METplus/METplus-4.0.0" -CCPA_OBS_DIR="/gpfs/hps3/emc/meso/noscrub/UFS_SRW_App/obs_data/ccpa/proc" -MRMS_OBS_DIR="/gpfs/hps3/emc/meso/noscrub/UFS_SRW_App/obs_data/mrms/proc" -NDAS_OBS_DIR="/gpfs/hps3/emc/meso/noscrub/UFS_SRW_App/obs_data/ndas/proc" -MET_BIN_EXEC="exec" - -# Test Data Locations -TEST_PREGEN_BASEDIR=/gpfs/hps3/emc/meso/noscrub/UFS_SRW_App/FV3LAM_pregen -TEST_COMINgfs=/gpfs/hps3/emc/meso/noscrub/UFS_SRW_App/COMGFS -TEST_EXTRN_MDL_SOURCE_BASEDIR=/gpfs/hps3/emc/meso/noscrub/UFS_SRW_App/extrn_mdl_files diff --git a/ush/machine/wcoss_dell_p3.sh b/ush/machine/wcoss_dell_p3.sh old mode 100755 new mode 100644 index 8ae99fdc1..03656438f --- a/ush/machine/wcoss_dell_p3.sh +++ b/ush/machine/wcoss_dell_p3.sh @@ -1,7 +1,5 @@ #!/bin/bash -set -x - function file_location() { # Return the default location of external model files on disk @@ -11,6 +9,7 @@ function file_location() { external_model=${1} external_file_fmt=${2} + location="" case ${external_model} in "FV3GFS") @@ -25,26 +24,27 @@ function file_location() { "NAM") location='/gpfs/dell1/nco/ops/com/nam/prod' ;; - "*") - print_err_msg_exit"\ - External model \'${external_model}\' does not have a default - location on Jet Please set a user-defined file location." - ;; esac echo ${location:-} -} +} EXTRN_MDL_SYSBASEDIR_ICS=${EXTRN_MDL_SYSBASEDIR_ICS:-$(file_location \ ${EXTRN_MDL_NAME_ICS} \ ${FV3GFS_FILE_FMT_ICS})} EXTRN_MDL_SYSBASEDIR_LBCS=${EXTRN_MDL_SYSBASEDIR_LBCS:-$(file_location \ ${EXTRN_MDL_NAME_LBCS} \ - ${FV3GFS_FILE_FMT_ICS})} + ${FV3GFS_FILE_FMT_LBCS})} + +# System scripts to source to initialize various commands within workflow +# scripts (e.g. "module"). +if [ -z ${ENV_INIT_SCRIPTS_FPS:-""} ]; then + ENV_INIT_SCRIPTS_FPS=( "/etc/profile" "/usrx/local/prod/lmod/lmod/init/sh" ) +fi -# System Installations -MODULE_INIT_PATH=${MODULE_INIT_PATH:-/opt/modules/default/init/sh} +# Commands to run at the start of each workflow task. +PRE_TASK_CMDS='{ ulimit -s unlimited; ulimit -a; }' # Architecture information WORKFLOW_MANAGER="rocoto" @@ -62,17 +62,21 @@ TOPO_DIR=${TOPO_DIR:-"/gpfs/dell2/emc/modeling/noscrub/emc.glopara/git/fv3gfs/fi SFC_CLIMO_INPUT_DIR=${SFC_CLIMO_INPUT_DIR:-"/gpfs/dell2/emc/modeling/noscrub/emc.glopara/git/fv3gfs/fix/fix_sfc_climo"} FIXLAM_NCO_BASEDIR=${FIXLAM_NCO_BASEDIR:-"/gpfs/dell2/emc/modeling/noscrub/UFS_SRW_App/FV3LAM_pregen"} -# MET Installation Locations -MET_INSTALL_DIR="/gpfs/dell2/emc/verification/noscrub/emc.metplus/met/10.0.0" -METPLUS_PATH="/gpfs/dell2/emc/verification/noscrub/emc.metplus/METplus/METplus-4.0.0" -CCPA_OBS_DIR="/gpfs/dell2/emc/modeling/noscrub/UFS_SRW_App/obs_data/ccpa/proc" -MRMS_OBS_DIR="/gpfs/dell2/emc/modeling/noscrub/UFS_SRW_App/obs_data/mrms/proc" -NDAS_OBS_DIR="/gpfs/dell2/emc/modeling/noscrub/UFS_SRW_App/obs_data/ndas/proc" -MET_BIN_EXEC="exec" +# Run commands for executables +RUN_CMD_SERIAL="mpirun" +RUN_CMD_UTILS="mpirun" +RUN_CMD_FCST='mpirun -l -np ${PE_MEMBER01}' +RUN_CMD_POST="mpirun" +# MET/METplus-Related Paths +MET_INSTALL_DIR=${MET_INSTALL_DIR:-"/gpfs/dell2/emc/verification/noscrub/emc.metplus/met/10.0.0"} +METPLUS_PATH=${METPLUS_PATH:-"/gpfs/dell2/emc/verification/noscrub/emc.metplus/METplus/METplus-4.0.0"} +CCPA_OBS_DIR=${CCPA_OBS_DIR:-"/gpfs/dell2/emc/modeling/noscrub/UFS_SRW_App/obs_data/ccpa/proc"} +MRMS_OBS_DIR=${MRMS_OBS_DIR:-"/gpfs/dell2/emc/modeling/noscrub/UFS_SRW_App/obs_data/mrms/proc"} +NDAS_OBS_DIR=${NDAS_OBS_DIR:-"/gpfs/dell2/emc/modeling/noscrub/UFS_SRW_App/obs_data/ndas/proc"} +MET_BIN_EXEC=${MET_BIN_EXEC:-"exec"} # Test Data Locations -TEST_PREGEN_BASEDIR=/gpfs/dell2/emc/modeling/noscrub/UFS_SRW_App/FV3LAM_pregen -TEST_COMINgfs=/gpfs/dell2/emc/modeling/noscrub/UFS_SRW_App/COMGFS -TEST_EXTRN_MDL_SOURCE_BASEDIR=/gpfs/dell2/emc/modeling/noscrub/UFS_SRW_App/extrn_mdl_files - +TEST_PREGEN_BASEDIR="/gpfs/dell2/emc/modeling/noscrub/UFS_SRW_App/FV3LAM_pregen" +TEST_COMINgfs="/gpfs/dell2/emc/modeling/noscrub/UFS_SRW_App/COMGFS" +TEST_EXTRN_MDL_SOURCE_BASEDIR="/gpfs/dell2/emc/modeling/noscrub/UFS_SRW_App/extrn_mdl_files" diff --git a/ush/python_utils/__init__.py b/ush/python_utils/__init__.py new file mode 100644 index 000000000..1e4f6feed --- /dev/null +++ b/ush/python_utils/__init__.py @@ -0,0 +1,20 @@ +from .change_case import uppercase, lowercase +from .check_for_preexist_dir_file import check_for_preexist_dir_file +from .check_var_valid_value import check_var_valid_value +from .count_files import count_files +from .create_symlink_to_file import create_symlink_to_file +from .define_macos_utilities import define_macos_utilities +from .environment import str_to_date, date_to_str, str_to_type, type_to_str, list_to_str, \ + str_to_list, set_env_var, get_env_var, import_vars, export_vars +from .filesys_cmds_vrfy import cmd_vrfy, cp_vrfy, mv_vrfy, rm_vrfy, ln_vrfy, mkdir_vrfy, cd_vrfy +from .get_charvar_from_netcdf import get_charvar_from_netcdf +from .get_elem_inds import get_elem_inds +from .get_manage_externals_config_property import get_manage_externals_config_property +from .interpol_to_arbit_CRES import interpol_to_arbit_CRES +from .print_input_args import print_input_args +from .print_msg import print_info_msg, print_err_msg_exit +from .process_args import process_args +from .run_command import run_command +from .config_parser import cfg_to_shell_str, cfg_to_yaml_str, yaml_safe_load, \ + load_shell_config, load_config_file + diff --git a/ush/python_utils/change_case.py b/ush/python_utils/change_case.py new file mode 100644 index 000000000..4fb46f94e --- /dev/null +++ b/ush/python_utils/change_case.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 + +def uppercase(str): + """ Function to convert a given string to uppercase + + Args: + str: the string + Return: + Uppercased str + """ + + return str.upper() + + +def lowercase(str): + """ Function to convert a given string to lowercase + + Args: + str: the string + Return: + Lowercase str + """ + + return str.lower() + diff --git a/ush/python_utils/check_for_preexist_dir_file.py b/ush/python_utils/check_for_preexist_dir_file.py new file mode 100644 index 000000000..743f80fcc --- /dev/null +++ b/ush/python_utils/check_for_preexist_dir_file.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 + +import os +from datetime import datetime +from .print_msg import print_info_msg, print_err_msg_exit +from .check_var_valid_value import check_var_valid_value +from .filesys_cmds_vrfy import rm_vrfy, mv_vrfy + +def check_for_preexist_dir_file(path, method): + """ Check for a preexisting directory or file and, if present, deal with it + according to the specified method + + Args: + path: path to directory + method: could be any of [ 'delete', 'rename', 'quit' ] + Returns: + None + """ + + check_var_valid_value(method, ['delete', 'rename', 'quit']) + + if os.path.exists(path): + if method == 'delete': + rm_vrfy(' -rf ', path) + elif method == 'rename': + now = datetime.now() + d = now.strftime("_%Y%m%d_%H%M%S") + new_path = path + d + print_info_msg(f''' + Specified directory or file already exists: + {path} + Moving (renaming) preexisting directory or file to: + {new_path}''') + mv_vrfy(path, new_path) + else: + print_err_msg_exit(f''' + Specified directory or file already exists + {path}''') + diff --git a/ush/python_utils/check_var_valid_value.py b/ush/python_utils/check_var_valid_value.py new file mode 100644 index 000000000..0a033b724 --- /dev/null +++ b/ush/python_utils/check_var_valid_value.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +from .print_msg import print_err_msg_exit + +def check_var_valid_value(var, values, err_msg=None): + """ Check if specified variable has a valid value + + Args: + var: the variable + values: list of valid values + err_msg: additional error message to print + Returns: + True: if var has valid value, exit(1) otherwise + """ + + if var not in values: + if err_msg is not None: + err_msg = f'The value specified in var = {var} is not supported.' + print_err_msg_exit(err_msg + f'{var} must be set to one of the following:\n {values}') + return True + diff --git a/ush/python_utils/config_parser.py b/ush/python_utils/config_parser.py new file mode 100644 index 000000000..f7d5a86ee --- /dev/null +++ b/ush/python_utils/config_parser.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 + +import argparse +import yaml +import sys +import os +from textwrap import dedent + +from .environment import list_to_str, str_to_list +from .print_msg import print_err_msg_exit +from .run_command import run_command + +def load_shell_config(config_file): + """ Loads old style shell config files. + We source the config script in a subshell and gets the variables it sets + + Args: + config_file: path to config file script + Returns: + dictionary that should be equivalent to one obtained from parsing a yaml file. + """ + + # Save env vars before and after sourcing the scipt and then + # do a diff to get variables specifically defined/updated in the script + # Method sounds brittle but seems to work ok so far + code = dedent(f''' #!/bin/bash + (set -o posix; set) > /tmp/t1 + {{ . {config_file}; set +x; }} &>/dev/null + (set -o posix; set) > /tmp/t2 + diff /tmp/t1 /tmp/t2 | grep "> " | cut -c 3- + ''') + (_,config_str,_) = run_command(code) + lines = config_str.splitlines() + + #build the dictionary + cfg = {} + for l in lines: + idx = l.find("=") + k = l[:idx] + v = str_to_list(l[idx+1:]) + cfg[k] = v + return cfg + +def cfg_to_yaml_str(cfg): + """ Get contents of config file as a yaml string """ + + return yaml.dump(cfg, sort_keys=False, default_flow_style=False) + +def cfg_to_shell_str(cfg): + """ Get contents of yaml file as shell script string""" + + shell_str = '' + for k,v in cfg.items(): + v1 = list_to_str(v) + if isinstance(v,list): + shell_str += f'{k}={v1}\n' + else: + shell_str += f"{k}='{v1}'\n" + return shell_str + +def yaml_safe_load(file_name): + """ Safe load a yaml file """ + + try: + with open(file_name,'r') as f: + cfg = yaml.safe_load(f) + except yaml.YAMLError as e: + print_err_msg_exit(e) + + return cfg + +def join(loader, node): + """ Custom tag hangler to join strings """ + seq = loader.construct_sequence(node) + return ''.join([str(i) for i in seq]) + +yaml.add_constructor('!join', join, Loader=yaml.SafeLoader) + +def load_config_file(file_name): + """ Choose yaml/shell file based on extension """ + ext = os.path.splitext(file_name)[1][1:] + if ext == "sh": + return load_shell_config(file_name) + else: + return yaml_safe_load(file_name) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description=\ + 'Prints contents of yaml file as bash argument-value pairs.') + parser.add_argument('--cfg','-c',dest='cfg',required=True, + help='yaml or regular shell config file to parse') + parser.add_argument('--output-type','-o',dest='out_type',required=False, + help='output format: "shell": shell format, any other: yaml format ') + + args = parser.parse_args() + cfg = load_config_file(args.cfg) + + if args.out_type == 'shell': + print( cfg_to_shell_str(cfg) ) + else: + print( cfg_to_yaml_str(cfg) ) + diff --git a/ush/python_utils/count_files.py b/ush/python_utils/count_files.py new file mode 100644 index 000000000..2239bf7ea --- /dev/null +++ b/ush/python_utils/count_files.py @@ -0,0 +1,16 @@ +import glob + +def count_files(ext,dirct='.'): + """ Function that returns the number of files in the specified directory + ending with the specified file extension + + Args: + ext: File extension string + dir: Directory to parse (default is current directory) + Returns: + int: Number of files + """ + + files = glob.glob(dirct + '/*.' + ext) + return len(files) + diff --git a/ush/python_utils/create_symlink_to_file.py b/ush/python_utils/create_symlink_to_file.py new file mode 100644 index 000000000..1d078c9a8 --- /dev/null +++ b/ush/python_utils/create_symlink_to_file.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 + +import os + +from .process_args import process_args +from .print_input_args import print_input_args +from .print_msg import print_err_msg_exit +from .check_var_valid_value import check_var_valid_value +from .filesys_cmds_vrfy import ln_vrfy + +def create_symlink_to_file(target,symlink,relative=True): + """ Create a symbolic link to the specified target file. + + Args: + target: target file + symlink: symbolic link to target file + relative: optional argument to specify relative symoblic link creation + Returns: + None + """ + + print_input_args(locals()) + + if target is None: + print_err_msg_exit(f''' + The argument \"target\" specifying the target of the symbolic link that + this function will create was not specified in the call to this function: + target = \"{target}\"''') + + if symlink is None: + print_err_msg_exit(f''' + The argument \"symlink\" specifying the target of the symbolic link that + this function will create was not specified in the call to this function: + symlink = \"{symlink}\"''') + + if not os.path.exists(target): + print_err_msg_exit(f''' + Cannot create symlink to specified target file because the latter does + not exist or is not a file: + target = \"{target}\"''') + + relative_flag="" + if relative: + RELATIVE_LINK_FLAG = os.getenv('RELATIVE_LINK_FLAG') + if RELATIVE_LINK_FLAG is not None: + relative_flag=f'{RELATIVE_LINK_FLAG}' + + ln_vrfy(f'-sf {relative_flag} {target} {symlink}') + diff --git a/ush/python_utils/define_macos_utilities.py b/ush/python_utils/define_macos_utilities.py new file mode 100644 index 000000000..2bf996b99 --- /dev/null +++ b/ush/python_utils/define_macos_utilities.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 + +import os + +from .print_msg import print_err_msg_exit +from .run_command import run_command +from .environment import set_env_var + +def check_darwin(cmd): + """ Check if darwin command exists """ + + (err,_,_) = run_command(f'command -v {cmd}') + if err != 0: + print_err_msg_exit(f''' + For Darwin-based operating systems (MacOS), the '{cmd}' utility is required to run the UFS SRW Application. + Reference the User's Guide for more information about platform requirements. + Aborting.''') + return True + +def define_macos_utilities(): + """ Set some environment variables for Darwin systems differently + The variables are: READLINK, SED, DATE_UTIL and LN_UTIL + """ + + if os.uname()[0] == 'Darwin': + if check_darwin('greadlink'): + set_env_var('READLINK','greadlink') + if check_darwin('gsed'): + set_env_var('SED','gsed') + if check_darwin('gdate'): + set_env_var('DATE_UTIL','gdate') + if check_darwin('gln'): + set_env_var('LN_UTIL','gln') + else: + set_env_var('READLINK','readlink') + set_env_var('SED','sed') + set_env_var('DATE_UTIL','date') + set_env_var('LN_UTIL','ln') + diff --git a/ush/python_utils/environment.py b/ush/python_utils/environment.py new file mode 100644 index 000000000..e98deaad2 --- /dev/null +++ b/ush/python_utils/environment.py @@ -0,0 +1,246 @@ +#!/usr/bin/env python3 + +import os +import inspect +import shlex +from datetime import datetime, date + +def str_to_date(s): + """ Get python datetime object from string. + It tests for only two formats used in RRFS: YYYYMMDD and YYYYMMDDHHMM + + Args: + s: a string + Returns: + datetime object or None + """ + try: + v = datetime.strptime(s, "%Y%m%d%H%M") + return v + except: + try: + v = datetime.strptime(s, "%Y%m%d") + return v + except: + return None + +def date_to_str(d,short=False): + """ Get string from python datetime object. + By default it converts to YYYYMMDDHHMM format unless + told otherwise with `short` or HHMM=0 + + Args: + d: datetime object + Returns: + string in YYYYMMDDHHMM or YYYYMMDD format + """ + if short or (d.hour == 0 and d.minute == 0): + v = d.strftime("%Y%m%d") + else: + v = d.strftime("%Y%m%d%H%M") + return v + +def str_to_type(s, just_get_me_the_string = False): + """ Check if the string contains a float, int, boolean, or just regular string. + This will be used to automatically convert environment variables to data types + that are more convenient to work with. If you don't want this functionality, + pass just_get_me_the_string = True + + Args: + s: a string + just_get_me_the_string: Set to True to return the string itself + Returns: + a float, int, boolean, date, or the string itself when all else fails + """ + s = s.strip('"\'') + if not just_get_me_the_string: + if s.lower() in ['true','yes','yeah']: + return True + elif s.lower() in ['false','no','nope']: + return False + v = str_to_date(s) + if v is not None: + return v + if s.isnumeric(): + return int(s) + try: + v = float(s) + return v + except: + pass + return s + +def type_to_str(v): + """ Given a float/int/boolean/date or list of these types, gets a string + representing their values + + Args: + v: a variable of the above types + Returns: + a string + """ + if isinstance(v,bool): + return ("TRUE" if v else "FALSE") + elif isinstance(v,int) or isinstance(v,float): + pass + elif isinstance(v,date): + return date_to_str(v) + elif v is None: + return '' + return str(v) + +def list_to_str(v, oneline=False): + """ Given a string or list of string, construct a string + to be used on right hand side of shell environement variables + + Args: + v: a string/number, list of strings/numbers, or null string('') + Returns: + A string + """ + if isinstance(v,str): + return v + if isinstance(v, list): + v = [type_to_str(i) for i in v] + if oneline or len(v) <= 4: + shell_str = f'( "' + '" "'.join(v) + '" )' + else: + shell_str = f'( \\\n"' + '" \\\n"'.join(v) + '" \\\n)' + else: + shell_str = f'{type_to_str(v)}' + + return shell_str + +def str_to_list(v): + """ Given a string, construct a string or list of strings. + Basically does the reverse operation of `list_to_string`. + + Args: + v: a string + Returns: + a string, list of strings or null string('') + """ + + if not isinstance(v,str): + return v + v = v.strip() + if not v: + return None + if v[0] == '(': + v = v[1:-1] + tokens = shlex.split(v) + lst = [] + for itm in tokens: + itm = itm.strip() + if itm == '': + continue + # bash arrays could be stored with indices ([0]=hello ...) + if "=" in itm: + idx = itm.find("=") + itm = itm[idx+1:] + lst.append(str_to_type(itm)) + return lst + else: + return str_to_type(v) + +def set_env_var(param,value): + """ Set an environment variable + + Args: + param: the variable to set + value: either a string, list of strings or None + Returns: + None + """ + + os.environ[param] = list_to_str(value) + +def get_env_var(param): + """ Get the value of an environement variable + + Args: + param: the environement variable + Returns: + Returns either a string, list of strings or None + """ + + if not param in os.environ: + return None + else: + value = os.environ[param] + return str_to_list(value) + +def import_vars(dictionary=None, target_dict=None, env_vars=None): + """ Import all (or select few) environment/dictionary variables as python global + variables of the caller module. Call this function at the beginning of a function + that uses environment variables. + + Note that for read-only environmental variables, calling this function once at the + beginning should be enough. However, if the variable is modified in the module it is + called from, the variable should be explicitly tagged as `global`, and then its value + should be exported back to the environment with a call to export_vars() + + import_vars() # import all environment variables + global MY_VAR, MY_LIST_VAR + MY_PATH = "/path/to/somewhere" + MY_LIST_VAR.append("Hello") + export_vars() # these exports all global variables + + There doesn't seem to an easier way of imitating the shell script doing way of things, which + assumes that everything is global unless specifically tagged local, while the opposite is true + for python. + + Args: + dictionary: source dictionary (default=os.environ) + target_dict: target dictionary (default=caller module's globals()) + env_vars: list of selected environement/dictionary variables to import, or None, + in which case all environment/dictionary variables are imported + Returns: + None + """ + if dictionary is None: + dictionary = os.environ + + if target_dict is None: + target_dict = inspect.stack()[1][0].f_globals + + if env_vars is None: + env_vars = dictionary + else: + env_vars = { k: dictionary[k] if k in dictionary else None for k in env_vars } + + for k,v in env_vars.items(): + target_dict[k] = str_to_list(v) + +def export_vars(dictionary=None, source_dict=None, env_vars=None): + """ Export all (or select few) global variables of the caller module's + to either the environement/dictionary. Call this function at the end of + a function that updates environment variables. + + Args: + dictionary: target dictionary to set (default=os.environ) + source_dict: source dictionary (default=caller modules globals()) + env_vars: list of selected environement/dictionary variables to export, or None, + in which case all environment/dictionary variables are exported + Returns: + None + """ + if dictionary is None: + dictionary = os.environ + + if source_dict is None: + source_dict = inspect.stack()[1][0].f_globals + + if env_vars is None: + env_vars = source_dict + else: + env_vars = { k: source_dict[k] if k in source_dict else None for k in env_vars } + + for k,v in env_vars.items(): + # skip functions and other unlikely variable names + if callable(v): + continue + if not k or k.islower() or k[0] == '_': + continue + dictionary[k] = list_to_str(v) + diff --git a/ush/python_utils/filesys_cmds_vrfy.py b/ush/python_utils/filesys_cmds_vrfy.py new file mode 100644 index 000000000..67f1f45f9 --- /dev/null +++ b/ush/python_utils/filesys_cmds_vrfy.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 + +import os +from .print_msg import print_err_msg_exit + +def cmd_vrfy(cmd, *args): + """ Execute system command + + Args: + cmd: the command + *args: its arguments + Returns: + Exit code + """ + + for a in args: + cmd += ' ' + str(a) + ret = os.system(cmd) + if ret != 0: + print_err_msg_exit(f'System call "{cmd}" failed.') + return ret + +def cp_vrfy(*args): + return cmd_vrfy('cp', *args) +def mv_vrfy(*args): + return cmd_vrfy('mv', *args) +def rm_vrfy(*args): + return cmd_vrfy('rm', *args) +def ln_vrfy(*args): + return cmd_vrfy('ln', *args) +def mkdir_vrfy(*args): + return cmd_vrfy('mkdir', *args) +def cd_vrfy(*args): + return os.chdir(*args) + diff --git a/ush/python_utils/get_charvar_from_netcdf.py b/ush/python_utils/get_charvar_from_netcdf.py new file mode 100644 index 000000000..c85e42e35 --- /dev/null +++ b/ush/python_utils/get_charvar_from_netcdf.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 + +import os +from .print_msg import print_err_msg_exit +from .run_command import run_command + +def get_charvar_from_netcdf(nc_file, nc_var_name): + """ Searches NetCDF file and extract a scalar variable + + Args: + nc_file: Path to netCDF file + nc_var_name: name of the scalar variable + Returns: + value of the variable + """ + + SED = os.getenv('SED') + + cmd = f"ncdump -v {nc_var_name} {nc_file} | \ + {SED} -r -e '1,/data:/d' \ + -e '/^[ ]*'{nc_var_name}'/d' \ + -e '/^}}$/d' \ + -e 's/.*\"(.*)\".*/\\1/' \ + -e '/^$/d' \ + " + (ret,nc_var_value,_) = run_command(cmd) + + if ret != 0: + print_err_msg_exit(f''' + Attempt to extract the value of the NetCDF variable spcecified by nc_var_name + from the file specified by nc_file failed: + nc_file = \"{nc_file}\" + nc_var_name = \"{nc_var_name}\"''') + + if nc_var_value is None: + print_err_msg_exit(f''' + In the specified NetCDF file (nc_file), the specified variable (nc_var_name) + was not found: + nc_file = \"{nc_file}\" + nc_var_name = \"{nc_var_name}\" + nc_var_value = \"{nc_var_value}\"''') + + return nc_var_value + diff --git a/ush/python_utils/get_elem_inds.py b/ush/python_utils/get_elem_inds.py new file mode 100644 index 000000000..fd4ea2cee --- /dev/null +++ b/ush/python_utils/get_elem_inds.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 + +from .change_case import lowercase +from .check_var_valid_value import check_var_valid_value + +def get_elem_inds(arr, match, ret_type): + """ Function that returns indices of elements of array + that match a given string + + Args: + arr: the list + match: element to match (case insenensitive) + ret_type: the return type can be any of [ 'first', 'last', 'all' ] + Returns: + A list of indices + """ + ret_type = lowercase(ret_type) + check_var_valid_value(ret_type, ['first', 'last', 'all']) + + if ret_type == 'first': + for i,e in enumerate(arr): + if e == match: + return i + elif ret_type == 'last': + for i in range(len(arr)-1, -1, -1): + if arr[i] == match: + return i + else: + return [i for i,e in enumerate(arr) if e == match] + diff --git a/ush/python_utils/get_manage_externals_config_property.py b/ush/python_utils/get_manage_externals_config_property.py new file mode 100644 index 000000000..c537a8824 --- /dev/null +++ b/ush/python_utils/get_manage_externals_config_property.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python3 + +import os +import configparser + +from .print_msg import print_err_msg_exit + +def get_manage_externals_config_property(externals_cfg_fp, external_name, property_name): + """ + This function searches a specified manage_externals configuration file + and extracts from it the value of the specified property of the external + with the specified name (e.g. the relative path in which the external + has been/will be cloned by the manage_externals utility). + + Args: + + externals_cfg_fp: + The absolute or relative path to the manage_externals configuration + file that will be searched. + + external_name: + The name of the external to search for in the manage_externals confi- + guration file specified by externals_cfg_fp. + + property_name: + The name of the property whose value to obtain (for the external spe- + cified by external_name). + + Returns: + The property value + """ + + if not os.path.exists(externals_cfg_fp): + print_err_msg_exit(f''' + The specified manage_externals configuration file (externals_cfg_fp) + does not exist: + externals_cfg_fp = \"{externals_cfg_fp}\"''') + + config = configparser.ConfigParser() + config.read(externals_cfg_fp) + + if not external_name in config.sections(): + print_err_msg_exit(f''' + In the specified manage_externals configuration file (externals_cfg_fp), + the specified property (property_name) was not found for the the speci- + fied external (external_name): + externals_cfg_fp = \"{externals_cfg_fp}\" + external_name = \"{external_name}\" + property_name = \"{property_name}\"''') + else: + return config[external_name][property_name] + + return None + diff --git a/ush/python_utils/interpol_to_arbit_CRES.py b/ush/python_utils/interpol_to_arbit_CRES.py new file mode 100644 index 000000000..f6ec889b2 --- /dev/null +++ b/ush/python_utils/interpol_to_arbit_CRES.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 + +def interpol_to_arbit_CRES(RES, RES_array, prop_array): + """ Function to interpolate (or extrapolate) a grid cell size-dependent property + to an arbitrary cubed-sphere resolution using arrays that specify a set of property + values for a corresponding set of resolutions + + Args: + RES: The cubed-sphere resolution at which to find the value of a property. + This is in units of number of cells (in either of the two horizontal + directions) on any one of the tiles of a cubed-sphere grid. + + RES_array: The name of the array containing the cubed-sphere resolutions for + which corresponding property values are given (in prop_array). These + are assumed to be given from smallest to largest. + + prop_array: The name of the array containing the values of the property corres- + ponding to the cubed-sphere resolutions in RES_array. + Returns: + Interpolated (extrapolated) property value + """ + + num_valid_RESes = len(RES_array) + i_min = 0 + i_max = num_valid_RESes - 1 + + if RES <= RES_array[i_min]: + prop = prop_array[i_min] + elif RES > RES_array[i_max]: + prop = prop_array[i_max] + else: + for i in range(0,num_valid_RESes-1): + if RES > RES_array[i] and RES <= RES_array[i+1]: + RES1 = RES_array[i] + RES2 = RES_array[i+1] + prop1 = prop_array[i] + prop2 = prop_array[i+1] + m_slope = (prop2 - prop1) / (RES2 - RES1) + y_intcpt = (RES2 * prop1 - RES1 * prop2) / (RES2 - RES1) + prop = m_slope * RES + y_intcpt + + return prop + diff --git a/ush/python_utils/print_input_args.py b/ush/python_utils/print_input_args.py new file mode 100644 index 000000000..4f168a612 --- /dev/null +++ b/ush/python_utils/print_input_args.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 + +import os +import inspect +from textwrap import dedent + +from .change_case import lowercase +from .print_msg import print_info_msg +from .environment import import_vars + +def print_input_args(valid_args): + """ Prints function arguments for debugging purposes + + Args: + valid_args: dictionary of arg-value pairs + Returns: + Number of printed arguments + """ + + # get verbosity from environment + IMPORTS = ["DEBUG"] + import_vars(env_vars=IMPORTS) + + if list(valid_args.keys())[0] == '__unset__': + valid_arg_names = {} + else: + valid_arg_names = valid_args + num_valid_args = len(valid_arg_names) + + filename = inspect.stack()[1].filename + function = inspect.stack()[1].function + filename_base = os.path.basename(filename) + + if num_valid_args == 0: + msg = dedent(f''' + No arguments have been passed to function {function} in script {filename_base} located + + \"{filename}\"''') + else: + msg = dedent(f''' + The arguments to function {function} in script {filename_base} located + + \"{filename}\" + + have been set as follows:\n\n''') + + for k,v in valid_arg_names.items(): + msg = msg + f' {k}="{v}"\n' + + print_info_msg(msg,verbose=DEBUG) + return num_valid_args + diff --git a/ush/python_utils/print_msg.py b/ush/python_utils/print_msg.py new file mode 100644 index 000000000..75858e561 --- /dev/null +++ b/ush/python_utils/print_msg.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 + +import traceback +import sys +from textwrap import dedent + +def print_err_msg_exit(error_msg="",stack_trace=True): + """Function to print out an error message to stderr and exit. + It can optionally print the stack trace as well. + + Args: + error_msg : error message to print + stack_trace : set to True to print stack trace + Returns: + None + """ + if stack_trace: + traceback.print_stack(file=sys.stderr) + + msg_footer='\nExiting with nonzero status.' + print(dedent(error_msg) + msg_footer, file=sys.stderr) + sys.exit(1) + +def print_info_msg(info_msg,verbose=True): + """ Function to print information message to stdout, when verbose + is set to True. It does proper "dedentation" that is needed for readability + of python code. + + Args: + info_msg : info message to print + verbose : set to False to silence printing + Returns: + True: if message is successfully printed + """ + + if verbose == True: + print(dedent(info_msg)) + return True + return False + diff --git a/ush/python_utils/process_args.py b/ush/python_utils/process_args.py new file mode 100644 index 000000000..0baf0d4f9 --- /dev/null +++ b/ush/python_utils/process_args.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 + +from textwrap import dedent +from .check_var_valid_value import check_var_valid_value + +def process_args(valid_args, **kwargs): + """ Function to process a list of variable name-value pairs. + It checks whether each argument is a valid argument or not. + + Args: + valid_args: List of valid arguments + **kwargs: keyword arguments + Returns: + A dictionary of all valid (arg,value) pairs + """ + + if valid_args[0] == '__unset__': + valid_arg_names = [] + else: + valid_arg_names = valid_args + num_valid_args = len(valid_arg_names) + num_arg_val_pairs = len(kwargs) + + if num_arg_val_pairs > num_valid_args: + print_err_msg_exit(f''' + The number of argument-value pairs specified on the command line (num_- + arg_val_pairs) must be less than or equal to the number of valid argu- + ments (num_valid_args) specified in the array valid_arg_names: + num_arg_val_pairs = {num_arg_val_pairs} + num_valid_args = {num_valid_args} + valid_arg_names = ( {valid_arg_names_str})''') + + if num_valid_args == 0: + return None + + values_args = [None] * num_valid_args + + for i,a in enumerate(valid_args): + if a is None: + print_err_msg_exit(f''' + The list of valid arguments (valid_arg_names) cannot contain empty elements, + but the element with index i={i} is empty: + valid_arg_names = ( {valid_arg_names}) + valid_arg_names[{i}] = \"{valid_arg_names[i]}\"''') + + for arg_name,arg_value in kwargs.items(): + err_msg=dedent(f''' + The specified argument name (arg_name) in the current argument-value + pair (arg_val_pair) is not valid: + arg_name = \"{arg_name}\" + arg_val = \"{arg_value}\"\n''') + check_var_valid_value(arg_name, valid_arg_names, err_msg) + + idx = valid_arg_names.index(arg_name) + if values_args[idx] is not None: + print_err_msg_exit(f''' + The current argument has already been assigned a value: + arg_name = \"{arg_name}\" + key_value_pair = {kwargs} + Please assign values to arguments only once on the command line.''') + values_args[idx] = arg_value + + return dict(zip(valid_args,values_args)) + diff --git a/ush/python_utils/run_command.py b/ush/python_utils/run_command.py new file mode 100644 index 000000000..70978bd78 --- /dev/null +++ b/ush/python_utils/run_command.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 + +import subprocess + +def run_command(cmd): + """ Run system command in a subprocess + + Args: + cmd: command to execute + Returns: + Tuple of (exit code, std_out, std_err) + """ + proc = subprocess.Popen(cmd, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + shell=True, + universal_newlines=True) + + std_out, std_err = proc.communicate() + + # strip trailing newline character + return (proc.returncode, + std_out.rstrip('\n'), + std_err.rstrip('\n')) + diff --git a/ush/python_utils/test_data/Externals.cfg b/ush/python_utils/test_data/Externals.cfg new file mode 100644 index 000000000..43e6e7b9b --- /dev/null +++ b/ush/python_utils/test_data/Externals.cfg @@ -0,0 +1,38 @@ +[regional_workflow] +protocol = git +repo_url = https://github.com/ufs-community/regional_workflow +# Specify either a branch name or a hash but not both. +#branch = develop +hash = 20a149d +local_path = regional_workflow +required = True + +[ufs_utils] +protocol = git +repo_url = https://github.com/ufs-community/UFS_UTILS +# Specify either a branch name or a hash but not both. +#branch = develop +hash = f30740e +local_path = src/UFS_UTILS +required = True + +[ufs-weather-model] +protocol = git +repo_url = https://github.com/ufs-community/ufs-weather-model +# Specify either a branch name or a hash but not both. +#branch = develop +hash = 805421d +local_path = src/ufs-weather-model +required = True + +[UPP] +protocol = git +repo_url = https://github.com/NOAA-EMC/UPP +# Specify either a branch name or a hash but not both. +#branch = develop +hash = a49af05 +local_path = src/UPP +required = True + +[externals_description] +schema_version = 1.0.0 diff --git a/ush/python_utils/test_data/sample.nc b/ush/python_utils/test_data/sample.nc new file mode 100644 index 000000000..9e31e16a3 Binary files /dev/null and b/ush/python_utils/test_data/sample.nc differ diff --git a/ush/python_utils/test_data/var_defns.sh b/ush/python_utils/test_data/var_defns.sh new file mode 100644 index 000000000..c2937c56b --- /dev/null +++ b/ush/python_utils/test_data/var_defns.sh @@ -0,0 +1,6 @@ +RUN_ENVIR="nco" +MACHINE="hera" +DATE_FIRST_CYCL="20210210" +DATE_LAST_CYCL="20210210" +CYCL_HRS="12" +FCST_LEN_HRS="12" diff --git a/ush/python_utils/test_python_utils.py b/ush/python_utils/test_python_utils.py new file mode 100644 index 000000000..568de918e --- /dev/null +++ b/ush/python_utils/test_python_utils.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 + +""" +Unit tests for python utilities. + +To run them, issue the following command from the ush directory: + python3 -m unittest -b python_utils/test_python_utils.py + +All modules needed to build and run the regional_workflow need to be +loaded first before executing unit tests. + +""" + +import unittest +import glob +import os + +from python_utils import * + +class Testing(unittest.TestCase): + def test_change_case(self): + self.assertEqual( uppercase('upper'), 'UPPER' ) + self.assertEqual( lowercase('LOWER'), 'lower' ) + def test_check_for_preexist_dir_file(self): + cmd_vrfy('mkdir -p test_data/dir') + self.assertTrue( os.path.exists('test_data/dir') ) + check_for_preexist_dir_file('test_data/dir', 'rename') + dirs = glob.glob('test_data/dir_*') + self.assertEqual( len(dirs), 1) + rm_vrfy('-rf test_data/dir*') + def test_check_var_valid_value(self): + self.assertTrue( check_var_valid_value('rice', [ 'egg', 'spam', 'rice' ]) ) + def test_count_files(self): + (_,target_cnt,_) = run_command('ls -l *.py | wc -l') + cnt = count_files('py') + self.assertEqual(cnt, int(target_cnt)) + def test_filesys_cmds(self): + dPATH=f'{self.PATH}/test_data/dir' + mkdir_vrfy(dPATH) + self.assertTrue( os.path.exists(dPATH) ) + cp_vrfy(f'{self.PATH}/change_case.py', f'{dPATH}/change_cases.py') + self.assertTrue( os.path.exists(f'{dPATH}/change_cases.py') ) + cmd_vrfy(f'rm -rf {dPATH}') + self.assertFalse( os.path.exists('tt.py') ) + def test_get_charvar_from_netcdf(self): + FILE=f'{self.PATH}/test_data/sample.nc' + val = get_charvar_from_netcdf(FILE, 'pressure') + self.assertTrue( val and (val.split()[0], '955.5,')) + def test_run_command(self): + self.assertEqual( run_command('echo hello'), (0, 'hello', '') ) + def test_get_elem_inds(self): + arr = [ 'egg', 'spam', 'egg', 'rice', 'egg'] + self.assertEqual( get_elem_inds(arr, 'egg', 'first' ) , 0 ) + self.assertEqual( get_elem_inds(arr, 'egg', 'last' ) , 4 ) + self.assertEqual( get_elem_inds(arr, 'egg', 'all' ) , [0, 2, 4] ) + def test_get_manage_externals_config_property(self): + self.assertIn( \ + 'regional_workflow', + get_manage_externals_config_property( \ + f'{self.PATH}/test_data/Externals.cfg', + 'regional_workflow', + 'repo_url')) + def test_interpol_to_arbit_CRES(self): + RES = 800 + RES_array = [ 5, 25, 40, 60, 80, 100, 400, 700, 1000, 1500, 2800, 3000 ] + prop_array = [ 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.65, 0.7, 1.0, 1.1, 1.2, 1.3 ] + prop = interpol_to_arbit_CRES(RES, RES_array, prop_array) + self.assertAlmostEqual(prop, 0.8) + def test_create_symlink_to_file(self): + TARGET = f'{self.PATH}/test_python_utils.py' + SYMLINK = f'{self.PATH}/test_data/test_python_utils.py' + create_symlink_to_file(TARGET,SYMLINK) + def test_define_macos_utilities(self): + set_env_var('MYVAR','MYVAL') + val = os.getenv('MYVAR') + self.assertEqual(val,'MYVAL') + self.assertEqual(os.getenv('SED'), + 'gsed' if os.uname() == 'Darwin' else 'sed') + def test_process_args(self): + valid_args = [ "arg1", "arg2", "arg3", "arg4" ] + values = process_args( valid_args, + arg2 = "bye", arg3 = "hello", + arg4 = ["this", "is", "an", "array"] ) + self.assertEqual(values, + {'arg1': None, + 'arg2': 'bye', + 'arg3': 'hello', + 'arg4': ['this', 'is', 'an', 'array']} ) + def test_print_input_args(self): + valid_args = { "arg1":1, "arg2":2, "arg3":3, "arg4":4 } + self.assertEqual( print_input_args(valid_args), 4 ) + def test_import_vars(self): + #test import + global MYVAR + set_env_var("MYVAR","MYVAL") + env_vars = ["PWD", "MYVAR"] + import_vars(env_vars=env_vars) + self.assertEqual( PWD, os.getcwd() ) + self.assertEqual(MYVAR,"MYVAL") + #test export + MYVAR="MYNEWVAL" + self.assertEqual(os.environ['MYVAR'],'MYVAL') + export_vars(env_vars=env_vars) + self.assertEqual(os.environ['MYVAR'],'MYNEWVAL') + #test custom dictionary + dictionary = { "Hello": "World!" } + import_vars(dictionary=dictionary) + self.assertEqual( Hello, "World!" ) + def test_config_parser(self): + cfg = { "HRS": [ "1", "2" ] } + shell_str = cfg_to_shell_str(cfg) + self.assertEqual( shell_str, 'HRS=( "1" "2" )\n') + def test_print_msg(self): + self.assertEqual( print_info_msg("Hello World!", verbose=False), False) + def setUp(self): + """ setUp is where we do preparation for running the unittests. + If you need to download files for running test cases, prepare common stuff + for all test cases etc, this is the best place to do it """ + define_macos_utilities(); + set_env_var('DEBUG','FALSE') + self.PATH = os.path.dirname(__file__) + +if __name__ == '__main__': + unittest.main() + diff --git a/ush/set_FV3nml_stoch_params.sh b/ush/set_FV3nml_stoch_params.sh index 8f08bb566..8abfc45d4 100644 --- a/ush/set_FV3nml_stoch_params.sh +++ b/ush/set_FV3nml_stoch_params.sh @@ -80,6 +80,9 @@ function set_FV3nml_stoch_params() { iseed_skeb \ iseed_sppt \ iseed_spp \ + iseed_lsm_spp \ + num_iseed_spp \ + num_iseed_lsm_spp \ settings # #----------------------------------------------------------------------- @@ -98,17 +101,45 @@ function set_FV3nml_stoch_params() { iseed_shum=$(( cdate*1000 + ensmem_num*10 + 2 )) iseed_skeb=$(( cdate*1000 + ensmem_num*10 + 3 )) iseed_sppt=$(( cdate*1000 + ensmem_num*10 + 1 )) - iseed_spp=$(( cdate*1000 + ensmem_num*10 + 4 )) + iseed_lsm_spp=$(( cdate*1000 + ensmem_num*10 + 9)) - settings="\ + num_iseed_spp=${#ISEED_SPP[@]} + for (( i=0; i<${num_iseed_spp}; i++ )); do + iseed_spp[$i]=$(( cdate*1000 + ensmem_num*10 + ${ISEED_SPP[$i]} )) + done + + settings="" + + if [ ${DO_SPPT} = TRUE ] || [ ${DO_SHUM} = TRUE ] || [ ${DO_SKEB} = TRUE ]; then + + settings=$settings"\ 'nam_stochy': { 'iseed_shum': ${iseed_shum}, 'iseed_skeb': ${iseed_skeb}, 'iseed_sppt': ${iseed_sppt}, } -'nam_spperts': { - 'iseed_spp': ${iseed_spp}, - }" +" + fi + + if [ ${DO_SPP} = TRUE ]; then + + settings=$settings"\ +'nam_sppperts': { + 'iseed_spp': [ $( printf "%s, " "${iseed_spp[@]}" ) ] + } +" + fi + + if [ ${DO_LSM_SPP} = TRUE ]; then + + settings=$settings"\ +'nam_sfcperts': { + 'iseed_lndp': [ $( printf "%s, " "${iseed_lsm_spp[@]}" ) ] + } +" + fi + + if [ -n "$settings" ]; then $USHDIR/set_namelist.py -q \ -n ${FV3_NML_FP} \ @@ -125,6 +156,14 @@ failed. Parameters passed to this script are: Namelist settings specified on command line (these have highest precedence): settings = $settings" + + else + + print_info_msg "\ +The variable \"settings\" is empty, so not setting any namelist values." + + fi + # #----------------------------------------------------------------------- # diff --git a/ush/set_namelist.py b/ush/set_namelist.py index f16a798e7..43bbeb8a6 100755 --- a/ush/set_namelist.py +++ b/ush/set_namelist.py @@ -40,7 +40,7 @@ To produce a namelist (fv3_expt.nml) by specifying a physics package: - set_namelist.py -n templates/input.nml.FV3 -c templates/FV3.input.yml FV3_GSD_SAR + set_namelist.py -n templates/input.nml.FV3 -c templates/FV3.input.yml FV3_HRRR -o fv3_expt.nml To produce a YAML file (fv3_namelist.yml) from a user namelist: @@ -171,7 +171,7 @@ def parse_args(): ) parser.add_argument('-n', '--basenml', dest='nml', - help='Full path the input Fortran namelist. Optional.', + help='Full path to the input Fortran namelist. Optional.', type=file_exists, ) parser.add_argument('-t', '--type', diff --git a/ush/setup.sh b/ush/setup.sh index 2cbd0f6fc..01470963d 100755 --- a/ush/setup.sh +++ b/ush/setup.sh @@ -204,6 +204,9 @@ DO_SKEB=$(boolify $DO_SKEB) check_var_valid_value "DO_SPP" "valid_vals_DO_SPP" DO_SPP=$(boolify $DO_SPP) + +check_var_valid_value "DO_LSM_SPP" "valid_vals_DO_LSM_SPP" +DO_LSM_SPP=$(boolify $DO_LSM_SPP) # #----------------------------------------------------------------------- # @@ -227,8 +230,9 @@ fi # #----------------------------------------------------------------------- # -# If running with SPP, count the number of entries in SPP_VAR_LIST to -# correctly set N_VAR_SPP, otherwise set it to zero. +# If running with SPP in MYNN PBL, MYNN SFC, GSL GWD, Thompson MP, or +# RRTMG, count the number of entries in SPP_VAR_LIST to correctly set +# N_VAR_SPP, otherwise set it to zero. # #----------------------------------------------------------------------- # @@ -239,6 +243,73 @@ fi # #----------------------------------------------------------------------- # +# If running with Noah or RUC-LSM SPP, count the number of entries in +# LSM_SPP_VAR_LIST to correctly set N_VAR_LNDP, otherwise set it to zero. +# Also set LNDP_TYPE to 2 for LSM SPP, otherwise set it to zero. Finally, +# initialize an "FHCYC_LSM_SPP" variable to 0 and set it to 999 if LSM SPP +# is turned on. This requirement is necessary since LSM SPP cannot run with +# FHCYC=0 at the moment, but FHCYC cannot be set to anything less than the +# length of the forecast either. A bug fix will be submitted to +# ufs-weather-model soon, at which point, this requirement can be removed +# from regional_workflow. +# +#----------------------------------------------------------------------- +# +N_VAR_LNDP=0 +LNDP_TYPE=0 +FHCYC_LSM_SPP_OR_NOT=0 +if [ "${DO_LSM_SPP}" = "TRUE" ]; then + N_VAR_LNDP=${#LSM_SPP_VAR_LIST[@]} + LNDP_TYPE=2 + FHCYC_LSM_SPP_OR_NOT=999 +fi +# +#----------------------------------------------------------------------- +# +# If running with SPP, confirm that each SPP-related namelist value +# contains the same number of entries as N_VAR_SPP (set above to be equal +# to the number of entries in SPP_VAR_LIST). +# +#----------------------------------------------------------------------- +# +if [ "${DO_SPP}" = "TRUE" ]; then + if [ "${#SPP_MAG_LIST[@]}" != "${N_VAR_SPP}" ] || \ + [ "${#SPP_LSCALE[@]}" != "${N_VAR_SPP}" ] || \ + [ "${#SPP_TSCALE[@]}" != "${N_VAR_SPP}" ] || \ + [ "${#SPP_SIGTOP1[@]}" != "${N_VAR_SPP}" ] || \ + [ "${#SPP_SIGTOP2[@]}" != "${N_VAR_SPP}" ] || \ + [ "${#SPP_STDDEV_CUTOFF[@]}" != "${N_VAR_SPP}" ] || \ + [ "${#ISEED_SPP[@]}" != "${N_VAR_SPP}" ]; then + print_err_msg_exit "\ +All MYNN PBL, MYNN SFC, GSL GWD, Thompson MP, or RRTMG SPP-related namelist +variables set in ${CONFIG_FN} must be equal in number of entries to what is +found in SPP_VAR_LIST: + Number of entries in SPP_VAR_LIST = \"${#SPP_VAR_LIST[@]}\"" + fi +fi +# +#----------------------------------------------------------------------- +# +# If running with LSM SPP, confirm that each LSM SPP-related namelist +# value contains the same number of entries as N_VAR_LNDP (set above to +# be equal to the number of entries in LSM_SPP_VAR_LIST). +# +#----------------------------------------------------------------------- +# +if [ "${DO_LSM_SPP}" = "TRUE" ]; then + if [ "${#LSM_SPP_MAG_LIST[@]}" != "${N_VAR_LNDP}" ] || \ + [ "${#LSM_SPP_LSCALE[@]}" != "${N_VAR_LNDP}" ] || \ + [ "${#LSM_SPP_TSCALE[@]}" != "${N_VAR_LNDP}" ]; then + print_err_msg_exit "\ +All Noah or RUC-LSM SPP-related namelist variables (except ISEED_LSM_SPP) +set in ${CONFIG_FN} must be equal in number of entries to what is found in +SPP_VAR_LIST: + Number of entries in SPP_VAR_LIST = \"${#LSM_SPP_VAR_LIST[@]}\"" + fi +fi +# +#----------------------------------------------------------------------- +# check_var_valid_value "SUB_HOURLY_POST" "valid_vals_SUB_HOURLY_POST" SUB_HOURLY_POST=$(boolify $SUB_HOURLY_POST) # @@ -427,7 +498,7 @@ check_var_valid_value "MACHINE" "valid_vals_MACHINE" # RELATIVE_LINK_FLAG="--relative" MACHINE_FILE=${MACHINE_FILE:-${USHDIR}/machine/$(echo_lowercase $MACHINE).sh} -source ${MACHINE_FILE} +source $USHDIR/source_machine_file.sh if [ -z "${NCORES_PER_NODE:-}" ]; then print_err_msg_exit "\ @@ -754,6 +825,22 @@ fi # #----------------------------------------------------------------------- # +# If using external CRTM fix files to allow post-processing of synthetic +# satellite products from the UPP, then make sure the fix file directory +# exists. +# +#----------------------------------------------------------------------- +# +if [ ${USE_CRTM} = "TRUE" ]; then + if [ ! -d "${CRTM_DIR}" ]; then + print_err_msg_exit " +The external CRTM fix file directory specified by CRTM_DIR does not exist: + CRTM_DIR = \"${CRTM_DIR}\"" + fi +fi +# +#----------------------------------------------------------------------- +# # The forecast length (in integer hours) cannot contain more than 3 cha- # racters. Thus, its maximum value is 999. Check whether the specified # forecast length exceeds this maximum value. If so, print out a warn- @@ -1326,7 +1413,7 @@ WFLOW_LAUNCH_SCRIPT_FP="$USHDIR/${WFLOW_LAUNCH_SCRIPT_FN}" WFLOW_LAUNCH_LOG_FP="$EXPTDIR/${WFLOW_LAUNCH_LOG_FN}" if [ "${USE_CRON_TO_RELAUNCH}" = "TRUE" ]; then CRONTAB_LINE="*/${CRON_RELAUNCH_INTVL_MNTS} * * * * cd $EXPTDIR && \ -./${WFLOW_LAUNCH_SCRIPT_FN} >> ./${WFLOW_LAUNCH_LOG_FN} 2>&1" +./${WFLOW_LAUNCH_SCRIPT_FN} called_from_cron=\"TRUE\" >> ./${WFLOW_LAUNCH_LOG_FN} 2>&1" else CRONTAB_LINE="" fi @@ -2590,13 +2677,19 @@ PE_MEMBER01='${PE_MEMBER01}' # #----------------------------------------------------------------------- # -# IF DO_SPP is set to \"TRUE\", N_VAR_SPP specifies the number of physics -# parameterizations that are perturbed with SPP. Otherwise, N_VAR_SPP -# is set 0. +# IF DO_SPP is set to "TRUE", N_VAR_SPP specifies the number of physics +# parameterizations that are perturbed with SPP. If DO_LSM_SPP is set to +# "TRUE", N_VAR_LNDP specifies the number of LSM parameters that are +# perturbed. LNDP_TYPE determines the way LSM perturbations are employed +# and FHCYC_LSM_SPP_OR_NOT sets FHCYC based on whether LSM perturbations +# are turned on or not. # #----------------------------------------------------------------------- # N_VAR_SPP='${N_VAR_SPP}' +N_VAR_LNDP='${N_VAR_LNDP}' +LNDP_TYPE='${LNDP_TYPE}' +FHCYC_LSM_SPP_OR_NOT='${FHCYC_LSM_SPP_OR_NOT}' " # # Done with constructing the contents of the variable definitions file, diff --git a/ush/source_machine_file.sh b/ush/source_machine_file.sh new file mode 100644 index 000000000..532335962 --- /dev/null +++ b/ush/source_machine_file.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# +# This script is a wrapper that sources the machine file but also allows +# for certain pre- and post-source commands to be executed (e.g. setting +# of "set -x" shell option depending on the DEBUG variable). +# + +if [ -z ${DEBUG+x} ] || [ "$DEBUG" != "TRUE" ]; then + { save_shell_opts; set -u +x; } > /dev/null 2>&1 +else + { save_shell_opts; set -u -x; } > /dev/null 2>&1 +fi + +source ${MACHINE_FILE} + +{ restore_shell_opts; } > /dev/null 2>&1 diff --git a/ush/templates/FV3.input.yml b/ush/templates/FV3.input.yml index b971671dd..f9256bc08 100644 --- a/ush/templates/FV3.input.yml +++ b/ush/templates/FV3.input.yml @@ -1,22 +1,23 @@ -# This configuration file maintains all the community-supported sets of -# namelist options. To build a namelist for one of these configurations, -# use the Python helper script ush/set_namelist.py and provide this file -# and the desired section via the -c option. - -# The FV3_GSD_v0 section is empty as it provides the "base namelist" to -# which all the modifications here are provided. Please see +# This configuration file maintains the modifications that need to be +# made to the base FV3 namelist specified in +# # ush/templates/input.nml.FV3 -# for the full set of namelist options that are used for FV3 in that -# configuration. - +# +# to obtain the namelist for each physics suite that the SRW App can +# run with. To build a namelist for one of these configurations, use +# the Python helper script +# +# ush/set_namelist.py +# +# and provide this file and the desired section via the -c option. -FV3_GSD_v0: -FV3_GSD_SAR: - gfs_physics_nml: &gsd_sar_phys +FV3_RRFS_v1alpha: + gfs_physics_nml: &RRFS_v1alpha_phys do_deep: False - imfdeepcnv: 0 - imfshalcnv: 0 + do_mynnsfclay: False + imfdeepcnv: -1 + imfshalcnv: -1 iopt_alb: 2 iopt_btr: 1 iopt_crs: 1 @@ -29,26 +30,13 @@ FV3_GSD_SAR: iopt_snf: 4 iopt_stc: 1 iopt_tbot: 2 - -FV3_RRFS_v1alpha: - gfs_physics_nml: - <<: *gsd_sar_phys - do_deep: False - do_mynnsfclay: False - imfdeepcnv: -1 - imfshalcnv: -1 lsm: 2 lsoil_lsm: 4 FV3_RRFS_v1beta: gfs_physics_nml: - <<: *gsd_sar_phys - do_deep: False + <<: *RRFS_v1alpha_phys do_mynnsfclay: True - imfdeepcnv: -1 - imfshalcnv: -1 - lsm: 2 - lsoil_lsm: 4 FV3_HRRR: fv_core_nml: @@ -63,7 +51,7 @@ FV3_HRRR: nord_tr: 2 nrows_blend: 10 gfs_physics_nml: - <<: *gsd_sar_phys + <<: *RRFS_v1alpha_phys cdmbgwd: [3.5, 1.0] do_mynnsfclay: True do_sfcperts: !!python/none @@ -73,9 +61,9 @@ FV3_HRRR: do_gsl_drag_ls_bl: True iaer: 5111 icliq_sw: 2 - imfdeepcnv: -1 - imfshalcnv: -1 iovr: 3 + lsm: 3 + lsoil_lsm: 9 FV3_GFS_2017_gfdlmp: atmos_model_nml: @@ -89,6 +77,7 @@ FV3_GFS_2017_gfdlmp: fv_debug: False k_split: 6 n_split: 6 + nord: 2 nord_zs_filter: !!python/none range_warn: False vtdm4: 0.075 @@ -394,89 +383,3 @@ FV3_GFS_v16: ldebug: False surf_map_nml: !!python/none -FV3_CPT_v0: - fv_core_nml: - <<: *gfs_v15_fv_core - dnats: 0 - fv_sg_adj: 450 - k_split: 6 - n_split: 6 - n_sponge: 24 - nudge_qv: False - rf_fast: !!python/none - gfdl_cloud_microphysics_nml: - <<: *gfs_gfdl_cloud_mp - mp_time: 150.0 - sedi_transport: True - tau_i2s: 1500.0 - tau_l2v: 225.0 - tau_v2l: 150.0 - gfs_physics_nml: - aero_in: False - bl_mynn_edmf: !!python/none - bl_mynn_edmf_mom: !!python/none - bl_mynn_tkeadvect: !!python/none - ccwf: [1.0, 1.0] - crtrh: [0.93, 0.9, 0.95] - cs_parm: [8.0, 4.0, 1000.0, 3500.0, 20.0, 1.0, 0.0, 1.0, 0.6, 0.0] - cscnv: True - ctei_rm: [0.6, 0.23] - dlqf: [0.25, 0.05] - do_aw: True - do_sb_physics: True - do_mynnedmf: !!python/none - do_mynnsfclay: !!python/none - do_shoc: False - fhcyc: 0.0 - fhlwr: 3600.0 - fhswr: 3600.0 - fprcp: 2 - hybedmf: True - iccn: False - icloud_bl: !!python/none - imp_physics: 10 - imfshalcnv: 2 - imfdeepcnv: -1 - iopt_alb: 2 - iopt_btr: 1 - iopt_crs: 1 - iopt_dveg: 2 - iopt_frz: 1 - iopt_inf: 1 - iopt_rad: 1 - iopt_run: 1 - iopt_sfc: 1 - iopt_snf: 4 - iopt_stc: 1 - iopt_tbot: 2 - lndp_type: !!python/none - lradar: False - lsm: 1 - lsoil: !!python/none - lsoil_lsm: !!python/none - ltaerosol: False - max_lat: 4000 - max_lon: 8000 - mg_dcs: 200.0 - mg_do_graupel: True - mg_do_hail: False - mg_do_ice_gmao: False - mg_do_liq_liu: True - mg_qcvar: 1.0 - mg_ts_auto_ice: [180.0, 900.0] - n_var_lndp: !!python/none - ncld: 2 - pdfflag: 4 - random_clds: True - ras: False - rhcmax: 0.9999999 - shal_cnv: True - shcnvcw: False - shoc_cld: False - shoc_parm: [7000.0, 1.0, 2.0, 0.7, -999.0] - ttendlim: !!python/none - xkzm_h: 0.5 - xkzm_m: 0.5 - xkzm_s: 1.0 - surf_map_nml: !!python/none - diff --git a/ush/templates/FV3LAM_wflow.xml b/ush/templates/FV3LAM_wflow.xml index 05b97e7e8..48e53d81a 100644 --- a/ush/templates/FV3LAM_wflow.xml +++ b/ush/templates/FV3LAM_wflow.xml @@ -177,7 +177,7 @@ MODULES_RUN_TASK_FP script. &RSRV_DEFAULT; &LOAD_MODULES_RUN_TASK_FP; "&MAKE_GRID_TN;" "&JOBSDIR;/JREGIONAL_MAKE_GRID" - {%- if machine in ["WCOSS_DELL_P3", "WCOSS_CRAY"] %} + {%- if machine in ["WCOSS_DELL_P3"] %} {{ nnodes_make_grid }}:ppn=1 {%- else %} {{ nnodes_make_grid }}:ppn={{ ppn_make_grid }} @@ -200,7 +200,7 @@ MODULES_RUN_TASK_FP script. &RSRV_DEFAULT; &LOAD_MODULES_RUN_TASK_FP; "&MAKE_OROG_TN;" "&JOBSDIR;/JREGIONAL_MAKE_OROG" - {%- if machine in ["WCOSS_DELL_P3", "WCOSS_CRAY"] %} + {%- if machine in ["WCOSS_DELL_P3"] %} {{ nnodes_make_orog }}:ppn=1 {%- else %} {{ nnodes_make_orog }}:ppn={{ ppn_make_orog }} @@ -264,9 +264,6 @@ MODULES_RUN_TASK_FP script. &RSRV_HPSS; - {%- if machine in ["WCOSS_CRAY"] %} - - {%- endif %} &LOAD_MODULES_RUN_TASK_FP; "&GET_EXTRN_ICS_TN;" "&JOBSDIR;/JREGIONAL_GET_EXTRN_MDL_FILES" {%- if machine in ["WCOSS_DELL_P3"] %} 2048M-R affinity[core] @@ -294,9 +291,6 @@ MODULES_RUN_TASK_FP script. &RSRV_HPSS; - {%- if machine in ["WCOSS_CRAY"] %} - - {%- endif %} &LOAD_MODULES_RUN_TASK_FP; "&GET_EXTRN_LBCS_TN;" "&JOBSDIR;/JREGIONAL_GET_EXTRN_MDL_FILES" {%- if machine in ["WCOSS_DELL_P3"] %} 2048M-R affinity[core] @@ -698,9 +692,6 @@ the tag to be identical to the ones above for other output times. &RSRV_HPSS; - {%- if machine in ["WCOSS_CRAY"] %} - - {%- endif %} &LOAD_MODULES_RUN_TASK_FP; "&GET_OBS;" "&JOBSDIR;/JREGIONAL_GET_OBS_CCPA" {%- if machine in ["WCOSS_DELL_P3"] %} 2048M-R affinity[core] @@ -731,9 +722,6 @@ the tag to be identical to the ones above for other output times. &RSRV_HPSS; - {%- if machine in ["WCOSS_CRAY"] %} - - {%- endif %} &LOAD_MODULES_RUN_TASK_FP; "&GET_OBS;" "&JOBSDIR;/JREGIONAL_GET_OBS_MRMS" {%- if machine in ["WCOSS_DELL_P3"] %} 2048M-R affinity[core] @@ -765,9 +753,6 @@ the tag to be identical to the ones above for other output times. &RSRV_HPSS; - {%- if machine in ["WCOSS_CRAY"] %} - - {%- endif %} &LOAD_MODULES_RUN_TASK_FP; "&GET_OBS;" "&JOBSDIR;/JREGIONAL_GET_OBS_NDAS" {%- if machine in ["WCOSS_DELL_P3"] %} 2048M-R affinity[core] diff --git a/ush/templates/diag_table.FV3_CPT_v0 b/ush/templates/diag_table.FV3_CPT_v0 deleted file mode 100644 index 1145d17a3..000000000 --- a/ush/templates/diag_table.FV3_CPT_v0 +++ /dev/null @@ -1,312 +0,0 @@ -{{ starttime.strftime("%Y%m%d.%H") }}Z.{{ cres }}.32bit.non-hydro.regional -{{ starttime.strftime("%Y %m %d %H %M %S") }} - -"grid_spec", -1, "months", 1, "days", "time" -"atmos_4xdaily", 6, "hours", 1, "days", "time" -"atmos_static", -1, "hours", 1, "hours", "time" -"fv3_history", 1, "years", 1, "hours", "time" -"fv3_history2d", 1, "years", 1, "hours", "time" - -# -#======================= -# ATMOSPHERE DIAGNOSTICS -#======================= -### -# grid_spec -### - "dynamics", "grid_lon", "grid_lon", "grid_spec", "all", .false., "none", 2, - "dynamics", "grid_lat", "grid_lat", "grid_spec", "all", .false., "none", 2, - "dynamics", "grid_lont", "grid_lont", "grid_spec", "all", .false., "none", 2, - "dynamics", "grid_latt", "grid_latt", "grid_spec", "all", .false., "none", 2, - "dynamics", "area", "area", "grid_spec", "all", .false., "none", 2, -### -# 4x daily output -### - "dynamics", "slp", "slp", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "vort850", "vort850", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "vort200", "vort200", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "us", "us", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "u1000", "u1000", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "u850", "u850", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "u700", "u700", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "u500", "u500", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "u200", "u200", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "u100", "u100", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "u50", "u50", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "u10", "u10", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "vs", "vs", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "v1000", "v1000", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "v850", "v850", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "v700", "v700", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "v500", "v500", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "v200", "v200", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "v100", "v100", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "v50", "v50", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "v10", "v10", "atmos_4xdaily", "all", .false., "none", 2 -#### - "dynamics", "tm", "tm", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "t1000", "t1000", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "t850", "t850", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "t700", "t700", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "t500", "t500", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "t200", "t200", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "t100", "t100", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "t50", "t50", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "t10", "t10", "atmos_4xdaily", "all", .false., "none", 2 -#### - "dynamics", "h1000", "h1000", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "h850", "h850", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "h700", "h700", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "h500", "h500", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "h200", "h200", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "h100", "h100", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "h50", "h50", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "h10", "h10", "atmos_4xdaily", "all", .false., "none", 2 -#### -#"dynamics", "w1000", "w1000", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "w850", "w850", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "w700", "w700", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "w500", "w500", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "w200", "w200", "atmos_4xdaily", "all", .false., "none", 2 -#### - "dynamics", "q1000", "q1000", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "q850", "q850", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "q700", "q700", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "q500", "q500", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "q200", "q200", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "q100", "q100", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "q50", "q50", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "q10", "q10", "atmos_4xdaily", "all", .false., "none", 2 -#### -#"dynamics", "rh1000", "rh1000", "atmos_4xdaily", "all", .false., "none", 2 -#"dynamics", "rh850", "rh850", "atmos_4xdaily", "all", .false., "none", 2 -#"dynamics", "rh700", "rh700", "atmos_4xdaily", "all", .false., "none", 2 -#"dynamics", "rh500", "rh500", "atmos_4xdaily", "all", .false., "none", 2 -#"dynamics", "rh200", "rh200", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "omg1000", "omg1000", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "omg850", "omg850", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "omg700", "omg700", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "omg500", "omg500", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "omg200", "omg200", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "omg100", "omg100", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "omg50", "omg50", "atmos_4xdaily", "all", .false., "none", 2 - "dynamics", "omg10", "omg10", "atmos_4xdaily", "all", .false., "none", 2 -### -# gfs static data -### - "dynamics", "pk", "pk", "atmos_static", "all", .false., "none", 2 - "dynamics", "bk", "bk", "atmos_static", "all", .false., "none", 2 - "dynamics", "hyam", "hyam", "atmos_static", "all", .false., "none", 2 - "dynamics", "hybm", "hybm", "atmos_static", "all", .false., "none", 2 - "dynamics", "zsurf", "zsurf", "atmos_static", "all", .false., "none", 2 -### -# FV3 variabls needed for NGGPS evaluation -### -"gfs_dyn", "ucomp", "ugrd", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "vcomp", "vgrd", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "sphum", "spfh", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "temp", "tmp", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "liq_wat", "clwmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "o3mr", "o3mr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "delp", "dpres", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "delz", "delz", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "w", "dzdt", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "ice_wat", "icmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "rainwat", "rwmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "snowwat", "snmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "graupel", "grle", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "water_nc", "spncw", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "ice_nc", "spnci", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "rain_nc", "spncr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "snow_nc", "spncs", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "graupel_nc", "graupelnc", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "sgs_tke", "tke", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "ps", "pressfc", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "hs", "hgtsfc", "fv3_history", "all", .false., "none", 2 - -"gfs_phys", "ALBDO_ave", "albdo_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cnvprcp_ave", "cprat_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "totprcp_ave", "prate_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DLWRF", "dlwrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DLWRFI", "dlwrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ULWRF", "ulwrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ULWRFI", "ulwrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DSWRF", "dswrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DSWRFI", "dswrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "USWRF", "uswrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "USWRFI", "uswrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DSWRFtoa", "dswrf_avetoa","fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "USWRFtoa", "uswrf_avetoa","fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ULWRFtoa", "ulwrf_avetoa","fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "gflux_ave", "gflux_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "hpbl", "hpbl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "lhtfl_ave", "lhtfl_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "shtfl_ave", "shtfl_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "pwat", "pwatclm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "soilm", "soilm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_aveclm", "tcdc_aveclm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avebndcl", "tcdc_avebndcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avehcl", "tcdc_avehcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avelcl", "tcdc_avelcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avemcl", "tcdc_avemcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDCcnvcl", "tcdccnvcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PREScnvclt", "prescnvclt", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PREScnvclb", "prescnvclb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avehct", "pres_avehct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avehcb", "pres_avehcb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TEMP_avehct", "tmp_avehct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avemct", "pres_avemct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avemcb", "pres_avemcb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TEMP_avemct", "tmp_avemct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avelct", "pres_avelct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avelcb", "pres_avelcb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TEMP_avelct", "tmp_avelct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "u-gwd_ave", "u-gwd_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "v-gwd_ave", "v-gwd_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "dusfc", "uflx_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "dvsfc", "vflx_ave", "fv3_history2d", "all", .false., "none", 2 - -"gfs_phys", "psurf", "pressfc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "u10m", "ugrd10m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "v10m", "vgrd10m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "crain", "crain", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tprcp", "tprcp", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "hgtsfc", "orog", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "weasd", "weasd", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "f10m", "f10m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "q2m", "spfh2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "t2m", "tmp2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tsfc", "tmpsfc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "vtype", "vtype", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "stype", "sotyp", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slmsksfc", "land", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "vfracsfc", "veg", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "zorlsfc", "sfcr", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "uustar", "fricv", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt1", "soilt1" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt2", "soilt2" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt3", "soilt3" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt4", "soilt4" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw1", "soilw1" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw2", "soilw2" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw3", "soilw3" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw4", "soilw4" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_1", "soill1", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_2", "soill2", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_3", "soill3", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_4", "soill4", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slope", "sltyp", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alnsf", "alnsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alnwf", "alnwf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alvsf", "alvsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alvwf", "alvwf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "canopy", "cnwat", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "facsf", "facsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "facwf", "facwf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "ffhh", "ffhh", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "ffmm", "ffmm", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "fice", "icec", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "hice", "icetk", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "snoalb", "snoalb", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "shdmax", "shdmax", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "shdmin", "shdmin", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "snowd", "snod", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tg3", "tg3", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tisfc", "tisfc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tref", "tref", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "z_c", "zc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "c_0", "c0", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "c_d", "cd", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "w_0", "w0", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "w_d", "wd", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xt", "xt", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xz", "xz", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "dt_cool", "dtcool", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xs", "xs", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xu", "xu", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xv", "xv", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xtts", "xtts", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xzts", "xzts", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "d_conv", "dconv", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "qrain", "qrain", "fv3_history2d", "all", .false., "none", 2 - -"gfs_phys", "acond", "acond", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cduvb_ave", "cduvb_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cpofp", "cpofp", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "duvb_ave", "duvb_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csdlf_ave", "csdlf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csusf_ave", "csusf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csusf_avetoa", "csusftoa", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csdsf_ave", "csdsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csulf_ave", "csulf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csulf_avetoa", "csulftoa", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cwork_ave", "cwork_aveclm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "evbs_ave", "evbs_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "evcw_ave", "evcw_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "fldcp", "fldcp", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "hgt_hyblev1", "hgt_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "spfh_hyblev1", "spfh_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ugrd_hyblev1", "ugrd_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "vgrd_hyblev1", "vgrd_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "tmp_hyblev1", "tmp_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "gfluxi", "gflux", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "lhtfl", "lhtfl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "shtfl", "shtfl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "pevpr", "pevpr", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "pevpr_ave", "pevpr_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "sbsno_ave", "sbsno_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "sfexc", "sfexc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "snohf", "snohf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "snowc_ave", "snowc_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "spfhmax2m", "spfhmax_max2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "spfhmin2m", "spfhmin_min2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "tmpmax2m", "tmax_max2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "tmpmin2m", "tmin_min2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ssrun_acc", "ssrun_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "sunsd_acc", "sunsd_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "watr_acc", "watr_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "wilt", "wilt", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "vbdsf_ave", "vbdsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "vddsf_ave", "vddsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "nbdsf_ave", "nbdsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "nddsf_ave", "nddsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "trans_ave", "trans_ave", "fv3_history2d", "all", .false., "none", 2 -# Stochastic physics -"gfs_phys", "sppt_wts", "sppt_wts", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "skebu_wts", "skebu_wts", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "skebv_wts", "skebv_wts", "fv3_history", "all", .false., "none", 2 -"dynamics", "diss_est", "diss_est", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "shum_wts", "shum_wts", "fv3_history", "all", .false., "none", 2 -#============================================================================================= -# -#====> This file can be used with diag_manager/v2.0a (or higher) <==== -# -# -# FORMATS FOR FILE ENTRIES (not all input values are used) -# ------------------------ -# -#"file_name", output_freq, "output_units", format, "time_units", "long_name", -# -# -#output_freq: > 0 output frequency in "output_units" -# = 0 output frequency every time step -# =-1 output frequency at end of run -# -#output_units = units used for output frequency -# (years, months, days, minutes, hours, seconds) -# -#time_units = units used to label the time axis -# (days, minutes, hours, seconds) -# -# -# FORMAT FOR FIELD ENTRIES (not all input values are used) -# ------------------------ -# -#"module_name", "field_name", "output_name", "file_name" "time_sampling", time_avg, "other_opts", packing -# -#time_avg = .true. or .false. -# -#packing = 1 double precision -# = 2 float -# = 4 packed 16-bit integers -# = 8 packed 1-byte (not tested?) diff --git a/ush/templates/diag_table.FV3_GFS_2017_gfdlmp b/ush/templates/diag_table.FV3_GFS_2017_gfdlmp old mode 100644 new mode 100755 index f24f648d9..1b46eeb99 --- a/ush/templates/diag_table.FV3_GFS_2017_gfdlmp +++ b/ush/templates/diag_table.FV3_GFS_2017_gfdlmp @@ -274,7 +274,6 @@ "gfs_phys", "sppt_wts", "sppt_wts", "fv3_history", "all", .false., "none", 2 "gfs_phys", "skebu_wts", "skebu_wts", "fv3_history", "all", .false., "none", 2 "gfs_phys", "skebv_wts", "skebv_wts", "fv3_history", "all", .false., "none", 2 -"dynamics", "diss_est", "diss_est", "fv3_history", "all", .false., "none", 2 "gfs_phys", "shum_wts", "shum_wts", "fv3_history", "all", .false., "none", 2 #============================================================================================= # diff --git a/ush/templates/diag_table.FV3_GFS_v15p2 b/ush/templates/diag_table.FV3_GFS_v15p2 old mode 100644 new mode 100755 index cde3d0f75..d4b1af532 --- a/ush/templates/diag_table.FV3_GFS_v15p2 +++ b/ush/templates/diag_table.FV3_GFS_v15p2 @@ -274,7 +274,6 @@ "gfs_phys", "sppt_wts", "sppt_wts", "fv3_history", "all", .false., "none", 2 "gfs_phys", "skebu_wts", "skebu_wts", "fv3_history", "all", .false., "none", 2 "gfs_phys", "skebv_wts", "skebv_wts", "fv3_history", "all", .false., "none", 2 -"dynamics", "diss_est", "diss_est", "fv3_history", "all", .false., "none", 2 "gfs_phys", "shum_wts", "shum_wts", "fv3_history", "all", .false., "none", 2 #============================================================================================= diff --git a/ush/templates/diag_table.FV3_GFS_v16 b/ush/templates/diag_table.FV3_GFS_v16 old mode 100644 new mode 100755 index cde3d0f75..d4b1af532 --- a/ush/templates/diag_table.FV3_GFS_v16 +++ b/ush/templates/diag_table.FV3_GFS_v16 @@ -274,7 +274,6 @@ "gfs_phys", "sppt_wts", "sppt_wts", "fv3_history", "all", .false., "none", 2 "gfs_phys", "skebu_wts", "skebu_wts", "fv3_history", "all", .false., "none", 2 "gfs_phys", "skebv_wts", "skebv_wts", "fv3_history", "all", .false., "none", 2 -"dynamics", "diss_est", "diss_est", "fv3_history", "all", .false., "none", 2 "gfs_phys", "shum_wts", "shum_wts", "fv3_history", "all", .false., "none", 2 #============================================================================================= diff --git a/ush/templates/diag_table.FV3_GSD_SAR b/ush/templates/diag_table.FV3_GSD_SAR deleted file mode 100644 index 0d2849c34..000000000 --- a/ush/templates/diag_table.FV3_GSD_SAR +++ /dev/null @@ -1,362 +0,0 @@ -{{ starttime.strftime("%Y%m%d.%H") }}Z.{{ cres }}.32bit.non-hydro.regional -{{ starttime.strftime("%Y %m %d %H %M %S") }} - -"grid_spec", -1, "months", 1, "days", "time" -"atmos_static", -1, "hours", 1, "hours", "time" -#"atmos_4xdaily", 1, "hours", 1, "days", "time" -"fv3_history", 1, "years", 1, "hours", "time" -"fv3_history2d", 1, "years", 1, "hours", "time" - -# -#======================= -# ATMOSPHERE DIAGNOSTICS -#======================= -### -# grid_spec -### - "dynamics", "grid_lon", "grid_lon", "grid_spec", "all", .false., "none", 2, - "dynamics", "grid_lat", "grid_lat", "grid_spec", "all", .false., "none", 2, - "dynamics", "grid_lont", "grid_lont", "grid_spec", "all", .false., "none", 2, - "dynamics", "grid_latt", "grid_latt", "grid_spec", "all", .false., "none", 2, - "dynamics", "area", "area", "grid_spec", "all", .false., "none", 2, -### -# 4x daily output -### -# "dynamics", "slp", "slp", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "vort850", "vort850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "vort200", "vort200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "us", "us", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u1000", "u1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u850", "u850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u700", "u700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u500", "u500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u200", "u200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u100", "u100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u50", "u50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u10", "u10", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "vs", "vs", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v1000", "v1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v850", "v850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v700", "v700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v500", "v500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v200", "v200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v100", "v100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v50", "v50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v10", "v10", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "tm", "tm", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t1000", "t1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t850", "t850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t700", "t700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t500", "t500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t200", "t200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t100", "t100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t50", "t50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t10", "t10", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "z1000", "z1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z850", "z850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z700", "z700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z500", "z500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z200", "z200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z100", "z100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z50", "z50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z10", "z10", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "w1000", "w1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "w850", "w850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "w700", "w700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "w500", "w500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "w200", "w200", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "q1000", "q1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q850", "q850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q700", "q700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q500", "q500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q200", "q200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q100", "q100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q50", "q50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q10", "q10", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "rh1000", "rh1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "rh850", "rh850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "rh700", "rh700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "rh500", "rh500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "rh200", "rh200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg1000", "omg1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg850", "omg850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg700", "omg700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg500", "omg500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg200", "omg200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg100", "omg100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg50", "omg50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg10", "omg10", "atmos_4xdaily", "all", .false., "none", 2 -### -# gfs static data -### - "dynamics", "pk", "pk", "atmos_static", "all", .false., "none", 2 - "dynamics", "bk", "bk", "atmos_static", "all", .false., "none", 2 - "dynamics", "hyam", "hyam", "atmos_static", "all", .false., "none", 2 - "dynamics", "hybm", "hybm", "atmos_static", "all", .false., "none", 2 - "dynamics", "zsurf", "zsurf", "atmos_static", "all", .false., "none", 2 -### -# FV3 variabls needed for NGGPS evaluation -### -"gfs_dyn", "ucomp", "ugrd", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "vcomp", "vgrd", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "sphum", "spfh", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "temp", "tmp", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "liq_wat", "clwmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "o3mr", "o3mr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "delp", "dpres", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "delz", "delz", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "w", "dzdt", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "ice_wat", "icmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "rainwat", "rwmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "snowwat", "snmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "graupel", "grle", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "ps", "pressfc", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "hs", "hgtsfc", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "refl_10cm" "refl_10cm" "fv3_history", "all", .false., "none", 2 -"gfs_phys", "cldfra", "cldfra", "fv3_history", "all", .false., "none", 2 -#"gfs_dyn", "ice_nc", "nicp", "fv3_history", "all", .false., "none", 2 -#"gfs_dyn", "rain_nc", "ntrnc", "fv3_history", "all", .false., "none", 2 - -"gfs_dyn", "wmaxup", "upvvelmax", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "wmaxdn", "dnvvelmax", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "uhmax03", "uhmax03", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "uhmax25", "uhmax25", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "uhmin03", "uhmin03", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "uhmin25", "uhmin25", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "maxvort01", "maxvort01", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "maxvort02", "maxvort02", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "maxvorthy1", "maxvorthy1", "fv3_history", "all", .false., "none", 2 - -"gfs_phys", "ALBDO_ave", "albdo_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cnvprcp_ave", "cprat_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cnvprcpb_ave", "cpratb_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "totprcp_ave", "prate_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "totprcpb_ave", "prateb_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DLWRF", "dlwrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DLWRFI", "dlwrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ULWRF", "ulwrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ULWRFI", "ulwrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DSWRF", "dswrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DSWRFI", "dswrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "USWRF", "uswrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "USWRFI", "uswrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DSWRFtoa", "dswrf_avetoa","fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "USWRFtoa", "uswrf_avetoa","fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ULWRFtoa", "ulwrf_avetoa","fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "gflux_ave", "gflux_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "hpbl", "hpbl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "lhtfl_ave", "lhtfl_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "shtfl_ave", "shtfl_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "pwat", "pwatclm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "soilm", "soilm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_aveclm", "tcdc_aveclm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avebndcl", "tcdc_avebndcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avehcl", "tcdc_avehcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avelcl", "tcdc_avelcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avemcl", "tcdc_avemcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDCcnvcl", "tcdccnvcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PREScnvclt", "prescnvclt", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PREScnvclb", "prescnvclb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avehct", "pres_avehct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avehcb", "pres_avehcb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TEMP_avehct", "tmp_avehct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avemct", "pres_avemct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avemcb", "pres_avemcb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TEMP_avemct", "tmp_avemct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avelct", "pres_avelct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avelcb", "pres_avelcb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TEMP_avelct", "tmp_avelct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "u-gwd_ave", "u-gwd_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "v-gwd_ave", "v-gwd_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "dusfc", "uflx_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "dvsfc", "vflx_ave", "fv3_history2d", "all", .false., "none", 2 -#"gfs_phys", "cnvw", "cnvcldwat", "fv3_history2d", "all", .false., "none", 2 - -"gfs_phys", "psurf", "pressfc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "u10m", "ugrd10m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "v10m", "vgrd10m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "crain", "crain", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tprcp", "tprcp", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "hgtsfc", "orog", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "weasd", "weasd", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "f10m", "f10m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "q2m", "spfh2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "t2m", "tmp2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tsfc", "tmpsfc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "vtype", "vtype", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "stype", "sotyp", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slmsksfc", "land", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "vfracsfc", "veg", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "zorlsfc", "sfcr", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "uustar", "fricv", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt1", "soilt1" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt2", "soilt2" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt3", "soilt3" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt4", "soilt4" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt5", "soilt5" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt6", "soilt6" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt7", "soilt7" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt8", "soilt8" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt9", "soilt9" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw1", "soilw1" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw2", "soilw2" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw3", "soilw3" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw4", "soilw4" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw5", "soilw5" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw6", "soilw6" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw7", "soilw7" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw8", "soilw8" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw9", "soilw9" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_1", "soill1", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_2", "soill2", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_3", "soill3", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_4", "soill4", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_5", "soill5", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_6", "soill6", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_7", "soill7", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_8", "soill8", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_9", "soill9", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slope", "sltyp", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alnsf", "alnsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alnwf", "alnwf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alvsf", "alvsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alvwf", "alvwf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "canopy", "cnwat", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "facsf", "facsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "facwf", "facwf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "ffhh", "ffhh", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "ffmm", "ffmm", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "fice", "icec", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "hice", "icetk", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "snoalb", "snoalb", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "shdmax", "shdmax", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "shdmin", "shdmin", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "snowd", "snod", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tg3", "tg3", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tisfc", "tisfc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tref", "tref", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "z_c", "zc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "c_0", "c0", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "c_d", "cd", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "w_0", "w0", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "w_d", "wd", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xt", "xt", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xz", "xz", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "dt_cool", "dtcool", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xs", "xs", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xu", "xu", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xv", "xv", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xtts", "xtts", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xzts", "xzts", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "d_conv", "dconv", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "qrain", "qrain", "fv3_history2d", "all", .false., "none", 2 - -"gfs_phys", "acond", "acond", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cduvb_ave", "cduvb_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cpofp", "cpofp", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "duvb_ave", "duvb_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csdlf_ave", "csdlf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csusf_ave", "csusf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csusf_avetoa", "csusftoa", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csdsf_ave", "csdsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csulf_ave", "csulf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csulf_avetoa", "csulftoa", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cwork_ave", "cwork_aveclm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "evbs_ave", "evbs_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "evcw_ave", "evcw_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "fldcp", "fldcp", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "hgt_hyblev1", "hgt_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "spfh_hyblev1", "spfh_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ugrd_hyblev1", "ugrd_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "vgrd_hyblev1", "vgrd_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "tmp_hyblev1", "tmp_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "gfluxi", "gflux", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "lhtfl", "lhtfl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "shtfl", "shtfl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "pevpr", "pevpr", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "pevpr_ave", "pevpr_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "sbsno_ave", "sbsno_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "sfexc", "sfexc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "snohf", "snohf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "snowc_ave", "snowc_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "spfhmax2m", "spfhmax_max2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "spfhmin2m", "spfhmin_min2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "tmpmax2m", "tmax_max2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "tmpmin2m", "tmin_min2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ssrun_acc", "ssrun_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "sunsd_acc", "sunsd_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "watr_acc", "watr_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "wilt", "wilt", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "vbdsf_ave", "vbdsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "vddsf_ave", "vddsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "nbdsf_ave", "nbdsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "nddsf_ave", "nddsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "trans_ave", "trans_ave", "fv3_history2d", "all", .false., "none", 2 -# Aerosols (CCN, IN) from Thompson microphysics -"gfs_phys", "nwfa", "nwfa", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "nifa", "nifa", "fv3_history", "all", .false., "none", 2 -"gfs_sfc", "nwfa2d", "nwfa2d", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "nifa2d", "nifa2d", "fv3_history2d", "all", .false., "none", 2 -# Cloud effective radii from Thompson and WSM6 microphysics -"gfs_phys", "cleffr", "cleffr", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "cieffr", "cieffr", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "cseffr", "cseffr", "fv3_history", "all", .false., "none", 2 -# Prognostic/diagnostic variables from MYNN -"gfs_phys", "QC_BL", "qc_bl", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "CLDFRA_BL", "cldfra_bl", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "EL_PBL", "el_pbl", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "QKE", "qke", "fv3_history", "all", .false., "none", 2 -"gfs_sfc", "maxmf", "maxmf", "fv3_history2d", "all", .false., "none", 2 -#"gfs_sfc", "nupdraft", "nupdrafts", "fv3_history2d", "all", .false., "none", 2 -#"gfs_sfc", "ktop_shallow", "ktop_shallow", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "zol", "zol", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "flhc", "flhc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "flqc", "flqc", "fv3_history2d", "all", .false., "none", 2 -# Prognostic/diagnostic variables from RUC LSM -"gfs_sfc", "snowfall_acc", "snowfall_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "swe_snowfall_acc", "swe_snowfall_acc", "fv3_history2d", "all", .false., "none", 2 -# Stochastic physics -"gfs_phys", "sppt_wts", "sppt_wts", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "skebu_wts", "skebu_wts", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "skebv_wts", "skebv_wts", "fv3_history", "all", .false., "none", 2 -"dynamics", "diss_est", "diss_est", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "shum_wts", "shum_wts", "fv3_history", "all", .false., "none", 2 - -#============================================================================================= -# -#====> This file can be used with diag_manager/v2.0a (or higher) <==== -# -# -# FORMATS FOR FILE ENTRIES (not all input values are used) -# ------------------------ -# -#"file_name", output_freq, "output_units", format, "time_units", "long_name", -# -# -#output_freq: > 0 output frequency in "output_units" -# = 0 output frequency every time step -# =-1 output frequency at end of run -# -#output_units = units used for output frequency -# (years, months, days, minutes, hours, seconds) -# -#time_units = units used to label the time axis -# (days, minutes, hours, seconds) -# -# -# FORMAT FOR FIELD ENTRIES (not all input values are used) -# ------------------------ -# -#"module_name", "field_name", "output_name", "file_name" "time_sampling", time_avg, "other_opts", packing -# -#time_avg = .true. or .false. -# -#packing = 1 double precision -# = 2 float -# = 4 packed 16-bit integers -# = 8 packed 1-byte (not tested?) diff --git a/ush/templates/diag_table.FV3_GSD_SAR_v1 b/ush/templates/diag_table.FV3_GSD_SAR_v1 deleted file mode 100644 index 99b765291..000000000 --- a/ush/templates/diag_table.FV3_GSD_SAR_v1 +++ /dev/null @@ -1,341 +0,0 @@ -{{ starttime.strftime("%Y%m%d.%H") }}Z.{{ cres }}.32bit.non-hydro.regional -{{ starttime.strftime("%Y %m %d %H %M %S") }} - -"grid_spec", -1, "months", 1, "days", "time" -"atmos_static", -1, "hours", 1, "hours", "time" -#"atmos_4xdaily", 1, "hours", 1, "days", "time" -"fv3_history", 1, "years", 1, "hours", "time" -"fv3_history2d", 1, "years", 1, "hours", "time" - -# -#======================= -# ATMOSPHERE DIAGNOSTICS -#======================= -### -# grid_spec -### - "dynamics", "grid_lon", "grid_lon", "grid_spec", "all", .false., "none", 2, - "dynamics", "grid_lat", "grid_lat", "grid_spec", "all", .false., "none", 2, - "dynamics", "grid_lont", "grid_lont", "grid_spec", "all", .false., "none", 2, - "dynamics", "grid_latt", "grid_latt", "grid_spec", "all", .false., "none", 2, - "dynamics", "area", "area", "grid_spec", "all", .false., "none", 2, -### -# 4x daily output -### -# "dynamics", "slp", "slp", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "vort850", "vort850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "vort200", "vort200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "us", "us", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u1000", "u1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u850", "u850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u700", "u700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u500", "u500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u200", "u200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u100", "u100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u50", "u50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u10", "u10", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "vs", "vs", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v1000", "v1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v850", "v850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v700", "v700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v500", "v500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v200", "v200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v100", "v100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v50", "v50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v10", "v10", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "tm", "tm", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t1000", "t1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t850", "t850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t700", "t700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t500", "t500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t200", "t200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t100", "t100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t50", "t50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t10", "t10", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "z1000", "z1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z850", "z850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z700", "z700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z500", "z500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z200", "z200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z100", "z100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z50", "z50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z10", "z10", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "w1000", "w1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "w850", "w850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "w700", "w700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "w500", "w500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "w200", "w200", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "q1000", "q1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q850", "q850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q700", "q700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q500", "q500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q200", "q200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q100", "q100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q50", "q50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q10", "q10", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "rh1000", "rh1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "rh850", "rh850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "rh700", "rh700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "rh500", "rh500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "rh200", "rh200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg1000", "omg1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg850", "omg850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg700", "omg700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg500", "omg500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg200", "omg200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg100", "omg100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg50", "omg50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg10", "omg10", "atmos_4xdaily", "all", .false., "none", 2 -### -# gfs static data -### - "dynamics", "pk", "pk", "atmos_static", "all", .false., "none", 2 - "dynamics", "bk", "bk", "atmos_static", "all", .false., "none", 2 - "dynamics", "hyam", "hyam", "atmos_static", "all", .false., "none", 2 - "dynamics", "hybm", "hybm", "atmos_static", "all", .false., "none", 2 - "dynamics", "zsurf", "zsurf", "atmos_static", "all", .false., "none", 2 -### -# FV3 variabls needed for NGGPS evaluation -### -"gfs_dyn", "ucomp", "ugrd", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "vcomp", "vgrd", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "sphum", "spfh", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "temp", "tmp", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "liq_wat", "clwmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "o3mr", "o3mr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "delp", "dpres", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "delz", "delz", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "w", "dzdt", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "ice_wat", "icmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "rainwat", "rwmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "snowwat", "snmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "graupel", "grle", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "ps", "pressfc", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "hs", "hgtsfc", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "refl_10cm" "refl_10cm" "fv3_history", "all", .false., "none", 2 -"gfs_phys", "cldfra", "cldfra", "fv3_history", "all", .false., "none", 2 -#"gfs_dyn", "ice_nc", "nicp", "fv3_history", "all", .false., "none", 2 -#"gfs_dyn", "rain_nc", "ntrnc", "fv3_history", "all", .false., "none", 2 - -"gfs_dyn", "wmaxup", "upvvelmax", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "wmaxdn", "dnvvelmax", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "uhmax03", "uhmax03", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "uhmax25", "uhmax25", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "uhmin03", "uhmin03", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "uhmin25", "uhmin25", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "maxvort01", "maxvort01", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "maxvort02", "maxvort02", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "maxvorthy1", "maxvorthy1", "fv3_history", "all", .false., "none", 2 - -"gfs_phys", "ALBDO_ave", "albdo_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cnvprcp_ave", "cprat_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cnvprcpb_ave", "cpratb_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "totprcp_ave", "prate_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "totprcpb_ave", "prateb_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DLWRF", "dlwrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DLWRFI", "dlwrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ULWRF", "ulwrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ULWRFI", "ulwrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DSWRF", "dswrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DSWRFI", "dswrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "USWRF", "uswrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "USWRFI", "uswrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DSWRFtoa", "dswrf_avetoa","fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "USWRFtoa", "uswrf_avetoa","fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ULWRFtoa", "ulwrf_avetoa","fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "gflux_ave", "gflux_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "hpbl", "hpbl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "lhtfl_ave", "lhtfl_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "shtfl_ave", "shtfl_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "pwat", "pwatclm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "soilm", "soilm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_aveclm", "tcdc_aveclm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avebndcl", "tcdc_avebndcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avehcl", "tcdc_avehcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avelcl", "tcdc_avelcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avemcl", "tcdc_avemcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDCcnvcl", "tcdccnvcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PREScnvclt", "prescnvclt", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PREScnvclb", "prescnvclb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avehct", "pres_avehct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avehcb", "pres_avehcb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TEMP_avehct", "tmp_avehct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avemct", "pres_avemct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avemcb", "pres_avemcb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TEMP_avemct", "tmp_avemct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avelct", "pres_avelct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avelcb", "pres_avelcb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TEMP_avelct", "tmp_avelct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "u-gwd_ave", "u-gwd_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "v-gwd_ave", "v-gwd_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "dusfc", "uflx_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "dvsfc", "vflx_ave", "fv3_history2d", "all", .false., "none", 2 -#"gfs_phys", "cnvw", "cnvcldwat", "fv3_history2d", "all", .false., "none", 2 - -"gfs_phys", "psurf", "pressfc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "u10m", "ugrd10m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "v10m", "vgrd10m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "crain", "crain", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tprcp", "tprcp", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "hgtsfc", "orog", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "weasd", "weasd", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "f10m", "f10m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "q2m", "spfh2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "t2m", "tmp2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tsfc", "tmpsfc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "vtype", "vtype", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "stype", "sotyp", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slmsksfc", "land", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "vfracsfc", "veg", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "zorlsfc", "sfcr", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "uustar", "fricv", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt1", "soilt1" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt2", "soilt2" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt3", "soilt3" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt4", "soilt4" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw1", "soilw1" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw2", "soilw2" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw3", "soilw3" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw4", "soilw4" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_1", "soill1", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_2", "soill2", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_3", "soill3", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_4", "soill4", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slope", "sltyp", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alnsf", "alnsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alnwf", "alnwf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alvsf", "alvsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alvwf", "alvwf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "canopy", "cnwat", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "facsf", "facsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "facwf", "facwf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "ffhh", "ffhh", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "ffmm", "ffmm", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "fice", "icec", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "hice", "icetk", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "snoalb", "snoalb", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "shdmax", "shdmax", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "shdmin", "shdmin", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "snowd", "snod", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tg3", "tg3", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tisfc", "tisfc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tref", "tref", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "z_c", "zc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "c_0", "c0", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "c_d", "cd", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "w_0", "w0", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "w_d", "wd", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xt", "xt", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xz", "xz", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "dt_cool", "dtcool", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xs", "xs", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xu", "xu", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xv", "xv", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xtts", "xtts", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xzts", "xzts", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "d_conv", "dconv", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "qrain", "qrain", "fv3_history2d", "all", .false., "none", 2 - -"gfs_phys", "acond", "acond", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cduvb_ave", "cduvb_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cpofp", "cpofp", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "duvb_ave", "duvb_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csdlf_ave", "csdlf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csusf_ave", "csusf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csusf_avetoa", "csusftoa", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csdsf_ave", "csdsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csulf_ave", "csulf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csulf_avetoa", "csulftoa", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cwork_ave", "cwork_aveclm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "evbs_ave", "evbs_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "evcw_ave", "evcw_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "fldcp", "fldcp", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "hgt_hyblev1", "hgt_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "spfh_hyblev1", "spfh_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ugrd_hyblev1", "ugrd_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "vgrd_hyblev1", "vgrd_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "tmp_hyblev1", "tmp_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "gfluxi", "gflux", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "lhtfl", "lhtfl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "shtfl", "shtfl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "pevpr", "pevpr", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "pevpr_ave", "pevpr_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "sbsno_ave", "sbsno_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "sfexc", "sfexc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "snohf", "snohf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "snowc_ave", "snowc_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "spfhmax2m", "spfhmax_max2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "spfhmin2m", "spfhmin_min2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "tmpmax2m", "tmax_max2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "tmpmin2m", "tmin_min2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ssrun_acc", "ssrun_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "sunsd_acc", "sunsd_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "watr_acc", "watr_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "wilt", "wilt", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "vbdsf_ave", "vbdsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "vddsf_ave", "vddsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "nbdsf_ave", "nbdsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "nddsf_ave", "nddsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "trans_ave", "trans_ave", "fv3_history2d", "all", .false., "none", 2 -# Aerosols (CCN, IN) from Thompson microphysics -"gfs_phys", "nwfa", "nwfa", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "nifa", "nifa", "fv3_history", "all", .false., "none", 2 -"gfs_sfc", "nwfa2d", "nwfa2d", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "nifa2d", "nifa2d", "fv3_history2d", "all", .false., "none", 2 -# Cloud effective radii from Thompson and WSM6 microphysics -"gfs_phys", "cleffr", "cleffr", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "cieffr", "cieffr", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "cseffr", "cseffr", "fv3_history", "all", .false., "none", 2 -# Prognostic/diagnostic variables from MYNN -"gfs_phys", "QC_BL", "qc_bl", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "CLDFRA_BL", "cldfra_bl", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "EL_PBL", "el_pbl", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "QKE", "qke", "fv3_history", "all", .false., "none", 2 -"gfs_sfc", "maxmf", "maxmf", "fv3_history2d", "all", .false., "none", 2 -#"gfs_sfc", "nupdraft", "nupdrafts", "fv3_history2d", "all", .false., "none", 2 -#"gfs_sfc", "ktop_shallow", "ktop_shallow", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "zol", "zol", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "flhc", "flhc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "flqc", "flqc", "fv3_history2d", "all", .false., "none", 2 -# Prognostic/diagnostic variables from RUC LSM -"gfs_sfc", "snowfall_acc", "snowfall_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "swe_snowfall_acc", "swe_snowfall_acc", "fv3_history2d", "all", .false., "none", 2 - -#============================================================================================= -# -#====> This file can be used with diag_manager/v2.0a (or higher) <==== -# -# -# FORMATS FOR FILE ENTRIES (not all input values are used) -# ------------------------ -# -#"file_name", output_freq, "output_units", format, "time_units", "long_name", -# -# -#output_freq: > 0 output frequency in "output_units" -# = 0 output frequency every time step -# =-1 output frequency at end of run -# -#output_units = units used for output frequency -# (years, months, days, minutes, hours, seconds) -# -#time_units = units used to label the time axis -# (days, minutes, hours, seconds) -# -# -# FORMAT FOR FIELD ENTRIES (not all input values are used) -# ------------------------ -# -#"module_name", "field_name", "output_name", "file_name" "time_sampling", time_avg, "other_opts", packing -# -#time_avg = .true. or .false. -# -#packing = 1 double precision -# = 2 float -# = 4 packed 16-bit integers -# = 8 packed 1-byte (not tested?) diff --git a/ush/templates/diag_table.FV3_GSD_v0 b/ush/templates/diag_table.FV3_GSD_v0 deleted file mode 100644 index 0d2849c34..000000000 --- a/ush/templates/diag_table.FV3_GSD_v0 +++ /dev/null @@ -1,362 +0,0 @@ -{{ starttime.strftime("%Y%m%d.%H") }}Z.{{ cres }}.32bit.non-hydro.regional -{{ starttime.strftime("%Y %m %d %H %M %S") }} - -"grid_spec", -1, "months", 1, "days", "time" -"atmos_static", -1, "hours", 1, "hours", "time" -#"atmos_4xdaily", 1, "hours", 1, "days", "time" -"fv3_history", 1, "years", 1, "hours", "time" -"fv3_history2d", 1, "years", 1, "hours", "time" - -# -#======================= -# ATMOSPHERE DIAGNOSTICS -#======================= -### -# grid_spec -### - "dynamics", "grid_lon", "grid_lon", "grid_spec", "all", .false., "none", 2, - "dynamics", "grid_lat", "grid_lat", "grid_spec", "all", .false., "none", 2, - "dynamics", "grid_lont", "grid_lont", "grid_spec", "all", .false., "none", 2, - "dynamics", "grid_latt", "grid_latt", "grid_spec", "all", .false., "none", 2, - "dynamics", "area", "area", "grid_spec", "all", .false., "none", 2, -### -# 4x daily output -### -# "dynamics", "slp", "slp", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "vort850", "vort850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "vort200", "vort200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "us", "us", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u1000", "u1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u850", "u850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u700", "u700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u500", "u500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u200", "u200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u100", "u100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u50", "u50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "u10", "u10", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "vs", "vs", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v1000", "v1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v850", "v850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v700", "v700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v500", "v500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v200", "v200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v100", "v100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v50", "v50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "v10", "v10", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "tm", "tm", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t1000", "t1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t850", "t850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t700", "t700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t500", "t500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t200", "t200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t100", "t100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t50", "t50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "t10", "t10", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "z1000", "z1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z850", "z850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z700", "z700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z500", "z500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z200", "z200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z100", "z100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z50", "z50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "z10", "z10", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "w1000", "w1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "w850", "w850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "w700", "w700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "w500", "w500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "w200", "w200", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "q1000", "q1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q850", "q850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q700", "q700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q500", "q500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q200", "q200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q100", "q100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q50", "q50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "q10", "q10", "atmos_4xdaily", "all", .false., "none", 2 -#### -# "dynamics", "rh1000", "rh1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "rh850", "rh850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "rh700", "rh700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "rh500", "rh500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "rh200", "rh200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg1000", "omg1000", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg850", "omg850", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg700", "omg700", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg500", "omg500", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg200", "omg200", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg100", "omg100", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg50", "omg50", "atmos_4xdaily", "all", .false., "none", 2 -# "dynamics", "omg10", "omg10", "atmos_4xdaily", "all", .false., "none", 2 -### -# gfs static data -### - "dynamics", "pk", "pk", "atmos_static", "all", .false., "none", 2 - "dynamics", "bk", "bk", "atmos_static", "all", .false., "none", 2 - "dynamics", "hyam", "hyam", "atmos_static", "all", .false., "none", 2 - "dynamics", "hybm", "hybm", "atmos_static", "all", .false., "none", 2 - "dynamics", "zsurf", "zsurf", "atmos_static", "all", .false., "none", 2 -### -# FV3 variabls needed for NGGPS evaluation -### -"gfs_dyn", "ucomp", "ugrd", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "vcomp", "vgrd", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "sphum", "spfh", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "temp", "tmp", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "liq_wat", "clwmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "o3mr", "o3mr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "delp", "dpres", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "delz", "delz", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "w", "dzdt", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "ice_wat", "icmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "rainwat", "rwmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "snowwat", "snmr", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "graupel", "grle", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "ps", "pressfc", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "hs", "hgtsfc", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "refl_10cm" "refl_10cm" "fv3_history", "all", .false., "none", 2 -"gfs_phys", "cldfra", "cldfra", "fv3_history", "all", .false., "none", 2 -#"gfs_dyn", "ice_nc", "nicp", "fv3_history", "all", .false., "none", 2 -#"gfs_dyn", "rain_nc", "ntrnc", "fv3_history", "all", .false., "none", 2 - -"gfs_dyn", "wmaxup", "upvvelmax", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "wmaxdn", "dnvvelmax", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "uhmax03", "uhmax03", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "uhmax25", "uhmax25", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "uhmin03", "uhmin03", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "uhmin25", "uhmin25", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "maxvort01", "maxvort01", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "maxvort02", "maxvort02", "fv3_history", "all", .false., "none", 2 -"gfs_dyn", "maxvorthy1", "maxvorthy1", "fv3_history", "all", .false., "none", 2 - -"gfs_phys", "ALBDO_ave", "albdo_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cnvprcp_ave", "cprat_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cnvprcpb_ave", "cpratb_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "totprcp_ave", "prate_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "totprcpb_ave", "prateb_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DLWRF", "dlwrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DLWRFI", "dlwrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ULWRF", "ulwrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ULWRFI", "ulwrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DSWRF", "dswrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DSWRFI", "dswrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "USWRF", "uswrf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "USWRFI", "uswrf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "DSWRFtoa", "dswrf_avetoa","fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "USWRFtoa", "uswrf_avetoa","fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ULWRFtoa", "ulwrf_avetoa","fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "gflux_ave", "gflux_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "hpbl", "hpbl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "lhtfl_ave", "lhtfl_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "shtfl_ave", "shtfl_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "pwat", "pwatclm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "soilm", "soilm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_aveclm", "tcdc_aveclm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avebndcl", "tcdc_avebndcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avehcl", "tcdc_avehcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avelcl", "tcdc_avelcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDC_avemcl", "tcdc_avemcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TCDCcnvcl", "tcdccnvcl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PREScnvclt", "prescnvclt", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PREScnvclb", "prescnvclb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avehct", "pres_avehct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avehcb", "pres_avehcb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TEMP_avehct", "tmp_avehct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avemct", "pres_avemct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avemcb", "pres_avemcb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TEMP_avemct", "tmp_avemct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avelct", "pres_avelct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "PRES_avelcb", "pres_avelcb", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "TEMP_avelct", "tmp_avelct", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "u-gwd_ave", "u-gwd_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "v-gwd_ave", "v-gwd_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "dusfc", "uflx_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "dvsfc", "vflx_ave", "fv3_history2d", "all", .false., "none", 2 -#"gfs_phys", "cnvw", "cnvcldwat", "fv3_history2d", "all", .false., "none", 2 - -"gfs_phys", "psurf", "pressfc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "u10m", "ugrd10m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "v10m", "vgrd10m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "crain", "crain", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tprcp", "tprcp", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "hgtsfc", "orog", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "weasd", "weasd", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "f10m", "f10m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "q2m", "spfh2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "t2m", "tmp2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tsfc", "tmpsfc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "vtype", "vtype", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "stype", "sotyp", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slmsksfc", "land", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "vfracsfc", "veg", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "zorlsfc", "sfcr", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "uustar", "fricv", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt1", "soilt1" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt2", "soilt2" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt3", "soilt3" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt4", "soilt4" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt5", "soilt5" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt6", "soilt6" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt7", "soilt7" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt8", "soilt8" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilt9", "soilt9" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw1", "soilw1" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw2", "soilw2" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw3", "soilw3" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw4", "soilw4" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw5", "soilw5" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw6", "soilw6" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw7", "soilw7" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw8", "soilw8" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "soilw9", "soilw9" "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_1", "soill1", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_2", "soill2", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_3", "soill3", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_4", "soill4", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_5", "soill5", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_6", "soill6", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_7", "soill7", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_8", "soill8", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slc_9", "soill9", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "slope", "sltyp", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alnsf", "alnsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alnwf", "alnwf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alvsf", "alvsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "alvwf", "alvwf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "canopy", "cnwat", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "facsf", "facsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "facwf", "facwf", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "ffhh", "ffhh", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "ffmm", "ffmm", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "fice", "icec", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "hice", "icetk", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "snoalb", "snoalb", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "shdmax", "shdmax", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "shdmin", "shdmin", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "snowd", "snod", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tg3", "tg3", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tisfc", "tisfc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "tref", "tref", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "z_c", "zc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "c_0", "c0", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "c_d", "cd", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "w_0", "w0", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "w_d", "wd", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xt", "xt", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xz", "xz", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "dt_cool", "dtcool", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xs", "xs", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xu", "xu", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xv", "xv", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xtts", "xtts", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "xzts", "xzts", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "d_conv", "dconv", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "qrain", "qrain", "fv3_history2d", "all", .false., "none", 2 - -"gfs_phys", "acond", "acond", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cduvb_ave", "cduvb_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cpofp", "cpofp", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "duvb_ave", "duvb_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csdlf_ave", "csdlf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csusf_ave", "csusf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csusf_avetoa", "csusftoa", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csdsf_ave", "csdsf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csulf_ave", "csulf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "csulf_avetoa", "csulftoa", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "cwork_ave", "cwork_aveclm", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "evbs_ave", "evbs_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "evcw_ave", "evcw_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "fldcp", "fldcp", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "hgt_hyblev1", "hgt_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "spfh_hyblev1", "spfh_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ugrd_hyblev1", "ugrd_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "vgrd_hyblev1", "vgrd_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "tmp_hyblev1", "tmp_hyblev1", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "gfluxi", "gflux", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "lhtfl", "lhtfl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "shtfl", "shtfl", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "pevpr", "pevpr", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "pevpr_ave", "pevpr_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "sbsno_ave", "sbsno_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "sfexc", "sfexc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "snohf", "snohf", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "snowc_ave", "snowc_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "spfhmax2m", "spfhmax_max2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "spfhmin2m", "spfhmin_min2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "tmpmax2m", "tmax_max2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "tmpmin2m", "tmin_min2m", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "ssrun_acc", "ssrun_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "sunsd_acc", "sunsd_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "watr_acc", "watr_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "wilt", "wilt", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "vbdsf_ave", "vbdsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "vddsf_ave", "vddsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "nbdsf_ave", "nbdsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "nddsf_ave", "nddsf_ave", "fv3_history2d", "all", .false., "none", 2 -"gfs_phys", "trans_ave", "trans_ave", "fv3_history2d", "all", .false., "none", 2 -# Aerosols (CCN, IN) from Thompson microphysics -"gfs_phys", "nwfa", "nwfa", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "nifa", "nifa", "fv3_history", "all", .false., "none", 2 -"gfs_sfc", "nwfa2d", "nwfa2d", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "nifa2d", "nifa2d", "fv3_history2d", "all", .false., "none", 2 -# Cloud effective radii from Thompson and WSM6 microphysics -"gfs_phys", "cleffr", "cleffr", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "cieffr", "cieffr", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "cseffr", "cseffr", "fv3_history", "all", .false., "none", 2 -# Prognostic/diagnostic variables from MYNN -"gfs_phys", "QC_BL", "qc_bl", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "CLDFRA_BL", "cldfra_bl", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "EL_PBL", "el_pbl", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "QKE", "qke", "fv3_history", "all", .false., "none", 2 -"gfs_sfc", "maxmf", "maxmf", "fv3_history2d", "all", .false., "none", 2 -#"gfs_sfc", "nupdraft", "nupdrafts", "fv3_history2d", "all", .false., "none", 2 -#"gfs_sfc", "ktop_shallow", "ktop_shallow", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "zol", "zol", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "flhc", "flhc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "flqc", "flqc", "fv3_history2d", "all", .false., "none", 2 -# Prognostic/diagnostic variables from RUC LSM -"gfs_sfc", "snowfall_acc", "snowfall_acc", "fv3_history2d", "all", .false., "none", 2 -"gfs_sfc", "swe_snowfall_acc", "swe_snowfall_acc", "fv3_history2d", "all", .false., "none", 2 -# Stochastic physics -"gfs_phys", "sppt_wts", "sppt_wts", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "skebu_wts", "skebu_wts", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "skebv_wts", "skebv_wts", "fv3_history", "all", .false., "none", 2 -"dynamics", "diss_est", "diss_est", "fv3_history", "all", .false., "none", 2 -"gfs_phys", "shum_wts", "shum_wts", "fv3_history", "all", .false., "none", 2 - -#============================================================================================= -# -#====> This file can be used with diag_manager/v2.0a (or higher) <==== -# -# -# FORMATS FOR FILE ENTRIES (not all input values are used) -# ------------------------ -# -#"file_name", output_freq, "output_units", format, "time_units", "long_name", -# -# -#output_freq: > 0 output frequency in "output_units" -# = 0 output frequency every time step -# =-1 output frequency at end of run -# -#output_units = units used for output frequency -# (years, months, days, minutes, hours, seconds) -# -#time_units = units used to label the time axis -# (days, minutes, hours, seconds) -# -# -# FORMAT FOR FIELD ENTRIES (not all input values are used) -# ------------------------ -# -#"module_name", "field_name", "output_name", "file_name" "time_sampling", time_avg, "other_opts", packing -# -#time_avg = .true. or .false. -# -#packing = 1 double precision -# = 2 float -# = 4 packed 16-bit integers -# = 8 packed 1-byte (not tested?) diff --git a/ush/templates/diag_table.FV3_HRRR b/ush/templates/diag_table.FV3_HRRR old mode 100644 new mode 100755 index 0d2849c34..fa16a7e10 --- a/ush/templates/diag_table.FV3_HRRR +++ b/ush/templates/diag_table.FV3_HRRR @@ -324,8 +324,12 @@ "gfs_phys", "sppt_wts", "sppt_wts", "fv3_history", "all", .false., "none", 2 "gfs_phys", "skebu_wts", "skebu_wts", "fv3_history", "all", .false., "none", 2 "gfs_phys", "skebv_wts", "skebv_wts", "fv3_history", "all", .false., "none", 2 -"dynamics", "diss_est", "diss_est", "fv3_history", "all", .false., "none", 2 "gfs_phys", "shum_wts", "shum_wts", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_pbl", "spp_wts_pbl", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_sfc", "spp_wts_sfc", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_mp", "spp_wts_mp", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_rad", "spp_wts_rad", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_gwd", "spp_wts_gwd", "fv3_history", "all", .false., "none", 2 #============================================================================================= # diff --git a/ush/templates/diag_table.FV3_RRFS_v1alpha b/ush/templates/diag_table.FV3_RRFS_v1alpha old mode 100644 new mode 100755 index 99b765291..0bc7e358d --- a/ush/templates/diag_table.FV3_RRFS_v1alpha +++ b/ush/templates/diag_table.FV3_RRFS_v1alpha @@ -305,6 +305,14 @@ # Prognostic/diagnostic variables from RUC LSM "gfs_sfc", "snowfall_acc", "snowfall_acc", "fv3_history2d", "all", .false., "none", 2 "gfs_sfc", "swe_snowfall_acc", "swe_snowfall_acc", "fv3_history2d", "all", .false., "none", 2 +# Stochastic physics +"gfs_phys", "sppt_wts", "sppt_wts", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "skebu_wts", "skebu_wts", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "skebv_wts", "skebv_wts", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "shum_wts", "shum_wts", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_pbl", "spp_wts_pbl", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_mp", "spp_wts_mp", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_rad", "spp_wts_rad", "fv3_history", "all", .false., "none", 2 #============================================================================================= # diff --git a/ush/templates/diag_table.FV3_RRFS_v1beta b/ush/templates/diag_table.FV3_RRFS_v1beta old mode 100644 new mode 100755 index 99b765291..03ce373f4 --- a/ush/templates/diag_table.FV3_RRFS_v1beta +++ b/ush/templates/diag_table.FV3_RRFS_v1beta @@ -305,6 +305,15 @@ # Prognostic/diagnostic variables from RUC LSM "gfs_sfc", "snowfall_acc", "snowfall_acc", "fv3_history2d", "all", .false., "none", 2 "gfs_sfc", "swe_snowfall_acc", "swe_snowfall_acc", "fv3_history2d", "all", .false., "none", 2 +# Stochastic physics +"gfs_phys", "sppt_wts", "sppt_wts", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "skebu_wts", "skebu_wts", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "skebv_wts", "skebv_wts", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "shum_wts", "shum_wts", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_pbl", "spp_wts_pbl", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_sfc", "spp_wts_sfc", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_mp", "spp_wts_mp", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_rad", "spp_wts_rad", "fv3_history", "all", .false., "none", 2 #============================================================================================= # diff --git a/ush/templates/field_table.FV3_CPT_v0 b/ush/templates/field_table.FV3_CPT_v0 deleted file mode 100644 index 7331ae4ae..000000000 --- a/ush/templates/field_table.FV3_CPT_v0 +++ /dev/null @@ -1,67 +0,0 @@ -# added by FRE: sphum must be present in atmos -# specific humidity for moist runs - "TRACER", "atmos_mod", "sphum" - "longname", "specific humidity" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=3.e-6" / -# prognostic cloud water mixing ratio - "TRACER", "atmos_mod", "liq_wat" - "longname", "cloud water mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic ice water mixing ratio - "TRACER", "atmos_mod", "ice_wat" - "longname", "cloud ice mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic rain water mixing ratio - "TRACER", "atmos_mod", "rainwat" - "longname", "rain water mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic snow water mixing ratio - "TRACER", "atmos_mod", "snowwat" - "longname", "snow water mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -#prognostic graupel water mixing ratio - "TRACER", "atmos_mod", "graupel" - "longname", "graupel mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic cloud water number concentration - "TRACER", "atmos_mod", "water_nc" - "longname", "cloud liquid water number concentration" - "units", "/m3" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic cloud ice number concentration - "TRACER", "atmos_mod", "ice_nc" - "longname", "cloud ice water number concentration" - "units", "/m3" - "profile_type", "fixed", "surface_value=0.0" / -# prognostic rain number concentration - "TRACER", "atmos_mod", "rain_nc" - "longname", "rain number concentration" - "units", "/m3" - "profile_type", "fixed", "surface_value=0.0" / -# prognostic snow number concentration - "TRACER", "atmos_mod", "snow_nc" - "longname", "snow number concentration" - "units", "/m3" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic graupel number concentration - "TRACER", "atmos_mod", "graupel_nc" - "longname", "graupel number concentration" - "units", "/m3" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic ozone mixing ratio tracer - "TRACER", "atmos_mod", "o3mr" - "longname", "ozone mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic subgrid scale turbulent kinetic energy - "TRACER", "atmos_mod", "sgs_tke" - "longname", "subgrid scale turbulent kinetic energy" - "units", "m2/s2" - "profile_type", "fixed", "surface_value=0.0" / - diff --git a/ush/templates/field_table.FV3_GSD_SAR b/ush/templates/field_table.FV3_GSD_SAR deleted file mode 100644 index fe96567e5..000000000 --- a/ush/templates/field_table.FV3_GSD_SAR +++ /dev/null @@ -1,65 +0,0 @@ -# added by FRE: sphum must be present in atmos -# specific humidity for moist runs - "TRACER", "atmos_mod", "sphum" - "longname", "specific humidity" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic cloud water mixing ratio - "TRACER", "atmos_mod", "liq_wat" - "longname", "cloud water mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic ice water mixing ratio - "TRACER", "atmos_mod", "ice_wat" - "longname", "cloud ice mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic rain water mixing ratio - "TRACER", "atmos_mod", "rainwat" - "longname", "rain water mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic snow water mixing ratio - "TRACER", "atmos_mod", "snowwat" - "longname", "snow water mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic graupel mixing ratio - "TRACER", "atmos_mod", "graupel" - "longname", "graupel mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic cloud water number concentration - "TRACER", "atmos_mod", "water_nc" - "longname", "cloud liquid water number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic cloud ice number concentration - "TRACER", "atmos_mod", "ice_nc" - "longname", "cloud ice water number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=0.0" / -# prognostic rain number concentration - "TRACER", "atmos_mod", "rain_nc" - "longname", "rain number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=0.0" / -# prognostic ozone mixing ratio tracer - "TRACER", "atmos_mod", "o3mr" - "longname", "ozone mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# water- and ice-friendly aerosols (Thompson) - "TRACER", "atmos_mod", "liq_aero" - "longname", "water-friendly aerosol number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=0.0" / - "TRACER", "atmos_mod", "ice_aero" - "longname", "ice-friendly aerosol number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=0.0" / -# prognostic subgrid scale turbulent kinetic energy - "TRACER", "atmos_mod", "sgs_tke" - "longname", "subgrid scale turbulent kinetic energy" - "units", "m2/s2" - "profile_type", "fixed", "surface_value=0.0" / diff --git a/ush/templates/field_table.FV3_GSD_SAR_v1 b/ush/templates/field_table.FV3_GSD_SAR_v1 deleted file mode 100644 index 0a927de45..000000000 --- a/ush/templates/field_table.FV3_GSD_SAR_v1 +++ /dev/null @@ -1,65 +0,0 @@ -# added by FRE: sphum must be present in atmos -# specific humidity for moist runs - "TRACER", "atmos_mod", "sphum" - "longname", "specific humidity" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic cloud water mixing ratio - "TRACER", "atmos_mod", "liq_wat" - "longname", "cloud water mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic ice water mixing ratio - "TRACER", "atmos_mod", "ice_wat" - "longname", "cloud ice mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic rain water mixing ratio - "TRACER", "atmos_mod", "rainwat" - "longname", "rain water mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic snow water mixing ratio - "TRACER", "atmos_mod", "snowwat" - "longname", "snow water mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic graupel mixing ratio - "TRACER", "atmos_mod", "graupel" - "longname", "graupel mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic cloud water number concentration - "TRACER", "atmos_mod", "water_nc" - "longname", "cloud liquid water number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic cloud ice number concentration - "TRACER", "atmos_mod", "ice_nc" - "longname", "cloud ice water number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic rain number concentration - "TRACER", "atmos_mod", "rain_nc" - "longname", "rain number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic ozone mixing ratio tracer - "TRACER", "atmos_mod", "o3mr" - "longname", "ozone mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# water- and ice-friendly aerosols (Thompson) - "TRACER", "atmos_mod", "liq_aero" - "longname", "water-friendly aerosol number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=0.0" / - "TRACER", "atmos_mod", "ice_aero" - "longname", "ice-friendly aerosol number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=0.0" / -# prognostic subgrid scale turbulent kinetic energy - "TRACER", "atmos_mod", "sgs_tke" - "longname", "subgrid scale turbulent kinetic energy" - "units", "m2/s2" - "profile_type", "fixed", "surface_value=1.e30" / diff --git a/ush/templates/field_table.FV3_GSD_v0 b/ush/templates/field_table.FV3_GSD_v0 deleted file mode 100644 index fe96567e5..000000000 --- a/ush/templates/field_table.FV3_GSD_v0 +++ /dev/null @@ -1,65 +0,0 @@ -# added by FRE: sphum must be present in atmos -# specific humidity for moist runs - "TRACER", "atmos_mod", "sphum" - "longname", "specific humidity" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic cloud water mixing ratio - "TRACER", "atmos_mod", "liq_wat" - "longname", "cloud water mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic ice water mixing ratio - "TRACER", "atmos_mod", "ice_wat" - "longname", "cloud ice mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic rain water mixing ratio - "TRACER", "atmos_mod", "rainwat" - "longname", "rain water mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic snow water mixing ratio - "TRACER", "atmos_mod", "snowwat" - "longname", "snow water mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic graupel mixing ratio - "TRACER", "atmos_mod", "graupel" - "longname", "graupel mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic cloud water number concentration - "TRACER", "atmos_mod", "water_nc" - "longname", "cloud liquid water number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# prognostic cloud ice number concentration - "TRACER", "atmos_mod", "ice_nc" - "longname", "cloud ice water number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=0.0" / -# prognostic rain number concentration - "TRACER", "atmos_mod", "rain_nc" - "longname", "rain number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=0.0" / -# prognostic ozone mixing ratio tracer - "TRACER", "atmos_mod", "o3mr" - "longname", "ozone mixing ratio" - "units", "kg/kg" - "profile_type", "fixed", "surface_value=1.e30" / -# water- and ice-friendly aerosols (Thompson) - "TRACER", "atmos_mod", "liq_aero" - "longname", "water-friendly aerosol number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=0.0" / - "TRACER", "atmos_mod", "ice_aero" - "longname", "ice-friendly aerosol number concentration" - "units", "/kg" - "profile_type", "fixed", "surface_value=0.0" / -# prognostic subgrid scale turbulent kinetic energy - "TRACER", "atmos_mod", "sgs_tke" - "longname", "subgrid scale turbulent kinetic energy" - "units", "m2/s2" - "profile_type", "fixed", "surface_value=0.0" / diff --git a/ush/templates/field_table.FV3_HRRR b/ush/templates/field_table.FV3_HRRR index fe96567e5..fbfb0c339 100644 --- a/ush/templates/field_table.FV3_HRRR +++ b/ush/templates/field_table.FV3_HRRR @@ -33,7 +33,7 @@ "TRACER", "atmos_mod", "water_nc" "longname", "cloud liquid water number concentration" "units", "/kg" - "profile_type", "fixed", "surface_value=1.e30" / + "profile_type", "fixed", "surface_value=0.0" / # prognostic cloud ice number concentration "TRACER", "atmos_mod", "ice_nc" "longname", "cloud ice water number concentration" diff --git a/ush/templates/input.nml.FV3 b/ush/templates/input.nml.FV3 index 450b1361a..f94d00cbe 100644 --- a/ush/templates/input.nml.FV3 +++ b/ush/templates/input.nml.FV3 @@ -119,7 +119,7 @@ rf_cutoff = 20.e2 tau = 5.0 use_hydro_pressure = .false. - vtdm4 = 0.075 + vtdm4 = 0.02 warm_start = .false. write_restart_with_bcs = .false. z_tracer = .true. @@ -141,9 +141,6 @@ debug = .false. do_mynnedmf = .true. do_mynnsfclay = .false. - do_shum = .false. - do_skeb = .false. - do_sppt = .false. dspheat = .true. effr_in = .true. fhcyc = 0.0 @@ -170,13 +167,11 @@ ivegsrc = 1 ldiag3d = .false. lheatstrg = .false. - lndp_type = 0 lradar = .true. lsm = 3 lsoil_lsm = 9 ltaerosol = .true. lwhtr = .true. - n_var_lndp = 0 nsradar_reset = 3600 nst_anl = .true. nstf_name = 2,1,0,0,0 @@ -201,36 +196,12 @@ / &nam_sfcperts - lndp_type = 0, - lndp_tau=21600, - lndp_lscale=500000, - iseed_lndp=2010, - lndp_var_list = 'smc', 'vgf', - lndp_prt_list = 0.2,0.1, +/ + +&nam_sppperts / &nam_stochy - iseed_shum = 2 - iseed_skeb = 3 - iseed_sppt = 1 - new_lscale = .true. - shum = 0.006 - shum_lscale = 150.E3 - shum_tau = 21600 - shumint = 3600 - skeb = 0.5 - skeb_lscale = 150.E3 - skeb_tau = 21600.0 - skeb_vdof = 10 - skebint = 3600 - skebnorm = 1 - sppt = 1.0 - sppt_logit = .true. - sppt_lscale = 150.E3 - sppt_sfclimit = .true. - sppt_tau = 2.16E4 - spptint = 3600 - use_zmtnblck = .false. / &namsfc diff --git a/ush/templates/model_configure b/ush/templates/model_configure index 1b0f7a815..fa2472e33 100644 --- a/ush/templates/model_configure +++ b/ush/templates/model_configure @@ -15,7 +15,7 @@ cpl: {{ cpl }} calendar: 'julian' memuse_verbose: .false. atmos_nthreads: {{ atmos_nthreads }} -restart_interval: {{ restart_interval }} +restart_interval: {{ restart_interval }} -1 output_1st_tstep_rst: .false. write_dopost: {{ write_dopost }} ideflate: 0 diff --git a/ush/templates/nems.configure b/ush/templates/nems.configure index b16668ad8..86b095464 100644 --- a/ush/templates/nems.configure +++ b/ush/templates/nems.configure @@ -3,3 +3,4 @@ EARTH_component_list: ATM runSeq:: ATM :: +logKindFlag: ESMF_LOGKIND_MULTI_ON_ERROR diff --git a/ush/templates/parm/met/EnsembleStatConfig_APCP b/ush/templates/parm/met/EnsembleStatConfig_APCP deleted file mode 100755 index f9569105a..000000000 --- a/ush/templates/parm/met/EnsembleStatConfig_APCP +++ /dev/null @@ -1,284 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Ensemble-Stat configuration file. -// -// For additional information, see the MET_BASE/config/README file. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "${MODEL}"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -// -// Output observation type to be written -// -obtype = "${OBTYPE}"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// -regrid = { - to_grid = ${REGRID_TO_GRID}; - method = BUDGET; - width = 2; - vld_thresh = 0.5; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// May be set separately in each "field" entry -// -censor_thresh = []; -censor_val = []; -cat_thresh = []; -nc_var_str = ""; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Ensemble product fields to be processed -// -ens = { - ens_thresh = ${ENS_THRESH}; - vld_thresh = 1.0; - - field = [ ${ENS_FIELD} ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Neighborhood ensemble probabilities -// -nbrhd_prob = { - width = [ 5 ]; - shape = CIRCLE; - vld_thresh = 0.0; -} - -// -// NMEP smoothing methods -// -nmep_smooth = { - vld_thresh = 0.0; - shape = CIRCLE; - gaussian_dx = 81.27; - gaussian_radius = 120; - type = [ - { - method = GAUSSIAN; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Forecast and observation fields to be verified -// -fcst = { - field = [ ${FCST_FIELD} ]; -} - -obs = { - field = [ ${OBS_FIELD} ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation filtering options -// May be set separately in each "obs.field" entry -// -message_type = []; -sid_exc = []; -obs_thresh = [ NA ]; -obs_quality = []; -duplicate_flag = UNIQUE; -obs_summary = NONE; -obs_perc_value = 50; -skip_const = TRUE; - -// -// Observation error options -// Set dist_type to NONE to use the observation error table instead -// May be set separately in each "obs.field" entry -// -obs_error = { - flag = TRUE; // TRUE or FALSE - dist_type = NONE; // Distribution type - dist_parm = []; // Distribution parameters - inst_bias_scale = 1.0; // Instrument bias scale adjustment - inst_bias_offset = 0.0; // Instrument bias offset adjustment - min = NA; // Valid range of data - max = NA; -} - -// -// Mapping of message type group name to comma-separated list of values. -// -message_type_group_map = [ - { key = "SURFACE"; val = "ADPSFC,SFCSHP,MSONET"; }, - { key = "ANYAIR"; val = "AIRCAR,AIRCFT"; }, - { key = "ANYSFC"; val = "ADPSFC,SFCSHP,ADPUPA,PROFLR,MSONET"; }, - { key = "ONLYSF"; val = "ADPSFC,SFCSHP"; } -]; - -// -// Ensemble bin sizes -// May be set separately in each "obs.field" entry -// -ens_ssvar_bin_size = 1.0; -ens_phist_bin_size = 0.05; - -// -// Categorical thresholds to define ensemble probabilities -// May be set separately in each "fcst.field" entry -// -prob_cat_thresh = []; - - -//////////////////////////////////////////////////////////////////////////////// - -// -// Climatology data -// -climo_mean = { - - file_name = []; - field = []; - - regrid = { - method = NEAREST; - width = 1; - vld_thresh = 0.5; - shape = SQUARE; - } - - time_interp_method = DW_MEAN; - day_interval = 31; - hour_interval = 6; -} - -climo_stdev = climo_mean; -climo_stdev = { - file_name = []; -} - -// -// May be set separately in each "obs.field" entry -// -climo_cdf = { - cdf_bins = 1; - center_bins = FALSE; - write_bins = TRUE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation time window -// -obs_window = { - beg = ${OBS_WINDOW_BEGIN}; - end = ${OBS_WINDOW_END}; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - ${METPLUS_MASK_GRID} - ${METPLUS_MASK_POLY} - sid = []; - llpnt = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// -ci_alpha = [ 0.01 ]; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Interpolation methods -// -interp = { - field = BOTH; - vld_thresh = 1.0; - type = [ { method = NEAREST; width = 1; } ]; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - ecnt = STAT; - rps = NONE; - rhist = STAT; - phist = STAT; - orank = STAT; - ssvar = STAT; - relp = STAT; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Ensemble product output types -// -ensemble_flag = { - latlon = TRUE; - mean = TRUE; - stdev = TRUE; - minus = FALSE; - plus = FALSE; - min = FALSE; - max = FALSE; - range = FALSE; - vld_count = TRUE; - frequency = TRUE; - nep = FALSE; - nmep = FALSE; - rank = TRUE; - weight = FALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Random number generator -// -rng = { - type = "mt19937"; - seed = ""; -} - -//////////////////////////////////////////////////////////////////////////////// - -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.0.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/ush/templates/parm/met/EnsembleStatConfig_REFC b/ush/templates/parm/met/EnsembleStatConfig_REFC deleted file mode 100755 index 385e01a98..000000000 --- a/ush/templates/parm/met/EnsembleStatConfig_REFC +++ /dev/null @@ -1,292 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Ensemble-Stat configuration file. -// -// For additional information, see the MET_BASE/config/README file. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "${MODEL}"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -// -// Output observation type to be written -// -obtype = "${OBTYPE}"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// -regrid = { - to_grid = ${REGRID_TO_GRID}; - method = BUDGET; - width = 2; - vld_thresh = 0.5; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// May be set separately in each "field" entry -// -censor_thresh = []; -censor_val = []; -cat_thresh = []; -nc_var_str = ""; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Ensemble product fields to be processed -// - -M_to_KFT(x) = x * 3.28084 * 0.001; -KM_to_KFT(x) = x * 3280.84 * 0.001; - -ens = { - ens_thresh = ${ENS_THRESH}; - vld_thresh = 1.0; - - field = [ ${ENS_FIELD} ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Neighborhood ensemble probabilities -// -nbrhd_prob = { - width = [ 5 ]; - shape = CIRCLE; - vld_thresh = 0.0; -} - -// -// NMEP smoothing methods -// -nmep_smooth = { - vld_thresh = 0.0; - shape = CIRCLE; - gaussian_dx = 81.27; - gaussian_radius = 120; - type = [ - { - method = GAUSSIAN; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Forecast and observation fields to be verified -// - -M_to_KFT(x) = x * 3.28084 * 0.001; -KM_to_KFT(x) = x * 3280.84 * 0.001; - -fcst = { - field = [ ${FCST_FIELD} ]; -} - -obs = { - field = [ ${OBS_FIELD} ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation filtering options -// May be set separately in each "obs.field" entry -// -message_type = []; -sid_exc = []; -obs_thresh = [ NA ]; -obs_quality = []; -duplicate_flag = UNIQUE; -obs_summary = NONE; -obs_perc_value = 50; -skip_const = TRUE; - -// -// Observation error options -// Set dist_type to NONE to use the observation error table instead -// May be set separately in each "obs.field" entry -// -obs_error = { - flag = FALSE; // TRUE or FALSE - dist_type = NONE; // Distribution type - dist_parm = []; // Distribution parameters - inst_bias_scale = 1.0; // Instrument bias scale adjustment - inst_bias_offset = 0.0; // Instrument bias offset adjustment - min = NA; // Valid range of data - max = NA; -} - -// -// Mapping of message type group name to comma-separated list of values. -// -message_type_group_map = [ - { key = "SURFACE"; val = "ADPSFC,SFCSHP,MSONET"; }, - { key = "ANYAIR"; val = "AIRCAR,AIRCFT"; }, - { key = "ANYSFC"; val = "ADPSFC,SFCSHP,ADPUPA,PROFLR,MSONET"; }, - { key = "ONLYSF"; val = "ADPSFC,SFCSHP"; } -]; - -// -// Ensemble bin sizes -// May be set separately in each "obs.field" entry -// -ens_ssvar_bin_size = 1.0; -ens_phist_bin_size = 0.05; - -// -// Categorical thresholds to define ensemble probabilities -// May be set separately in each "fcst.field" entry -// -prob_cat_thresh = []; - - -//////////////////////////////////////////////////////////////////////////////// - -// -// Climatology data -// -climo_mean = { - - file_name = []; - field = []; - - regrid = { - method = NEAREST; - width = 1; - vld_thresh = 0.5; - shape = SQUARE; - } - - time_interp_method = DW_MEAN; - day_interval = 31; - hour_interval = 6; -} - -climo_stdev = climo_mean; -climo_stdev = { - file_name = []; -} - -// -// May be set separately in each "obs.field" entry -// -climo_cdf = { - cdf_bins = 1; - center_bins = FALSE; - write_bins = TRUE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation time window -// -obs_window = { - beg = ${OBS_WINDOW_BEGIN}; - end = ${OBS_WINDOW_END}; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - ${METPLUS_MASK_GRID} - ${METPLUS_MASK_POLY} - sid = []; - llpnt = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// -ci_alpha = [ 0.01 ]; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Interpolation methods -// -interp = { - field = BOTH; - vld_thresh = 1.0; - type = [ { method = NEAREST; width = 1; } ]; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - ecnt = STAT; - rps = NONE; - rhist = STAT; - phist = STAT; - orank = STAT; - ssvar = STAT; - relp = STAT; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Ensemble product output types -// -ensemble_flag = { - latlon = TRUE; - mean = TRUE; - stdev = TRUE; - minus = FALSE; - plus = FALSE; - min = FALSE; - max = FALSE; - range = FALSE; - vld_count = TRUE; - frequency = TRUE; - nep = FALSE; - nmep = FALSE; - rank = TRUE; - weight = FALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Random number generator -// -rng = { - type = "mt19937"; - seed = ""; -} - -//////////////////////////////////////////////////////////////////////////////// - -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.0.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/ush/templates/parm/met/EnsembleStatConfig_point b/ush/templates/parm/met/EnsembleStatConfig_point deleted file mode 100644 index 648893e20..000000000 --- a/ush/templates/parm/met/EnsembleStatConfig_point +++ /dev/null @@ -1,290 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Ensemble-Stat configuration file. -// -// For additional information, see the MET_BASE/config/README file. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "${MODEL}"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -// -// Output observation type to be written -// -obtype = "${OBTYPE}"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// May be set separately in each "field" entry -// -regrid = { - to_grid = ${REGRID_TO_GRID}; - method = BILIN; - width = 2; - vld_thresh = 0.5; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// May be set separately in each "field" entry -// -censor_thresh = []; -censor_val = []; -cat_thresh = []; -nc_var_str = ""; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Ensemble product fields to be processed -// -ens = { - ens_thresh = 0.05; - vld_thresh = 1.0; - - field = [ ${ENS_FIELD} ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Neighborhood ensemble probabilities -// -nbrhd_prob = { - width = [ 5 ]; - shape = CIRCLE; - vld_thresh = 0.0; -} - -// -// NMEP smoothing methods -// -nmep_smooth = { - vld_thresh = 0.0; - shape = CIRCLE; - gaussian_dx = 81.27; - gaussian_radius = 120; - type = [ - { - method = GAUSSIAN; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Forecast and observation fields to be verified -// -fcst = { - field = [ ${FCST_FIELD} ]; -} -obs = { - field = [ ${OBS_FIELD} ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation filtering options -// May be set separately in each "obs.field" entry -// -${METPLUS_MESSAGE_TYPE} -sid_inc = []; -sid_exc = []; -obs_thresh = [ NA ]; -obs_quality = []; -duplicate_flag = NONE; -obs_summary = NONE; -obs_perc_value = 50; -skip_const = FALSE; - -// -// Observation error options -// Set dist_type to NONE to use the observation error table instead -// May be set separately in each "obs.field" entry -// -obs_error = { - flag = FALSE; // TRUE or FALSE - dist_type = NONE; // Distribution type - dist_parm = []; // Distribution parameters - inst_bias_scale = 1.0; // Instrument bias scale adjustment - inst_bias_offset = 0.0; // Instrument bias offset adjustment - min = NA; // Valid range of data - max = NA; -} - -// -// Mapping of message type group name to comma-separated list of values -// -message_type_group_map = [ - { key = "SURFACE"; val = "ADPSFC,SFCSHP,MSONET"; }, - { key = "ANYAIR"; val = "AIRCAR,AIRCFT"; }, - { key = "ANYSFC"; val = "ADPSFC,SFCSHP,ADPUPA,PROFLR,MSONET"; }, - { key = "ONLYSF"; val = "ADPSFC,SFCSHP"; } -]; - -// -// Ensemble bin sizes -// May be set separately in each "obs.field" entry -// -ens_ssvar_bin_size = 1.0; -ens_phist_bin_size = 0.05; - -// -// Categorical thresholds to define ensemble probabilities -// May be set separately in each "fcst.field" entry -// -prob_cat_thresh = []; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Climatology data -// -climo_mean = { - - file_name = []; - field = []; - - regrid = { - method = NEAREST; - width = 1; - vld_thresh = 0.5; - shape = SQUARE; - } - - time_interp_method = DW_MEAN; - day_interval = 31; - hour_interval = 6; -} - -climo_stdev = climo_mean; -climo_stdev = { - file_name = []; -} - -// -// May be set separately in each "obs.field" entry -// -climo_cdf = { - cdf_bins = 1; - center_bins = FALSE; - write_bins = TRUE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation time window -// -obs_window = { - beg = ${OBS_WINDOW_BEGIN}; - end = ${OBS_WINDOW_END}; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - ${METPLUS_MASK_GRID} - ${METPLUS_MASK_POLY} - sid = []; - llpnt = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// -ci_alpha = [ 0.05 ]; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Interpolation methods -// -interp = { - field = BOTH; - vld_thresh = 1.0; - shape = SQUARE; - - type = [ - { - method = NEAREST; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - ecnt = STAT; - rps = NONE; - rhist = STAT; - phist = STAT; - orank = STAT; - ssvar = STAT; - relp = STAT; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Ensemble product output types -// -ensemble_flag = { - latlon = TRUE; - mean = TRUE; - stdev = TRUE; - minus = FALSE; - plus = FALSE; - min = FALSE; - max = FALSE; - range = TRUE; - vld_count = TRUE; - frequency = TRUE; - nep = FALSE; - nmep = FALSE; - rank = TRUE; - weight = FALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Random number generator -// -rng = { - type = "mt19937"; - seed = ""; -} - -//////////////////////////////////////////////////////////////////////////////// - -grid_weight_flag = NONE; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.0.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/ush/templates/parm/met/GridDiagConfig b/ush/templates/parm/met/GridDiagConfig deleted file mode 100755 index baa6c8d5b..000000000 --- a/ush/templates/parm/met/GridDiagConfig +++ /dev/null @@ -1,42 +0,0 @@ -///////////////////////////////////////////////////////////////////////////////// -// -// Grid-Diag configuration file. -// -// For additional information, please see the MET User's Guide. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Data description -// -${METPLUS_DESC} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Output grid -// -${METPLUS_REGRID_DICT} - -//////////////////////////////////////////////////////////////////////////////// - -// -// May be set separately in each "field" entry -// -${METPLUS_CENSOR_THRESH} -${METPLUS_CENSOR_VAL} - -// -// Data fields -// -${METPLUS_DATA_DICT} - -${METPLUS_MASK_DICT} - -${METPLUS_MET_CONFIG_OVERRIDES} - -//////////////////////////////////////////////////////////////////////////////// - -version = "V10.0.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/ush/templates/parm/met/GridStatConfig_APCP b/ush/templates/parm/met/GridStatConfig_APCP deleted file mode 100755 index 4fa85ad7e..000000000 --- a/ush/templates/parm/met/GridStatConfig_APCP +++ /dev/null @@ -1,180 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Grid-Stat configuration file. -// -// For additional information, see the MET_BASE/config/README file. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "${MODEL}"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -// -// Output observation type to be written -// -obtype = "${OBTYPE}"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// -regrid = { - to_grid = ${REGRID_TO_GRID}; - vld_thresh = 0.5; - method = BUDGET; - width = 2; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -cat_thresh = [ NA ]; -cnt_thresh = [ NA ]; -cnt_logic = UNION; -wind_thresh = [ NA ]; -wind_logic = UNION; - -// -// Forecast and observation fields to be verified -// -fcst = { - field = [ ${FCST_FIELD} ]; -} - -obs = { - field = [ ${OBS_FIELD} ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Climatology mean data -// -climo_mean = { - - file_name = []; - field = []; - - regrid = { - vld_thresh = 0.5; - method = NEAREST; - width = 1; - } - - time_interp_method = DW_MEAN; - match_day = FALSE; - time_step = 21600; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - grid = []; - poly = [ ${VERIF_MASK} ]; - sid = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// -ci_alpha = [ 0.05 ]; - -boot = { - interval = PCTILE; - rep_prop = 1.0; - n_rep = 0; - rng = "mt19937"; - seed = ""; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Data smoothing methods -// -interp = { - field = BOTH; - vld_thresh = 1.0; - shape = SQUARE; - - type = [ - { - method = NEAREST; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Neighborhood methods -// -nbrhd = { - field = BOTH; - shape = ${NEIGHBORHOOD_SHAPE}; - width = [ ${NEIGHBORHOOD_WIDTH} ]; - cov_thresh = [ >=0.5 ]; - vld_thresh = 1.0; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - fho = STAT; - ctc = STAT; - cts = STAT; - mctc = NONE; - mcts = NONE; - cnt = STAT; - sl1l2 = NONE; - sal1l2 = NONE; - vl1l2 = NONE; - val1l2 = NONE; - pct = NONE; - pstd = NONE; - pjc = NONE; - prc = NONE; - nbrctc = STAT; - nbrcts = STAT; - nbrcnt = STAT; -} - -// -// NetCDF matched pairs output file -// -nc_pairs_flag = { - latlon = FALSE; - raw = FALSE; - diff = FALSE; - climo = FALSE; - weight = FALSE; - nbrhd = FALSE; - apply_mask = FALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.0.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/ush/templates/parm/met/GridStatConfig_APCP_mean b/ush/templates/parm/met/GridStatConfig_APCP_mean deleted file mode 100755 index 6aa4c8cc3..000000000 --- a/ush/templates/parm/met/GridStatConfig_APCP_mean +++ /dev/null @@ -1,178 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Grid-Stat configuration file. -// -// For additional information, see the MET_BASE/config/README file. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "${MODEL}"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -// -// Output observation type to be written -// -obtype = "${OBTYPE}"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// -regrid = { - to_grid = ${REGRID_TO_GRID}; - vld_thresh = 0.5; - method = BUDGET; - width = 2; -} - -//////////////////////////////////////////////////////////////////////////////// - -cat_thresh = [ NA ]; -cnt_thresh = [ NA ]; -cnt_logic = UNION; -wind_thresh = [ NA ]; -wind_logic = UNION; - -// -// Forecast and observation fields to be verified -// -fcst = { - field = [ ${FCST_FIELD} ]; -} - -obs = { - field = [ ${OBS_FIELD} ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Climatology mean data -// -climo_mean = { - - file_name = []; - field = []; - - regrid = { - vld_thresh = 0.5; - method = NEAREST; - width = 1; - } - - time_interp_method = DW_MEAN; - match_day = FALSE; - time_step = 21600; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - grid = []; - poly = [ ${VERIF_MASK} ]; - sid = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// -ci_alpha = [ 0.05 ]; - -boot = { - interval = PCTILE; - rep_prop = 1.0; - n_rep = 0; - rng = "mt19937"; - seed = ""; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Data smoothing methods -// -interp = { - field = BOTH; - vld_thresh = 1.0; - - type = [ - { - method = NEAREST; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Neighborhood methods -// -nbrhd = { - field = BOTH; - shape = ${NEIGHBORHOOD_SHAPE}; - width = [ ${NEIGHBORHOOD_WIDTH} ]; - cov_thresh = [ >=0.5 ]; - vld_thresh = 1.0; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - fho = STAT; - ctc = STAT; - cts = STAT; - mctc = NONE; - mcts = NONE; - cnt = STAT; - sl1l2 = NONE; - sal1l2 = NONE; - vl1l2 = NONE; - val1l2 = NONE; - pct = NONE; - pstd = NONE; - pjc = NONE; - prc = NONE; - nbrctc = STAT; - nbrcts = STAT; - nbrcnt = STAT; -} - -// -// NetCDF matched pairs output file -// -nc_pairs_flag = { - latlon = FALSE; - raw = FALSE; - diff = FALSE; - climo = FALSE; - weight = FALSE; - nbrhd = FALSE; - apply_mask = FALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.0.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/ush/templates/parm/met/GridStatConfig_APCP_prob b/ush/templates/parm/met/GridStatConfig_APCP_prob deleted file mode 100755 index d6ef8cb0e..000000000 --- a/ush/templates/parm/met/GridStatConfig_APCP_prob +++ /dev/null @@ -1,178 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Grid-Stat configuration file. -// -// For additional information, see the MET_BASE/config/README file. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "${MODEL}"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -// -// Output observation type to be written -// -obtype = "${OBTYPE}"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// -regrid = { - to_grid = ${REGRID_TO_GRID}; - vld_thresh = 0.5; - method = BUDGET; - width = 2; -} - -//////////////////////////////////////////////////////////////////////////////// - -cat_thresh = [ NA ]; -cnt_thresh = [ NA ]; -cnt_logic = UNION; -wind_thresh = [ NA ]; -wind_logic = UNION; - -// -// Forecast and observation fields to be verified -// -fcst = { - field = [ ${FCST_FIELD} ]; -} - -obs = { - field = [ ${OBS_FIELD} ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Climatology mean data -// -climo_mean = { - - file_name = []; - field = []; - - regrid = { - vld_thresh = 0.5; - method = NEAREST; - width = 1; - } - - time_interp_method = DW_MEAN; - match_day = FALSE; - time_step = 21600; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - grid = []; - poly = [ ${VERIF_MASK} ]; - sid = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// -ci_alpha = [ 0.05 ]; - -boot = { - interval = PCTILE; - rep_prop = 1.0; - n_rep = 0; - rng = "mt19937"; - seed = ""; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Data smoothing methods -// -interp = { - field = BOTH; - vld_thresh = 1.0; - - type = [ - { - method = NEAREST; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Neighborhood methods -// -nbrhd = { - field = BOTH; - shape = ${NEIGHBORHOOD_SHAPE}; - width = [ ${NEIGHBORHOOD_WIDTH} ]; - cov_thresh = [ >=0.5 ]; - vld_thresh = 1.0; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - fho = NONE; - ctc = NONE; - cts = NONE; - mctc = NONE; - mcts = NONE; - cnt = NONE; - sl1l2 = NONE; - sal1l2 = NONE; - vl1l2 = NONE; - val1l2 = NONE; - pct = STAT; - pstd = STAT; - pjc = STAT; - prc = STAT; - nbrctc = NONE; - nbrcts = NONE; - nbrcnt = NONE; -} - -// -// NetCDF matched pairs output file -// -nc_pairs_flag = { - latlon = FALSE; - raw = FALSE; - diff = FALSE; - climo = FALSE; - weight = FALSE; - nbrhd = FALSE; - apply_mask = FALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.0.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/ush/templates/parm/met/GridStatConfig_REFC b/ush/templates/parm/met/GridStatConfig_REFC deleted file mode 100644 index ade839df7..000000000 --- a/ush/templates/parm/met/GridStatConfig_REFC +++ /dev/null @@ -1,219 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Grid-Stat configuration file. -// -// For additional information, see the MET_BASE/config/README file. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "${MODEL}"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -// -// Output observation type to be written -// -obtype = "${OBTYPE}"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// -regrid = { - to_grid = ${REGRID_TO_GRID}; - vld_thresh = 0.5; - method = BUDGET; - width = 2; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -cat_thresh = []; -cnt_thresh = [ NA ]; -cnt_logic = UNION; -wind_thresh = [ NA ]; -wind_logic = UNION; - -// -// Forecast and observation fields to be verified -// - -M_to_KFT(x) = x * 3.28084 * 0.001; -KM_to_KFT(x) = x * 3280.84 * 0.001; - -fcst = { - field = [ ${FCST_FIELD} ]; -} - -obs = { - field = [ ${OBS_FIELD} ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Climatology mean data -// -climo_mean = { - - file_name = []; - field = []; - - regrid = { - vld_thresh = 0.5; - method = NEAREST; - width = 1; - } - - time_interp_method = DW_MEAN; - match_day = FALSE; - time_step = 21600; -} - -climo_stdev = climo_mean; -climo_stdev = { - file_name = []; -} - -climo_cdf_bins = 1; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - grid = []; - poly = [ ${VERIF_MASK} ]; - sid = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// -ci_alpha = [ 0.05 ]; - -boot = { - interval = PCTILE; - rep_prop = 1.0; - n_rep = 0; - rng = "mt19937"; - seed = ""; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Data smoothing methods -// -interp = { - field = NONE; - vld_thresh = 1.0; - shape = SQUARE; - - type = [ - { - method = NEAREST; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Neighborhood methods -// -nbrhd = { - field = BOTH; - shape = ${NEIGHBORHOOD_SHAPE}; - width = [ ${NEIGHBORHOOD_WIDTH} ]; - cov_thresh = [ >=0.5 ]; - vld_thresh = 1.0; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Fourier decomposition -// May be set separately in each "obs.field" entry -// -fourier = { - wave_1d_beg = []; - wave_1d_end = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Gradient statistics -// May be set separately in each "obs.field" entry -// -gradient = { - dx = [ 1 ]; - dy = [ 1 ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - fho = STAT; - ctc = STAT; - cts = STAT; - mctc = NONE; - mcts = NONE; - cnt = STAT; - sl1l2 = NONE; - sal1l2 = NONE; - vl1l2 = NONE; - val1l2 = NONE; - vcnt = NONE; - pct = NONE; - pstd = NONE; - pjc = NONE; - prc = NONE; - eclv = NONE; - nbrctc = STAT; - nbrcts = STAT; - nbrcnt = STAT; - grad = NONE; -} - -// -// NetCDF matched pairs output file -// -nc_pairs_flag = { - latlon = FALSE; - raw = FALSE; - diff = FALSE; - climo = FALSE; - weight = FALSE; - nbrhd = FALSE; - fourier = FALSE; - gradient = FALSE; - apply_mask = FALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -grid_weight_flag = NONE; -rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.0.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/ush/templates/parm/met/GridStatConfig_REFC_mean b/ush/templates/parm/met/GridStatConfig_REFC_mean deleted file mode 100644 index ade839df7..000000000 --- a/ush/templates/parm/met/GridStatConfig_REFC_mean +++ /dev/null @@ -1,219 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Grid-Stat configuration file. -// -// For additional information, see the MET_BASE/config/README file. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "${MODEL}"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -// -// Output observation type to be written -// -obtype = "${OBTYPE}"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// -regrid = { - to_grid = ${REGRID_TO_GRID}; - vld_thresh = 0.5; - method = BUDGET; - width = 2; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -cat_thresh = []; -cnt_thresh = [ NA ]; -cnt_logic = UNION; -wind_thresh = [ NA ]; -wind_logic = UNION; - -// -// Forecast and observation fields to be verified -// - -M_to_KFT(x) = x * 3.28084 * 0.001; -KM_to_KFT(x) = x * 3280.84 * 0.001; - -fcst = { - field = [ ${FCST_FIELD} ]; -} - -obs = { - field = [ ${OBS_FIELD} ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Climatology mean data -// -climo_mean = { - - file_name = []; - field = []; - - regrid = { - vld_thresh = 0.5; - method = NEAREST; - width = 1; - } - - time_interp_method = DW_MEAN; - match_day = FALSE; - time_step = 21600; -} - -climo_stdev = climo_mean; -climo_stdev = { - file_name = []; -} - -climo_cdf_bins = 1; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - grid = []; - poly = [ ${VERIF_MASK} ]; - sid = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// -ci_alpha = [ 0.05 ]; - -boot = { - interval = PCTILE; - rep_prop = 1.0; - n_rep = 0; - rng = "mt19937"; - seed = ""; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Data smoothing methods -// -interp = { - field = NONE; - vld_thresh = 1.0; - shape = SQUARE; - - type = [ - { - method = NEAREST; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Neighborhood methods -// -nbrhd = { - field = BOTH; - shape = ${NEIGHBORHOOD_SHAPE}; - width = [ ${NEIGHBORHOOD_WIDTH} ]; - cov_thresh = [ >=0.5 ]; - vld_thresh = 1.0; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Fourier decomposition -// May be set separately in each "obs.field" entry -// -fourier = { - wave_1d_beg = []; - wave_1d_end = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Gradient statistics -// May be set separately in each "obs.field" entry -// -gradient = { - dx = [ 1 ]; - dy = [ 1 ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - fho = STAT; - ctc = STAT; - cts = STAT; - mctc = NONE; - mcts = NONE; - cnt = STAT; - sl1l2 = NONE; - sal1l2 = NONE; - vl1l2 = NONE; - val1l2 = NONE; - vcnt = NONE; - pct = NONE; - pstd = NONE; - pjc = NONE; - prc = NONE; - eclv = NONE; - nbrctc = STAT; - nbrcts = STAT; - nbrcnt = STAT; - grad = NONE; -} - -// -// NetCDF matched pairs output file -// -nc_pairs_flag = { - latlon = FALSE; - raw = FALSE; - diff = FALSE; - climo = FALSE; - weight = FALSE; - nbrhd = FALSE; - fourier = FALSE; - gradient = FALSE; - apply_mask = FALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -grid_weight_flag = NONE; -rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.0.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/ush/templates/parm/met/GridStatConfig_REFC_prob b/ush/templates/parm/met/GridStatConfig_REFC_prob deleted file mode 100644 index 61570c493..000000000 --- a/ush/templates/parm/met/GridStatConfig_REFC_prob +++ /dev/null @@ -1,219 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Grid-Stat configuration file. -// -// For additional information, see the MET_BASE/config/README file. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "${MODEL}"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -// -// Output observation type to be written -// -obtype = "${OBTYPE}"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// -regrid = { - to_grid = ${REGRID_TO_GRID}; - vld_thresh = 0.5; - method = BUDGET; - width = 2; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -cat_thresh = []; -cnt_thresh = [ NA ]; -cnt_logic = UNION; -wind_thresh = [ NA ]; -wind_logic = UNION; - -// -// Forecast and observation fields to be verified -// - -M_to_KFT(x) = x * 3.28084 * 0.001; -KM_to_KFT(x) = x * 3280.84 * 0.001; - -fcst = { - field = [ ${FCST_FIELD} ]; -} - -obs = { - field = [ ${OBS_FIELD} ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Climatology mean data -// -climo_mean = { - - file_name = []; - field = []; - - regrid = { - vld_thresh = 0.5; - method = NEAREST; - width = 1; - } - - time_interp_method = DW_MEAN; - match_day = FALSE; - time_step = 21600; -} - -climo_stdev = climo_mean; -climo_stdev = { - file_name = []; -} - -climo_cdf_bins = 1; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// -mask = { - grid = []; - poly = [ ${VERIF_MASK} ]; - sid = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// -ci_alpha = [ 0.05 ]; - -boot = { - interval = PCTILE; - rep_prop = 1.0; - n_rep = 0; - rng = "mt19937"; - seed = ""; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Data smoothing methods -// -interp = { - field = NONE; - vld_thresh = 1.0; - shape = SQUARE; - - type = [ - { - method = NEAREST; - width = 1; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Neighborhood methods -// -nbrhd = { - field = BOTH; - shape = ${NEIGHBORHOOD_SHAPE}; - width = [ ${NEIGHBORHOOD_WIDTH} ]; - cov_thresh = [ >=0.5 ]; - vld_thresh = 1.0; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Fourier decomposition -// May be set separately in each "obs.field" entry -// -fourier = { - wave_1d_beg = []; - wave_1d_end = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Gradient statistics -// May be set separately in each "obs.field" entry -// -gradient = { - dx = [ 1 ]; - dy = [ 1 ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// -output_flag = { - fho = NONE; - ctc = NONE; - cts = NONE; - mctc = NONE; - mcts = NONE; - cnt = NONE; - sl1l2 = NONE; - sal1l2 = NONE; - vl1l2 = NONE; - val1l2 = NONE; - vcnt = NONE; - pct = STAT; - pstd = STAT; - pjc = STAT; - prc = STAT; - eclv = NONE; - nbrctc = NONE; - nbrcts = NONE; - nbrcnt = NONE; - grad = NONE; -} - -// -// NetCDF matched pairs output file -// -nc_pairs_flag = { - latlon = FALSE; - raw = FALSE; - diff = FALSE; - climo = FALSE; - weight = FALSE; - nbrhd = FALSE; - fourier = FALSE; - gradient = FALSE; - apply_mask = FALSE; -} - -//////////////////////////////////////////////////////////////////////////////// - -grid_weight_flag = NONE; -rank_corr_flag = FALSE; -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.0.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/ush/templates/parm/met/PB2NCConfig b/ush/templates/parm/met/PB2NCConfig deleted file mode 100644 index ded8359c4..000000000 --- a/ush/templates/parm/met/PB2NCConfig +++ /dev/null @@ -1,165 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// PB2NC configuration file. -// -// For additional information, see the MET_BASE/config/README file. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// PrepBufr message type -// -message_type = ${PB2NC_MESSAGE_TYPE}; - -// -// Mapping of message type group name to comma-separated list of values -// Derive PRMSL only for SURFACE message types -// -message_type_group_map = [ - { key = "SURFACE"; val = "ADPSFC,SFCSHP,MSONET"; }, - { key = "ANYAIR"; val = "AIRCAR,AIRCFT"; }, - { key = "ANYSFC"; val = "ADPSFC,SFCSHP,ADPUPA,PROFLR,MSONET"; }, - { key = "ONLYSF"; val = "ADPSFC,SFCSHP"; } -]; - -// -// Mapping of input PrepBufr message types to output message types -// -message_type_map = []; - -// -// PrepBufr station ID -// -station_id = ${PB2NC_STATION_ID}; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Observation time window -// -obs_window = { - beg = ${OBS_WINDOW_BEGIN}; - end = ${OBS_WINDOW_END}; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Observation retention regions -// -mask = { - grid = "${PB2NC_GRID}"; - poly = "${PB2NC_POLY}"; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Observing location elevation -// -elevation_range = { - beg = -1000; - end = 100000; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Observation types -// -pb_report_type = [ 120, 220, 221, 122, 222, 223, 224, 131, 133, 233, 153, 156, 157, 188, 288, 180, 280, 181, 182, 281, 282, 183, 284, 187, 287 ]; - -in_report_type = []; - -instrument_type = []; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Vertical levels to retain -// -level_range = { - beg = 1; - end = 511; -} - -level_category = [0, 1, 4, 5, 6]; - -//////////////////////////////////////////////////////////////////////////////// - -// -// BUFR variable names to retain or derive. -// Use obs_bufr_map to rename variables in the output. -// If empty, process all available variables. -// -obs_bufr_var = ${OBS_BUFR_VAR_LIST}; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Mapping of input BUFR variable names to output variables names. -// The default PREPBUFR map, obs_prepbufr_map, is appended to this map. -// -obs_bufr_map = [ - { key = "HOVI"; val = "VIS"; }, - { key = "PMO"; val = "PRMSL"; }, - { key = "POB"; val = "PRES"; }, - { key = "QOB"; val = "SPFH"; }, - { key = "TOB"; val = "TMP"; }, - { key = "TDO"; val = "DPT"; }, - { key = "ZOB"; val = "HGT"; }, - { key = "UOB"; val = "UGRD"; }, - { key = "VOB"; val = "VGRD"; }, - { key = "PWO"; val = "PWAT"; }, - { key = "D_DPT"; val = "DPT"; }, - { key = "D_WDIR"; val = "WDIR"; }, - { key = "D_WIND"; val = "WIND"; }, - { key = "MXGS"; val = "GUST"; }, - { key = "D_RH"; val = "RH"; }, - { key = "D_MIXR"; val = "MIXR"; }, - { key = "D_PBL"; val = "PBL"; }, - { key = "D_CAPE"; val = "CAPE"; }, - { key = "CEILING"; val = "CEILING"; }, - { key = "D_PRMSL"; val = "PRMSL"; }, - { key = "TOCC"; val = "TCDC"; } -]; - -// -// Default mapping for PREPBUFR. Replace input BUFR variable names with GRIB -// abbreviations in the output. This default map is appended to obs_bufr_map. -// This should not typically be overridden. -// -obs_prefbufr_map = []; - -//////////////////////////////////////////////////////////////////////////////// - -quality_mark_thresh = 9; -event_stack_flag = TOP; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Time periods for the summarization -// obs_var (string array) is added and works like grib_code (int array) -// when use_var_id is enabled and variable names are saved. -// -time_summary = { - flag = ${TIME_SUMMARY_FLAG}; - raw_data = FALSE; - beg = ${TIME_SUMMARY_BEG}; - end = ${TIME_SUMMARY_END}; - step = 3600; - width = 3600; - grib_code = []; - obs_var = ${TIME_SUMMARY_VAR_NAMES}; - type = ${TIME_SUMMARY_TYPES}; - vld_freq = 0; - vld_thresh = 0.0; -} - -//////////////////////////////////////////////////////////////////////////////// - -tmp_dir = "/tmp"; -version = "V10.0.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/ush/templates/parm/met/PointStatConfig b/ush/templates/parm/met/PointStatConfig deleted file mode 100644 index 384ee83a6..000000000 --- a/ush/templates/parm/met/PointStatConfig +++ /dev/null @@ -1,258 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Point-Stat configuration file. -// -// For additional information, see the MET_BASE/config/README file. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "${MODEL}"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// May be set separately in each "field" entry -// -regrid = { - to_grid = ${REGRID_TO_GRID}; - method = BILIN; - width = 2; - vld_thresh = 0.5; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// May be set separately in each "field" entry -// -censor_thresh = []; -censor_val = []; -cat_thresh = [ NA ]; -cnt_thresh = [ NA ]; -cnt_logic = UNION; -wind_thresh = [ NA ]; -wind_logic = UNION; -eclv_points = 0.05; -rank_corr_flag = FALSE; - -// -// Forecast and observation fields to be verified -// - -M_to_KFT(x) = x * 3.28084 * 0.001; -KM_to_KFT(x) = x * 3280.84 * 0.001; - -fcst = { - field = [ ${FCST_FIELD} ]; - }; - -obs = { - field = [ ${OBS_FIELD} ]; - }; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation filtering options -// May be set separately in each "obs.field" entry -// -message_type = ${POINT_STAT_MESSAGE_TYPE}; -sid_exc = []; -obs_quality = []; -duplicate_flag = NONE; -obs_summary = NONE; -obs_perc_value = 50; - -// -// Mapping of message type group name to comma-separated list of values. -// -message_type_group_map = [ - { key = "SURFACE"; val = "ADPSFC,SFCSHP,MSONET"; }, - { key = "ANYAIR"; val = "AIRCAR,AIRCFT"; }, - { key = "ANYSFC"; val = "ADPSFC,SFCSHP,ADPUPA,PROFLR,MSONET"; }, - { key = "ONLYSF"; val = "ADPSFC,SFCSHP"; }, - { key = "LANDSF"; val = "ADPSFC,MSONET"; }, - { key = "WATERSF"; val = "SFCSHP"; } -]; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Climatology data -// -climo_mean = { - - file_name = []; - field = []; - - regrid = { - method = NEAREST; - width = 1; - vld_thresh = 0.5; - shape = SQUARE; - } - - time_interp_method = NEAREST; - match_month = TRUE; - match_day = TRUE; - time_step = 21600; -} - -climo_stdev = climo_mean; -climo_stdev = { - file_name = []; -} - -climo_cdf_bins = 1; -write_cdf_bins = FALSE; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Land/Sea mask -// For LANDSF message types, only use forecast grid points where land = TRUE. -// For WATERSF message types, only use forecast grid points where land = FALSE. -// land_mask.flag may be set separately in each "obs.field" entry. -// -land_mask = { - flag = FALSE; - file_name = []; - field = { name = "LAND"; level = "L0"; } - regrid = { method = NEAREST; width = 1; } - thresh = eq1; -} - -// -// Topography -// For SURFACE message types, only use observations where the topo - station -// elevation difference meets the use_obs_thresh threshold. -// For the observations kept, when interpolating forecast data to the -// observation location, only use forecast grid points where the topo - station -// difference meets the interp_fcst_thresh threshold. -// topo_mask.flag may be set separately in each "obs.field" entry. -// -topo_mask = { - flag = FALSE; - file_name = []; - field = { name = "TOPO"; level = "L0"; } - regrid = { method = BILIN; width = 2; } - use_obs_thresh = ge-100&&le100; - interp_fcst_thresh = ge-50&&le50; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation time window -// May be set separately in each "obs.field" entry -// -obs_window = { - beg = ${OBS_WINDOW_BEGIN}; - end = ${OBS_WINDOW_END}; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// May be set separately in each "obs.field" entry -// -mask = { - grid = ${POINT_STAT_GRID}; - poly = ${POINT_STAT_POLY}; - sid = ${POINT_STAT_STATION_ID}; - llpnt = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// May be set separately in each "obs.field" entry -// -ci_alpha = [ 0.05 ]; - -boot = { - interval = PCTILE; - rep_prop = 1.0; - n_rep = 0; - rng = "mt19937"; - seed = ""; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Interpolation methods -// May be set separately in each "obs.field" entry -// -interp = { - vld_thresh = 1.0; - shape = SQUARE; - - type = [ - { - method = BILIN; - width = 2; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// HiRA verification method -// May be set separately in each "obs.field" entry -// -hira = { - flag = FALSE; - width = [ 2, 3, 4, 5 ]; - vld_thresh = 1.0; - cov_thresh = [ ==0.25 ]; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// May be set separately in each "obs.field" entry -// -output_flag = { - fho = STAT; - ctc = STAT; - cts = STAT; - mctc = NONE; - mcts = NONE; - cnt = STAT; - sl1l2 = STAT; - sal1l2 = NONE; - vl1l2 = STAT; - val1l2 = NONE; - vcnt = STAT; - pct = NONE; - pstd = NONE; - pjc = NONE; - prc = NONE; - eclv = NONE; - mpr = NONE; -} - -//////////////////////////////////////////////////////////////////////////////// - -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.0.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/ush/templates/parm/met/PointStatConfig_mean b/ush/templates/parm/met/PointStatConfig_mean deleted file mode 100644 index 0b935c578..000000000 --- a/ush/templates/parm/met/PointStatConfig_mean +++ /dev/null @@ -1,254 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Point-Stat configuration file. -// -// For additional information, see the MET_BASE/config/README file. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "${MODEL}"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// May be set separately in each "field" entry -// -regrid = { - to_grid = ${REGRID_TO_GRID}; - method = BILIN; - width = 2; - vld_thresh = 0.5; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// May be set separately in each "field" entry -// -censor_thresh = []; -censor_val = []; -cat_thresh = [ NA ]; -cnt_thresh = [ NA ]; -cnt_logic = UNION; -wind_thresh = [ NA ]; -wind_logic = UNION; -eclv_points = 0.05; -rank_corr_flag = FALSE; - -// -// Forecast and observation fields to be verified -// -fcst = { - field = [ ${FCST_FIELD} ]; - }; - -obs = { - field = [ ${OBS_FIELD} ]; - }; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation filtering options -// May be set separately in each "obs.field" entry -// -message_type = ${POINT_STAT_MESSAGE_TYPE}; -sid_exc = []; -obs_quality = []; -duplicate_flag = NONE; -obs_summary = NONE; -obs_perc_value = 50; - -// -// Mapping of message type group name to comma-separated list of values. -// -message_type_group_map = [ - { key = "SURFACE"; val = "ADPSFC,SFCSHP,MSONET"; }, - { key = "ANYAIR"; val = "AIRCAR,AIRCFT"; }, - { key = "ANYSFC"; val = "ADPSFC,SFCSHP,ADPUPA,PROFLR,MSONET"; }, - { key = "ONLYSF"; val = "ADPSFC,SFCSHP"; }, - { key = "LANDSF"; val = "ADPSFC,MSONET"; }, - { key = "WATERSF"; val = "SFCSHP"; } -]; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Climatology data -// -climo_mean = { - - file_name = []; - field = []; - - regrid = { - method = NEAREST; - width = 1; - vld_thresh = 0.5; - shape = SQUARE; - } - - time_interp_method = NEAREST; - match_month = TRUE; - match_day = TRUE; - time_step = 21600; -} - -climo_stdev = climo_mean; -climo_stdev = { - file_name = []; -} - -climo_cdf_bins = 1; -write_cdf_bins = FALSE; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Land/Sea mask -// For LANDSF message types, only use forecast grid points where land = TRUE. -// For WATERSF message types, only use forecast grid points where land = FALSE. -// land_mask.flag may be set separately in each "obs.field" entry. -// -land_mask = { - flag = FALSE; - file_name = []; - field = { name = "LAND"; level = "L0"; } - regrid = { method = NEAREST; width = 1; } - thresh = eq1; -} - -// -// Topography -// For SURFACE message types, only use observations where the topo - station -// elevation difference meets the use_obs_thresh threshold. -// For the observations kept, when interpolating forecast data to the -// observation location, only use forecast grid points where the topo - station -// difference meets the interp_fcst_thresh threshold. -// topo_mask.flag may be set separately in each "obs.field" entry. -// -topo_mask = { - flag = FALSE; - file_name = []; - field = { name = "TOPO"; level = "L0"; } - regrid = { method = BILIN; width = 2; } - use_obs_thresh = ge-100&&le100; - interp_fcst_thresh = ge-50&&le50; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation time window -// May be set separately in each "obs.field" entry -// -obs_window = { - beg = ${OBS_WINDOW_BEGIN}; - end = ${OBS_WINDOW_END}; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// May be set separately in each "obs.field" entry -// -mask = { - grid = ${POINT_STAT_GRID}; - poly = ${POINT_STAT_POLY}; - sid = ${POINT_STAT_STATION_ID}; - llpnt = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// May be set separately in each "obs.field" entry -// -ci_alpha = [ 0.05 ]; - -boot = { - interval = PCTILE; - rep_prop = 1.0; - n_rep = 0; - rng = "mt19937"; - seed = ""; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Interpolation methods -// May be set separately in each "obs.field" entry -// -interp = { - vld_thresh = 1.0; - shape = SQUARE; - - type = [ - { - method = BILIN; - width = 2; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// HiRA verification method -// May be set separately in each "obs.field" entry -// -hira = { - flag = FALSE; - width = [ 2, 3, 4, 5 ]; - vld_thresh = 1.0; - cov_thresh = [ ==0.25 ]; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// May be set separately in each "obs.field" entry -// -output_flag = { - fho = NONE; - ctc = NONE; - cts = NONE; - mctc = NONE; - mcts = NONE; - cnt = STAT; - sl1l2 = STAT; - sal1l2 = NONE; - vl1l2 = STAT; - val1l2 = NONE; - vcnt = STAT; - pct = NONE; - pstd = NONE; - pjc = NONE; - prc = NONE; - eclv = NONE; - mpr = NONE; -} - -//////////////////////////////////////////////////////////////////////////////// - -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.0.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/ush/templates/parm/met/PointStatConfig_prob b/ush/templates/parm/met/PointStatConfig_prob deleted file mode 100644 index f21ba1aaa..000000000 --- a/ush/templates/parm/met/PointStatConfig_prob +++ /dev/null @@ -1,254 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// -// Point-Stat configuration file. -// -// For additional information, see the MET_BASE/config/README file. -// -//////////////////////////////////////////////////////////////////////////////// - -// -// Output model name to be written -// -model = "${MODEL}"; - -// -// Output description to be written -// May be set separately in each "obs.field" entry -// -desc = "NA"; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification grid -// May be set separately in each "field" entry -// -regrid = { - to_grid = ${REGRID_TO_GRID}; - method = BILIN; - width = 2; - vld_thresh = 0.5; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// May be set separately in each "field" entry -// -censor_thresh = []; -censor_val = []; -cat_thresh = [ NA ]; -cnt_thresh = [ NA ]; -cnt_logic = UNION; -wind_thresh = [ NA ]; -wind_logic = UNION; -eclv_points = 0.05; -rank_corr_flag = FALSE; - -// -// Forecast and observation fields to be verified -// -fcst = { - field = [ ${FCST_FIELD} ]; - }; - -obs = { - field = [ ${OBS_FIELD} ]; - }; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation filtering options -// May be set separately in each "obs.field" entry -// -message_type = ${POINT_STAT_MESSAGE_TYPE}; -sid_exc = []; -obs_quality = []; -duplicate_flag = NONE; -obs_summary = NONE; -obs_perc_value = 50; - -// -// Mapping of message type group name to comma-separated list of values. -// -message_type_group_map = [ - { key = "SURFACE"; val = "ADPSFC,SFCSHP,MSONET"; }, - { key = "ANYAIR"; val = "AIRCAR,AIRCFT"; }, - { key = "ANYSFC"; val = "ADPSFC,SFCSHP,ADPUPA,PROFLR,MSONET"; }, - { key = "ONLYSF"; val = "ADPSFC,SFCSHP"; }, - { key = "LANDSF"; val = "ADPSFC,MSONET"; }, - { key = "WATERSF"; val = "SFCSHP"; } -]; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Climatology data -// -climo_mean = { - - file_name = []; - field = []; - - regrid = { - method = NEAREST; - width = 1; - vld_thresh = 0.5; - shape = SQUARE; - } - - time_interp_method = NEAREST; - match_month = TRUE; - match_day = TRUE; - time_step = 21600; -} - -climo_stdev = climo_mean; -climo_stdev = { - file_name = []; -} - -climo_cdf_bins = 1; -write_cdf_bins = FALSE; - -//////////////////////////////////////////////////////////////////////////////// - -// -// Land/Sea mask -// For LANDSF message types, only use forecast grid points where land = TRUE. -// For WATERSF message types, only use forecast grid points where land = FALSE. -// land_mask.flag may be set separately in each "obs.field" entry. -// -land_mask = { - flag = FALSE; - file_name = []; - field = { name = "LAND"; level = "L0"; } - regrid = { method = NEAREST; width = 1; } - thresh = eq1; -} - -// -// Topography -// For SURFACE message types, only use observations where the topo - station -// elevation difference meets the use_obs_thresh threshold. -// For the observations kept, when interpolating forecast data to the -// observation location, only use forecast grid points where the topo - station -// difference meets the interp_fcst_thresh threshold. -// topo_mask.flag may be set separately in each "obs.field" entry. -// -topo_mask = { - flag = FALSE; - file_name = []; - field = { name = "TOPO"; level = "L0"; } - regrid = { method = BILIN; width = 2; } - use_obs_thresh = ge-100&&le100; - interp_fcst_thresh = ge-50&&le50; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Point observation time window -// May be set separately in each "obs.field" entry -// -obs_window = { - beg = ${OBS_WINDOW_BEGIN}; - end = ${OBS_WINDOW_END}; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Verification masking regions -// May be set separately in each "obs.field" entry -// -mask = { - grid = ${POINT_STAT_GRID}; - poly = ${POINT_STAT_POLY}; - sid = ${POINT_STAT_STATION_ID}; - llpnt = []; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Confidence interval settings -// May be set separately in each "obs.field" entry -// -ci_alpha = [ 0.05 ]; - -boot = { - interval = PCTILE; - rep_prop = 1.0; - n_rep = 0; - rng = "mt19937"; - seed = ""; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Interpolation methods -// May be set separately in each "obs.field" entry -// -interp = { - vld_thresh = 1.0; - shape = SQUARE; - - type = [ - { - method = BILIN; - width = 2; - } - ]; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// HiRA verification method -// May be set separately in each "obs.field" entry -// -hira = { - flag = FALSE; - width = [ 2, 3, 4, 5 ]; - vld_thresh = 1.0; - cov_thresh = [ ==0.25 ]; - shape = SQUARE; -} - -//////////////////////////////////////////////////////////////////////////////// - -// -// Statistical output types -// May be set separately in each "obs.field" entry -// -output_flag = { - fho = NONE; - ctc = NONE; - cts = NONE; - mctc = NONE; - mcts = NONE; - cnt = NONE; - sl1l2 = NONE; - sal1l2 = NONE; - vl1l2 = NONE; - val1l2 = NONE; - vcnt = NONE; - pct = STAT; - pstd = STAT; - pjc = STAT; - prc = STAT; - eclv = NONE; - mpr = NONE; -} - -//////////////////////////////////////////////////////////////////////////////// - -tmp_dir = "/tmp"; -output_prefix = "${OUTPUT_PREFIX}"; -version = "V10.0.0"; - -//////////////////////////////////////////////////////////////////////////////// diff --git a/ush/templates/parm/metplus/APCP_01h.conf b/ush/templates/parm/metplus/APCP_01h.conf deleted file mode 100644 index 4f3599d32..000000000 --- a/ush/templates/parm/metplus/APCP_01h.conf +++ /dev/null @@ -1,99 +0,0 @@ -# Grid to Grid Precipitation Example - -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {ENV[EXPTDIR]}/log - -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01h - -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 - -# ANLYS -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 - -GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat - -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.APCP_01h.conf - -[config] -# Model to verify -MODEL = {ENV[MODEL]} -FCST_NATIVE_DATA_TYPE = GRIB - -# Set obtype to vx -OBTYPE = CCPA -OBS_NATIVE_DATA_TYPE = GRIB - -# List of applications to run -PROCESS_LIST = GridStat - -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{ENV[acc]}_{OBTYPE} - -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT - -# Format of INIT_BEG and INIT_END -INIT_TIME_FMT = %Y%m%d%H - -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H - -# list of forecast leads to process. -#LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} - -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times - -# run pcp_combine on forecast/obs data? -FCST_PCP_COMBINE_RUN = False -OBS_PCP_COMBINE_RUN = False - -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST - -# list of variables to compare -# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0" -FCST_VAR1_NAME = APCP -FCST_VAR1_LEVELS = A01 - -BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54 - -OBS_VAR1_NAME = APCP -OBS_VAR1_LEVELS = A01 - -# Neighborhood shape and widths -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE -GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 - -# Forecast data description variables -FCST_IS_PROB = False - diff --git a/ush/templates/parm/metplus/APCP_03h.conf b/ush/templates/parm/metplus/APCP_03h.conf deleted file mode 100644 index ce3f1f5db..000000000 --- a/ush/templates/parm/metplus/APCP_03h.conf +++ /dev/null @@ -1,130 +0,0 @@ -# Grid to Grid Precipitation Example - -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -# Grid to Grid Precipitation - -FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE} -FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}/metprd/pcp_combine -FCST_GRID_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} - -OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]} -OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine -OBS_GRID_STAT_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR} - -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {ENV[EXPTDIR]}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h - -[filename_templates] -# format of filenames -FCST_PCP_COMBINE_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 -FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a{level?fmt=%HH}h -FCST_GRID_STAT_INPUT_TEMPLATE = {FCST_PCP_COMBINE_OUTPUT_TEMPLATE} - -# ANLYS -OBS_PCP_COMBINE_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 -OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a{level?fmt=%HH}h -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE} - -GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat - -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.APCP_03h.conf - -[config] -# Model to verify -MODEL = {ENV[MODEL]} -FCST_NATIVE_DATA_TYPE = GRIB - -# Set obtype to vx -OBTYPE = CCPA -OBS_NATIVE_DATA_TYPE = GRIB - -# List of applications to run -PROCESS_LIST = PcpCombine, GridStat - -# Run pcp_combine on forecast/obs data? -FCST_PCP_COMBINE_RUN = True -OBS_PCP_COMBINE_RUN = True - -# Mode of pcp_combine to use (SUM, ADD, SUBTRACT) -FCST_PCP_COMBINE_METHOD = ADD -OBS_PCP_COMBINE_METHOD = ADD - -FCST_PCP_COMBINE_CONSTANT_INIT = True - -# Accumulation interval available in forecast data -FCST_PCP_COMBINE_INPUT_ACCUMS = 01 -FCST_PCP_COMBINE_OUTPUT_ACCUM = 03 - -# Accumulation interval available in obs data -OBS_PCP_COMBINE_INPUT_ACCUMS = 01 -OBS_PCP_COMBINE_OUTPUT_ACCUM = 03 - -# If 'bucket' output already exists, skip the PcpCombine step for the data -PCP_COMBINE_SKIP_IF_OUTPUT_EXISTS = True - -# Forecast data description variables -FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB -FCST_IS_PROB = false - -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{ENV[acc]}_{OBTYPE} - -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT - -# Format of INIT_BEG and INIT_END -INIT_TIME_FMT = %Y%m%d%H - -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H - -# list of forecast leads to process. -#LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} - -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times - -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST - -# list of variables to compare -# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0" -FCST_VAR1_NAME = APCP -FCST_VAR1_LEVELS = A03 - -BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350 - -OBS_VAR1_NAME = APCP -OBS_VAR1_LEVELS = A03 - -# Neighborhood shape and widths -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE -GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 - -# Forecast data description variables -FCST_IS_PROB = False - diff --git a/ush/templates/parm/metplus/APCP_06h.conf b/ush/templates/parm/metplus/APCP_06h.conf deleted file mode 100644 index 6773ddba8..000000000 --- a/ush/templates/parm/metplus/APCP_06h.conf +++ /dev/null @@ -1,129 +0,0 @@ -# Grid to Grid Precipitation Example - -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[OUTPUT_BASE]} - -FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE} -FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}/metprd/pcp_combine -FCST_GRID_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} - -OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]} -OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine -OBS_GRID_STAT_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR} - -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {ENV[EXPTDIR]}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h - -[filename_templates] -# format of filenames -FCST_PCP_COMBINE_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 -FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a{level?fmt=%HH}h -FCST_GRID_STAT_INPUT_TEMPLATE = {FCST_PCP_COMBINE_OUTPUT_TEMPLATE} - -# ANLYS -OBS_PCP_COMBINE_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 -OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a{level?fmt=%HH}h -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE} - -GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat - -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.APCP_06h.conf - -[config] -# Model to verify -MODEL = {ENV[MODEL]} -FCST_NATIVE_DATA_TYPE = GRIB - -# Set obtype to vx -OBTYPE = CCPA -OBS_NATIVE_DATA_TYPE = GRIB - -# List of applications to run -PROCESS_LIST = PcpCombine, GridStat - -# Run pcp_combine on forecast/obs data? -FCST_PCP_COMBINE_RUN = True -OBS_PCP_COMBINE_RUN = True - -# Mode of pcp_combine to use (SUM, ADD, SUBTRACT) -FCST_PCP_COMBINE_METHOD = ADD -OBS_PCP_COMBINE_METHOD = ADD - -FCST_PCP_COMBINE_CONSTANT_INIT = True - -# Accumulation interval available in forecast data -FCST_PCP_COMBINE_INPUT_ACCUMS = 01 -FCST_PCP_COMBINE_OUTPUT_ACCUM = 06 - -# Accumulation interval available in obs data -OBS_PCP_COMBINE_INPUT_ACCUMS = 01 -OBS_PCP_COMBINE_OUTPUT_ACCUM = 06 - -# If 'bucket' output already exists, skip the PcpCombine step for the data -PCP_COMBINE_SKIP_IF_OUTPUT_EXISTS = True - -# Forecast data description variables -FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB -FCST_IS_PROB = false - -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{ENV[acc]}_{OBTYPE} - -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT - -# Format of INIT_BEG and INIT_END -INIT_TIME_FMT = %Y%m%d%H - -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H - -# list of forecast leads to process. -#LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} - -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times - -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST - -# list of variables to compare -# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0" -FCST_VAR1_NAME = APCP -FCST_VAR1_LEVELS = A06 - -BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350,ge8.890,ge12.700 - -OBS_VAR1_NAME = APCP -OBS_VAR1_LEVELS = A06 - -# Neighborhood shape and widths -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE -GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 - -# Forecast data description variables -FCST_IS_PROB = False - diff --git a/ush/templates/parm/metplus/APCP_24h.conf b/ush/templates/parm/metplus/APCP_24h.conf deleted file mode 100644 index 8b5a6bb98..000000000 --- a/ush/templates/parm/metplus/APCP_24h.conf +++ /dev/null @@ -1,129 +0,0 @@ -# Grid to Grid Precipitation Example - -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[OUTPUT_BASE]} - -FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE} -FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}/metprd/pcp_combine -FCST_GRID_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} - -OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]} -OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine -OBS_GRID_STAT_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR} - -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {ENV[EXPTDIR]}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h - -[filename_templates] -# format of filenames -FCST_PCP_COMBINE_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 -FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a{level?fmt=%HH}h -FCST_GRID_STAT_INPUT_TEMPLATE = {FCST_PCP_COMBINE_OUTPUT_TEMPLATE} - -# ANLYS -OBS_PCP_COMBINE_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 -OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a{level?fmt=%HH}h -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE} - -GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat - -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.APCP_24h.conf - -[config] -# Model to verify -MODEL = {ENV[MODEL]} -FCST_NATIVE_DATA_TYPE = GRIB - -# Set obtype to vx -OBTYPE = CCPA -OBS_NATIVE_DATA_TYPE = GRIB - -# List of applications to run -PROCESS_LIST = PcpCombine, GridStat - -# Run pcp_combine on forecast/obs data? -FCST_PCP_COMBINE_RUN = True -OBS_PCP_COMBINE_RUN = True - -# Mode of pcp_combine to use (SUM, ADD, SUBTRACT) -FCST_PCP_COMBINE_METHOD = ADD -OBS_PCP_COMBINE_METHOD = ADD - -FCST_PCP_COMBINE_CONSTANT_INIT = True - -# Accumulation interval available in forecast data -FCST_PCP_COMBINE_INPUT_ACCUMS = 01 -FCST_PCP_COMBINE_OUTPUT_ACCUM = 24 - -# Accumulation interval available in obs data -OBS_PCP_COMBINE_INPUT_ACCUMS = 01 -OBS_PCP_COMBINE_OUTPUT_ACCUM = 24 - -# If 'bucket' output already exists, skip the PcpCombine step for the data -PCP_COMBINE_SKIP_IF_OUTPUT_EXISTS = True - -# Forecast data description variables -FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB -FCST_IS_PROB = false - -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{ENV[acc]}_{OBTYPE} - -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT - -# Format of INIT_BEG and INIT_END -INIT_TIME_FMT = %Y%m%d%H - -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H - -# list of forecast leads to process. -#LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} - -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times - -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST - -# list of variables to compare -# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0" -FCST_VAR1_NAME = APCP -FCST_VAR1_LEVELS = A24 - -BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350,ge8.890,ge12.700,ge25.400 - -OBS_VAR1_NAME = APCP -OBS_VAR1_LEVELS = A24 - -# Neighborhood shape and widths -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE -GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 - -# Forecast data description variables -FCST_IS_PROB = False - diff --git a/ush/templates/parm/metplus/EnsembleStat_APCP01h.conf b/ush/templates/parm/metplus/EnsembleStat_APCP01h.conf index 9172b3c17..23f6adae9 100644 --- a/ush/templates/parm/metplus/EnsembleStat_APCP01h.conf +++ b/ush/templates/parm/metplus/EnsembleStat_APCP01h.conf @@ -1,41 +1,8 @@ -# Ensemble Stat Grid to Grid Precipitation Example - -[dir] -# Input and output data directories -INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]} -OUTPUT_BASE = {ENV[EXPTDIR]} - -# Forecast model input directory for ensemble_stat -FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE} - -# Grid observation input dir for ensemble_stat -OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OBS_DIR]} - -# output directory for ensemble_stat -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {OUTPUT_BASE}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01h - -[filename_templates] -# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members -# or a single line, - filename wildcard characters may be used, ? or *. -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 - -# Template to look for grid observations. -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 - -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_APCP_01h.conf +# Ensemble-Stat METplus Configuration [config] -# Configuration-related settings such as the process list, begin and end times, etc. + +## Configuration-related settings such as the process list, begin and end times, etc. PROCESS_LIST = EnsembleStat # Looping by times: steps through each 'task' in the PROCESS_LIST for each @@ -49,13 +16,13 @@ LOOP_BY = INIT INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run -INIT_BEG = {ENV[CDATE]} +INIT_BEG={ENV[CDATE]} # End time for METplus run -INIT_END = {ENV[CDATE]} +INIT_END={ENV[CDATE]} # Increment between METplus runs in seconds. Must be >= 60 -INIT_INCREMENT = 3600 +INIT_INCREMENT=3600 # List of forecast leads to process LEAD_SEQ = {ENV[fhr_list]} @@ -63,9 +30,18 @@ LEAD_SEQ = {ENV[fhr_list]} # Used in the MET config file for: model, output_prefix MODEL = {ENV[MODEL]} +ENSEMBLE_STAT_DESC = NA ;; not in other file + # Name to identify observation data in output OBTYPE = CCPA +#ENSEMBLE_STAT_DESC = # not in other file + +# The MET ensemble_stat logging level +# 0 quiet to 5 loud, Verbosity setting for MET ensemble_stat output, 2 is default. +# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf +#LOG_ENSEMBLE_STAT_VERBOSITY = 2 + OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0 OBS_ENSEMBLE_STAT_WINDOW_END = 0 @@ -80,28 +56,109 @@ ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} # threshold for ratio of valid files to expected files to allow app to run ENSEMBLE_STAT_ENS_THRESH = 0.05 -# Used in the MET config file for: regrid to_grid field -ENSEMBLE_STAT_REGRID_TO_GRID = FCST - -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_01h_{OBTYPE} - -ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_APCP +# ens.vld_thresh value in the MET config file +ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -# Verification Masking regions -# Indicate which grid and polygon masking region, if applicable -ENSEMBLE_STAT_MASK_GRID = +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_01h_{OBTYPE} -# List of full path to poly masking files. NOTE: Only short lists of poly -# files work (those that fit on one line), a long list will result in an -# environment variable that is too long, resulting in an error. For long -# lists of poly masking files (i.e. all the mask files in the NCEP_mask -# directory), define these in the MET point_stat configuration file. -ENSEMBLE_STAT_MASK_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. # If the variable is not defined, or the value is not set # than the MET default is used. -ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {MET_BASE}/table_files/obs_error_table.txt +ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {MET_BASE}/table_files/obs_error_table.txt + + +# Used in the MET config file for: regrid to_grid field +ENSEMBLE_STAT_REGRID_TO_GRID = FCST +ENSEMBLE_STAT_REGRID_METHOD = BUDGET +ENSEMBLE_STAT_REGRID_WIDTH = 2 +ENSEMBLE_STAT_REGRID_VLD_THRESH = 0.5 +ENSEMBLE_STAT_REGRID_SHAPE = SQUARE + +ENSEMBLE_STAT_CENSOR_THRESH = +ENSEMBLE_STAT_CENSOR_VAL = + +#ENSEMBLE_STAT_NBRHD_PROB_WIDTH = 5 +#ENSEMBLE_STAT_NBRHD_PROB_SHAPE = CIRCLE +#ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH = 0.0 + +#ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH = 0.0 +#ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE = CIRCLE +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 +#ENSEMBLE_STAT_NMEP_SMOOTH_METHOD = GAUSSIAN +#ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH = 1 + +ENSEMBLE_STAT_MESSAGE_TYPE = + +ENSEMBLE_STAT_DUPLICATE_FLAG = UNIQUE +ENSEMBLE_STAT_SKIP_CONST = TRUE + +ENSEMBLE_STAT_OBS_ERROR_FLAG = TRUE + +ENSEMBLE_STAT_ENS_SSVAR_BIN_SIZE = 1.0 +ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 + +#ENSEMBLE_STAT_CLIMO_MEAN_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_MEAN_FIELD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_MEAN_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_MEAN_HOUR_INTERVAL = 6 + +#ENSEMBLE_STAT_CLIMO_STDEV_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_STDEV_FIELD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_STDEV_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_STDEV_HOUR_INTERVAL = 6 + + +ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 +ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False +ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True + +ENSEMBLE_STAT_MASK_GRID = + +ENSEMBLE_STAT_CI_ALPHA = 0.05 + +ENSEMBLE_STAT_INTERP_FIELD = BOTH +ENSEMBLE_STAT_INTERP_VLD_THRESH = 1.0 +ENSEMBLE_STAT_INTERP_SHAPE = SQUARE +ENSEMBLE_STAT_INTERP_METHOD = NEAREST +ENSEMBLE_STAT_INTERP_WIDTH = 1 + +ENSEMBLE_STAT_OUTPUT_FLAG_ECNT = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RPS = NONE +ENSEMBLE_STAT_OUTPUT_FLAG_RHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_PHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT + +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE # Ensemble Variables and levels as specified in the ens field dictionary # of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, @@ -118,7 +175,6 @@ FCST_VAR1_LEVELS = A01 FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; - # Observation Variables and levels as specified in the obs field dictionary # of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS, # (optional) OBS_VARn_OPTION @@ -127,3 +183,69 @@ OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS} OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS} + +[dir] +# Input and output data directories +INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]} +OUTPUT_BASE = {ENV[EXPTDIR]} + +# Forecast model input directory for ensemble_stat +FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE} + +# Point observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = + +# Grid observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OBS_DIR]} + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = + +# output directory for ensemble_stat +ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +# directory containing log files +LOG_DIR = {OUTPUT_BASE}/log + +# directory for staging data +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01 + + +[filename_templates] + +# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. + +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# Template to look for point observations. +# Example precip24_2010010112.nc +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = + +# Template to look for gridded observations. +# Example ST4.2010010112.24h +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 + +ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_APCP_01h.conf + diff --git a/ush/templates/parm/metplus/EnsembleStat_APCP03h.conf b/ush/templates/parm/metplus/EnsembleStat_APCP03h.conf index fbe1f518a..d67380ad8 100644 --- a/ush/templates/parm/metplus/EnsembleStat_APCP03h.conf +++ b/ush/templates/parm/metplus/EnsembleStat_APCP03h.conf @@ -1,60 +1,15 @@ -# Ensemble Stat Grid to Grid Precipitation Example - -[dir] -# Input and output data directories -INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]} -OUTPUT_BASE = {ENV[EXPTDIR]} - -FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE} -FCST_PCP_COMBINE_OUTPUT_DIR = {INPUT_BASE} - -OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]} -OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine - -# Forecast model input directory for ensemble_stat -FCST_ENSEMBLE_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} - -# Grid observation input dir for ensemble_stat -OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR} - -# Output directory for ensemble_stat -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {OUTPUT_BASE}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h - -[filename_templates] -# Need to have PCPCombine output data to individual member directories. -FCST_PCP_COMBINE_INPUT_TEMPLATE = {custom?fmt=%s}/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 -FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {custom?fmt=%s}/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a03h - -OBS_PCP_COMBINE_INPUT_TEMPLATE = {OBS_PCP_COMBINE_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 -OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a03h - -# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members -# or a single line, - filename wildcard characters may be used, ? or *. -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]})/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a03h - -# Template to look for grid observations. -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE} - -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_APCP_03h.conf +# Ensemble-Stat METplus Configuration [config] -# Configuration-related settings such as the process list, begin and end times, etc. + +## Configuration-related settings such as the process list, begin and end times, etc. PROCESS_LIST = PcpCombine, EnsembleStat # Looping by times: steps through each 'task' in the PROCESS_LIST for each # defined time, and repeats until all times have been evaluated. LOOP_ORDER = times +# Loop through ensmeble members for making precip buckets PCP_COMBINE_CUSTOM_LOOP_LIST = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]}) # LOOP_BY: Set to INIT to loop over initialization times @@ -64,13 +19,13 @@ LOOP_BY = INIT INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run -INIT_BEG = {ENV[CDATE]} +INIT_BEG={ENV[CDATE]} # End time for METplus run -INIT_END = {ENV[CDATE]} +INIT_END={ENV[CDATE]} # Increment between METplus runs in seconds. Must be >= 60 -INIT_INCREMENT = 3600 +INIT_INCREMENT=3600 # List of forecast leads to process LEAD_SEQ = {ENV[fhr_list]} @@ -79,6 +34,8 @@ LEAD_SEQ = {ENV[fhr_list]} MODEL = {ENV[MODEL]} FCST_NATIVE_DATA_TYPE = GRIB +ENSEMBLE_STAT_DESC = NA ;; not in other file + # Name to identify observation data in output OBTYPE = CCPA OBS_NATIVE_DATA_TYPE = GRIB @@ -108,6 +65,13 @@ PCP_COMBINE_SKIP_IF_OUTPUT_EXISTS = True FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB FCST_IS_PROB = false +#ENSEMBLE_STAT_DESC = # not in other file + +# The MET ensemble_stat logging level +# 0 quiet to 5 loud, Verbosity setting for MET ensemble_stat output, 2 is default. +# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf +#LOG_ENSEMBLE_STAT_VERBOSITY = 2 + OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0 OBS_ENSEMBLE_STAT_WINDOW_END = 0 @@ -122,29 +86,110 @@ ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} # threshold for ratio of valid files to expected files to allow app to run ENSEMBLE_STAT_ENS_THRESH = 0.05 -# Used in the MET config file for: regrid to_grid field -ENSEMBLE_STAT_REGRID_TO_GRID = FCST - -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_03h_{OBTYPE} +# ens.vld_thresh value in the MET config file +ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_APCP +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_03h_{OBTYPE} -# Verification Masking regions -# Indicate which grid and polygon masking region, if applicable -ENSEMBLE_STAT_MASK_GRID = - -# List of full path to poly masking files. NOTE: Only short lists of poly -# files work (those that fit on one line), a long list will result in an -# environment variable that is too long, resulting in an error. For long -# lists of poly masking files (i.e. all the mask files in the NCEP_mask -# directory), define these in the MET point_stat configuration file. -ENSEMBLE_STAT_MASK_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. # If the variable is not defined, or the value is not set # than the MET default is used. ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {MET_BASE}/table_files/obs_error_table.txt + +# Used in the MET config file for: regrid to_grid field +ENSEMBLE_STAT_REGRID_TO_GRID = FCST +ENSEMBLE_STAT_REGRID_METHOD = BUDGET +ENSEMBLE_STAT_REGRID_WIDTH = 2 +ENSEMBLE_STAT_REGRID_VLD_THRESH = 0.5 +ENSEMBLE_STAT_REGRID_SHAPE = SQUARE + +ENSEMBLE_STAT_CENSOR_THRESH = +ENSEMBLE_STAT_CENSOR_VAL = + +#ENSEMBLE_STAT_NBRHD_PROB_WIDTH = 5 +#ENSEMBLE_STAT_NBRHD_PROB_SHAPE = CIRCLE +#ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH = 0.0 + +#ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH = 0.0 +#ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE = CIRCLE +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 +#ENSEMBLE_STAT_NMEP_SMOOTH_METHOD = GAUSSIAN +#ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH = 1 + +ENSEMBLE_STAT_MESSAGE_TYPE = + +ENSEMBLE_STAT_DUPLICATE_FLAG = UNIQUE +ENSEMBLE_STAT_SKIP_CONST = TRUE + +ENSEMBLE_STAT_OBS_ERROR_FLAG = TRUE + +ENSEMBLE_STAT_ENS_SSVAR_BIN_SIZE = 1.0 +ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 + +#ENSEMBLE_STAT_CLIMO_MEAN_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_MEAN_FIELD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_MEAN_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_MEAN_HOUR_INTERVAL = 6 + +#ENSEMBLE_STAT_CLIMO_STDEV_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_STDEV_FIELD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_STDEV_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_STDEV_HOUR_INTERVAL = 6 + + +ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 +ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False +ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True + +ENSEMBLE_STAT_MASK_GRID = + +ENSEMBLE_STAT_CI_ALPHA = 0.05 + +ENSEMBLE_STAT_INTERP_FIELD = BOTH +ENSEMBLE_STAT_INTERP_VLD_THRESH = 1.0 +ENSEMBLE_STAT_INTERP_SHAPE = SQUARE +ENSEMBLE_STAT_INTERP_METHOD = NEAREST +ENSEMBLE_STAT_INTERP_WIDTH = 1 + +ENSEMBLE_STAT_OUTPUT_FLAG_ECNT = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RPS = NONE +ENSEMBLE_STAT_OUTPUT_FLAG_RHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_PHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT + +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE + # Ensemble Variables and levels as specified in the ens field dictionary # of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, # (optional) ENS_VARn_OPTION @@ -158,10 +203,8 @@ ENS_VAR1_THRESH = gt0.0,ge0.508,ge2.54,ge6.350 FCST_VAR1_NAME = APCP FCST_VAR1_LEVELS = A03 -# FIGURE OUT WHAT BIN SIZE SHOULD BE FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; - # Observation Variables and levels as specified in the obs field dictionary # of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS, # (optional) OBS_VARn_OPTION @@ -170,3 +213,84 @@ OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS} OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS} + +[dir] +# Input and output data directories +INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]} +OUTPUT_BASE = {ENV[EXPTDIR]} + +# Input and output fcst data directories for pcp-combine +FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE} +FCST_PCP_COMBINE_OUTPUT_DIR = {INPUT_BASE} + +# Input and output obs data directories for pcp-combine +OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]} +OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine + +# Forecast model input directory for ensemble_stat +FCST_ENSEMBLE_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} + +# Point observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = + +# Grid observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR} + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = + +# output directory for ensemble_stat +ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +# directory containing log files +LOG_DIR = {OUTPUT_BASE}/log + +# directory for staging data +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03 + + +[filename_templates] +# Need to have PCPCombine output data to individual member directories. +FCST_PCP_COMBINE_INPUT_TEMPLATE = {custom?fmt=%s}/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 +FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {custom?fmt=%s}/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a03h + +# Input and output template for obs pcp-combine files +OBS_PCP_COMBINE_INPUT_TEMPLATE = {OBS_PCP_COMBINE_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 +OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a03h + +# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. + +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]})/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a03h + +# Template to look for point observations. +# Example precip24_2010010112.nc +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = + +# Template to look for gridded observations. +# Example ST4.2010010112.24h +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE} + +ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_APCP_03h.conf + diff --git a/ush/templates/parm/metplus/EnsembleStat_APCP06h.conf b/ush/templates/parm/metplus/EnsembleStat_APCP06h.conf index 168cb9b98..ae2f61f44 100644 --- a/ush/templates/parm/metplus/EnsembleStat_APCP06h.conf +++ b/ush/templates/parm/metplus/EnsembleStat_APCP06h.conf @@ -1,60 +1,15 @@ -# Ensemble Stat Grid to Grid Precipitation Example - -[dir] -# Input and output data directories -INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]} -OUTPUT_BASE = {ENV[EXPTDIR]} - -FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE} -FCST_PCP_COMBINE_OUTPUT_DIR = {INPUT_BASE} - -OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]} -OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine - -# Forecast model input directory for ensemble_stat -FCST_ENSEMBLE_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} - -# Grid observation input dir for ensemble_stat -OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR} - -# Output directory for ensemble_stat -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {OUTPUT_BASE}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h - -[filename_templates] -# Need to have PCPCombine output data to individual member directories. -FCST_PCP_COMBINE_INPUT_TEMPLATE = {custom?fmt=%s}/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 -FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {custom?fmt=%s}/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a06h - -OBS_PCP_COMBINE_INPUT_TEMPLATE = {OBS_PCP_COMBINE_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 -OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a06h - -# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members -# or a single line, - filename wildcard characters may be used, ? or *. -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]})/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a06h - -# Template to look for grid observations. -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE} - -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_APCP_06h.conf +# Ensemble-Stat METplus Configuration [config] -# Configuration-related settings such as the process list, begin and end times, etc. + +## Configuration-related settings such as the process list, begin and end times, etc. PROCESS_LIST = PcpCombine, EnsembleStat # Looping by times: steps through each 'task' in the PROCESS_LIST for each # defined time, and repeats until all times have been evaluated. LOOP_ORDER = times +# Loop through ensmeble members for making precip buckets PCP_COMBINE_CUSTOM_LOOP_LIST = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]}) # LOOP_BY: Set to INIT to loop over initialization times @@ -64,13 +19,13 @@ LOOP_BY = INIT INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run -INIT_BEG = {ENV[CDATE]} +INIT_BEG={ENV[CDATE]} # End time for METplus run -INIT_END = {ENV[CDATE]} +INIT_END={ENV[CDATE]} # Increment between METplus runs in seconds. Must be >= 60 -INIT_INCREMENT = 3600 +INIT_INCREMENT=3600 # List of forecast leads to process LEAD_SEQ = {ENV[fhr_list]} @@ -79,6 +34,8 @@ LEAD_SEQ = {ENV[fhr_list]} MODEL = {ENV[MODEL]} FCST_NATIVE_DATA_TYPE = GRIB +ENSEMBLE_STAT_DESC = NA ;; not in other file + # Name to identify observation data in output OBTYPE = CCPA OBS_NATIVE_DATA_TYPE = GRIB @@ -108,6 +65,13 @@ PCP_COMBINE_SKIP_IF_OUTPUT_EXISTS = True FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB FCST_IS_PROB = false +#ENSEMBLE_STAT_DESC = # not in other file + +# The MET ensemble_stat logging level +# 0 quiet to 5 loud, Verbosity setting for MET ensemble_stat output, 2 is default. +# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf +#LOG_ENSEMBLE_STAT_VERBOSITY = 2 + OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0 OBS_ENSEMBLE_STAT_WINDOW_END = 0 @@ -122,37 +86,118 @@ ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} # threshold for ratio of valid files to expected files to allow app to run ENSEMBLE_STAT_ENS_THRESH = 0.05 -# Used in the MET config file for: regrid to_grid field -ENSEMBLE_STAT_REGRID_TO_GRID = FCST +# ens.vld_thresh value in the MET config file +ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_06h_{OBTYPE} +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_06h_{OBTYPE} -ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_APCP - -# Verification Masking regions -# Indicate which grid and polygon masking region, if applicable -ENSEMBLE_STAT_MASK_GRID = - -# List of full path to poly masking files. NOTE: Only short lists of poly -# files work (those that fit on one line), a long list will result in an -# environment variable that is too long, resulting in an error. For long -# lists of poly masking files (i.e. all the mask files in the NCEP_mask -# directory), define these in the MET point_stat configuration file. -ENSEMBLE_STAT_MASK_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. # If the variable is not defined, or the value is not set # than the MET default is used. ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {MET_BASE}/table_files/obs_error_table.txt -# Ensemble Variables and levels as specified in the ens field dictionary + +# Used in the MET config file for: regrid to_grid field +ENSEMBLE_STAT_REGRID_TO_GRID = FCST +ENSEMBLE_STAT_REGRID_METHOD = BUDGET +ENSEMBLE_STAT_REGRID_WIDTH = 2 +ENSEMBLE_STAT_REGRID_VLD_THRESH = 0.5 +ENSEMBLE_STAT_REGRID_SHAPE = SQUARE + +ENSEMBLE_STAT_CENSOR_THRESH = +ENSEMBLE_STAT_CENSOR_VAL = + +#ENSEMBLE_STAT_NBRHD_PROB_WIDTH = 5 +#ENSEMBLE_STAT_NBRHD_PROB_SHAPE = CIRCLE +#ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH = 0.0 + +#ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH = 0.0 +#ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE = CIRCLE +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 +#ENSEMBLE_STAT_NMEP_SMOOTH_METHOD = GAUSSIAN +#ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH = 1 + +ENSEMBLE_STAT_MESSAGE_TYPE = + +ENSEMBLE_STAT_DUPLICATE_FLAG = UNIQUE +ENSEMBLE_STAT_SKIP_CONST = TRUE + +ENSEMBLE_STAT_OBS_ERROR_FLAG = TRUE + +ENSEMBLE_STAT_ENS_SSVAR_BIN_SIZE = 1.0 +ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 + +#ENSEMBLE_STAT_CLIMO_MEAN_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_MEAN_FIELD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_MEAN_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_MEAN_HOUR_INTERVAL = 6 + +#ENSEMBLE_STAT_CLIMO_STDEV_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_STDEV_FIELD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_STDEV_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_STDEV_HOUR_INTERVAL = 6 + + +ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 +ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False +ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True + +ENSEMBLE_STAT_MASK_GRID = + +ENSEMBLE_STAT_CI_ALPHA = 0.05 + +ENSEMBLE_STAT_INTERP_FIELD = BOTH +ENSEMBLE_STAT_INTERP_VLD_THRESH = 1.0 +ENSEMBLE_STAT_INTERP_SHAPE = SQUARE +ENSEMBLE_STAT_INTERP_METHOD = NEAREST +ENSEMBLE_STAT_INTERP_WIDTH = 1 + +ENSEMBLE_STAT_OUTPUT_FLAG_ECNT = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RPS = NONE +ENSEMBLE_STAT_OUTPUT_FLAG_RHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_PHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT + +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE + +# Ensemble Variables and levels as specified in the ens field dictionary # of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, # (optional) ENS_VARn_OPTION ENS_VAR1_NAME = APCP ENS_VAR1_LEVELS = A06 ENS_VAR1_THRESH = gt0.0,ge2.54,ge6.350,ge12.700 -# Forecast Variables and levels as specified in the fcst field dictionary +# Forecast Variables and levels as specified in the fcst field dictionary # of the MET configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, # (optional) FCST_VARn_OPTION FCST_VAR1_NAME = APCP @@ -162,7 +207,7 @@ FCST_VAR1_LEVELS = A06 FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; -# Observation Variables and levels as specified in the obs field dictionary +# Observation Variables and levels as specified in the obs field dictionary # of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS, # (optional) OBS_VARn_OPTION OBS_VAR1_NAME = {FCST_VAR1_NAME} @@ -170,3 +215,83 @@ OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS} OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS} +[dir] +# Input and output data directories +INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]} +OUTPUT_BASE = {ENV[EXPTDIR]} + +# Input and output fcst data directories for pcp-combine +FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE} +FCST_PCP_COMBINE_OUTPUT_DIR = {INPUT_BASE} + +# Input and output obs data directories for pcp-combine +OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]} +OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine + +# Forecast model input directory for ensemble_stat +FCST_ENSEMBLE_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} + +# Point observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = + +# Grid observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR} + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = + +# output directory for ensemble_stat +ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +# directory containing log files +LOG_DIR = {OUTPUT_BASE}/log + +# directory for staging data +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01 + + +[filename_templates] +# Need to have PCPCombine output data to individual member directories. +FCST_PCP_COMBINE_INPUT_TEMPLATE = {custom?fmt=%s}/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 +FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {custom?fmt=%s}/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a06h + +# Input and output template for obs pcp-combine files +OBS_PCP_COMBINE_INPUT_TEMPLATE = {OBS_PCP_COMBINE_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 +OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a06h + +# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. + +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]})/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a06h + +# Template to look for point observations. +# Example precip24_2010010112.nc +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = + +# Template to look for gridded observations. +# Example ST4.2010010112.24h +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE} + +ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_APCP_06h.conf + diff --git a/ush/templates/parm/metplus/EnsembleStat_APCP24h.conf b/ush/templates/parm/metplus/EnsembleStat_APCP24h.conf index 1243e1f54..0b1d175af 100644 --- a/ush/templates/parm/metplus/EnsembleStat_APCP24h.conf +++ b/ush/templates/parm/metplus/EnsembleStat_APCP24h.conf @@ -1,60 +1,15 @@ -# Ensemble Stat Grid to Grid Precipitation Example - -[dir] -# Input and output data directories -INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]} -OUTPUT_BASE = {ENV[EXPTDIR]} - -FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE} -FCST_PCP_COMBINE_OUTPUT_DIR = {INPUT_BASE} - -OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]} -OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine - -# Forecast model input directory for ensemble_stat -FCST_ENSEMBLE_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} - -# Grid observation input dir for ensemble_stat -OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR} - -# Output directory for ensemble_stat -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {OUTPUT_BASE}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h - -[filename_templates] -# Need to have PCPCombine output data to individual member directories. -FCST_PCP_COMBINE_INPUT_TEMPLATE = {custom?fmt=%s}/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 -FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {custom?fmt=%s}/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a24h - -OBS_PCP_COMBINE_INPUT_TEMPLATE = {OBS_PCP_COMBINE_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 -OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a24h - -# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members -# or a single line, - filename wildcard characters may be used, ? or *. -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]})/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a24h - -# Template to look for grid observations. -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE} - -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_APCP_24h.conf +# Ensemble-Stat METplus Configuration [config] -# Configuration-related settings such as the process list, begin and end times, etc. + +## Configuration-related settings such as the process list, begin and end times, etc. PROCESS_LIST = PcpCombine, EnsembleStat # Looping by times: steps through each 'task' in the PROCESS_LIST for each # defined time, and repeats until all times have been evaluated. LOOP_ORDER = times +# Loop through ensmeble members for making precip buckets PCP_COMBINE_CUSTOM_LOOP_LIST = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]}) # LOOP_BY: Set to INIT to loop over initialization times @@ -64,13 +19,13 @@ LOOP_BY = INIT INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run -INIT_BEG = {ENV[CDATE]} +INIT_BEG={ENV[CDATE]} # End time for METplus run -INIT_END = {ENV[CDATE]} +INIT_END={ENV[CDATE]} # Increment between METplus runs in seconds. Must be >= 60 -INIT_INCREMENT = 3600 +INIT_INCREMENT=3600 # List of forecast leads to process LEAD_SEQ = {ENV[fhr_list]} @@ -79,6 +34,8 @@ LEAD_SEQ = {ENV[fhr_list]} MODEL = {ENV[MODEL]} FCST_NATIVE_DATA_TYPE = GRIB +ENSEMBLE_STAT_DESC = NA ;; not in other file + # Name to identify observation data in output OBTYPE = CCPA OBS_NATIVE_DATA_TYPE = GRIB @@ -95,7 +52,7 @@ FCST_PCP_COMBINE_CONSTANT_INIT = True # Accumulation interval available in forecast data FCST_PCP_COMBINE_INPUT_ACCUMS = 01 -FCST_PCP_COMBINE_OUTPUT_ACCUM = 24 +FCST_PCP_COMBINE_OUTPUT_ACCUM = 24 # Accumulation interval available in observation data OBS_PCP_COMBINE_INPUT_ACCUMS = 01 @@ -108,6 +65,13 @@ PCP_COMBINE_SKIP_IF_OUTPUT_EXISTS = True FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB FCST_IS_PROB = false +#ENSEMBLE_STAT_DESC = # not in other file + +# The MET ensemble_stat logging level +# 0 quiet to 5 loud, Verbosity setting for MET ensemble_stat output, 2 is default. +# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf +#LOG_ENSEMBLE_STAT_VERBOSITY = 2 + OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0 OBS_ENSEMBLE_STAT_WINDOW_END = 0 @@ -122,37 +86,118 @@ ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} # threshold for ratio of valid files to expected files to allow app to run ENSEMBLE_STAT_ENS_THRESH = 0.05 -# Used in the MET config file for: regrid to_grid field -ENSEMBLE_STAT_REGRID_TO_GRID = FCST - -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_24h_{OBTYPE} +# ens.vld_thresh value in the MET config file +ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_APCP - -# Verification Masking regions -# Indicate which grid and polygon masking region, if applicable -ENSEMBLE_STAT_MASK_GRID = +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_APCP_24h_{OBTYPE} -# List of full path to poly masking files. NOTE: Only short lists of poly -# files work (those that fit on one line), a long list will result in an -# environment variable that is too long, resulting in an error. For long -# lists of poly masking files (i.e. all the mask files in the NCEP_mask -# directory), define these in the MET point_stat configuration file. -ENSEMBLE_STAT_MASK_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. # If the variable is not defined, or the value is not set # than the MET default is used. ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {MET_BASE}/table_files/obs_error_table.txt -# Ensemble Variables and levels as specified in the ens field dictionary + +# Used in the MET config file for: regrid to_grid field +ENSEMBLE_STAT_REGRID_TO_GRID = FCST +ENSEMBLE_STAT_REGRID_METHOD = BUDGET +ENSEMBLE_STAT_REGRID_WIDTH = 2 +ENSEMBLE_STAT_REGRID_VLD_THRESH = 0.5 +ENSEMBLE_STAT_REGRID_SHAPE = SQUARE + +ENSEMBLE_STAT_CENSOR_THRESH = +ENSEMBLE_STAT_CENSOR_VAL = + +#ENSEMBLE_STAT_NBRHD_PROB_WIDTH = 5 +#ENSEMBLE_STAT_NBRHD_PROB_SHAPE = CIRCLE +#ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH = 0.0 + +#ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH = 0.0 +#ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE = CIRCLE +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 +#ENSEMBLE_STAT_NMEP_SMOOTH_METHOD = GAUSSIAN +#ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH = 1 + +ENSEMBLE_STAT_MESSAGE_TYPE = + +ENSEMBLE_STAT_DUPLICATE_FLAG = UNIQUE +ENSEMBLE_STAT_SKIP_CONST = TRUE + +ENSEMBLE_STAT_OBS_ERROR_FLAG = TRUE + +ENSEMBLE_STAT_ENS_SSVAR_BIN_SIZE = 1.0 +ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 + +#ENSEMBLE_STAT_CLIMO_MEAN_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_MEAN_FIELD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_MEAN_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_MEAN_HOUR_INTERVAL = 6 + +#ENSEMBLE_STAT_CLIMO_STDEV_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_STDEV_FIELD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_STDEV_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_STDEV_HOUR_INTERVAL = 6 + + +ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 +ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False +ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True + +ENSEMBLE_STAT_MASK_GRID = + +ENSEMBLE_STAT_CI_ALPHA = 0.05 + +ENSEMBLE_STAT_INTERP_FIELD = BOTH +ENSEMBLE_STAT_INTERP_VLD_THRESH = 1.0 +ENSEMBLE_STAT_INTERP_SHAPE = SQUARE +ENSEMBLE_STAT_INTERP_METHOD = NEAREST +ENSEMBLE_STAT_INTERP_WIDTH = 1 + +ENSEMBLE_STAT_OUTPUT_FLAG_ECNT = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RPS = NONE +ENSEMBLE_STAT_OUTPUT_FLAG_RHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_PHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT + +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE + +# Ensemble Variables and levels as specified in the ens field dictionary # of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, # (optional) ENS_VARn_OPTION ENS_VAR1_NAME = APCP ENS_VAR1_LEVELS = A24 ENS_VAR1_THRESH = gt0.0,ge6.350,ge12.700,ge25.400 -# Forecast Variables and levels as specified in the fcst field dictionary +# Forecast Variables and levels as specified in the fcst field dictionary # of the MET configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, # (optional) FCST_VARn_OPTION FCST_VAR1_NAME = APCP @@ -162,7 +207,7 @@ FCST_VAR1_LEVELS = A24 FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; -# Observation Variables and levels as specified in the obs field dictionary +# Observation Variables and levels as specified in the obs field dictionary # of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS, # (optional) OBS_VARn_OPTION OBS_VAR1_NAME = {FCST_VAR1_NAME} @@ -170,3 +215,83 @@ OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS} OBS_VAR1_OPTIONS = {FCST_VAR1_OPTIONS} +[dir] +# Input and output data directories +INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]} +OUTPUT_BASE = {ENV[EXPTDIR]} + +# Input and output fcst data directories for pcp-combine +FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE} +FCST_PCP_COMBINE_OUTPUT_DIR = {INPUT_BASE} + +# Input and output obs data directories for pcp-combine +OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]} +OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine + +# Forecast model input directory for ensemble_stat +FCST_ENSEMBLE_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} + +# Point observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = + +# Grid observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR} + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = + +# output directory for ensemble_stat +ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +# directory containing log files +LOG_DIR = {OUTPUT_BASE}/log + +# directory for staging data +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01 + + +[filename_templates] +# Need to have PCPCombine output data to individual member directories. +FCST_PCP_COMBINE_INPUT_TEMPLATE = {custom?fmt=%s}/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 +FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {custom?fmt=%s}/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a24h + +# Input and output template for obs pcp-combine files +OBS_PCP_COMBINE_INPUT_TEMPLATE = {OBS_PCP_COMBINE_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 +OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a24h + +# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. + +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = membegin_end_incr(1,{ENV[NUM_ENS_MEMBERS]},1,{ENV[NUM_PAD]})/metprd/pcp_combine/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a24h + +# Template to look for point observations. +# Example precip24_2010010112.nc +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = + +# Template to look for gridded observations. +# Example ST4.2010010112.24h +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE} + +ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_APCP_24h.conf + diff --git a/ush/templates/parm/metplus/EnsembleStat_REFC.conf b/ush/templates/parm/metplus/EnsembleStat_REFC.conf index 393f6037b..989341a55 100644 --- a/ush/templates/parm/metplus/EnsembleStat_REFC.conf +++ b/ush/templates/parm/metplus/EnsembleStat_REFC.conf @@ -1,38 +1,4 @@ -# Ensemble Stat Grid to Grid REFC Example - -[dir] -# Input and output data directories -INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]} -OUTPUT_BASE = {ENV[EXPTDIR]} - -# Forecast model input directory for ensemble_stat -FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE} - -# Grid observation input dir for ensemble_stat -OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OBS_DIR]} - -# output directory for ensemble_stat -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {OUTPUT_BASE}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/REFC - -[filename_templates] -# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members -# or a single line, - filename wildcard characters may be used, ? or *. -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 - -# Template to look for grid observations. -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 - -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat - -ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly - -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_REFC.conf +# Ensemble-Stat METplus Configuration [config] @@ -50,13 +16,13 @@ LOOP_BY = INIT INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run -INIT_BEG = {ENV[CDATE]} +INIT_BEG={ENV[CDATE]} # End time for METplus run -INIT_END = {ENV[CDATE]} +INIT_END={ENV[CDATE]} # Increment between METplus runs in seconds. Must be >= 60 -INIT_INCREMENT = 3600 +INIT_INCREMENT=3600 # List of forecast leads to process LEAD_SEQ = {ENV[fhr_list]} @@ -64,9 +30,18 @@ LEAD_SEQ = {ENV[fhr_list]} # Used in the MET config file for: model, output_prefix MODEL = {ENV[MODEL]} +ENSEMBLE_STAT_DESC = NA ;; not in other file + # Name to identify observation data in output OBTYPE = MRMS +#ENSEMBLE_STAT_DESC = # not in other file + +# The MET ensemble_stat logging level +# 0 quiet to 5 loud, Verbosity setting for MET ensemble_stat output, 2 is default. +# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf +#LOG_ENSEMBLE_STAT_VERBOSITY = 2 + OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0 OBS_ENSEMBLE_STAT_WINDOW_END = 0 @@ -81,17 +56,109 @@ ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} # threshold for ratio of valid files to expected files to allow app to run ENSEMBLE_STAT_ENS_THRESH = 0.05 -# Used in the MET config file for: regrid to_grid field -ENSEMBLE_STAT_REGRID_TO_GRID = FCST +# ens.vld_thresh value in the MET config file +ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_REFC_{OBTYPE} +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_REFC_{OBTYPE} -ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_REFC +ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. # If the variable is not defined, or the value is not set # than the MET default is used. -ENSEMBLE_STAT_MET_OBS_ERR_TABLE = +ENSEMBLE_STAT_MET_OBS_ERR_TABLE = + + +# Used in the MET config file for: regrid to_grid field +ENSEMBLE_STAT_REGRID_TO_GRID = FCST +ENSEMBLE_STAT_REGRID_METHOD = BUDGET +ENSEMBLE_STAT_REGRID_WIDTH = 2 +ENSEMBLE_STAT_REGRID_VLD_THRESH = 0.5 +ENSEMBLE_STAT_REGRID_SHAPE = SQUARE + +ENSEMBLE_STAT_CENSOR_THRESH = +ENSEMBLE_STAT_CENSOR_VAL = + +#ENSEMBLE_STAT_NBRHD_PROB_WIDTH = 5 +#ENSEMBLE_STAT_NBRHD_PROB_SHAPE = CIRCLE +#ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH = 0.0 + +#ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH = 0.0 +#ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE = CIRCLE +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 +#ENSEMBLE_STAT_NMEP_SMOOTH_METHOD = GAUSSIAN +#ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH = 1 + +ENSEMBLE_STAT_MESSAGE_TYPE = ADPSFC + +ENSEMBLE_STAT_DUPLICATE_FLAG = NONE +ENSEMBLE_STAT_SKIP_CONST = TRUE + +ENSEMBLE_STAT_OBS_ERROR_FLAG = FALSE + +ENSEMBLE_STAT_ENS_SSVAR_BIN_SIZE = 1.0 +ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 + +#ENSEMBLE_STAT_CLIMO_MEAN_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_MEAN_FIELD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_MEAN_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_MEAN_HOUR_INTERVAL = 6 + +#ENSEMBLE_STAT_CLIMO_STDEV_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_STDEV_FIELD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_STDEV_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_STDEV_HOUR_INTERVAL = 6 + + +ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 +ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False +ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True + +ENSEMBLE_STAT_MASK_GRID = FULL + +ENSEMBLE_STAT_CI_ALPHA = 0.05 + +ENSEMBLE_STAT_INTERP_FIELD = BOTH +ENSEMBLE_STAT_INTERP_VLD_THRESH = 1.0 +ENSEMBLE_STAT_INTERP_SHAPE = SQUARE +ENSEMBLE_STAT_INTERP_METHOD = NEAREST +ENSEMBLE_STAT_INTERP_WIDTH = 1 + +ENSEMBLE_STAT_OUTPUT_FLAG_ECNT = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RPS = NONE +ENSEMBLE_STAT_OUTPUT_FLAG_RHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_PHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT + +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE # Ensemble Variables and levels as specified in the ens field dictionary # of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, @@ -108,12 +175,76 @@ FCST_VAR1_LEVELS = L0 FCST_VAR1_OPTIONS = ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; - # Observation Variables and levels as specified in the obs field dictionary # of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS, # (optional) OBS_VARn_OPTION - OBS_VAR1_NAME = MergedReflectivityQCComposite OBS_VAR1_LEVELS = Z500 + OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; +[dir] +# Input and output data directories +INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]} +OUTPUT_BASE = {ENV[EXPTDIR]} + +# Forecast model input directory for ensemble_stat +FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE} + +# Point observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = + +# Grid observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OBS_DIR]} + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = + +# output directory for ensemble_stat +ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +# directory containing log files +LOG_DIR = {OUTPUT_BASE}/log + +# directory for staging data +STAGING_DIR = {OUTPUT_BASE}/stage/REFC + + +[filename_templates] + +# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. + +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# Template to look for point observations. +# Example precip24_2010010112.nc +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = + +# Template to look for gridded observations. +# Example ST4.2010010112.24h +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 + +ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_REFC.conf + diff --git a/ush/templates/parm/metplus/EnsembleStat_RETOP.conf b/ush/templates/parm/metplus/EnsembleStat_RETOP.conf index a90a9c754..b0c235a2e 100644 --- a/ush/templates/parm/metplus/EnsembleStat_RETOP.conf +++ b/ush/templates/parm/metplus/EnsembleStat_RETOP.conf @@ -1,38 +1,4 @@ -# Ensemble Stat Grid to Grid RETOP Example - -[dir] -# Input and output data directories -INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]} -OUTPUT_BASE = {ENV[EXPTDIR]} - -# Forecast model input directory for ensemble_stat -FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE} - -# Grid observation input dir for ensemble_stat -OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OBS_DIR]} - -# output directory for ensemble_stat -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {OUTPUT_BASE}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/RETOP - -[filename_templates] -# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members -# or a single line, - filename wildcard characters may be used, ? or *. -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 - -# Template to look for grid observations. -OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 - -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat - -ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly - -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_RETOP.conf +# Ensemble-Stat METplus Configuration [config] @@ -50,13 +16,13 @@ LOOP_BY = INIT INIT_TIME_FMT = %Y%m%d%H # Start time for METplus run -INIT_BEG = {ENV[CDATE]} +INIT_BEG={ENV[CDATE]} # End time for METplus run -INIT_END = {ENV[CDATE]} +INIT_END={ENV[CDATE]} # Increment between METplus runs in seconds. Must be >= 60 -INIT_INCREMENT = 3600 +INIT_INCREMENT=3600 # List of forecast leads to process LEAD_SEQ = {ENV[fhr_list]} @@ -64,9 +30,18 @@ LEAD_SEQ = {ENV[fhr_list]} # Used in the MET config file for: model, output_prefix MODEL = {ENV[MODEL]} +ENSEMBLE_STAT_DESC = NA ;; not in other file + # Name to identify observation data in output OBTYPE = MRMS +#ENSEMBLE_STAT_DESC = # not in other file + +# The MET ensemble_stat logging level +# 0 quiet to 5 loud, Verbosity setting for MET ensemble_stat output, 2 is default. +# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf +#LOG_ENSEMBLE_STAT_VERBOSITY = 2 + OBS_ENSEMBLE_STAT_WINDOW_BEGIN = 0 OBS_ENSEMBLE_STAT_WINDOW_END = 0 @@ -81,17 +56,109 @@ ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} # threshold for ratio of valid files to expected files to allow app to run ENSEMBLE_STAT_ENS_THRESH = 0.05 -# Used in the MET config file for: regrid to_grid field -ENSEMBLE_STAT_REGRID_TO_GRID = FCST +# ens.vld_thresh value in the MET config file +ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_RETOP_{OBTYPE} +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_RETOP_{OBTYPE} -ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_REFC +ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped # ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. # If the variable is not defined, or the value is not set # than the MET default is used. -ENSEMBLE_STAT_MET_OBS_ERR_TABLE = +ENSEMBLE_STAT_MET_OBS_ERR_TABLE = + + +# Used in the MET config file for: regrid to_grid field +ENSEMBLE_STAT_REGRID_TO_GRID = FCST +ENSEMBLE_STAT_REGRID_METHOD = BUDGET +ENSEMBLE_STAT_REGRID_WIDTH = 2 +ENSEMBLE_STAT_REGRID_VLD_THRESH = 0.5 +ENSEMBLE_STAT_REGRID_SHAPE = SQUARE + +ENSEMBLE_STAT_CENSOR_THRESH = +ENSEMBLE_STAT_CENSOR_VAL = + +#ENSEMBLE_STAT_NBRHD_PROB_WIDTH = 5 +#ENSEMBLE_STAT_NBRHD_PROB_SHAPE = CIRCLE +#ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH = 0.0 + +#ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH = 0.0 +#ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE = CIRCLE +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 +#ENSEMBLE_STAT_NMEP_SMOOTH_METHOD = GAUSSIAN +#ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH = 1 + +ENSEMBLE_STAT_MESSAGE_TYPE = ADPSFC + +ENSEMBLE_STAT_DUPLICATE_FLAG = NONE +ENSEMBLE_STAT_SKIP_CONST = TRUE + +ENSEMBLE_STAT_OBS_ERROR_FLAG = FALSE + +ENSEMBLE_STAT_ENS_SSVAR_BIN_SIZE = 1.0 +ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 + +#ENSEMBLE_STAT_CLIMO_MEAN_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_MEAN_FIELD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_MEAN_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_MEAN_HOUR_INTERVAL = 6 + +#ENSEMBLE_STAT_CLIMO_STDEV_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_STDEV_FIELD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_STDEV_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_STDEV_HOUR_INTERVAL = 6 + + +ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 +ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False +ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True + +ENSEMBLE_STAT_MASK_GRID = FULL + +ENSEMBLE_STAT_CI_ALPHA = 0.05 + +ENSEMBLE_STAT_INTERP_FIELD = BOTH +ENSEMBLE_STAT_INTERP_VLD_THRESH = 1.0 +ENSEMBLE_STAT_INTERP_SHAPE = SQUARE +ENSEMBLE_STAT_INTERP_METHOD = NEAREST +ENSEMBLE_STAT_INTERP_WIDTH = 1 + +ENSEMBLE_STAT_OUTPUT_FLAG_ECNT = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RPS = NONE +ENSEMBLE_STAT_OUTPUT_FLAG_RHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_PHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT + +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE # Ensemble Variables and levels as specified in the ens field dictionary # of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, @@ -99,20 +166,88 @@ ENSEMBLE_STAT_MET_OBS_ERR_TABLE = ENS_VAR1_NAME = RETOP ENS_VAR1_LEVELS = L0 ENS_VAR1_THRESH = ge20, ge30, ge40, ge50 -ENS_VAR1_OPTIONS = convert(x) = M_to_KFT(x); +# convert from meters to kilofeet: M_to_KFT(x) = x * 3.28084 * 0.001; +ENS_VAR1_OPTIONS = convert(x) = x * 3.28084 * 0.001; -# Forecast Variables and levels as specified in the fcst field dictionary +# Forecast Variables and levels as specified in the fcst field dictionary # of the MET configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, # (optional) FCST_VARn_OPTION FCST_VAR1_NAME = RETOP FCST_VAR1_LEVELS = L0 -FCST_VAR1_OPTIONS = convert(x) = M_to_KFT(x); ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; +# convert from meters to kilofeet: M_to_KFT(x) = x * 3.28084 * 0.001; +FCST_VAR1_OPTIONS = convert(x) = x * 3.28084 * 0.001; ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; -# Observation Variables and levels as specified in the obs field dictionary +# Observation Variables and levels as specified in the obs field dictionary # of the MET configuration file. Specify as OBS_VARn_NAME, OBS_VARn_LEVELS, # (optional) OBS_VARn_OPTION OBS_VAR1_NAME = EchoTop18 OBS_VAR1_LEVELS = Z500 -OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = KM_to_KFT(x); ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; +# convert from kilometers to kilofeet: KM_to_KFT(x) = x * 3280.84 * 0.001; +OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; ens_ssvar_bin_size = 50.0; ens_phist_bin_size = 0.05; + +[dir] +# Input and output data directories +INPUT_BASE = {ENV[EXPTDIR]}/{ENV[CDATE]} +OUTPUT_BASE = {ENV[EXPTDIR]} + +# Forecast model input directory for ensemble_stat +FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE} + +# Point observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = + +# Grid observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = {ENV[OBS_DIR]} + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = + +# output directory for ensemble_stat +ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +# directory containing log files +LOG_DIR = {OUTPUT_BASE}/log + +# directory for staging data +STAGING_DIR = {OUTPUT_BASE}/stage/RETOP + + +[filename_templates] + +# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. + +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# Template to look for point observations. +# Example precip24_2010010112.nc +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = + +# Template to look for gridded observations. +# Example ST4.2010010112.24h +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 + +ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.ensgrid_RETOP.conf diff --git a/ush/templates/parm/metplus/EnsembleStat_conus_sfc.conf b/ush/templates/parm/metplus/EnsembleStat_conus_sfc.conf index 2523fde2a..ecdc7f1ac 100644 --- a/ush/templates/parm/metplus/EnsembleStat_conus_sfc.conf +++ b/ush/templates/parm/metplus/EnsembleStat_conus_sfc.conf @@ -1,89 +1,65 @@ -# Ensemble Stat Grid to Point Precipitation Example +# Ensemble-Stat METplus Configuration -[dir] -# Input and output directories for pb2nc -PB2NC_INPUT_DIR = {ENV[OBS_DIR]} -PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc - -# Input directory for ensemble_stat -FCST_ENSEMBLE_STAT_INPUT_DIR = {ENV[EXPTDIR]}/{ENV[CDATE]} - -# Point observation input dir for ensemble_stat (can also set grid obs) -OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = {PB2NC_OUTPUT_DIR} - -# Output directory for ensemble_stat -OUTPUT_BASE = {ENV[EXPTDIR]} -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {ENV[EXPTDIR]}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/conus_sfc - -[filename_templates] +[config] -# Input and output templates for pb2nc -PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} -PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc +## Configuration-related settings such as the process list, begin and end times, etc. +PROCESS_LIST = PB2NC, EnsembleStat -# Input template for EnsembleStat can also be defined using a single -# member with wildcard characters to find multiple files -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = - mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 +# Looping by times: steps through each 'task' in the PROCESS_LIST for each +# defined time, and repeats until all times have been evaluated. +LOOP_ORDER = times -OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = {PB2NC_OUTPUT_TEMPLATE} +# LOOP_BY: Set to INIT to loop over initialization times +LOOP_BY = INIT -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat +# Format of INIT_BEG and INT_END +INIT_TIME_FMT = %Y%m%d%H -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_sfc +# Start time for METplus run +INIT_BEG={ENV[CDATE]} -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.conus_surface.conf +# End time for METplus run +INIT_END={ENV[CDATE]} -# Location of MET poly files -#ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Increment between METplus runs in seconds. Must be >= 60 +INIT_INCREMENT=3600 -[config] -# Configuration-related settings such as the process list, begin and end times, etc. -PROCESS_LIST = PB2NC, EnsembleStat +# List of forecast leads to process +LEAD_SEQ = {ENV[fhr_list]} -# Time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT +# Used in the MET config file for: model, output_prefix +MODEL = {ENV[MODEL]} -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H +ENSEMBLE_STAT_DESC = NA -# List of forecast leads to process. -LEAD_SEQ = {ENV[fhr_list]} +# Name to identify observation data in output +OBTYPE = NDAS -# Order of loops to process data - Options are times, processes -LOOP_ORDER = times +#ENSEMBLE_STAT_DESC = # The MET ensemble_stat logging level +# 0 quiet to 5 loud, Verbosity setting for MET ensemble_stat output, 2 is default. +# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf LOG_ENSEMBLE_STAT_VERBOSITY = 3 -# MET Configuration files for pb2nc -PB2NC_CONFIG_FILE = {CONFIG_DIR}/PB2NCConfig - -# if True, pb2nc will skip processing a file if the output already exists -# used to speed up runs and reduce redundancy -PB2NC_SKIP_IF_OUTPUT_EXISTS = True - # Values to pass to pb2nc config file using environment variables of the same name. PB2NC_GRID = PB2NC_POLY = PB2NC_STATION_ID = -PB2NC_MESSAGE_TYPE = +PB2NC_MESSAGE_TYPE = ADPSFC, ADPUPA +PB2NC_LEVEL_CATEGORY = 0, 1, 4, 5, 6 +PB2NC_QUALITY_MARK_THRESH = 9 + +PB2NC_PB_REPORT_TYPE = 120, 220, 221, 122, 222, 223, 224, 131, 133, 233, 153, 156, 157, 188, 288, 180, 280, 181, 182, 281, 282, 183, 284, 187, 287 # Leave empty to process all # PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND +# Mapping of input BUFR variable names to output variables names. +# The default PREPBUFR map, obs_prepbufr_map, is appended to this map. +PB2NC_MET_CONFIG_OVERRIDES = obs_bufr_map = [{ key = "HOVI"; val = "VIS"; },{ key = "PMO"; val = "PRMSL"; },{ key = "TDO"; val = "DPT"; }, { key = "PWO"; val = "PWAT"; },{ key = "MXGS"; val = "GUST"; }, { key = "CEILING"; val = "CEILING"; }, { key = "TOCC"; val = "TCDC"; }]; + # False for no time summary, True otherwise PB2NC_TIME_SUMMARY_FLAG = False PB2NC_TIME_SUMMARY_BEG = 000000 ;; start time of time summary in HHMMSS format @@ -91,7 +67,6 @@ PB2NC_TIME_SUMMARY_END = 235959 ;; end time of time summary in HHMMSS format PB2NC_TIME_SUMMARY_VAR_NAMES = PMO,TOB,TDO,UOB,VOB,PWO,TOCC PB2NC_TIME_SUMMARY_TYPES = min, max, range, mean, stdev, median, p80 ;; a list of the statistics to summarize -# For both PB2NC and ensemble_stat OBS_WINDOW_BEGIN = -1799 OBS_WINDOW_END = 1800 @@ -109,38 +84,119 @@ ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} # threshold for ratio of valid files to expected files to allow app to run ENSEMBLE_STAT_ENS_THRESH = 0.05 -# Used in the MET config file for: regrid to_grid field -ENSEMBLE_STAT_REGRID_TO_GRID = NONE +# ens.vld_thresh value in the MET config file +ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_point - -# Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc. -MODEL = {ENV[MODEL]} -OBTYPE = NDAS - -# Used in the MET config file -ENSEMBLE_STAT_MESSAGE_TYPE = ADPSFC +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_ADPSFC_{OBTYPE} -# Verification Masking regions -# Indicate which grid and polygon masking region, if applicable -ENSEMBLE_STAT_MASK_GRID = +# MET Configuration files for pb2nc and ensemble_stat +PB2NC_CONFIG_FILE = {PARM_BASE}/met_config/PB2NCConfig_wrapped +ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped -# List of full path to poly masking files. NOTE: Only short lists of poly -# files work (those that fit on one line), a long list will result in an -# environment variable that is too long, resulting in an error. For long -# lists of poly masking files (i.e. all the mask files in the NCEP_mask -# directory), define these in the MET point_stat configuration file. -ENSEMBLE_STAT_MASK_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# if True, pb2nc will skip processing a file if the output already exists +# used to speed up runs and reduce redundancy +PB2NC_SKIP_IF_OUTPUT_EXISTS = True -# MET_OBS_ERR_TABLE is not required. +# ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. # If the variable is not defined, or the value is not set # than the MET default is used. ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {MET_BASE}/table_files/obs_error_table.txt -# Variables and levels as specified in the field dictionary of the MET -# configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION +# Used in the MET config file for: regrid to_grid field +ENSEMBLE_STAT_REGRID_TO_GRID = NONE +#ENSEMBLE_STAT_REGRID_METHOD = BILIN +#ENSEMBLE_STAT_REGRID_WIDTH = 2 +#ENSEMBLE_STAT_REGRID_VLD_THRESH = 0.5 +#ENSEMBLE_STAT_REGRID_SHAPE = SQUARE + +ENSEMBLE_STAT_CENSOR_THRESH = +ENSEMBLE_STAT_CENSOR_VAL = + +#ENSEMBLE_STAT_NBRHD_PROB_WIDTH = 5 +#ENSEMBLE_STAT_NBRHD_PROB_SHAPE = CIRCLE +#ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH = 0.0 + +#ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH = 0.0 +#ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE = CIRCLE +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 +#ENSEMBLE_STAT_NMEP_SMOOTH_METHOD = GAUSSIAN +#ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH = 1 + +ENSEMBLE_STAT_MESSAGE_TYPE = ADPSFC + +ENSEMBLE_STAT_DUPLICATE_FLAG = NONE +ENSEMBLE_STAT_SKIP_CONST = FALSE + +ENSEMBLE_STAT_OBS_ERROR_FLAG = FALSE + +ENSEMBLE_STAT_ENS_SSVAR_BIN_SIZE = 1.0 +ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 + +#ENSEMBLE_STAT_CLIMO_MEAN_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_MEAN_FIELD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_MEAN_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_MEAN_HOUR_INTERVAL = 6 + +#ENSEMBLE_STAT_CLIMO_STDEV_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_STDEV_FIELD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_STDEV_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_STDEV_HOUR_INTERVAL = 6 + + +#ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 +#ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False +#ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True + +ENSEMBLE_STAT_MASK_GRID = + +ENSEMBLE_STAT_CI_ALPHA = 0.05 + +ENSEMBLE_STAT_INTERP_FIELD = BOTH +ENSEMBLE_STAT_INTERP_VLD_THRESH = 1.0 +ENSEMBLE_STAT_INTERP_SHAPE = SQUARE +ENSEMBLE_STAT_INTERP_METHOD = NEAREST +ENSEMBLE_STAT_INTERP_WIDTH = 1 + +ENSEMBLE_STAT_OUTPUT_FLAG_ECNT = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RPS = NONE +ENSEMBLE_STAT_OUTPUT_FLAG_RHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_PHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT + +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE + +# Ensemble Variables and levels as specified in the ens field dictionary +# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, +# (optional) ENS_VARn_OPTION ENS_VAR1_NAME = TMP ENS_VAR1_LEVELS = Z02 ENS_VAR1_THRESH = >=268, >=273, >=278, >=293, >=298, >=303 @@ -169,13 +225,19 @@ ENS_VAR6_LEVELS = L0 ENS_VAR6_THRESH = <152, <1520, >=914 ENS_VAR6_OPTIONS = GRIB_lvl_typ = 215; desc = "CEILING"; + +# Forecast and observation variables and levels as specified in the fcst field dictionary +# of the MET configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, +# (optional) FCST_VARn_OPTION and OBS_VARn_NAME, OBS_VARn_LEVELS, +# (optional) OBS_VARn_OPTION + FCST_VAR1_NAME = TMP FCST_VAR1_LEVELS = Z2 FCST_VAR1_THRESH = >=268, >=273, >=278, >=293, >=298, >=303 OBS_VAR1_NAME = TMP OBS_VAR1_LEVELS = Z2 OBS_VAR1_THRESH = >=268, >=273, >=278, >=293, >=298, >=303 -OBS_VAR1_OPTIONS = obs_error = { flag = TRUE; } +OBS_VAR1_OPTIONS = obs_error = { flag = TRUE; dist_type = NONE; dist_parm = []; inst_bias_scale = 1.0; inst_bias_offset = 0.0; min = NA; max = NA; } FCST_VAR2_NAME = DPT FCST_VAR2_LEVELS = Z2 @@ -183,7 +245,7 @@ FCST_VAR2_THRESH = >=263, >=268, >=273, >=288, >=293, >=298 OBS_VAR2_NAME = DPT OBS_VAR2_LEVELS = Z2 OBS_VAR2_THRESH = >=263, >=268, >=273, >=288, >=293, >=298 -OBS_VAR2_OPTIONS = obs_error = { flag = TRUE; } +OBS_VAR2_OPTIONS = obs_error = { flag = TRUE; dist_type = NONE; dist_parm = []; inst_bias_scale = 1.0; inst_bias_offset = 0.0; min = NA; max = NA; } FCST_VAR3_NAME = WIND FCST_VAR3_LEVELS = Z10 @@ -192,7 +254,7 @@ FCST_VAR3_OPTIONS = GRIB2_pdt = 0; ;; derive instantaneous 10-m wind from U/V co OBS_VAR3_NAME = WIND OBS_VAR3_LEVELS = Z10 OBS_VAR3_THRESH = >=5, >=10, >=15 -OBS_VAR3_OPTIONS = obs_error = { flag = TRUE; } +OBS_VAR3_OPTIONS = obs_error = { flag = TRUE; dist_type = NONE; dist_parm = []; inst_bias_scale = 1.0; inst_bias_offset = 0.0; min = NA; max = NA; } FCST_VAR4_NAME = TCDC FCST_VAR4_LEVELS = L0 @@ -217,4 +279,75 @@ OBS_VAR6_LEVELS = L0 OBS_VAR6_OPTIONS = GRIB_lvl_typ = 215; interp = { type = [ { method = NEAREST; width = 1; } ]; } OBS_VAR6_THRESH = <152, <305, >=914 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_ADPSFC_{OBTYPE} +[dir] +# Input and output directories for pb2nc +PB2NC_INPUT_DIR = {ENV[OBS_DIR]} +PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc + +# Forecast model input directory for ensemble_stat +FCST_ENSEMBLE_STAT_INPUT_DIR = {ENV[EXPTDIR]}/{ENV[CDATE]} + +# Point observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = {PB2NC_OUTPUT_DIR} + +# Grid observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = + +# output directory for ensemble_stat +OUTPUT_BASE = {ENV[EXPTDIR]} +ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +# directory containing log files +LOG_DIR = {ENV[EXPTDIR]}/log + +# directory for staging data +STAGING_DIR = {OUTPUT_BASE}/stage/conus_sfc + + +[filename_templates] + +# Input and output templates for pb2nc +PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} +PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc + +# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. + +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = + mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# Template to look for point observations. +# Example precip24_2010010112.nc +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = {PB2NC_OUTPUT_TEMPLATE} + +# Template to look for gridded observations. +# Example ST4.2010010112.24h +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = + +ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Template for where ensemble-stat output is written +ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_sfc + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.conus_surface.conf + diff --git a/ush/templates/parm/metplus/EnsembleStat_upper_air.conf b/ush/templates/parm/metplus/EnsembleStat_upper_air.conf index fb2070e87..d25241e93 100644 --- a/ush/templates/parm/metplus/EnsembleStat_upper_air.conf +++ b/ush/templates/parm/metplus/EnsembleStat_upper_air.conf @@ -1,94 +1,65 @@ -# Ensemble Stat Grid to Point Precipitation Example +# Ensemble-Stat METplus Configuration -[dir] -# Input and output directories for pb2nc -PB2NC_INPUT_DIR = {ENV[OBS_DIR]} -PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc - -# Input directory for ensemble_stat -FCST_ENSEMBLE_STAT_INPUT_DIR = {ENV[EXPTDIR]}/{ENV[CDATE]} - -# Point observation input dir for ensemble_stat (can also set grid obs) -OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = {PB2NC_OUTPUT_DIR} - -# Output directory for ensemble_stat -OUTPUT_BASE = {ENV[EXPTDIR]} -ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {ENV[EXPTDIR]}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/upper_air - -[filename_templates] - -# Input and output templates for pb2nc -PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} -PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc +[config] -# Input ensemble template - comma separated list of ensemble members -#FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = -# mem01/postprd/{ENV[NET]}.t{init?fmt=%H}z.bgdawpf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2, -# mem02/postprd/{ENV[NET]}.t{init?fmt=%H}z.bgdawpf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2, +## Configuration-related settings such as the process list, begin and end times, etc. +PROCESS_LIST = PB2NC, EnsembleStat -# Input template for EnsembleStat can also be defined using a single -# member with wildcard characters to find multiple files -FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = - mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 +# Looping by times: steps through each 'task' in the PROCESS_LIST for each +# defined time, and repeats until all times have been evaluated. +LOOP_ORDER = times -OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = {PB2NC_OUTPUT_TEMPLATE} +# LOOP_BY: Set to INIT to loop over initialization times +LOOP_BY = INIT -ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat +# Format of INIT_BEG and INT_END +INIT_TIME_FMT = %Y%m%d%H -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_upa +# Start time for METplus run +INIT_BEG={ENV[CDATE]} -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.upper_air.conf +# End time for METplus run +INIT_END={ENV[CDATE]} -# Location of MET poly files -#ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Increment between METplus runs in seconds. Must be >= 60 +INIT_INCREMENT=3600 -[config] -# Configuration-related settings such as the process list, begin and end times, etc. -PROCESS_LIST = PB2NC, EnsembleStat +# List of forecast leads to process +LEAD_SEQ = begin_end_incr(0,{ENV[fhr_last]},6) -# Time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT +# Used in the MET config file for: model, output_prefix +MODEL = {ENV[MODEL]} -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H +ENSEMBLE_STAT_DESC = NA -# List of forecast leads to process. -LEAD_SEQ = begin_end_incr(0,{ENV[fhr_last]},6) +# Name to identify observation data in output +OBTYPE = NDAS -# Order of loops to process data - Options are times, processes -LOOP_ORDER = times +#ENSEMBLE_STAT_DESC = # The MET ensemble_stat logging level +# 0 quiet to 5 loud, Verbosity setting for MET ensemble_stat output, 2 is default. +# This takes precendence over the general LOG_MET_VERBOSITY set in metplus_logging.conf LOG_ENSEMBLE_STAT_VERBOSITY = 3 -# MET Configuration files for pb2nc -PB2NC_CONFIG_FILE = {CONFIG_DIR}/PB2NCConfig - -# if True, pb2nc will skip processing a file if the output already exists -# used to speed up runs and reduce redundancy -PB2NC_SKIP_IF_OUTPUT_EXISTS = True - # Values to pass to pb2nc config file using environment variables of the same name. PB2NC_GRID = PB2NC_POLY = PB2NC_STATION_ID = -PB2NC_MESSAGE_TYPE = +PB2NC_MESSAGE_TYPE = ADPSFC, ADPUPA +PB2NC_LEVEL_CATEGORY = 0, 1, 4, 5, 6 +PB2NC_QUALITY_MARK_THRESH = 9 + +PB2NC_PB_REPORT_TYPE = 120, 220, 221, 122, 222, 223, 224, 131, 133, 233, 153, 156, 157, 188, 288, 180, 280, 181, 182, 281, 282, 183, 284, 187, 287 # Leave empty to process all # PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND +# Mapping of input BUFR variable names to output variables names. +# The default PREPBUFR map, obs_prepbufr_map, is appended to this map. +PB2NC_MET_CONFIG_OVERRIDES = obs_bufr_map = [{ key = "HOVI"; val = "VIS"; },{ key = "PMO"; val = "PRMSL"; },{ key = "TDO"; val = "DPT"; }, { key = "PWO"; val = "PWAT"; },{ key = "MXGS"; val = "GUST"; }, { key = "CEILING"; val = "CEILING"; }, { key = "TOCC"; val = "TCDC"; }]; + # False for no time summary, True otherwise PB2NC_TIME_SUMMARY_FLAG = False PB2NC_TIME_SUMMARY_BEG = 000000 ;; start time of time summary in HHMMSS format @@ -96,7 +67,6 @@ PB2NC_TIME_SUMMARY_END = 235959 ;; end time of time summary in HHMMSS format PB2NC_TIME_SUMMARY_VAR_NAMES = PMO,TOB,TDO,UOB,VOB,PWO,TOCC PB2NC_TIME_SUMMARY_TYPES = min, max, range, mean, stdev, median, p80 ;; a list of the statistics to summarize -# For both PB2NC and ensemble_stat OBS_WINDOW_BEGIN = -1799 OBS_WINDOW_END = 1800 @@ -114,38 +84,119 @@ ENSEMBLE_STAT_N_MEMBERS = {ENV[NUM_ENS_MEMBERS]} # threshold for ratio of valid files to expected files to allow app to run ENSEMBLE_STAT_ENS_THRESH = 0.05 -# Used in the MET config file for: regrid to_grid field -ENSEMBLE_STAT_REGRID_TO_GRID = NONE - -ENSEMBLE_STAT_CONFIG_FILE = {CONFIG_DIR}/EnsembleStatConfig_point - -# Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc. -MODEL = {ENV[MODEL]} -OBTYPE = NDAS +# ens.vld_thresh value in the MET config file +ENSEMBLE_STAT_ENS_VLD_THRESH = 1.0 -# Used in the MET config file -ENSEMBLE_STAT_MESSAGE_TYPE = ADPUPA +ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_ADPUPA_{OBTYPE} -# Verification Masking regions -# Indicate which grid and polygon masking region, if applicable -ENSEMBLE_STAT_MASK_GRID = +# MET Configuration files for pb2nc and ensemble_stat +PB2NC_CONFIG_FILE = {PARM_BASE}/met_config/PB2NCConfig_wrapped +ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped -# List of full path to poly masking files. NOTE: Only short lists of poly -# files work (those that fit on one line), a long list will result in an -# environment variable that is too long, resulting in an error. For long -# lists of poly masking files (i.e. all the mask files in the NCEP_mask -# directory), define these in the MET point_stat configuration file. -ENSEMBLE_STAT_MASK_POLY = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# if True, pb2nc will skip processing a file if the output already exists +# used to speed up runs and reduce redundancy +PB2NC_SKIP_IF_OUTPUT_EXISTS = True -# MET_OBS_ERR_TABLE is not required. +# ENSEMBLE_STAT_MET_OBS_ERR_TABLE is not required. # If the variable is not defined, or the value is not set # than the MET default is used. ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {MET_BASE}/table_files/obs_error_table.txt -# Variables and levels as specified in the field dictionary of the MET -# configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, -# (optional) FCST_VARn_OPTION +# Used in the MET config file for: regrid to_grid field +ENSEMBLE_STAT_REGRID_TO_GRID = NONE +#ENSEMBLE_STAT_REGRID_METHOD = BILIN +#ENSEMBLE_STAT_REGRID_WIDTH = 2 +#ENSEMBLE_STAT_REGRID_VLD_THRESH = 0.5 +#ENSEMBLE_STAT_REGRID_SHAPE = SQUARE + +ENSEMBLE_STAT_CENSOR_THRESH = +ENSEMBLE_STAT_CENSOR_VAL = + +#ENSEMBLE_STAT_NBRHD_PROB_WIDTH = 5 +#ENSEMBLE_STAT_NBRHD_PROB_SHAPE = CIRCLE +#ENSEMBLE_STAT_NBRHD_PROB_VLD_THRESH = 0.0 + +#ENSEMBLE_STAT_NMEP_SMOOTH_VLD_THRESH = 0.0 +#ENSEMBLE_STAT_NMEP_SMOOTH_SHAPE = CIRCLE +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_DX = 81.27 +#ENSEMBLE_STAT_NMEP_SMOOTH_GAUSSIAN_RADIUS = 120 +#ENSEMBLE_STAT_NMEP_SMOOTH_METHOD = GAUSSIAN +#ENSEMBLE_STAT_NMEP_SMOOTH_WIDTH = 1 + +ENSEMBLE_STAT_MESSAGE_TYPE = ADPUPA + +ENSEMBLE_STAT_DUPLICATE_FLAG = NONE +ENSEMBLE_STAT_SKIP_CONST = FALSE + +ENSEMBLE_STAT_OBS_ERROR_FLAG = FALSE + +ENSEMBLE_STAT_ENS_SSVAR_BIN_SIZE = 1.0 +ENSEMBLE_STAT_ENS_PHIST_BIN_SIZE = 0.05 + +#ENSEMBLE_STAT_CLIMO_MEAN_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_MEAN_FIELD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_MEAN_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_MEAN_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_MEAN_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_MEAN_HOUR_INTERVAL = 6 + +#ENSEMBLE_STAT_CLIMO_STDEV_FILE_NAME = +#ENSEMBLE_STAT_CLIMO_STDEV_FIELD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_WIDTH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#ENSEMBLE_STAT_CLIMO_STDEV_REGRID_SHAPE = +#ENSEMBLE_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#ENSEMBLE_STAT_CLIMO_STDEV_MATCH_MONTH = +#ENSEMBLE_STAT_CLIMO_STDEV_DAY_INTERVAL = 31 +#ENSEMBLE_STAT_CLIMO_STDEV_HOUR_INTERVAL = 6 + + +#ENSEMBLE_STAT_CLIMO_CDF_BINS = 1 +#ENSEMBLE_STAT_CLIMO_CDF_CENTER_BINS = False +#ENSEMBLE_STAT_CLIMO_CDF_WRITE_BINS = True + +ENSEMBLE_STAT_MASK_GRID = + +ENSEMBLE_STAT_CI_ALPHA = 0.05 + +ENSEMBLE_STAT_INTERP_FIELD = BOTH +ENSEMBLE_STAT_INTERP_VLD_THRESH = 1.0 +ENSEMBLE_STAT_INTERP_SHAPE = SQUARE +ENSEMBLE_STAT_INTERP_METHOD = NEAREST +ENSEMBLE_STAT_INTERP_WIDTH = 1 + +ENSEMBLE_STAT_OUTPUT_FLAG_ECNT = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RPS = NONE +ENSEMBLE_STAT_OUTPUT_FLAG_RHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_PHIST = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_ORANK = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_SSVAR = STAT +ENSEMBLE_STAT_OUTPUT_FLAG_RELP = STAT + +ENSEMBLE_STAT_ENSEMBLE_FLAG_LATLON = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MEAN = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_STDEV = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MINUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_PLUS = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MIN = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_MAX = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANGE = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_VLD_COUNT = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_FREQUENCY = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE +ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = TRUE +ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE + +# Ensemble Variables and levels as specified in the ens field dictionary +# of the MET configuration file. Specify as ENS_VARn_NAME, ENS_VARn_LEVELS, +# (optional) ENS_VARn_OPTION ENS_VAR1_NAME = TMP ENS_VAR1_LEVELS = P850 ENS_VAR1_THRESH = >=288, >=293, >=298 @@ -166,7 +217,7 @@ ENS_VAR5_NAME = DPT ENS_VAR5_LEVELS = P700 ENS_VAR5_THRESH = >=263, >=268, >=273 -ENS_VAR6_NAME = WIND +ENS_VAR6_NAME = WIND ENS_VAR6_LEVELS = P850 ENS_VAR6_THRESH = >=5, >=10, >=15 @@ -195,13 +246,18 @@ ENS_VAR12_NAME = HPBL ENS_VAR12_LEVELS = Z0 ENS_VAR12_THRESH = <500, <1500, >1500 +# Forecast and observation variables and levels as specified in the fcst field dictionary +# of the MET configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, +# (optional) FCST_VARn_OPTION and OBS_VARn_NAME, OBS_VARn_LEVELS, +# (optional) OBS_VARn_OPTION + FCST_VAR1_NAME = TMP FCST_VAR1_LEVELS = P850 FCST_VAR1_THRESH = >=288, >=293, >=298 OBS_VAR1_NAME = TMP OBS_VAR1_LEVELS = P850 OBS_VAR1_THRESH = >=288, >=293, >=298 -OBS_VAR1_OPTIONS = obs_error = { flag = TRUE; } +OBS_VAR1_OPTIONS = obs_error = { flag = TRUE; dist_type = NONE; dist_parm = []; inst_bias_scale = 1.0; inst_bias_offset = 0.0; min = NA; max = NA; } FCST_VAR2_NAME = TMP FCST_VAR2_LEVELS = P700 @@ -209,7 +265,7 @@ FCST_VAR2_THRESH = >=273, >=278, >=283 OBS_VAR2_NAME = TMP OBS_VAR2_LEVELS = P700 OBS_VAR2_THRESH = >=273, >=278, >=283 -OBS_VAR2_OPTIONS = obs_error = { flag = TRUE; } +OBS_VAR2_OPTIONS = obs_error = { flag = TRUE; dist_type = NONE; dist_parm = []; inst_bias_scale = 1.0; inst_bias_offset = 0.0; min = NA; max = NA; } FCST_VAR3_NAME = TMP FCST_VAR3_LEVELS = P500 @@ -217,7 +273,7 @@ FCST_VAR3_THRESH = >=258, >=263, >=268 OBS_VAR3_NAME = TMP OBS_VAR3_LEVELS = P500 OBS_VAR3_THRESH = >=258, >=263, >=268 -OBS_VAR3_OPTIONS = obs_error = { flag = TRUE; } +OBS_VAR3_OPTIONS = obs_error = { flag = TRUE; dist_type = NONE; dist_parm = []; inst_bias_scale = 1.0; inst_bias_offset = 0.0; min = NA; max = NA; } FCST_VAR4_NAME = DPT FCST_VAR4_LEVELS = P850 @@ -225,7 +281,7 @@ FCST_VAR4_THRESH = >=273, >=278, >=283 OBS_VAR4_NAME = DPT OBS_VAR4_LEVELS = P850 OBS_VAR4_THRESH = >=273, >=278, >=283 -OBS_VAR4_OPTIONS = obs_error = { flag = TRUE; } +OBS_VAR4_OPTIONS = obs_error = { flag = TRUE; dist_type = NONE; dist_parm = []; inst_bias_scale = 1.0; inst_bias_offset = 0.0; min = NA; max = NA; } FCST_VAR5_NAME = DPT FCST_VAR5_LEVELS = P700 @@ -233,7 +289,7 @@ FCST_VAR5_THRESH = >=263, >=286, >=273 OBS_VAR5_NAME = DPT OBS_VAR5_LEVELS = P700 OBS_VAR5_THRESH = >=263, >=286, >=273 -OBS_VAR5_OPTIONS = obs_error = { flag = TRUE; } +OBS_VAR5_OPTIONS = obs_error = { flag = TRUE; dist_type = NONE; dist_parm = []; inst_bias_scale = 1.0; inst_bias_offset = 0.0; min = NA; max = NA; } FCST_VAR6_NAME = WIND FCST_VAR6_LEVELS = P850 @@ -241,7 +297,7 @@ FCST_VAR6_THRESH = >=5, >=10, >=15 OBS_VAR6_NAME = WIND OBS_VAR6_LEVELS = P850 OBS_VAR6_THRESH = >=5, >=10, >=15 -OBS_VAR6_OPTIONS = obs_error = { flag = TRUE; } +OBS_VAR6_OPTIONS = obs_error = { flag = TRUE; dist_type = NONE; dist_parm = []; inst_bias_scale = 1.0; inst_bias_offset = 0.0; min = NA; max = NA; } FCST_VAR7_NAME = WIND FCST_VAR7_LEVELS = P700 @@ -249,7 +305,7 @@ FCST_VAR7_THRESH = >=10, >=15, >=20 OBS_VAR7_NAME = WIND OBS_VAR7_LEVELS = P700 OBSVAR7_THRESH = >=10, >=15, >=20 -OBS_VAR7_OPTIONS = obs_error = { flag = TRUE; } +OBS_VAR7_OPTIONS = obs_error = { flag = TRUE; dist_type = NONE; dist_parm = []; inst_bias_scale = 1.0; inst_bias_offset = 0.0; min = NA; max = NA; } FCST_VAR8_NAME = WIND FCST_VAR8_LEVELS = P500 @@ -257,7 +313,7 @@ FCST_VAR8_THRESH = >=15, >=21, >=26 OBS_VAR8_NAME = WIND OBS_VAR8_LEVELS = P500 OBS_VAR8_THRESH = >=15, >=21, >=26 -OBS_VAR8_OPTIONS = obs_error = { flag = TRUE; } +OBS_VAR8_OPTIONS = obs_error = { flag = TRUE; dist_type = NONE; dist_parm = []; inst_bias_scale = 1.0; inst_bias_offset = 0.0; min = NA; max = NA; } FCST_VAR9_NAME = WIND FCST_VAR9_LEVELS = P250 @@ -265,7 +321,7 @@ FCST_VAR9_THRESH = >=26, >=31, >=36, >=46, >=62 OBS_VAR9_NAME = WIND OBS_VAR9_LEVELS = P250 OBS_VAR9_THRESH = >=26, >=31, >=36, >=46, >=62 -OBS_VAR9_OPTIONS = obs_error = { flag = TRUE; } +OBS_VAR9_OPTIONS = obs_error = { flag = TRUE; dist_type = NONE; dist_parm = []; inst_bias_scale = 1.0; inst_bias_offset = 0.0; min = NA; max = NA; } FCST_VAR10_NAME = HGT FCST_VAR10_LEVELS = P500 @@ -273,7 +329,7 @@ FCST_VAR10_THRESH = >=5400, >=5600, >=5880 OBS_VAR10_NAME = HGT OBS_VAR10_LEVELS = P500 OBS_VAR10_THRESH = >=5400, >=5600, >=5880 -OBS_VAR10_OPTIONS = obs_error = { flag = TRUE; } +OBS_VAR10_OPTIONS = obs_error = { flag = TRUE; dist_type = NONE; dist_parm = []; inst_bias_scale = 1.0; inst_bias_offset = 0.0; min = NA; max = NA; } FCST_VAR11_NAME = CAPE FCST_VAR11_LEVELS = L0 @@ -292,4 +348,75 @@ OBS_VAR12_LEVELS = L0 OBS_VAR12_OPTIONS = desc = "TKE"; OBS_VAR12_THRESH = <500, <1500, >1500 -ENSEMBLE_STAT_OUTPUT_PREFIX = {MODEL}_ADPUPA_{OBTYPE} +[dir] +# Input and output directories for pb2nc +PB2NC_INPUT_DIR = {ENV[OBS_DIR]} +PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc + +# Forecast model input directory for ensemble_stat +FCST_ENSEMBLE_STAT_INPUT_DIR = {ENV[EXPTDIR]}/{ENV[CDATE]} + +# Point observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = {PB2NC_OUTPUT_DIR} + +# Grid observation input dir for ensemble_stat +OBS_ENSEMBLE_STAT_GRID_INPUT_DIR = + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to EnsembleStat +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR = + +# output directory for ensemble_stat +OUTPUT_BASE = {ENV[EXPTDIR]} +ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +# directory containing log files +LOG_DIR = {ENV[EXPTDIR]}/log + +# directory for staging data +STAGING_DIR = {OUTPUT_BASE}/stage/upper_air + + +[filename_templates] + +# Input and output templates for pb2nc +PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} +PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc + +# FCST_ENSEMBLE_STAT_INPUT_TEMPLATE - comma separated list of ensemble members +# or a single line, - filename wildcard characters may be used, ? or *. + +FCST_ENSEMBLE_STAT_INPUT_TEMPLATE = + mem*/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# Template to look for point observations. +# Example precip24_2010010112.nc +OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = {PB2NC_OUTPUT_TEMPLATE} + +# Template to look for gridded observations. +# Example ST4.2010010112.24h +OBS_ENSEMBLE_STAT_GRID_INPUT_TEMPLATE = + +ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to EnsembleStat relative to ENSEMBLE_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +ENSEMBLE_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Template for where ensemble-stat output is written +ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_upa + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat/metplus_final.upper_air.conf + diff --git a/ush/templates/parm/metplus/GridDiag_REFC.conf b/ush/templates/parm/metplus/GridDiag_REFC.conf deleted file mode 100755 index c71d6a107..000000000 --- a/ush/templates/parm/metplus/GridDiag_REFC.conf +++ /dev/null @@ -1,89 +0,0 @@ -# -# CONFIGURATION -# -[config] - -INPUT_BASE={ENV[INPUT_BASE]} -OUTPUT_BASE={ENV[OUTPUT_BASE]} - -# 'Tasks' to be run -PROCESS_LIST = GridDiag - -GRID_DIAG_RUNTIME_FREQ = RUN_ONCE -#other options include: RUN_ONCE_PER_INIT_OR_VALID, RUN_ONCE_PER_LEAD, RUN_ONCE_FOR_EACH - -LOOP_BY = INIT - -# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. -# see www.strftime.org for more information -# %Y%m%d%H expands to YYYYMMDDHH -INIT_TIME_FMT = %Y%m%d%H - -# Start time for METplus run - must match INIT_TIME_FMT -INIT_BEG={ENV[INIT_BEG]} - -# End time for METplus run - must match INIT_TIME_FMT -INIT_END={ENV[INIT_END]} - -# Increment between METplus runs (in seconds if no units are specified) -# Must be >= 60 seconds -INIT_INCREMENT = {ENV[INIT_INC]} - -# List of forecast leads to process for each run time (init or valid) -# In hours if units are not specified -# If unset, defaults to 0 (don't loop through forecast leads) -LEAD_SEQ = begin_end_incr({ENV[FHR_FIRST]},{ENV[FHR_LAST]},{ENV[FHR_INC]}) - -# Looping by times: steps through each 'task' in the PROCESS_LIST for each -# defined time, and repeats until all times have been evaluated. -#LOOP_ORDER = times -LOOP_ORDER = processes -# must be processes when uisng GRID_DIAG_RUNTIME_FREQ - -LOG_GRID_DIAG_VERBOSITY = 2 - -GRID_DIAG_DESCRIPTION = RRFS -# Name to identify model (forecast) data in output -MODEL = {ENV[MODEL]} - -# Configuration file -GRID_DIAG_CONFIG_FILE = {CONFIG_DIR}/GridDiagConfig - -BOTH_VAR1_NAME = REFC -BOTH_VAR1_LEVELS = L0 -BOTH_VAR1_OPTIONS = cnt_thresh = [ >15 ]; n_bins = 18; range = [-20, 70]; - -BOTH_VAR2_NAME = MergedReflectivityQCComposite -BOTH_VAR2_LEVELS = Z500 -BOTH_VAR2_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; n_bins = 18; range = [-20, 70]; - -# The following variables set values in the MET -# configuration file used by this example -# Leaving these values commented will use the value -# found in the default MET configuration file -GRID_DIAG_REGRID_TO_GRID = FCST -#GRID_DIAG_REGRID_METHOD = BUDGET -#GRID_DIAG_REGRID_WIDTH = 2 -#GRID_DIAG_REGRID_VLD_THRESH = 0.5 -#GRID_DIAG_REGRID_SHAPE = SQUARE - -# DIRECTORIES -# -[dir] - -GRID_DIAG_INPUT_DIR = {INPUT_BASE} - -GRID_DIAG_OUTPUT_DIR = {OUTPUT_BASE} - -[filename_templates] - -GRID_DIAG_INPUT_TEMPLATE = expt_dirs/RRFS_baseline_summer/{init?fmt=%Y%m%d%H}/postprd/{ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2, obs_data/mrms/proc/{valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 - -GRID_DIAG_OUTPUT_TEMPLATE = grid_diag_out_{MODEL}_{ENV[INIT_BEG]}-{ENV[INIT_END]}_f{ENV[FHR_FIRST]}-{ENV[FHR_LAST]}.nc -#when using RUN_ONCE -#GRID_DIAG_OUTPUT_TEMPLATE = grid_diag_out_{MODEL}_{init?fmt=%Y%m%d%H}.nc when using RUN_ONCE_PER_INIT_OR_VALID -#GRID_DIAG_OUTPUT_TEMPLATE = grid_diag_out_{MODEL}_{lead?fmt=%3H}.nc -# when using RUN_ONCE_PER_LEAD -#GRID_DIAG_OUTPUT_TEMPLATE = grid_diag_out_{MODEL}_{init?fmt=%Y%m%d%H}_F{lead?fmt=%3H}.nc when using RUN_ONCE_FOR_EACH - -GRID_DIAG_VERIFICATION_MASK_TEMPLATE = /scratch2/BMC/fv3lam/RRFS_baseline/static/MET/masks/CONUS.nc diff --git a/ush/templates/parm/metplus/GridStat_APCP01h.conf b/ush/templates/parm/metplus/GridStat_APCP01h.conf new file mode 100644 index 000000000..240462dac --- /dev/null +++ b/ush/templates/parm/metplus/GridStat_APCP01h.conf @@ -0,0 +1,274 @@ +# GridStat METplus Configuration + +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] + +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat + +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT + +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} + +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} + +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {ENV[EXPTDIR]}/log + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.APCP_01h.conf + +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped + +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE + +#GRID_STAT_INTERP_FIELD = BOTH +#GRID_STAT_INTERP_VLD_THRESH = 1.0 +#GRID_STAT_INTERP_SHAPE = SQUARE +#GRID_STAT_INTERP_TYPE_METHOD = NEAREST +#GRID_STAT_INTERP_TYPE_WIDTH = 1 + +#GRID_STAT_GRID_WEIGHT_FLAG = + +# Name to identify model (forecast) data in output +MODEL = {ENV[MODEL]} +FCST_NATIVE_DATA_TYPE = GRIB + +# Name to identify observation data in output +OBTYPE = CCPA +OBS_NATIVE_DATA_TYPE = GRIB + +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA + +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools + +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; + +# Name of forecast variable 1 +FCST_VAR1_NAME = APCP + +# List of levels to evaluate for forecast variable 1 +# A03 = 3 hour accumulation in GRIB file +FCST_VAR1_LEVELS = A01 + +# List of thresholds to evaluate for each name/level combination for +# forecast variable 1 +#FCST_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 +BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54 + +#FCST_GRID_STAT_FILE_TYPE = + +# Name of observation variable 1 +OBS_VAR1_NAME = APCP + +# List of levels to evaluate for observation variable 1 +# (*,*) is NetCDF notation - must include quotes around these values! +# must be the same length as FCST_VAR1_LEVELS +OBS_VAR1_LEVELS = A01 + +# List of thresholds to evaluate for each name/level combination for +# observation variable 1 +#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 +OBS_GRID_STAT_FILE_WINDOW_END = 0 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 + +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic +FCST_IS_PROB = False + +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{ENV[acc]}_{OBTYPE} + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_CTC = STAT +GRID_STAT_OUTPUT_FLAG_CTS = STAT +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = STAT +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +#GRID_STAT_OUTPUT_FLAG_PCT = NONE +#GRID_STAT_OUTPUT_FLAG_PSTD = NONE +#GRID_STAT_OUTPUT_FLAG_PJC = NONE +#GRID_STAT_OUTPUT_FLAG_PRC = NONE +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT +GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[OUTPUT_BASE]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01h + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_APCP01h_mean.conf b/ush/templates/parm/metplus/GridStat_APCP01h_mean.conf index c43d63ead..26740647e 100644 --- a/ush/templates/parm/metplus/GridStat_APCP01h_mean.conf +++ b/ush/templates/parm/metplus/GridStat_APCP01h_mean.conf @@ -1,29 +1,58 @@ -# Ensemble Mean Grid to Grid Precipitation Example +# Ensemble Mean GridStat METplus Configuration -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[EXPTDIR]} +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT -LOG_DIR = {OUTPUT_BASE}/log +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01h_mean +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {OUTPUT_BASE}/log # Specify the name of the metplus.log file LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} @@ -31,65 +60,215 @@ LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} # Specify where the location and name of the final metplus_final.conf METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.APCP01.conf -[config] -# List of applications to run -PROCESS_LIST = GridStat +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H +#GRID_STAT_INTERP_FIELD = BOTH +#GRID_STAT_INTERP_VLD_THRESH = 1.0 +#GRID_STAT_INTERP_SHAPE = SQUARE +#GRID_STAT_INTERP_TYPE_METHOD = NEAREST +#GRID_STAT_INTERP_TYPE_WIDTH = 1 -# list of forecast leads to process. -# LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} - -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times +#GRID_STAT_GRID_WEIGHT_FLAG = -# Model to verify -MODEL = {ENV[MODEL]}_mean +# Name to identify model (forecast) data in output +MODEL = {ENV[MODEL]}_mean FCST_NATIVE_DATA_TYPE = GRIB -# Set obtype to vx +# Name to identify observation data in output OBTYPE = CCPA OBS_NATIVE_DATA_TYPE = GRIB -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_mean -GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_01h_{OBTYPE}_mean +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA -# run pcp_combine on forecast/obs data? -FCST_PCP_COMBINE_RUN = False -OBS_PCP_COMBINE_RUN = False +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; -# list of variables to compare -# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0" +# Name of forecast variable 1 FCST_VAR1_NAME = APCP_01_A01_ENS_MEAN + +# List of levels to evaluate for forecast variable 1 +# A03 = 3 hour accumulation in GRIB file FCST_VAR1_LEVELS = A01 +# List of thresholds to evaluate for each name/level combination for +# forecast variable 1 +#FCST_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge2.54 +#FCST_GRID_STAT_FILE_TYPE = + +# Name of observation variable 1 OBS_VAR1_NAME = APCP + +# List of levels to evaluate for observation variable 1 +# (*,*) is NetCDF notation - must include quotes around these values! +# must be the same length as FCST_VAR1_LEVELS OBS_VAR1_LEVELS = A01 -# Neighborhood shape and widths -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE +# List of thresholds to evaluate for each name/level combination for +# observation variable 1 +#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 +OBS_GRID_STAT_FILE_WINDOW_END = 0 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 -# Forecast data description variables +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic FCST_IS_PROB = False +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_mean + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_CTC = STAT +GRID_STAT_OUTPUT_FLAG_CTS = STAT +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = STAT +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +#GRID_STAT_OUTPUT_FLAG_PCT = NONE +#GRID_STAT_OUTPUT_FLAG_PSTD = NONE +#GRID_STAT_OUTPUT_FLAG_PJC = NONE +#GRID_STAT_OUTPUT_FLAG_PRC = NONE +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT +GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[EXPTDIR]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01h_mean + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_APCP01h_prob.conf b/ush/templates/parm/metplus/GridStat_APCP01h_prob.conf index 52065ba7a..d507983f2 100644 --- a/ush/templates/parm/metplus/GridStat_APCP01h_prob.conf +++ b/ush/templates/parm/metplus/GridStat_APCP01h_prob.conf @@ -1,29 +1,58 @@ -# Ensemble Prob Grid to Grid Precipitation Example +# Ensemble Prob GridStat METplus Configuration -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[EXPTDIR]} +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT -LOG_DIR = {OUTPUT_BASE}/log +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01h_prob +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} + +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {OUTPUT_BASE}/log # Specify the name of the metplus.log file LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} @@ -31,54 +60,45 @@ LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} # Specify where the location and name of the final metplus_final.conf METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.APCP01.conf -[config] -# List of applications to run -PROCESS_LIST = GridStat - -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE -# list of forecast leads to process. -# LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} +#GRID_STAT_INTERP_FIELD = BOTH +#GRID_STAT_INTERP_VLD_THRESH = 1.0 +#GRID_STAT_INTERP_SHAPE = SQUARE +#GRID_STAT_INTERP_TYPE_METHOD = NEAREST +#GRID_STAT_INTERP_TYPE_WIDTH = 1 -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times +#GRID_STAT_GRID_WEIGHT_FLAG = -# Model to verify +# Name to identify model (forecast) data in output MODEL = {ENV[MODEL]}_prob FCST_NATIVE_DATA_TYPE = GRIB -# Set obtype to vx +# Name to identify observation data in output OBTYPE = CCPA OBS_NATIVE_DATA_TYPE = GRIB -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_prob -GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_01h_{OBTYPE}_prob +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA -# run pcp_combine on forecast/obs data? -FCST_PCP_COMBINE_RUN = False -OBS_PCP_COMBINE_RUN = False +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; -# list of variables to compare -# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0" -# +# Name of forecast variables +# thresholds in mm, equal to >0, .01",.05",.10" FCST_VAR1_NAME = APCP_01_A01_ENS_FREQ_gt0.0 FCST_VAR1_LEVELS = A01 FCST_VAR1_THRESH = ==0.1 @@ -111,11 +131,155 @@ OBS_VAR4_NAME = APCP OBS_VAR4_LEVELS = A01 OBS_VAR4_THRESH = >=2.54 +#FCST_GRID_STAT_FILE_TYPE = -# Neighborhood shape and widths -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 +OBS_GRID_STAT_FILE_WINDOW_END = 0 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 -# Forecast data description variables +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic FCST_IS_PROB = True FCST_PROB_IN_GRIB_PDS = False + +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_prob + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = NONE +GRID_STAT_OUTPUT_FLAG_CTC = NONE +GRID_STAT_OUTPUT_FLAG_CTS = NONE +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = NONE +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +GRID_STAT_OUTPUT_FLAG_PCT = STAT +GRID_STAT_OUTPUT_FLAG_PSTD = STAT +GRID_STAT_OUTPUT_FLAG_PJC = STAT +GRID_STAT_OUTPUT_FLAG_PRC = STAT +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = NONE +GRID_STAT_OUTPUT_FLAG_NBRCTS = NONE +GRID_STAT_OUTPUT_FLAG_NBRCNT = NONE +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[EXPTDIR]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_01h_prob + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_APCP03h.conf b/ush/templates/parm/metplus/GridStat_APCP03h.conf new file mode 100644 index 000000000..f6d629021 --- /dev/null +++ b/ush/templates/parm/metplus/GridStat_APCP03h.conf @@ -0,0 +1,308 @@ +# GridStat METplus Configuration + +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] + +# List of applications to run - only GridStat for this case +PROCESS_LIST = PcpCombine, GridStat + +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT + +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} + +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} + +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +# # If True, run PCPCombine on forecast data +# observation equivalent OBS_PCP_COMBINE_RUN also exists +FCST_PCP_COMBINE_RUN = True +OBS_PCP_COMBINE_RUN = True + +# mode of PCPCombine to use (SUM, ADD, SUBTRACT, DERIVE, or CUSTOM) +FCST_PCP_COMBINE_METHOD = ADD +OBS_PCP_COMBINE_METHOD = ADD + +# Accumulation interval available in forecast data +FCST_PCP_COMBINE_INPUT_ACCUMS = 01 +FCST_PCP_COMBINE_OUTPUT_ACCUM = 03 + +# Accumulation interval available in obs data +OBS_PCP_COMBINE_INPUT_ACCUMS = 01 +OBS_PCP_COMBINE_OUTPUT_ACCUM = 03 + +# If 'bucket' output already exists, skip the PcpCombine step for the data +PCP_COMBINE_SKIP_IF_OUTPUT_EXISTS = True + +# maximum forecast lead to allow when searching for model data to use in PCPCombine +# Default is a very large time (4000 years) so setting this to a valid maximum value can +# speed up execution time of numerous runs +FCST_PCP_COMBINE_MAX_FORECAST = 2d + +# keep initialization time constant +FCST_PCP_COMBINE_CONSTANT_INIT = True + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {ENV[EXPTDIR]}/log + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.APCP_03h.conf + +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped + +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE + +#GRID_STAT_INTERP_FIELD = BOTH +#GRID_STAT_INTERP_VLD_THRESH = 1.0 +#GRID_STAT_INTERP_SHAPE = SQUARE +#GRID_STAT_INTERP_TYPE_METHOD = NEAREST +#GRID_STAT_INTERP_TYPE_WIDTH = 1 + +#GRID_STAT_GRID_WEIGHT_FLAG = + +# Name to identify model (forecast) data in output +MODEL = {ENV[MODEL]} +FCST_NATIVE_DATA_TYPE = GRIB +FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB + +# Name to identify observation data in output +OBTYPE = CCPA +OBS_NATIVE_DATA_TYPE = GRIB + +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA + +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools + +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; + +# Name of forecast variable 1 +FCST_VAR1_NAME = APCP + +# List of levels to evaluate for forecast variable 1 +# A03 = 3 hour accumulation in GRIB file +FCST_VAR1_LEVELS = A03 + +# List of thresholds to evaluate for each name/level combination for +# forecast variable 1 +#FCST_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 +BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350 + +#FCST_GRID_STAT_FILE_TYPE = + +# Name of observation variable 1 +OBS_VAR1_NAME = APCP + +# List of levels to evaluate for observation variable 1 +# (*,*) is NetCDF notation - must include quotes around these values! +# must be the same length as FCST_VAR1_LEVELS +OBS_VAR1_LEVELS = A03 + +# List of thresholds to evaluate for each name/level combination for +# observation variable 1 +#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 +OBS_GRID_STAT_FILE_WINDOW_END = 0 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 + +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic +FCST_IS_PROB = False + +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{ENV[acc]}_{OBTYPE} + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_CTC = STAT +GRID_STAT_OUTPUT_FLAG_CTS = STAT +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = STAT +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +#GRID_STAT_OUTPUT_FLAG_PCT = NONE +#GRID_STAT_OUTPUT_FLAG_PSTD = NONE +#GRID_STAT_OUTPUT_FLAG_PJC = NONE +#GRID_STAT_OUTPUT_FLAG_PRC = NONE +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT +GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to PCPCombine and GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE} +FCST_GRID_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} + +# directory containing observation input to PCPCombine and GridStat +OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]} +OBS_GRID_STAT_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR} + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from PCPCombine and GridStat +OUTPUT_BASE = {ENV[OUTPUT_BASE]} +FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}/metprd/pcp_combine +OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to PCPCombine and GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_PCP_COMBINE_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 +FCST_GRID_STAT_INPUT_TEMPLATE = {FCST_PCP_COMBINE_OUTPUT_TEMPLATE} + +# Template to look for observation input to PCPCombine and GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_PCP_COMBINE_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 +OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE} + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from PCPCombine and GridStat +FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a{level?fmt=%HH}h +OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a{level?fmt=%HH}h +GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_APCP03h_mean.conf b/ush/templates/parm/metplus/GridStat_APCP03h_mean.conf index 67db9927d..d912c7f8d 100644 --- a/ush/templates/parm/metplus/GridStat_APCP03h_mean.conf +++ b/ush/templates/parm/metplus/GridStat_APCP03h_mean.conf @@ -1,29 +1,58 @@ -# Ensemble Mean Grid to Grid Precipitation Example +# Ensemble Mean GridStat METplus Configuration -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[EXPTDIR]} +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} -OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT -LOG_DIR = {OUTPUT_BASE}/log +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h_mean +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a03h +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {OUTPUT_BASE}/log # Specify the name of the metplus.log file LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} @@ -31,59 +60,215 @@ LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} # Specify where the location and name of the final metplus_final.conf METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.APCP03.conf -[config] -# List of applications to run -PROCESS_LIST = GridStat - -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE -# list of forecast leads to process. -# LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} +#GRID_STAT_INTERP_FIELD = BOTH +#GRID_STAT_INTERP_VLD_THRESH = 1.0 +#GRID_STAT_INTERP_SHAPE = SQUARE +#GRID_STAT_INTERP_TYPE_METHOD = NEAREST +#GRID_STAT_INTERP_TYPE_WIDTH = 1 -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times +#GRID_STAT_GRID_WEIGHT_FLAG = -# Model to verify -MODEL = {ENV[MODEL]}_mean +# Name to identify model (forecast) data in output +MODEL = {ENV[MODEL]}_mean +FCST_NATIVE_DATA_TYPE = GRIB -# Set obtype to vx +# Name to identify observation data in output OBTYPE = CCPA +OBS_NATIVE_DATA_TYPE = GRIB -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_mean -GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_03h_{OBTYPE}_mean +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools -# list of variables to compare -# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0" +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; + +# Name of forecast variable 1 FCST_VAR1_NAME = APCP_A3_ENS_MEAN + +# List of levels to evaluate for forecast variable 1 +# A03 = 3 hour accumulation in GRIB file FCST_VAR1_LEVELS = A3 +# List of thresholds to evaluate for each name/level combination for +# forecast variable 1 +#FCST_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 BOTH_VAR1_THRESH = gt0.0,ge0.508,ge2.54,ge6.350 +#FCST_GRID_STAT_FILE_TYPE = + +# Name of observation variable 1 OBS_VAR1_NAME = APCP + +# List of levels to evaluate for observation variable 1 +# (*,*) is NetCDF notation - must include quotes around these values! +# must be the same length as FCST_VAR1_LEVELS OBS_VAR1_LEVELS = A3 -# Neighborhood shape and widths -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE +# List of thresholds to evaluate for each name/level combination for +# observation variable 1 +#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 +OBS_GRID_STAT_FILE_WINDOW_END = 0 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 -# Forecast data description variables +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic FCST_IS_PROB = False +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_mean + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_CTC = STAT +GRID_STAT_OUTPUT_FLAG_CTS = STAT +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = STAT +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +#GRID_STAT_OUTPUT_FLAG_PCT = NONE +#GRID_STAT_OUTPUT_FLAG_PSTD = NONE +#GRID_STAT_OUTPUT_FLAG_PJC = NONE +#GRID_STAT_OUTPUT_FLAG_PRC = NONE +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT +GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[EXPTDIR]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h_mean + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a03h + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_APCP03h_prob.conf b/ush/templates/parm/metplus/GridStat_APCP03h_prob.conf index 90f16b522..30cd5ad10 100644 --- a/ush/templates/parm/metplus/GridStat_APCP03h_prob.conf +++ b/ush/templates/parm/metplus/GridStat_APCP03h_prob.conf @@ -1,29 +1,58 @@ -# Ensemble Prob Grid to Grid Precipitation Example +# Ensemble Prob GridStat METplus Configuration -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[EXPTDIR]} +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} -OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT -LOG_DIR = {OUTPUT_BASE}/log +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h_prob +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a03h +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {OUTPUT_BASE}/log # Specify the name of the metplus.log file LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} @@ -31,47 +60,44 @@ LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} # Specify where the location and name of the final metplus_final.conf METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.APCP03.conf -[config] -# List of applications to run -PROCESS_LIST = GridStat - -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE -# list of forecast leads to process. -# LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} +#GRID_STAT_INTERP_FIELD = BOTH +#GRID_STAT_INTERP_VLD_THRESH = 1.0 +#GRID_STAT_INTERP_SHAPE = SQUARE +#GRID_STAT_INTERP_TYPE_METHOD = NEAREST +#GRID_STAT_INTERP_TYPE_WIDTH = 1 -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times +#GRID_STAT_GRID_WEIGHT_FLAG = -# Model to verify +# Name to identify model (forecast) data in output MODEL = {ENV[MODEL]}_prob +FCST_NATIVE_DATA_TYPE = GRIB -# Set obtype to vx +# Name to identify observation data in output OBTYPE = CCPA +OBS_NATIVE_DATA_TYPE = GRIB + +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_prob -GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_03h_{OBTYPE}_prob +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; -# list of variables to compare -# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0" +# Name of forecast variables FCST_VAR1_NAME = APCP_A3_ENS_FREQ_gt0.0 FCST_VAR1_LEVELS = A03 FCST_VAR1_THRESH = ==0.1 @@ -104,10 +130,155 @@ OBS_VAR4_NAME = APCP OBS_VAR4_LEVELS = A03 OBS_VAR4_THRESH = >=6.350 -# Neighborhood shape and widths -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE +#FCST_GRID_STAT_FILE_TYPE = + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 +OBS_GRID_STAT_FILE_WINDOW_END = 0 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 -# Forecast data description variables +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic FCST_IS_PROB = True -FCST_PROB_IN_GRIB_PDS = False +FCST_PROB_IN_GRIB_PDS = False + +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_prob + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = NONE +GRID_STAT_OUTPUT_FLAG_CTC = NONE +GRID_STAT_OUTPUT_FLAG_CTS = NONE +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = NONE +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +GRID_STAT_OUTPUT_FLAG_PCT = STAT +GRID_STAT_OUTPUT_FLAG_PSTD = STAT +GRID_STAT_OUTPUT_FLAG_PJC = STAT +GRID_STAT_OUTPUT_FLAG_PRC = STAT +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = NONE +GRID_STAT_OUTPUT_FLAG_NBRCTS = NONE +GRID_STAT_OUTPUT_FLAG_NBRCNT = NONE +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[EXPTDIR]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_03h_prob + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a03h + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_APCP06h.conf b/ush/templates/parm/metplus/GridStat_APCP06h.conf new file mode 100644 index 000000000..7c8d69d1a --- /dev/null +++ b/ush/templates/parm/metplus/GridStat_APCP06h.conf @@ -0,0 +1,308 @@ +# GridStat METplus Configuration + +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] + +# List of applications to run - only GridStat for this case +PROCESS_LIST = PcpCombine, GridStat + +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT + +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} + +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} + +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +# # If True, run PCPCombine on forecast data +# observation equivalent OBS_PCP_COMBINE_RUN also exists +FCST_PCP_COMBINE_RUN = True +OBS_PCP_COMBINE_RUN = True + +# mode of PCPCombine to use (SUM, ADD, SUBTRACT, DERIVE, or CUSTOM) +FCST_PCP_COMBINE_METHOD = ADD +OBS_PCP_COMBINE_METHOD = ADD + +# Accumulation interval available in forecast data +FCST_PCP_COMBINE_INPUT_ACCUMS = 01 +FCST_PCP_COMBINE_OUTPUT_ACCUM = 06 + +# Accumulation interval available in obs data +OBS_PCP_COMBINE_INPUT_ACCUMS = 01 +OBS_PCP_COMBINE_OUTPUT_ACCUM = 06 + +# If 'bucket' output already exists, skip the PcpCombine step for the data +PCP_COMBINE_SKIP_IF_OUTPUT_EXISTS = True + +# maximum forecast lead to allow when searching for model data to use in PCPCombine +# Default is a very large time (4000 years) so setting this to a valid maximum value can +# speed up execution time of numerous runs +FCST_PCP_COMBINE_MAX_FORECAST = 2d + +# keep initialization time constant +FCST_PCP_COMBINE_CONSTANT_INIT = True + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {ENV[EXPTDIR]}/log + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.APCP_06h.conf + +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped + +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE + +#GRID_STAT_INTERP_FIELD = BOTH +#GRID_STAT_INTERP_VLD_THRESH = 1.0 +#GRID_STAT_INTERP_SHAPE = SQUARE +#GRID_STAT_INTERP_TYPE_METHOD = NEAREST +#GRID_STAT_INTERP_TYPE_WIDTH = 1 + +#GRID_STAT_GRID_WEIGHT_FLAG = + +# Name to identify model (forecast) data in output +MODEL = {ENV[MODEL]} +FCST_NATIVE_DATA_TYPE = GRIB +FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB + +# Name to identify observation data in output +OBTYPE = CCPA +OBS_NATIVE_DATA_TYPE = GRIB + +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA + +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools + +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; + +# Name of forecast variable 1 +FCST_VAR1_NAME = APCP + +# List of levels to evaluate for forecast variable 1 +# A06 = 6 hour accumulation in GRIB file +FCST_VAR1_LEVELS = A06 + +# List of thresholds to evaluate for each name/level combination for +# forecast variable 1 +#FCST_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 +BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350,ge8.890,ge12.700 + +#FCST_GRID_STAT_FILE_TYPE = + +# Name of observation variable 1 +OBS_VAR1_NAME = APCP + +# List of levels to evaluate for observation variable 1 +# (*,*) is NetCDF notation - must include quotes around these values! +# must be the same length as FCST_VAR1_LEVELS +OBS_VAR1_LEVELS = A06 + +# List of thresholds to evaluate for each name/level combination for +# observation variable 1 +#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 +OBS_GRID_STAT_FILE_WINDOW_END = 0 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 + +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic +FCST_IS_PROB = False + +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{ENV[acc]}_{OBTYPE} + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_CTC = STAT +GRID_STAT_OUTPUT_FLAG_CTS = STAT +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = STAT +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +#GRID_STAT_OUTPUT_FLAG_PCT = NONE +#GRID_STAT_OUTPUT_FLAG_PSTD = NONE +#GRID_STAT_OUTPUT_FLAG_PJC = NONE +#GRID_STAT_OUTPUT_FLAG_PRC = NONE +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT +GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to PCPCombine and GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE} +FCST_GRID_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} + +# directory containing observation input to PCPCombine and GridStat +OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]} +OBS_GRID_STAT_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR} + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from PCPCombine and GridStat +OUTPUT_BASE = {ENV[OUTPUT_BASE]} +FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}/metprd/pcp_combine +OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to PCPCombine and GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_PCP_COMBINE_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 +FCST_GRID_STAT_INPUT_TEMPLATE = {FCST_PCP_COMBINE_OUTPUT_TEMPLATE} + +# Template to look for observation input to PCPCombine and GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_PCP_COMBINE_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 +OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE} + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from PCPCombine and GridStat +FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a{level?fmt=%HH}h +OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a{level?fmt=%HH}h +GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_APCP06h_mean.conf b/ush/templates/parm/metplus/GridStat_APCP06h_mean.conf index ef2ddb953..264321eef 100644 --- a/ush/templates/parm/metplus/GridStat_APCP06h_mean.conf +++ b/ush/templates/parm/metplus/GridStat_APCP06h_mean.conf @@ -1,29 +1,58 @@ -# Ensemble Mean Grid to Grid Precipitation Example +# Ensemble Mean GridStat METplus Configuration -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[EXPTDIR]} +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} -OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT -LOG_DIR = {OUTPUT_BASE}/log +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h_mean +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a06h +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {OUTPUT_BASE}/log # Specify the name of the metplus.log file LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} @@ -31,59 +60,215 @@ LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} # Specify where the location and name of the final metplus_final.conf METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.APCP06.conf -[config] -# List of applications to run -PROCESS_LIST = GridStat - -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE -# list of forecast leads to process. -# LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} +#GRID_STAT_INTERP_FIELD = BOTH +#GRID_STAT_INTERP_VLD_THRESH = 1.0 +#GRID_STAT_INTERP_SHAPE = SQUARE +#GRID_STAT_INTERP_TYPE_METHOD = NEAREST +#GRID_STAT_INTERP_TYPE_WIDTH = 1 -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times +#GRID_STAT_GRID_WEIGHT_FLAG = -# Model to verify -MODEL = {ENV[MODEL]}_mean +# Name to identify model (forecast) data in output +MODEL = {ENV[MODEL]}_mean +FCST_NATIVE_DATA_TYPE = GRIB -# Set obtype to vx +# Name to identify observation data in output OBTYPE = CCPA +OBS_NATIVE_DATA_TYPE = GRIB -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_mean -GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_06h_{OBTYPE}_mean +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools -# list of variables to compare -# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0" +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; + +# Name of forecast variable 1 FCST_VAR1_NAME = APCP_A6_ENS_MEAN + +# List of levels to evaluate for forecast variable 1 +# A03 = 3 hour accumulation in GRIB file FCST_VAR1_LEVELS = A06 +# List of thresholds to evaluate for each name/level combination for +# forecast variable 1 +#FCST_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 BOTH_VAR1_THRESH = gt0.0,ge2.54,ge6.350,ge12.700 +#FCST_GRID_STAT_FILE_TYPE = + +# Name of observation variable 1 OBS_VAR1_NAME = APCP + +# List of levels to evaluate for observation variable 1 +# (*,*) is NetCDF notation - must include quotes around these values! +# must be the same length as FCST_VAR1_LEVELS OBS_VAR1_LEVELS = A06 -# Neighborhood shape and widths -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE +# List of thresholds to evaluate for each name/level combination for +# observation variable 1 +#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 +OBS_GRID_STAT_FILE_WINDOW_END = 0 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 -# Forecast data description variables +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic FCST_IS_PROB = False +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_mean + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_CTC = STAT +GRID_STAT_OUTPUT_FLAG_CTS = STAT +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = STAT +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +#GRID_STAT_OUTPUT_FLAG_PCT = NONE +#GRID_STAT_OUTPUT_FLAG_PSTD = NONE +#GRID_STAT_OUTPUT_FLAG_PJC = NONE +#GRID_STAT_OUTPUT_FLAG_PRC = NONE +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT +GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[EXPTDIR]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h_mean + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a06h + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_APCP06h_prob.conf b/ush/templates/parm/metplus/GridStat_APCP06h_prob.conf index 5f75e5097..0bfdf4eaa 100644 --- a/ush/templates/parm/metplus/GridStat_APCP06h_prob.conf +++ b/ush/templates/parm/metplus/GridStat_APCP06h_prob.conf @@ -1,29 +1,58 @@ -# Ensemble Prob Grid to Grid Precipitation Example +# Ensemble Prob GridStat METplus Configuration -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[EXPTDIR]} +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} -OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT -LOG_DIR = {OUTPUT_BASE}/log +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h_prob +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a06h +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {OUTPUT_BASE}/log # Specify the name of the metplus.log file LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} @@ -31,47 +60,44 @@ LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} # Specify where the location and name of the final metplus_final.conf METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.APCP06.conf -[config] -# List of applications to run -PROCESS_LIST = GridStat - -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE -# list of forecast leads to process. -# LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} +#GRID_STAT_INTERP_FIELD = BOTH +#GRID_STAT_INTERP_VLD_THRESH = 1.0 +#GRID_STAT_INTERP_SHAPE = SQUARE +#GRID_STAT_INTERP_TYPE_METHOD = NEAREST +#GRID_STAT_INTERP_TYPE_WIDTH = 1 -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times +#GRID_STAT_GRID_WEIGHT_FLAG = -# Model to verify -MODEL = {ENV[MODEL]}_prob +# Name to identify model (forecast) data in output +MODEL = {ENV[MODEL]}_prob +FCST_NATIVE_DATA_TYPE = GRIB -# Set obtype to vx +# Name to identify observation data in output OBTYPE = CCPA +OBS_NATIVE_DATA_TYPE = GRIB + +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_prob -GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_06h_{OBTYPE}_prob +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; -# list of variables to compare -# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0" +# Name of forecast variables FCST_VAR1_NAME = APCP_A6_ENS_FREQ_gt0.0 FCST_VAR1_LEVELS = A06 FCST_VAR1_THRESH = ==0.1 @@ -104,10 +130,155 @@ OBS_VAR4_NAME = APCP OBS_VAR4_LEVELS = A06 OBS_VAR4_THRESH = >=12.700 -# Neighborhood shape and widths -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE +#FCST_GRID_STAT_FILE_TYPE = + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 +OBS_GRID_STAT_FILE_WINDOW_END = 0 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 -# Forecast data description variables +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic FCST_IS_PROB = True -FCST_PROB_IN_GRIB_PDS = False +FCST_PROB_IN_GRIB_PDS = False + +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_prob + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = NONE +GRID_STAT_OUTPUT_FLAG_CTC = NONE +GRID_STAT_OUTPUT_FLAG_CTS = NONE +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = NONE +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +GRID_STAT_OUTPUT_FLAG_PCT = STAT +GRID_STAT_OUTPUT_FLAG_PSTD = STAT +GRID_STAT_OUTPUT_FLAG_PJC = STAT +GRID_STAT_OUTPUT_FLAG_PRC = STAT +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = NONE +GRID_STAT_OUTPUT_FLAG_NBRCTS = NONE +GRID_STAT_OUTPUT_FLAG_NBRCNT = NONE +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[EXPTDIR]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_06h_prob + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a06h + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_APCP24h.conf b/ush/templates/parm/metplus/GridStat_APCP24h.conf new file mode 100644 index 000000000..bcccfe8e1 --- /dev/null +++ b/ush/templates/parm/metplus/GridStat_APCP24h.conf @@ -0,0 +1,308 @@ +# GridStat METplus Configuration + +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] + +# List of applications to run - only GridStat for this case +PROCESS_LIST = PcpCombine, GridStat + +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT + +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} + +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} + +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +# # If True, run PCPCombine on forecast data +# observation equivalent OBS_PCP_COMBINE_RUN also exists +FCST_PCP_COMBINE_RUN = True +OBS_PCP_COMBINE_RUN = True + +# mode of PCPCombine to use (SUM, ADD, SUBTRACT, DERIVE, or CUSTOM) +FCST_PCP_COMBINE_METHOD = ADD +OBS_PCP_COMBINE_METHOD = ADD + +# Accumulation interval available in forecast data +FCST_PCP_COMBINE_INPUT_ACCUMS = 01 +FCST_PCP_COMBINE_OUTPUT_ACCUM = 24 + +# Accumulation interval available in obs data +OBS_PCP_COMBINE_INPUT_ACCUMS = 01 +OBS_PCP_COMBINE_OUTPUT_ACCUM = 24 + +# If 'bucket' output already exists, skip the PcpCombine step for the data +PCP_COMBINE_SKIP_IF_OUTPUT_EXISTS = True + +# maximum forecast lead to allow when searching for model data to use in PCPCombine +# Default is a very large time (4000 years) so setting this to a valid maximum value can +# speed up execution time of numerous runs +FCST_PCP_COMBINE_MAX_FORECAST = 2d + +# keep initialization time constant +FCST_PCP_COMBINE_CONSTANT_INIT = True + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {ENV[EXPTDIR]}/log + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.APCP_24h.conf + +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped + +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE + +#GRID_STAT_INTERP_FIELD = BOTH +#GRID_STAT_INTERP_VLD_THRESH = 1.0 +#GRID_STAT_INTERP_SHAPE = SQUARE +#GRID_STAT_INTERP_TYPE_METHOD = NEAREST +#GRID_STAT_INTERP_TYPE_WIDTH = 1 + +#GRID_STAT_GRID_WEIGHT_FLAG = + +# Name to identify model (forecast) data in output +MODEL = {ENV[MODEL]} +FCST_NATIVE_DATA_TYPE = GRIB +FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB + +# Name to identify observation data in output +OBTYPE = CCPA +OBS_NATIVE_DATA_TYPE = GRIB + +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA + +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools + +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; + +# Name of forecast variable 1 +FCST_VAR1_NAME = APCP + +# List of levels to evaluate for forecast variable 1 +# A24 = 24 hour accumulation in GRIB file +FCST_VAR1_LEVELS = A24 + +# List of thresholds to evaluate for each name/level combination for +# forecast variable 1 +#FCST_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 +BOTH_VAR1_THRESH = gt0.0,ge0.254,ge0.508,ge1.27,ge2.54,ge3.810,ge6.350,ge8.890,ge12.700,ge25.400 + +#FCST_GRID_STAT_FILE_TYPE = + +# Name of observation variable 1 +OBS_VAR1_NAME = APCP + +# List of levels to evaluate for observation variable 1 +# (*,*) is NetCDF notation - must include quotes around these values! +# must be the same length as FCST_VAR1_LEVELS +OBS_VAR1_LEVELS = A24 + +# List of thresholds to evaluate for each name/level combination for +# observation variable 1 +#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 +OBS_GRID_STAT_FILE_WINDOW_END = 0 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 + +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic +FCST_IS_PROB = False + +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{ENV[acc]}_{OBTYPE} + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_CTC = STAT +GRID_STAT_OUTPUT_FLAG_CTS = STAT +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = STAT +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +#GRID_STAT_OUTPUT_FLAG_PCT = NONE +#GRID_STAT_OUTPUT_FLAG_PSTD = NONE +#GRID_STAT_OUTPUT_FLAG_PJC = NONE +#GRID_STAT_OUTPUT_FLAG_PRC = NONE +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT +GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to PCPCombine and GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_PCP_COMBINE_INPUT_DIR = {INPUT_BASE} +FCST_GRID_STAT_INPUT_DIR = {FCST_PCP_COMBINE_OUTPUT_DIR} + +# directory containing observation input to PCPCombine and GridStat +OBS_PCP_COMBINE_INPUT_DIR = {ENV[OBS_DIR]} +OBS_GRID_STAT_INPUT_DIR = {OBS_PCP_COMBINE_OUTPUT_DIR} + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from PCPCombine and GridStat +OUTPUT_BASE = {ENV[OUTPUT_BASE]} +FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}/metprd/pcp_combine +OBS_PCP_COMBINE_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to PCPCombine and GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_PCP_COMBINE_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 +FCST_GRID_STAT_INPUT_TEMPLATE = {FCST_PCP_COMBINE_OUTPUT_TEMPLATE} + +# Template to look for observation input to PCPCombine and GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_PCP_COMBINE_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.01h.hrap.conus.gb2 +OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_PCP_COMBINE_OUTPUT_TEMPLATE} + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from PCPCombine and GridStat +FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}_a{level?fmt=%HH}h +OBS_PCP_COMBINE_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a{level?fmt=%HH}h +GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_APCP24h_mean.conf b/ush/templates/parm/metplus/GridStat_APCP24h_mean.conf index ad1308e20..eaf9d5fb3 100644 --- a/ush/templates/parm/metplus/GridStat_APCP24h_mean.conf +++ b/ush/templates/parm/metplus/GridStat_APCP24h_mean.conf @@ -1,29 +1,58 @@ -# Ensemble Mean Grid to Grid Precipitation Example +# Ensemble Mean GridStat METplus Configuration -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[EXPTDIR]} +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} -OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT -LOG_DIR = {OUTPUT_BASE}/log +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h_mean +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a24h +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {OUTPUT_BASE}/log # Specify the name of the metplus.log file LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} @@ -31,59 +60,215 @@ LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} # Specify where the location and name of the final metplus_final.conf METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.APCP24.conf -[config] -# List of applications to run -PROCESS_LIST = GridStat - -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE -# list of forecast leads to process. -# LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} +#GRID_STAT_INTERP_FIELD = BOTH +#GRID_STAT_INTERP_VLD_THRESH = 1.0 +#GRID_STAT_INTERP_SHAPE = SQUARE +#GRID_STAT_INTERP_TYPE_METHOD = NEAREST +#GRID_STAT_INTERP_TYPE_WIDTH = 1 -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times +#GRID_STAT_GRID_WEIGHT_FLAG = -# Model to verify -MODEL = {ENV[MODEL]}_mean +# Name to identify model (forecast) data in output +MODEL = {ENV[MODEL]}_mean +FCST_NATIVE_DATA_TYPE = GRIB -# Set obtype to vx +# Name to identify observation data in output OBTYPE = CCPA +OBS_NATIVE_DATA_TYPE = GRIB -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_mean -GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_24h_{OBTYPE}_mean +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools -# list of variables to compare -# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0" +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; + +# Name of forecast variable 1 FCST_VAR1_NAME = APCP_A24_ENS_MEAN + +# List of levels to evaluate for forecast variable 1 +# A03 = 3 hour accumulation in GRIB file FCST_VAR1_LEVELS = A24 +# List of thresholds to evaluate for each name/level combination for +# forecast variable 1 +#FCST_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 BOTH_VAR1_THRESH = gt0.0,ge6.350,ge12.700,ge25.400 +#FCST_GRID_STAT_FILE_TYPE = + +# Name of observation variable 1 OBS_VAR1_NAME = APCP + +# List of levels to evaluate for observation variable 1 +# (*,*) is NetCDF notation - must include quotes around these values! +# must be the same length as FCST_VAR1_LEVELS OBS_VAR1_LEVELS = A24 -# Neighborhood shape and widths -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE +# List of thresholds to evaluate for each name/level combination for +# observation variable 1 +#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 +OBS_GRID_STAT_FILE_WINDOW_END = 0 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 -# Forecast data description variables +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic FCST_IS_PROB = False +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_mean + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_CTC = STAT +GRID_STAT_OUTPUT_FLAG_CTS = STAT +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = STAT +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +#GRID_STAT_OUTPUT_FLAG_PCT = NONE +#GRID_STAT_OUTPUT_FLAG_PSTD = NONE +#GRID_STAT_OUTPUT_FLAG_PJC = NONE +#GRID_STAT_OUTPUT_FLAG_PRC = NONE +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT +GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[EXPTDIR]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h_mean + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a24h + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_APCP24h_prob.conf b/ush/templates/parm/metplus/GridStat_APCP24h_prob.conf index a3659ea7b..397abdc42 100644 --- a/ush/templates/parm/metplus/GridStat_APCP24h_prob.conf +++ b/ush/templates/parm/metplus/GridStat_APCP24h_prob.conf @@ -1,29 +1,58 @@ -# Ensemble Prob Grid to Grid Precipitation Example +# Ensemble Prob GridStat METplus Configuration -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[EXPTDIR]} +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} -OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT -LOG_DIR = {OUTPUT_BASE}/log +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H -STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h_prob +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} -OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a24h +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {OUTPUT_BASE}/log # Specify the name of the metplus.log file LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} @@ -31,49 +60,46 @@ LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} # Specify where the location and name of the final metplus_final.conf METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.APCP24.conf -[config] -# List of applications to run -PROCESS_LIST = GridStat - -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE -# list of forecast leads to process. -# LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} +#GRID_STAT_INTERP_FIELD = BOTH +#GRID_STAT_INTERP_VLD_THRESH = 1.0 +#GRID_STAT_INTERP_SHAPE = SQUARE +#GRID_STAT_INTERP_TYPE_METHOD = NEAREST +#GRID_STAT_INTERP_TYPE_WIDTH = 1 -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times +#GRID_STAT_GRID_WEIGHT_FLAG = -# Model to verify -MODEL = {ENV[MODEL]}_prob +# Name to identify model (forecast) data in output +MODEL = {ENV[MODEL]}_prob +FCST_NATIVE_DATA_TYPE = GRIB -# Set obtype to vx +# Name to identify observation data in output OBTYPE = CCPA +OBS_NATIVE_DATA_TYPE = GRIB + +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_APCP_prob -GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_24h_{OBTYPE}_prob +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [NA]; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; -# list of variables to compare -# thresholds in mm, equal to .01",.02",.05",.10",.25",.50",.75",1.0" +# Name of forecast variables FCST_VAR1_NAME = APCP_A24_ENS_FREQ_gt0.0 -FCST_VAR1_LEVELS = A24 +FCST_VAR1_LEVELS = A24 FCST_VAR1_THRESH = ==0.1 OBS_VAR1_NAME = APCP @@ -104,10 +130,155 @@ OBS_VAR4_NAME = APCP OBS_VAR4_LEVELS = A24 OBS_VAR4_THRESH = >=25.400 -# Neighborhood shape and widths -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE +#FCST_GRID_STAT_FILE_TYPE = + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = 0 +OBS_GRID_STAT_FILE_WINDOW_END = 0 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 -# Forecast data description variables +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic FCST_IS_PROB = True -FCST_PROB_IN_GRIB_PDS = False +FCST_PROB_IN_GRIB_PDS = False + +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_prob + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = NONE +GRID_STAT_OUTPUT_FLAG_CTC = NONE +GRID_STAT_OUTPUT_FLAG_CTS = NONE +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = NONE +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +GRID_STAT_OUTPUT_FLAG_PCT = STAT +GRID_STAT_OUTPUT_FLAG_PSTD = STAT +GRID_STAT_OUTPUT_FLAG_PJC = STAT +GRID_STAT_OUTPUT_FLAG_PRC = STAT +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = NONE +GRID_STAT_OUTPUT_FLAG_NBRCTS = NONE +GRID_STAT_OUTPUT_FLAG_NBRCNT = NONE +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[EXPTDIR]}/metprd/pcp_combine + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[EXPTDIR]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/APCP_24h_prob + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_APCP_{ENV[acc]}_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {OBS_GRID_STAT_INPUT_DIR}/{valid?fmt=%Y%m%d}/ccpa.t{valid?fmt=%H}z.hrap.conus.gb2_a24h + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_REFC.conf b/ush/templates/parm/metplus/GridStat_REFC.conf new file mode 100644 index 000000000..7eade0cb1 --- /dev/null +++ b/ush/templates/parm/metplus/GridStat_REFC.conf @@ -0,0 +1,284 @@ +# GridStat METplus Configuration + +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] + +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat + +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT + +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} + +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} + +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {ENV[EXPTDIR]}/log + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.REFC.conf + +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped + +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE + +GRID_STAT_INTERP_FIELD = NONE +GRID_STAT_INTERP_VLD_THRESH = 1.0 +GRID_STAT_INTERP_SHAPE = SQUARE +GRID_STAT_INTERP_TYPE_METHOD = NEAREST +GRID_STAT_INTERP_TYPE_WIDTH = 1 + +GRID_STAT_GRID_WEIGHT_FLAG = NONE + +# Name to identify model (forecast) data in output +MODEL = {ENV[MODEL]} +FCST_NATIVE_DATA_TYPE = GRIB + +# Name to identify observation data in output +OBTYPE = MRMS +OBS_NATIVE_DATA_TYPE = GRIB + +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA + +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools + +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; + +# Name of forecast variable 1 +FCST_VAR1_NAME = REFC + +# List of levels to evaluate for forecast variable 1 +# A03 = 3 hour accumulation in GRIB file +FCST_VAR1_LEVELS = L0 + +FCST_VAR1_OPTIONS = cnt_thresh = [ >15 ]; cnt_logic = UNION; + +# List of thresholds to evaluate for each name/level combination for +# forecast variable 1 +BOTH_VAR1_THRESH = ge20, ge30, ge40, ge50 + +#FCST_GRID_STAT_FILE_TYPE = + +# Name of observation variable 1 +OBS_VAR1_NAME = MergedReflectivityQCComposite + +# List of levels to evaluate for observation variable 1 +# (*,*) is NetCDF notation - must include quotes around these values! +# must be the same length as FCST_VAR1_LEVELS +OBS_VAR1_LEVELS = Z500 + +OBS_VAR1_OPTIONS = censor_thresh = [eq-999, <-20]; censor_val = [-9999, -20]; cnt_thresh = [ >15 ]; cnt_logic = UNION; + +# List of thresholds to evaluate for each name/level combination for +# observation variable 1 +#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +#FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +#FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 +OBS_GRID_STAT_FILE_WINDOW_END = 300 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_WIDTH = 1, 3, 5, 7 + +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic +FCST_IS_PROB = False + +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +# Set to true if observation data is probabilistic +# Only used if configuring forecast data as the 'OBS' input +OBS_IS_PROB = false + +# Only used if OBS_IS_PROB is true - sets probabilistic threshold +OBS_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{OBTYPE} + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_CTC = STAT +GRID_STAT_OUTPUT_FLAG_CTS = STAT +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = STAT +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +#GRID_STAT_OUTPUT_FLAG_PCT = NONE +#GRID_STAT_OUTPUT_FLAG_PSTD = NONE +#GRID_STAT_OUTPUT_FLAG_PJC = NONE +#GRID_STAT_OUTPUT_FLAG_PRC = NONE +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT +GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[OUTPUT_BASE]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/REFC + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_REFC_mean.conf b/ush/templates/parm/metplus/GridStat_REFC_mean.conf index 098e2c010..6fad42b13 100644 --- a/ush/templates/parm/metplus/GridStat_REFC_mean.conf +++ b/ush/templates/parm/metplus/GridStat_REFC_mean.conf @@ -1,30 +1,58 @@ -# Ensemble Mean Composite Reflectivity Example +# GridStat METplus Configuration -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[EXPTDIR]} +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT -LOG_DIR = {OUTPUT_BASE}/log +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H -STAGING_DIR = {OUTPUT_BASE}/stage/REFC_mean +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_REFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} -# ANLYS -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {OUTPUT_BASE}/log # Specify the name of the metplus.log file LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} @@ -32,63 +60,225 @@ LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} # Specify where the location and name of the final metplus_final.conf METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.REFC.conf -[config] -# List of applications to run -PROCESS_LIST = GridStat +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H - -# list of forecast leads to process. -#LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} +GRID_STAT_INTERP_FIELD = NONE +GRID_STAT_INTERP_VLD_THRESH = 1.0 +GRID_STAT_INTERP_SHAPE = SQUARE +GRID_STAT_INTERP_TYPE_METHOD = NEAREST +GRID_STAT_INTERP_TYPE_WIDTH = 1 -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times +GRID_STAT_GRID_WEIGHT_FLAG = NONE -# Model to verify +# Name to identify model (forecast) data in output MODEL = {ENV[MODEL]}_mean +#FCST_NATIVE_DATA_TYPE = GRIB -# Set obtype to vx +# Name to identify observation data in output OBTYPE = MRMS OBS_NATIVE_DATA_TYPE = GRIB -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_REFC_mean -GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_REFC_{OBTYPE}_mean +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA + +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; -# Forecast/Observation variable Information +# Name of forecast variable 1 FCST_VAR1_NAME = REFC_L0_ENS_MEAN + +# List of levels to evaluate for forecast variable 1 +# A03 = 3 hour accumulation in GRIB file FCST_VAR1_LEVELS = L0 +#FCST_VAR1_OPTIONS = cnt_thresh = [ >15 ]; cnt_logic = UNION; + +# List of thresholds to evaluate for each name/level combination for +# forecast variable 1 BOTH_VAR1_THRESH = ge20, ge30, ge40, ge50 +#FCST_GRID_STAT_FILE_TYPE = + +# Name of observation variable 1 OBS_VAR1_NAME = MergedReflectivityQCComposite -OBS_VAR1_LEVELS = Z500 + +# List of levels to evaluate for observation variable 1 +# (*,*) is NetCDF notation - must include quotes around these values! +# must be the same length as FCST_VAR1_LEVELS +OBS_VAR1_LEVELS = Z500 + OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; +# List of thresholds to evaluate for each name/level combination for +# observation variable 1 +#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +#FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +#FCST_GRID_STAT_FILE_WINDOW_END = 0 OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 OBS_GRID_STAT_FILE_WINDOW_END = 300 -# Neighborhood shape and width -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE -GRID_STAT_NEIGHBORHOOD_WIDTH = 3, 5, 7 +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_WIDTH = 3, 5, 7 + +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False -# Forecast data description variables +# Set to true if forecast data is probabilistic FCST_IS_PROB = False +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +# Set to true if observation data is probabilistic +# Only used if configuring forecast data as the 'OBS' input +OBS_IS_PROB = false + +# Only used if OBS_IS_PROB is true - sets probabilistic threshold +OBS_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_REFC_{OBTYPE}_mean + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_CTC = STAT +GRID_STAT_OUTPUT_FLAG_CTS = STAT +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = STAT +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +#GRID_STAT_OUTPUT_FLAG_PCT = NONE +#GRID_STAT_OUTPUT_FLAG_PSTD = NONE +#GRID_STAT_OUTPUT_FLAG_PJC = NONE +#GRID_STAT_OUTPUT_FLAG_PRC = NONE +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT +GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[EXPTDIR]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/REFC_mean + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_REFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_REFC_prob.conf b/ush/templates/parm/metplus/GridStat_REFC_prob.conf index d6ad7452a..997fe1274 100644 --- a/ush/templates/parm/metplus/GridStat_REFC_prob.conf +++ b/ush/templates/parm/metplus/GridStat_REFC_prob.conf @@ -1,29 +1,58 @@ -# Ensemble Prob Grid to Grid Composite Reflectivity Example +# GridStat METplus Configuration -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[EXPTDIR]} +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT -LOG_DIR = {OUTPUT_BASE}/log +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H -STAGING_DIR = {OUTPUT_BASE}/stage/REFC_prob +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_REFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {OUTPUT_BASE}/log # Specify the name of the metplus.log file LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} @@ -31,61 +60,71 @@ LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} # Specify where the location and name of the final metplus_final.conf METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.REFC.conf -[config] -# List of applications to run -PROCESS_LIST = GridStat +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT - -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE -# list of forecast leads to process. -# LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} +GRID_STAT_INTERP_FIELD = NONE +GRID_STAT_INTERP_VLD_THRESH = 1.0 +GRID_STAT_INTERP_SHAPE = SQUARE +GRID_STAT_INTERP_TYPE_METHOD = NEAREST +GRID_STAT_INTERP_TYPE_WIDTH = 1 -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times +GRID_STAT_GRID_WEIGHT_FLAG = NONE -# Model to verify +# Name to identify model (forecast) data in output MODEL = {ENV[MODEL]}_prob -FCST_NATIVE_DATA_TYPE = GRIB +#FCST_NATIVE_DATA_TYPE = GRIB -# Set obtype to vx -OBTYPE = MRMS +# Name to identify observation data in output +OBTYPE = MRMS OBS_NATIVE_DATA_TYPE = GRIB -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_REFC_prob -GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_REFC_{OBTYPE}_prob +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA -# run pcp_combine on forecast/obs data? -FCST_PCP_COMBINE_RUN = False -OBS_PCP_COMBINE_RUN = False +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; -# list of variables to compare +# Name of forecast variable 1 FCST_VAR1_NAME = REFC_L0_ENS_FREQ_ge20 -FCST_VAR1_LEVELS = L0 + +# List of levels to evaluate for forecast variable 1 +# A03 = 3 hour accumulation in GRIB file +FCST_VAR1_LEVELS = L0 + +#FCST_VAR1_OPTIONS = cnt_thresh = [ >15 ]; cnt_logic = UNION; + +# List of thresholds to evaluate for each name/level combination for +# forecast variable 1 FCST_VAR1_THRESH = ==0.1 +#FCST_GRID_STAT_FILE_TYPE = + +# Name of observation variable 1 OBS_VAR1_NAME = MergedReflectivityQCComposite -OBS_VAR1_LEVELS = Z500 + +# List of levels to evaluate for observation variable 1 +# (*,*) is NetCDF notation - must include quotes around these values! +# must be the same length as FCST_VAR1_LEVELS +OBS_VAR1_LEVELS = Z500 OBS_VAR1_THRESH = >=20.0 OBS_VAR1_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; +# List of thresholds to evaluate for each name/level combination for +# observation variable 1 + FCST_VAR2_NAME = REFC_L0_ENS_FREQ_ge30 FCST_VAR2_LEVELS = L0 FCST_VAR2_THRESH = ==0.1 @@ -113,10 +152,158 @@ OBS_VAR4_LEVELS = Z500 OBS_VAR4_THRESH = >=50.0 OBS_VAR4_OPTIONS = censor_thresh = lt-20; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; -# Neighborhood shape and widths +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +#FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +#FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 +OBS_GRID_STAT_FILE_WINDOW_END = 300 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_WIDTH = 3, 5, 7 + +# shape value passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE -GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 -# Forecast data description variables +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic FCST_IS_PROB = True FCST_PROB_IN_GRIB_PDS = False + +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +# Set to true if observation data is probabilistic +# Only used if configuring forecast data as the 'OBS' input +OBS_IS_PROB = false + +# Only used if OBS_IS_PROB is true - sets probabilistic threshold +OBS_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_REFC_{OBTYPE}_prob + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = NONE +GRID_STAT_OUTPUT_FLAG_CTC = NONE +GRID_STAT_OUTPUT_FLAG_CTS = NONE +GRID_STAT_OUTPUT_FLAG_MCTC = NONE +GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = NONE +GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +GRID_STAT_OUTPUT_FLAG_VCNT = NONE +GRID_STAT_OUTPUT_FLAG_PCT = STAT +GRID_STAT_OUTPUT_FLAG_PSTD = STAT +GRID_STAT_OUTPUT_FLAG_PJC = STAT +GRID_STAT_OUTPUT_FLAG_PRC = STAT +GRID_STAT_OUTPUT_FLAG_ECLV = NONE +GRID_STAT_OUTPUT_FLAG_NBRCTC = NONE +GRID_STAT_OUTPUT_FLAG_NBRCTS = NONE +GRID_STAT_OUTPUT_FLAG_NBRCNT = NONE +GRID_STAT_OUTPUT_FLAG_GRAD = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[EXPTDIR]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/REFC_prob + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_REFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_RETOP.conf b/ush/templates/parm/metplus/GridStat_RETOP.conf new file mode 100644 index 000000000..4ef239d36 --- /dev/null +++ b/ush/templates/parm/metplus/GridStat_RETOP.conf @@ -0,0 +1,284 @@ +# GridStat METplus Configuration + +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] + +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat + +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT + +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} + +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} + +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 + +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} + +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {ENV[EXPTDIR]}/log + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.RETOP.conf + +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped + +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE + +GRID_STAT_INTERP_FIELD = NONE +GRID_STAT_INTERP_VLD_THRESH = 1.0 +GRID_STAT_INTERP_SHAPE = SQUARE +GRID_STAT_INTERP_TYPE_METHOD = NEAREST +GRID_STAT_INTERP_TYPE_WIDTH = 1 + +GRID_STAT_GRID_WEIGHT_FLAG = NONE + +# Name to identify model (forecast) data in output +MODEL = {ENV[MODEL]} +FCST_NATIVE_DATA_TYPE = GRIB + +# Name to identify observation data in output +OBTYPE = MRMS +OBS_NATIVE_DATA_TYPE = GRIB + +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA + +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools + +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; + +# Name of forecast variable 1 +FCST_VAR1_NAME = RETOP + +# List of levels to evaluate for forecast variable 1 +# A03 = 3 hour accumulation in GRIB file +FCST_VAR1_LEVELS = L0 + +FCST_VAR1_OPTIONS = convert(x) = x * 3.28084 * 0.001; cnt_thresh = [ >0 ]; cnt_logic = UNION; + +# List of thresholds to evaluate for each name/level combination for +# forecast variable 1 +BOTH_VAR1_THRESH = ge20, ge30, ge40, ge50 + +#FCST_GRID_STAT_FILE_TYPE = + +# Name of observation variable 1 +OBS_VAR1_NAME = EchoTop18 + +# List of levels to evaluate for observation variable 1 +# (*,*) is NetCDF notation - must include quotes around these values! +# must be the same length as FCST_VAR1_LEVELS +OBS_VAR1_LEVELS = Z500 + +OBS_VAR1_OPTIONS = convert(x) = x * 3280.84 * 0.001; censor_thresh = [<=-9.84252,eq-3.28084]; censor_val = [-9999,-16.4042]; cnt_thresh = [ >0 ]; cnt_logic = UNION; + +# List of thresholds to evaluate for each name/level combination for +# observation variable 1 +#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +#FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +#FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 +OBS_GRID_STAT_FILE_WINDOW_END = 300 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_WIDTH = 1, 3, 5, 7 + +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic +FCST_IS_PROB = False + +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +# Set to true if observation data is probabilistic +# Only used if configuring forecast data as the 'OBS' input +OBS_IS_PROB = false + +# Only used if OBS_IS_PROB is true - sets probabilistic threshold +OBS_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{OBTYPE} + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_CTC = STAT +GRID_STAT_OUTPUT_FLAG_CTS = STAT +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = STAT +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +#GRID_STAT_OUTPUT_FLAG_PCT = NONE +#GRID_STAT_OUTPUT_FLAG_PSTD = NONE +#GRID_STAT_OUTPUT_FLAG_PJC = NONE +#GRID_STAT_OUTPUT_FLAG_PRC = NONE +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT +GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[OUTPUT_BASE]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/RETOP + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H%M%S}.grib2 + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_RETOP_mean.conf b/ush/templates/parm/metplus/GridStat_RETOP_mean.conf index 6755ff2ee..b0b17dbbd 100644 --- a/ush/templates/parm/metplus/GridStat_RETOP_mean.conf +++ b/ush/templates/parm/metplus/GridStat_RETOP_mean.conf @@ -1,30 +1,58 @@ -# Ensemble Mean Composite RETOP Example +# GridStat METplus Configuration -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[EXPTDIR]} +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT -LOG_DIR = {OUTPUT_BASE}/log +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H -STAGING_DIR = {OUTPUT_BASE}/stage/RETOP_mean +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_RETOP_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} -# ANLYS -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {OUTPUT_BASE}/log # Specify the name of the metplus.log file LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} @@ -32,64 +60,225 @@ LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} # Specify where the location and name of the final metplus_final.conf METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.RETOP.conf -[config] -# List of applications to run -PROCESS_LIST = GridStat +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H - -# list of forecast leads to process. -#LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} +GRID_STAT_INTERP_FIELD = NONE +GRID_STAT_INTERP_VLD_THRESH = 1.0 +GRID_STAT_INTERP_SHAPE = SQUARE +GRID_STAT_INTERP_TYPE_METHOD = NEAREST +GRID_STAT_INTERP_TYPE_WIDTH = 1 -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times +GRID_STAT_GRID_WEIGHT_FLAG = NONE -# Model to verify +# Name to identify model (forecast) data in output MODEL = {ENV[MODEL]}_mean +#FCST_NATIVE_DATA_TYPE = GRIB -# Set obtype to vx +# Name to identify observation data in output OBTYPE = MRMS OBS_NATIVE_DATA_TYPE = GRIB -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_REFC_mean -GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_RETOP_{OBTYPE}_mean +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA + +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; -# Forecast/Observation variable Information +# Name of forecast variable 1 FCST_VAR1_NAME = RETOP_L0_ENS_MEAN + +# List of levels to evaluate for forecast variable 1 +# A03 = 3 hour accumulation in GRIB file FCST_VAR1_LEVELS = L0 -FCST_VAR1_OPTIONS = convert(x) = M_to_KFT(x); +FCST_VAR1_OPTIONS = convert(x) = x * 3.28084 * 0.001; + +# List of thresholds to evaluate for each name/level combination for +# forecast variable 1 BOTH_VAR1_THRESH = ge20, ge30, ge40, ge50 +#FCST_GRID_STAT_FILE_TYPE = + +# Name of observation variable 1 OBS_VAR1_NAME = EchoTop18 -OBS_VAR1_LEVELS = Z500 -OBS_VAR1_OPTIONS = censor_thresh = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = KM_to_KFT(x); +# List of levels to evaluate for observation variable 1 +# (*,*) is NetCDF notation - must include quotes around these values! +# must be the same length as FCST_VAR1_LEVELS +OBS_VAR1_LEVELS = Z500 + +OBS_VAR1_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; + +# List of thresholds to evaluate for each name/level combination for +# observation variable 1 +#OBS_VAR1_THRESH = gt12.7, gt25.4, gt50.8, gt76.2 + +#OBS_GRID_STAT_FILE_TYPE = + +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +#FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +#FCST_GRID_STAT_FILE_WINDOW_END = 0 OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 OBS_GRID_STAT_FILE_WINDOW_END = 300 -# Neighborhood shape and width -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE -GRID_STAT_NEIGHBORHOOD_WIDTH = 3, 5, 7 +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_WIDTH = 3, 5, 7 + +# shape value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE + +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False -# Forecast data description variables +# Set to true if forecast data is probabilistic FCST_IS_PROB = False +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +# Set to true if observation data is probabilistic +# Only used if configuring forecast data as the 'OBS' input +OBS_IS_PROB = false + +# Only used if OBS_IS_PROB is true - sets probabilistic threshold +OBS_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_RETOP_{OBTYPE}_mean + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = STAT +GRID_STAT_OUTPUT_FLAG_CTC = STAT +GRID_STAT_OUTPUT_FLAG_CTS = STAT +#GRID_STAT_OUTPUT_FLAG_MCTC = NONE +#GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = STAT +#GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +#GRID_STAT_OUTPUT_FLAG_VCNT = NONE +#GRID_STAT_OUTPUT_FLAG_PCT = NONE +#GRID_STAT_OUTPUT_FLAG_PSTD = NONE +#GRID_STAT_OUTPUT_FLAG_PJC = NONE +#GRID_STAT_OUTPUT_FLAG_PRC = NONE +#GRID_STAT_OUTPUT_FLAG_ECLV = BOTH +GRID_STAT_OUTPUT_FLAG_NBRCTC = STAT +GRID_STAT_OUTPUT_FLAG_NBRCTS = STAT +GRID_STAT_OUTPUT_FLAG_NBRCNT = STAT +#GRID_STAT_OUTPUT_FLAG_GRAD = BOTH +#GRID_STAT_OUTPUT_FLAG_DMAP = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +#GRID_STAT_NC_PAIRS_FLAG_CLIMO_CDP = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +#GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +#GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +#GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[EXPTDIR]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/RETOP_mean + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_RETOP_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/GridStat_RETOP_prob.conf b/ush/templates/parm/metplus/GridStat_RETOP_prob.conf index 41741a067..27142979c 100644 --- a/ush/templates/parm/metplus/GridStat_RETOP_prob.conf +++ b/ush/templates/parm/metplus/GridStat_RETOP_prob.conf @@ -1,29 +1,58 @@ -# Ensemble Prob Grid to Grid Composite RETOP Example +# GridStat METplus Configuration -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -OUTPUT_BASE = {ENV[EXPTDIR]} +# section heading for [config] variables - all items below this line and +# before the next section heading correspond to the [config] section +[config] -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} +# List of applications to run - only GridStat for this case +PROCESS_LIST = GridStat -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} +# time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set +LOOP_BY = INIT -LOG_DIR = {OUTPUT_BASE}/log +# Format of INIT_BEG and INT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H -STAGING_DIR = {OUTPUT_BASE}/stage/RETOP_prob +# Start time for METplus run - must match INIT_TIME_FMT +INIT_BEG = {ENV[CDATE]} -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_RETOP_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc +# End time for METplus run - must match INIT_TIME_FMT +INIT_END = {ENV[CDATE]} -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds +INIT_INCREMENT = 3600 -GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) +LEAD_SEQ = {ENV[fhr_list]} -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly +# Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run +LOOP_ORDER = times + +# Run pcp_combine on forecast/obs data? +FCST_PCP_COMBINE_RUN = False +OBS_PCP_COMBINE_RUN = False + +# Verbosity of MET output - overrides LOG_VERBOSITY for GridStat only +#LOG_GRID_STAT_VERBOSITY = 2 + +LOG_DIR = {OUTPUT_BASE}/log # Specify the name of the metplus.log file LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} @@ -31,52 +60,44 @@ LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} # Specify where the location and name of the final metplus_final.conf METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.RETOP.conf -[config] -# List of applications to run -PROCESS_LIST = GridStat +# Location of MET config file to pass to GridStat +GRID_STAT_CONFIG_FILE = {PARM_BASE}/met_config/GridStatConfig_wrapped -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT +# grid to remap data. Value is set as the 'to_grid' variable in the 'regrid' dictionary +# See MET User's Guide for more information +GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_REGRID_VLD_THRESH = 0.5 +GRID_STAT_REGRID_METHOD = BUDGET +GRID_STAT_REGRID_WIDTH = 2 +GRID_STAT_REGRID_SHAPE = SQUARE -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H +GRID_STAT_INTERP_FIELD = NONE +GRID_STAT_INTERP_VLD_THRESH = 1.0 +GRID_STAT_INTERP_SHAPE = SQUARE +GRID_STAT_INTERP_TYPE_METHOD = NEAREST +GRID_STAT_INTERP_TYPE_WIDTH = 1 -# list of forecast leads to process. -# LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} - -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times +GRID_STAT_GRID_WEIGHT_FLAG = NONE -# Model to verify +# Name to identify model (forecast) data in output MODEL = {ENV[MODEL]}_prob -FCST_NATIVE_DATA_TYPE = GRIB +#FCST_NATIVE_DATA_TYPE = GRIB -# Set obtype to vx -OBTYPE = MRMS +# Name to identify observation data in output +OBTYPE = MRMS OBS_NATIVE_DATA_TYPE = GRIB -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_REFC_prob -GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_RETOP_{OBTYPE}_prob +# set the desc value in the GridStat MET config file +GRID_STAT_DESC = NA -# run pcp_combine on forecast/obs data? -FCST_PCP_COMBINE_RUN = False -OBS_PCP_COMBINE_RUN = False +# List of variables to compare in GridStat - FCST_VAR1 variables correspond +# to OBS_VAR1 variables +# Note [FCST/OBS/BOTH]_GRID_STAT_VAR_NAME can be used instead if different evaluations +# are needed for different tools -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST +GRID_STAT_MET_CONFIG_OVERRIDES = cat_thresh = []; cnt_thresh = [NA]; cnt_logic = UNION; wind_thresh = [NA]; wind_logic = UNION; ci_alpha = [0.05]; rank_corr_flag = FALSE; -# list of variables to compare +# Name of forecast variable 1 FCST_VAR1_NAME = RETOP_L0_ENS_FREQ_ge20 FCST_VAR1_LEVELS = L0 FCST_VAR1_THRESH = ==0.1 @@ -84,7 +105,7 @@ FCST_VAR1_THRESH = ==0.1 OBS_VAR1_NAME = EchoTop18 OBS_VAR1_LEVELS = Z500 OBS_VAR1_THRESH = >=20.0 -OBS_VAR1_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = KM_to_KFT(x); +OBS_VAR1_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; FCST_VAR2_NAME = RETOP_L0_ENS_FREQ_ge30 FCST_VAR2_LEVELS = L0 @@ -93,7 +114,7 @@ FCST_VAR2_THRESH = ==0.1 OBS_VAR2_NAME = EchoTop18 OBS_VAR2_LEVELS = Z500 OBS_VAR2_THRESH = >=30.0 -OBS_VAR2_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = KM_to_KFT(x); +OBS_VAR2_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; FCST_VAR3_NAME = RETOP_L0_ENS_FREQ_ge40 FCST_VAR3_LEVELS = L0 @@ -102,7 +123,7 @@ FCST_VAR3_THRESH = ==0.1 OBS_VAR3_NAME = EchoTop18 OBS_VAR3_LEVELS = Z500 OBS_VAR3_THRESH = >=40.0 -OBS_VAR3_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = KM_to_KFT(x); +OBS_VAR3_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; FCST_VAR4_NAME = RETOP_L0_ENS_FREQ_ge50 FCST_VAR4_LEVELS = L0 @@ -111,12 +132,161 @@ FCST_VAR4_THRESH = ==0.1 OBS_VAR4_NAME = EchoTop18 OBS_VAR4_LEVELS = Z500 OBS_VAR4_THRESH = >=50.0 -OBS_VAR4_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = KM_to_KFT(x); +OBS_VAR4_OPTIONS = censor_thresh = lt-20.0; censor_val = -20.0; cnt_thresh = [ >15 ]; cnt_logic = UNION; convert(x) = x * 3280.84 * 0.001; + + +#OBS_GRID_STAT_FILE_TYPE = -# Neighborhood shape and widths +# Time relative to valid time (in seconds) to allow files to be considered +# valid. Set both BEGIN and END to 0 to require the exact time in the filename +# Not used in this example. +#FCST_GRID_STAT_FILE_WINDOW_BEGIN = 0 +#FCST_GRID_STAT_FILE_WINDOW_END = 0 +OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 +OBS_GRID_STAT_FILE_WINDOW_END = 300 + +# MET GridStat neighborhood values +# See the MET User's Guide GridStat section for more information +GRID_STAT_NEIGHBORHOOD_FIELD = BOTH + +# width value passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_WIDTH = 3, 5, 7 + +# shape value passed to nbrhd dictionary in the MET config file GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE -GRID_STAT_NEIGHBORHOOD_WIDTH = 3,5,7 -# Forecast data description variables +# cov thresh list passed to nbrhd dictionary in the MET config file +GRID_STAT_NEIGHBORHOOD_COV_THRESH = >=0.5 + +# Set to true to run GridStat separately for each field specified +# Set to false to create one run of GridStat per run time that +# includes all fields specified. +GRID_STAT_ONCE_PER_FIELD = False + +# Set to true if forecast data is probabilistic FCST_IS_PROB = True FCST_PROB_IN_GRIB_PDS = False + +# Only used if FCST_IS_PROB is true - sets probabilistic threshold +FCST_GRID_STAT_PROB_THRESH = ==0.1 + +# Set to true if observation data is probabilistic +# Only used if configuring forecast data as the 'OBS' input +OBS_IS_PROB = false + +# Only used if OBS_IS_PROB is true - sets probabilistic threshold +OBS_GRID_STAT_PROB_THRESH = ==0.1 + +GRID_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_RETOP_{OBTYPE}_prob + +# Climatology data +#GRID_STAT_CLIMO_MEAN_FILE_NAME = +#GRID_STAT_CLIMO_MEAN_FIELD = +#GRID_STAT_CLIMO_MEAN_REGRID_METHOD = +#GRID_STAT_CLIMO_MEAN_REGRID_WIDTH = +#GRID_STAT_CLIMO_MEAN_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_MEAN_REGRID_SHAPE = +#GRID_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_MEAN_MATCH_MONTH = +#GRID_STAT_CLIMO_MEAN_DAY_INTERVAL = +#GRID_STAT_CLIMO_MEAN_HOUR_INTERVAL = + +#GRID_STAT_CLIMO_STDEV_FILE_NAME = +#GRID_STAT_CLIMO_STDEV_FIELD = +#GRID_STAT_CLIMO_STDEV_REGRID_METHOD = +#GRID_STAT_CLIMO_STDEV_REGRID_WIDTH = +#GRID_STAT_CLIMO_STDEV_REGRID_VLD_THRESH = +#GRID_STAT_CLIMO_STDEV_REGRID_SHAPE = +#GRID_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = +#GRID_STAT_CLIMO_STDEV_MATCH_MONTH = +#GRID_STAT_CLIMO_STDEV_DAY_INTERVAL = +#GRID_STAT_CLIMO_STDEV_HOUR_INTERVAL = + +GRID_STAT_CLIMO_CDF_BINS = 1 +#GRID_STAT_CLIMO_CDF_CENTER_BINS = False +#GRID_STAT_CLIMO_CDF_WRITE_BINS = True + +GRID_STAT_MASK_GRID = + +# Statistical output types +GRID_STAT_OUTPUT_FLAG_FHO = NONE +GRID_STAT_OUTPUT_FLAG_CTC = NONE +GRID_STAT_OUTPUT_FLAG_CTS = NONE +GRID_STAT_OUTPUT_FLAG_MCTC = NONE +GRID_STAT_OUTPUT_FLAG_MCTS = NONE +GRID_STAT_OUTPUT_FLAG_CNT = NONE +GRID_STAT_OUTPUT_FLAG_SL1L2 = NONE +GRID_STAT_OUTPUT_FLAG_SAL1L2 = NONE +GRID_STAT_OUTPUT_FLAG_VL1L2 = NONE +GRID_STAT_OUTPUT_FLAG_VAL1L2 = NONE +GRID_STAT_OUTPUT_FLAG_VCNT = NONE +GRID_STAT_OUTPUT_FLAG_PCT = STAT +GRID_STAT_OUTPUT_FLAG_PSTD = STAT +GRID_STAT_OUTPUT_FLAG_PJC = STAT +GRID_STAT_OUTPUT_FLAG_PRC = STAT +GRID_STAT_OUTPUT_FLAG_ECLV = NONE +GRID_STAT_OUTPUT_FLAG_NBRCTC = NONE +GRID_STAT_OUTPUT_FLAG_NBRCTS = NONE +GRID_STAT_OUTPUT_FLAG_NBRCNT = NONE +GRID_STAT_OUTPUT_FLAG_GRAD = NONE + +# NetCDF matched pairs output file +#GRID_STAT_NC_PAIRS_VAR_NAME = +GRID_STAT_NC_PAIRS_FLAG_LATLON = FALSE +GRID_STAT_NC_PAIRS_FLAG_RAW = FALSE +GRID_STAT_NC_PAIRS_FLAG_DIFF = FALSE +GRID_STAT_NC_PAIRS_FLAG_CLIMO = FALSE +GRID_STAT_NC_PAIRS_FLAG_WEIGHT = FALSE +GRID_STAT_NC_PAIRS_FLAG_NBRHD = FALSE +GRID_STAT_NC_PAIRS_FLAG_FOURIER = FALSE +GRID_STAT_NC_PAIRS_FLAG_GRADIENT = FALSE +GRID_STAT_NC_PAIRS_FLAG_DISTANCE_MAP = FALSE +GRID_STAT_NC_PAIRS_FLAG_APPLY_MASK = FALSE + +# End of [config] section and start of [dir] section +[dir] + +# directory containing forecast input to GridStat +INPUT_BASE = {ENV[INPUT_BASE]} +FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} + +# directory containing observation input to GridStat +OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to GridStat +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_DIR = + +# directory to write output from GridStat +OUTPUT_BASE = {ENV[EXPTDIR]} +GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +STAGING_DIR = {OUTPUT_BASE}/stage/RETOP_prob + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for forecast input to GridStat relative to FCST_GRID_STAT_INPUT_DIR +FCST_GRID_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_RETOP_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to GridStat relative to OBS_GRID_STAT_INPUT_DIR +OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 + +# Optional subdirectories relative to GRID_STAT_OUTPUT_DIR to write output from GridStat +GRID_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to GridStat relative to GRID_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +GRID_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +# Used to specify one or more verification mask files for GridStat +# Not used for this example +GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly diff --git a/ush/templates/parm/metplus/PointStat_conus_sfc.conf b/ush/templates/parm/metplus/PointStat_conus_sfc.conf index 779fa73b4..1558c4aa9 100644 --- a/ush/templates/parm/metplus/PointStat_conus_sfc.conf +++ b/ush/templates/parm/metplus/PointStat_conus_sfc.conf @@ -1,66 +1,52 @@ -# Grid to Point Example - -[dir] -# Input and output data directories -PB2NC_INPUT_DIR = {ENV[OBS_DIR]} -PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc - -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} - -OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR} - -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {ENV[EXPTDIR]}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/conus_sfc - -[filename_templates] -# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR -PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} -# Template to use to write output from PB2NC -PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc - -# Template to look for forecast/observation input to PointStat relative to FCST_POINT_STAT_INPUT_DIR -FCST_POINT_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 -OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc - -POINT_STAT_OUTPUT_TEMPLATE = metprd/point_stat - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_sfc - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/metprd/point_stat/metplus_final.conus_surface.conf - [config] -# List of applications to run +# List of applications to run - only PointStat for this case PROCESS_LIST = PB2NC, PointStat # time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Start time for METplus run +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT INIT_BEG = {ENV[CDATE]} -# End time for METplus run + +# End time for METplus run - must match INIT_TIME_FMT INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 + +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H -# list of forecast leads to process. -#LEAD_SEQ = begin_end_incr(1,24,1) +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {ENV[fhr_list]} # Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 +# Location of MET config file to pass to PB2NC +PB2NC_CONFIG_FILE = {PARM_BASE}/met_config/PB2NCConfig_wrapped + # For both PB2NC and point_stat OBS_WINDOW_BEGIN = -1799 OBS_WINDOW_END = 1800 @@ -68,9 +54,6 @@ OBS_WINDOW_END = 1800 PB2NC_WINDOW_BEGIN = {OBS_WINDOW_BEGIN} PB2NC_WINDOW_END = {OBS_WINDOW_END} -# Location of MET config file to pass to PB2NC -PB2NC_CONFIG_FILE = {CONFIG_DIR}/PB2NCConfig - # If set to True, skip run if the output file determined by the output directory and # filename template already exists PB2NC_SKIP_IF_OUTPUT_EXISTS = True @@ -80,11 +63,19 @@ PB2NC_GRID = PB2NC_POLY = PB2NC_STATION_ID = PB2NC_MESSAGE_TYPE = ADPSFC, ADPUPA +PB2NC_LEVEL_CATEGORY = 0, 1, 4, 5, 6 +PB2NC_QUALITY_MARK_THRESH = 9 + +PB2NC_PB_REPORT_TYPE = 120, 220, 221, 122, 222, 223, 224, 131, 133, 233, 153, 156, 157, 188, 288, 180, 280, 181, 182, 281, 282, 183, 284, 187, 287 # Leave empty to process all # PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_WIND, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS +# Mapping of input BUFR variable names to output variables names. +# The default PREPBUFR map, obs_prepbufr_map, is appended to this map. +PB2NC_MET_CONFIG_OVERRIDES = obs_bufr_map = [{ key = "HOVI"; val = "VIS"; },{ key = "PMO"; val = "PRMSL"; },{ key = "TDO"; val = "DPT"; }, { key = "PWO"; val = "PWAT"; },{ key = "MXGS"; val = "GUST"; }, { key = "CEILING"; val = "CEILING"; }, { key = "TOCC"; val = "TCDC"; }]; + # For defining the time periods for summarization # False for no time summary, True otherwise # The rest of the PB2NC_TIME_SUMMARY variables are ignored if set to False @@ -96,22 +87,82 @@ PB2NC_TIME_SUMMARY_TYPES = min, max, range, mean, stdev, median, p80 # Location of MET config file to pass to GridStat # References PARM_BASE which is the location of the parm directory corresponding -# to the ush directory of the master_metplus.py script that is called +# to the ush directory of the run_metplus.py script that is called # or the value of the environment variable METPLUS_PARM_BASE if set -POINT_STAT_CONFIG_FILE ={CONFIG_DIR}/PointStatConfig +POINT_STAT_CONFIG_FILE ={PARM_BASE}/met_config/PointStatConfig_wrapped + + +#POINT_STAT_OBS_QUALITY_INC = 1, 2, 3 +#POINT_STAT_OBS_QUALITY_EXC = + +POINT_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = NEAREST +#POINT_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = + +#POINT_STAT_INTERP_VLD_THRESH = +#POINT_STAT_INTERP_SHAPE = +POINT_STAT_INTERP_TYPE_METHOD = BILIN +POINT_STAT_INTERP_TYPE_WIDTH = 2 + +POINT_STAT_OUTPUT_FLAG_FHO = STAT +POINT_STAT_OUTPUT_FLAG_CTC = STAT +POINT_STAT_OUTPUT_FLAG_CTS = STAT +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = STAT +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = STAT +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +#POINT_STAT_OUTPUT_FLAG_MPR = +#POINT_STAT_OUTPUT_FLAG_ORANK = + +POINT_STAT_CLIMO_CDF_BINS = 1 +#POINT_STAT_CLIMO_CDF_CENTER_BINS = False +#POINT_STAT_CLIMO_CDF_WRITE_BINS = True + +#POINT_STAT_HSS_EC_VALUE = + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. Values are set in the 'obs_window' dictionary in the PointStat config file +OBS_POINT_STAT_WINDOW_BEGIN = {OBS_WINDOW_BEGIN} +OBS_POINT_STAT_WINDOW_END = {OBS_WINDOW_END} + +# Optional list of offsets to look for point observation data +POINT_STAT_OFFSETS = 0 # Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc. MODEL = {ENV[MODEL]} + +POINT_STAT_DESC = NA OBTYPE = NDAS # Regrid to specified grid. Indicate NONE if no regridding, or the grid id +# (e.g. G212) POINT_STAT_REGRID_TO_GRID = NONE +POINT_STAT_REGRID_METHOD = BILIN +POINT_STAT_REGRID_WIDTH = 2 POINT_STAT_OUTPUT_PREFIX = {MODEL}_{OBTYPE}_ADPSFC +# sets the -obs_valid_beg command line argument (optional) +# not used for this example +#POINT_STAT_OBS_VALID_BEG = {valid?fmt=%Y%m%d_%H} + +# sets the -obs_valid_end command line argument (optional) +# not used for this example +#POINT_STAT_OBS_VALID_END = {valid?fmt=%Y%m%d_%H} + # Verification Masking regions # Indicate which grid and polygon masking region, if applicable -POINT_STAT_GRID = +POINT_STAT_GRID = # List of full path to poly masking files. NOTE: Only short lists of poly # files work (those that fit on one line), a long list will result in an @@ -124,10 +175,18 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. POINT_STAT_MESSAGE_TYPE = ADPSFC - # Variables and levels as specified in the field dictionary of the MET # point_stat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, # (optional) FCST_VARn_OPTION + +# set to True to run PointStat once for each name/level combination +# set to False to run PointStat once per run time including all fields +POINT_STAT_ONCE_PER_FIELD = False + +# fields to compare +# Note: If FCST_VAR_* is set, then a corresponding OBS_VAR_* variable must be set +# To use one variables for both forecast and observation data, set BOTH_VAR_* instead + BOTH_VAR1_NAME = TMP BOTH_VAR1_LEVELS = Z2 @@ -147,7 +206,7 @@ BOTH_VAR5_THRESH = >=2.572 ;; m/s or 5kts BOTH_VAR6_NAME = WIND BOTH_VAR6_LEVELS = Z10 -BOTH_VAR6_THRESH = >=2.572, >=2.572 && <5.144, >=5.144, >=10.288, >=15.433 ;; m/s or 5, 10, 20, 30kts +BOTH_VAR6_THRESH = >=2.572, >=2.572&&<5.144, >=5.144, >=10.288, >=15.433 ;; m/s or 5, 10, 20, 30kts BOTH_VAR6_OPTIONS = GRIB2_pdt = 0; ;; derive instantaneous 10-m wind from U/V components, overriding max 10-m wind BOTH_VAR7_NAME = PRMSL @@ -155,7 +214,7 @@ BOTH_VAR7_LEVELS = Z0 FCST_VAR8_NAME = TCDC FCST_VAR8_LEVELS = L0 -BOTH_VAR8_OPTIONS = GRIB_lvl_typ = 200; interp = { type = [ { method = NEAREST; width = 1; } ]; } +FCST_VAR8_OPTIONS = GRIB_lvl_typ = 200; interp = { type = [ { method = NEAREST; width = 1; } ]; } OBS_VAR8_NAME = TCDC OBS_VAR8_LEVELS = L0 OBS_VAR8_OPTIONS = interp = { type = [ { method = NEAREST; width = 1; } ]; } @@ -176,3 +235,63 @@ OBS_VAR11_NAME = CEILING OBS_VAR11_LEVELS = L0 OBS_VAR11_OPTIONS = GRIB_lvl_typ = 215; interp = { type = [ { method = NEAREST; width = 1; } ]; } OBS_VAR11_THRESH = <152, <305, <914, <1520, <3040, >=914 + +# End of [config] section and start of [dir] section +[dir] + +# directory containing input to PB2NC +PB2NC_INPUT_DIR = {ENV[OBS_DIR]} + +# directory to write output from +PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc + +INPUT_BASE = {ENV[INPUT_BASE]} + +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} +OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR} + +# directory containing climatology mean input to PointStat +# Not used in this example +POINT_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to PointStat +# Not used in this example +POINT_STAT_CLIMO_STDEV_INPUT_DIR = + +OUTPUT_BASE = {ENV[OUTPUT_BASE]} +POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +LOG_DIR = {ENV[EXPTDIR]}/log + +STAGING_DIR = {OUTPUT_BASE}/stage/conus_sfc + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR +PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} +# Template to use to write output from PB2NC +PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc + +# Template to look for forecast input to PointStat relative to FCST_POINT_STAT_INPUT_DIR +FCST_POINT_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc + +# Template to look for climatology input to PointStat relative to POINT_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +POINT_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to PointStat relative to POINT_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +POINT_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +#Template for where point-stat output is written +POINT_STAT_OUTPUT_TEMPLATE = metprd/point_stat + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_sfc + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/metprd/point_stat/metplus_final.conus_surface.conf diff --git a/ush/templates/parm/metplus/PointStat_conus_sfc_mean.conf b/ush/templates/parm/metplus/PointStat_conus_sfc_mean.conf index fcc45a4c9..db3b3f932 100644 --- a/ush/templates/parm/metplus/PointStat_conus_sfc_mean.conf +++ b/ush/templates/parm/metplus/PointStat_conus_sfc_mean.conf @@ -1,64 +1,52 @@ -# Ensemble Mean Grid to Point Example - -[dir] -# Input and output data directories -PB2NC_INPUT_DIR = {ENV[OBS_DIR]} -PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc - -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} - -OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR} - -OUTPUT_BASE = {ENV[EXPTDIR]} -POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {ENV[EXPTDIR]}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/conus_sfc_mean - -[filename_templates] -# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR -PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} -# Template to use to write output from PB2NC -PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc - -# Template to look for forecast/observation input to PointStat relative to FCST_POINT_STAT_INPUT_DIR -FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_ADPSFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc -OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc - -POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_sfc - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.conus_surface.conf - [config] -# List of applications to run + +# List of applications to run - only PointStat for this case PROCESS_LIST = PB2NC, PointStat # time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Start time for METplus run +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT INIT_BEG = {ENV[CDATE]} -# End time for METplus run + +# End time for METplus run - must match INIT_TIME_FMT INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 + +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H -# list of forecast leads to process. +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {ENV[fhr_list]} # Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 +# Location of MET config file to pass to PB2NC +PB2NC_CONFIG_FILE = {PARM_BASE}/met_config/PB2NCConfig_wrapped + # For both PB2NC and point_stat OBS_WINDOW_BEGIN = -1799 OBS_WINDOW_END = 1800 @@ -66,9 +54,6 @@ OBS_WINDOW_END = 1800 PB2NC_WINDOW_BEGIN = {OBS_WINDOW_BEGIN} PB2NC_WINDOW_END = {OBS_WINDOW_END} -# Location of MET config file to pass to PB2NC -PB2NC_CONFIG_FILE = {CONFIG_DIR}/PB2NCConfig - # If set to True, skip run if the output file determined by the output directory and # filename template already exists PB2NC_SKIP_IF_OUTPUT_EXISTS = True @@ -77,12 +62,20 @@ PB2NC_SKIP_IF_OUTPUT_EXISTS = True PB2NC_GRID = PB2NC_POLY = PB2NC_STATION_ID = -PB2NC_MESSAGE_TYPE = +PB2NC_MESSAGE_TYPE = ADPSFC, ADPUPA +PB2NC_LEVEL_CATEGORY = 0, 1, 4, 5, 6 +PB2NC_QUALITY_MARK_THRESH = 9 + +PB2NC_PB_REPORT_TYPE = 120, 220, 221, 122, 222, 223, 224, 131, 133, 233, 153, 156, 157, 188, 288, 180, 280, 181, 182, 281, 282, 183, 284, 187, 287 # Leave empty to process all # PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND +# Mapping of input BUFR variable names to output variables names. +# The default PREPBUFR map, obs_prepbufr_map, is appended to this map. +PB2NC_MET_CONFIG_OVERRIDES = obs_bufr_map = [{ key = "HOVI"; val = "VIS"; },{ key = "PMO"; val = "PRMSL"; },{ key = "TDO"; val = "DPT"; }, { key = "PWO"; val = "PWAT"; },{ key = "MXGS"; val = "GUST"; }, { key = "CEILING"; val = "CEILING"; }, { key = "TOCC"; val = "TCDC"; }]; + # For defining the time periods for summarization # False for no time summary, True otherwise # The rest of the PB2NC_TIME_SUMMARY variables are ignored if set to False @@ -94,22 +87,82 @@ PB2NC_TIME_SUMMARY_TYPES = min, max, range, mean, stdev, median, p80 # Location of MET config file to pass to GridStat # References PARM_BASE which is the location of the parm directory corresponding -# to the ush directory of the master_metplus.py script that is called +# to the ush directory of the run_metplus.py script that is called # or the value of the environment variable METPLUS_PARM_BASE if set -POINT_STAT_CONFIG_FILE ={CONFIG_DIR}/PointStatConfig_mean +POINT_STAT_CONFIG_FILE ={PARM_BASE}/met_config/PointStatConfig_wrapped + + +#POINT_STAT_OBS_QUALITY_INC = 1, 2, 3 +#POINT_STAT_OBS_QUALITY_EXC = + +POINT_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = NEAREST +#POINT_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = + +#POINT_STAT_INTERP_VLD_THRESH = +#POINT_STAT_INTERP_SHAPE = +POINT_STAT_INTERP_TYPE_METHOD = BILIN +POINT_STAT_INTERP_TYPE_WIDTH = 2 + +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = STAT +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = STAT +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +#POINT_STAT_OUTPUT_FLAG_MPR = +#POINT_STAT_OUTPUT_FLAG_ORANK = + +POINT_STAT_CLIMO_CDF_BINS = 1 +#POINT_STAT_CLIMO_CDF_CENTER_BINS = False +#POINT_STAT_CLIMO_CDF_WRITE_BINS = True + +#POINT_STAT_HSS_EC_VALUE = + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. Values are set in the 'obs_window' dictionary in the PointStat config file +OBS_POINT_STAT_WINDOW_BEGIN = {OBS_WINDOW_BEGIN} +OBS_POINT_STAT_WINDOW_END = {OBS_WINDOW_END} + +# Optional list of offsets to look for point observation data +POINT_STAT_OFFSETS = 0 # Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc. MODEL = {ENV[MODEL]}_mean + +POINT_STAT_DESC = NA OBTYPE = NDAS # Regrid to specified grid. Indicate NONE if no regridding, or the grid id +# (e.g. G212) POINT_STAT_REGRID_TO_GRID = NONE +POINT_STAT_REGRID_METHOD = BILIN +POINT_STAT_REGRID_WIDTH = 2 POINT_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_ADPSFC_{OBTYPE}_mean +# sets the -obs_valid_beg command line argument (optional) +# not used for this example +#POINT_STAT_OBS_VALID_BEG = {valid?fmt=%Y%m%d_%H} + +# sets the -obs_valid_end command line argument (optional) +# not used for this example +#POINT_STAT_OBS_VALID_END = {valid?fmt=%Y%m%d_%H} + # Verification Masking regions # Indicate which grid and polygon masking region, if applicable -POINT_STAT_GRID = +POINT_STAT_GRID = # List of full path to poly masking files. NOTE: Only short lists of poly # files work (those that fit on one line), a long list will result in an @@ -122,10 +175,17 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. POINT_STAT_MESSAGE_TYPE = ADPSFC - # Variables and levels as specified in the field dictionary of the MET # point_stat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, # (optional) FCST_VARn_OPTION + +# set to True to run PointStat once for each name/level combination +# set to False to run PointStat once per run time including all fields +POINT_STAT_ONCE_PER_FIELD = False + +# fields to compare +# Note: If FCST_VAR_* is set, then a corresponding OBS_VAR_* variable must be set +# To use one variables for both forecast and observation data, set BOTH_VAR_* instead FCST_VAR1_NAME = TMP_Z2_ENS_MEAN FCST_VAR1_LEVELS = Z2 FCST_VAR1_THRESH = >=268, >=273, >=278, >=293, >=298, >=303 @@ -149,3 +209,63 @@ FCST_VAR3_THRESH = >=5, >=10, >=15 OBS_VAR3_NAME = WIND OBS_VAR3_LEVELS = Z10 OBS_VAR3_THRESH = >=5, >=10, >=15 + +# End of [config] section and start of [dir] section +[dir] + +# directory containing input to PB2NC_INPUT_DIR = {ENV[OBS_DIR]} +PB2NC_INPUT_DIR = {ENV[OBS_DIR]} + +# directory to write output from +PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc + +INPUT_BASE = {ENV[INPUT_BASE]} + +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} +OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR} + +# directory containing climatology mean input to PointStat +# Not used in this example +POINT_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to PointStat +# Not used in this example +POINT_STAT_CLIMO_STDEV_INPUT_DIR = + +OUTPUT_BASE = {ENV[EXPTDIR]} +POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +LOG_DIR = {ENV[EXPTDIR]}/log + +STAGING_DIR = {OUTPUT_BASE}/stage/conus_sfc_mean + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR +PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} +# Template to use to write output from PB2NC +PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc + +# Template to look for forecast input to PointStat relative to FCST_POINT_STAT_INPUT_DIR +FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_ADPSFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc + +# Template to look for climatology input to PointStat relative to POINT_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +POINT_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to PointStat relative to POINT_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +POINT_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +#Template for where point-stat output is written +POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_sfc + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.conus_surface.conf diff --git a/ush/templates/parm/metplus/PointStat_conus_sfc_prob.conf b/ush/templates/parm/metplus/PointStat_conus_sfc_prob.conf index bffc327ad..a1754261e 100644 --- a/ush/templates/parm/metplus/PointStat_conus_sfc_prob.conf +++ b/ush/templates/parm/metplus/PointStat_conus_sfc_prob.conf @@ -1,64 +1,52 @@ -# Ensemble Prob Grid to Point Example - -[dir] -# Input and output data directories -PB2NC_INPUT_DIR = {ENV[OBS_DIR]} -PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc - -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} - -OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR} - -OUTPUT_BASE = {ENV[EXPTDIR]} -POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {ENV[EXPTDIR]}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/conus_sfc_prob - -[filename_templates] -# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR -PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} -# Template to use to write output from PB2NC -PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc - -# Template to look for forecast/observation input to PointStat relative to FCST_POINT_STAT_INPUT_DIR -FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_ADPSFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc -OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc - -POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_sfc - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.conus_surface.conf - [config] -# List of applications to run + +# List of applications to run - only PointStat for this case PROCESS_LIST = PB2NC, PointStat # time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Start time for METplus run +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT INIT_BEG = {ENV[CDATE]} -# End time for METplus run + +# End time for METplus run - must match INIT_TIME_FMT INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 + +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H -# list of forecast leads to process. +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = {ENV[fhr_list]} # Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 +# Location of MET config file to pass to PB2NC +PB2NC_CONFIG_FILE = {PARM_BASE}/met_config/PB2NCConfig_wrapped + # For both PB2NC and point_stat OBS_WINDOW_BEGIN = -1799 OBS_WINDOW_END = 1800 @@ -66,9 +54,6 @@ OBS_WINDOW_END = 1800 PB2NC_WINDOW_BEGIN = {OBS_WINDOW_BEGIN} PB2NC_WINDOW_END = {OBS_WINDOW_END} -# Location of MET config file to pass to PB2NC -PB2NC_CONFIG_FILE = {CONFIG_DIR}/PB2NCConfig - # If set to True, skip run if the output file determined by the output directory and # filename template already exists PB2NC_SKIP_IF_OUTPUT_EXISTS = True @@ -77,12 +62,20 @@ PB2NC_SKIP_IF_OUTPUT_EXISTS = True PB2NC_GRID = PB2NC_POLY = PB2NC_STATION_ID = -PB2NC_MESSAGE_TYPE = +PB2NC_MESSAGE_TYPE = ADPSFC, ADPUPA +PB2NC_LEVEL_CATEGORY = 0, 1, 4, 5, 6 +PB2NC_QUALITY_MARK_THRESH = 9 + +PB2NC_PB_REPORT_TYPE = 120, 220, 221, 122, 222, 223, 224, 131, 133, 233, 153, 156, 157, 188, 288, 180, 280, 181, 182, 281, 282, 183, 284, 187, 287 # Leave empty to process all # PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND +# Mapping of input BUFR variable names to output variables names. +# The default PREPBUFR map, obs_prepbufr_map, is appended to this map. +PB2NC_MET_CONFIG_OVERRIDES = obs_bufr_map = [{ key = "HOVI"; val = "VIS"; },{ key = "PMO"; val = "PRMSL"; },{ key = "TDO"; val = "DPT"; }, { key = "PWO"; val = "PWAT"; },{ key = "MXGS"; val = "GUST"; }, { key = "CEILING"; val = "CEILING"; }, { key = "TOCC"; val = "TCDC"; }]; + # For defining the time periods for summarization # False for no time summary, True otherwise # The rest of the PB2NC_TIME_SUMMARY variables are ignored if set to False @@ -94,22 +87,82 @@ PB2NC_TIME_SUMMARY_TYPES = min, max, range, mean, stdev, median, p80 # Location of MET config file to pass to GridStat # References PARM_BASE which is the location of the parm directory corresponding -# to the ush directory of the master_metplus.py script that is called +# to the ush directory of the run_metplus.py script that is called # or the value of the environment variable METPLUS_PARM_BASE if set -POINT_STAT_CONFIG_FILE ={CONFIG_DIR}/PointStatConfig_prob +POINT_STAT_CONFIG_FILE ={PARM_BASE}/met_config/PointStatConfig_wrapped + + +#POINT_STAT_OBS_QUALITY_INC = 1, 2, 3 +#POINT_STAT_OBS_QUALITY_EXC = + +POINT_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = NEAREST +#POINT_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = + +#POINT_STAT_INTERP_VLD_THRESH = +#POINT_STAT_INTERP_SHAPE = +POINT_STAT_INTERP_TYPE_METHOD = BILIN +POINT_STAT_INTERP_TYPE_WIDTH = 2 + +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +#POINT_STAT_OUTPUT_FLAG_CNT = +#POINT_STAT_OUTPUT_FLAG_SL1L2 = +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VL1L2 = +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +POINT_STAT_OUTPUT_FLAG_PCT = STAT +POINT_STAT_OUTPUT_FLAG_PSTD = STAT +POINT_STAT_OUTPUT_FLAG_PJC = STAT +POINT_STAT_OUTPUT_FLAG_PRC = STAT +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +#POINT_STAT_OUTPUT_FLAG_MPR = +#POINT_STAT_OUTPUT_FLAG_ORANK = + +POINT_STAT_CLIMO_CDF_BINS = 1 +#POINT_STAT_CLIMO_CDF_CENTER_BINS = False +#POINT_STAT_CLIMO_CDF_WRITE_BINS = True + +#POINT_STAT_HSS_EC_VALUE = + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. Values are set in the 'obs_window' dictionary in the PointStat config file +OBS_POINT_STAT_WINDOW_BEGIN = {OBS_WINDOW_BEGIN} +OBS_POINT_STAT_WINDOW_END = {OBS_WINDOW_END} + +# Optional list of offsets to look for point observation data +POINT_STAT_OFFSETS = 0 # Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc. MODEL = {ENV[MODEL]}_prob + +POINT_STAT_DESC = NA OBTYPE = NDAS # Regrid to specified grid. Indicate NONE if no regridding, or the grid id +# (e.g. G212) POINT_STAT_REGRID_TO_GRID = NONE +POINT_STAT_REGRID_METHOD = BILIN +POINT_STAT_REGRID_WIDTH = 2 POINT_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_ADPSFC_{OBTYPE}_prob +# sets the -obs_valid_beg command line argument (optional) +# not used for this example +#POINT_STAT_OBS_VALID_BEG = {valid?fmt=%Y%m%d_%H} + +# sets the -obs_valid_end command line argument (optional) +# not used for this example +#POINT_STAT_OBS_VALID_END = {valid?fmt=%Y%m%d_%H} + # Verification Masking regions # Indicate which grid and polygon masking region, if applicable -POINT_STAT_GRID = +POINT_STAT_GRID = # List of full path to poly masking files. NOTE: Only short lists of poly # files work (those that fit on one line), a long list will result in an @@ -122,10 +175,17 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. POINT_STAT_MESSAGE_TYPE = ADPSFC - # Variables and levels as specified in the field dictionary of the MET # point_stat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, # (optional) FCST_VARn_OPTION + +# set to True to run PointStat once for each name/level combination +# set to False to run PointStat once per run time including all fields +POINT_STAT_ONCE_PER_FIELD = False + +# fields to compare +# Note: If FCST_VAR_* is set, then a corresponding OBS_VAR_* variable must be set +# To use one variables for both forecast and observation data, set BOTH_VAR_* instead FCST_VAR1_NAME = TMP_Z2_ENS_FREQ_ge268 FCST_VAR1_LEVELS = (*,*) FCST_VAR1_THRESH = ==0.1 @@ -325,3 +385,63 @@ OBS_VAR23_OPTIONS = GRIB_lvl_typ = 215; interp = { type = [ { method = NEAREST; # Forecast data description variables FCST_IS_PROB = True FCST_PROB_IN_GRIB_PDS = False + +# End of [config] section and start of [dir] section +[dir] + +# directory containing input to PB2NC_INPUT_DIR = {ENV[OBS_DIR]} +PB2NC_INPUT_DIR = {ENV[OBS_DIR]} + +# directory to write output from +PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc + +INPUT_BASE = {ENV[INPUT_BASE]} + +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} +OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR} + +# directory containing climatology mean input to PointStat +# Not used in this example +POINT_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to PointStat +# Not used in this example +POINT_STAT_CLIMO_STDEV_INPUT_DIR = + +OUTPUT_BASE = {ENV[EXPTDIR]} +POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +LOG_DIR = {ENV[EXPTDIR]}/log + +STAGING_DIR = {OUTPUT_BASE}/stage/conus_sfc_prob + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR +PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} +# Template to use to write output from PB2NC +PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc + +# Template to look for forecast input to PointStat relative to FCST_POINT_STAT_INPUT_DIR +FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_ADPSFC_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc + +# Template to look for climatology input to PointStat relative to POINT_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +POINT_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to PointStat relative to POINT_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +POINT_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +#Template for where point-stat output is written +POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_sfc + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.conus_surface.conf diff --git a/ush/templates/parm/metplus/PointStat_upper_air.conf b/ush/templates/parm/metplus/PointStat_upper_air.conf index ca60b7d5d..e21f2566c 100644 --- a/ush/templates/parm/metplus/PointStat_upper_air.conf +++ b/ush/templates/parm/metplus/PointStat_upper_air.conf @@ -1,66 +1,52 @@ -# Grid to Point Example - -[dir] -# Input and output data directories -PB2NC_INPUT_DIR = {ENV[OBS_DIR]} -PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc - -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} - -OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR} - -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {ENV[EXPTDIR]}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/upper_air - -[filename_templates] -# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR -PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} - -# Template to use to write output from PB2NC -PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc - -# Template to look for forecast/observation input to PointStat relative to FCST_POINT_STAT_INPUT_DIR -FCST_POINT_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 -OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc - -POINT_STAT_OUTPUT_TEMPLATE = metprd/point_stat - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_upa - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/metprd/point_stat/metplus_final.upper_air.conf - [config] -# List of applications to run + +# List of applications to run - only PointStat for this case PROCESS_LIST = PB2NC, PointStat # time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Start time for METplus run +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT INIT_BEG = {ENV[CDATE]} -# End time for METplus run + +# End time for METplus run - must match INIT_TIME_FMT INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 + +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H -# list of forecast leads to process. +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = begin_end_incr(0,{ENV[fhr_last]},6) -#LEAD_SEQ = {ENV[fhr_list]} # Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 +# Location of MET config file to pass to PB2NC +PB2NC_CONFIG_FILE = {PARM_BASE}/met_config/PB2NCConfig_wrapped + # For both PB2NC and point_stat OBS_WINDOW_BEGIN = -1799 OBS_WINDOW_END = 1800 @@ -68,9 +54,6 @@ OBS_WINDOW_END = 1800 PB2NC_WINDOW_BEGIN = {OBS_WINDOW_BEGIN} PB2NC_WINDOW_END = {OBS_WINDOW_END} -# Location of MET config file to pass to PB2NC -PB2NC_CONFIG_FILE = {CONFIG_DIR}/PB2NCConfig - # If set to True, skip run if the output file determined by the output directory and # filename template already exists PB2NC_SKIP_IF_OUTPUT_EXISTS = True @@ -80,10 +63,18 @@ PB2NC_GRID = PB2NC_POLY = PB2NC_STATION_ID = PB2NC_MESSAGE_TYPE = ADPSFC, ADPUPA +PB2NC_LEVEL_CATEGORY = 0, 1, 4, 5, 6 +PB2NC_QUALITY_MARK_THRESH = 9 + +PB2NC_PB_REPORT_TYPE = 120, 220, 221, 122, 222, 223, 224, 131, 133, 233, 153, 156, 157, 188, 288, 180, 280, 181, 182, 281, 282, 183, 284, 187, 287 # Leave empty to process all # PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL -PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, D_WIND, HOVI, CEILING, D_PBL, D_CAPE, MXGS +PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_WIND, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS + +# Mapping of input BUFR variable names to output variables names. +# The default PREPBUFR map, obs_prepbufr_map, is appended to this map. +PB2NC_MET_CONFIG_OVERRIDES = obs_bufr_map = [{ key = "HOVI"; val = "VIS"; },{ key = "PMO"; val = "PRMSL"; },{ key = "TDO"; val = "DPT"; }, { key = "PWO"; val = "PWAT"; },{ key = "MXGS"; val = "GUST"; }, { key = "CEILING"; val = "CEILING"; }, { key = "TOCC"; val = "TCDC"; }]; # For defining the time periods for summarization # False for no time summary, True otherwise @@ -96,22 +87,82 @@ PB2NC_TIME_SUMMARY_TYPES = min, max, range, mean, stdev, median, p80 # Location of MET config file to pass to GridStat # References PARM_BASE which is the location of the parm directory corresponding -# to the ush directory of the master_metplus.py script that is called +# to the ush directory of the run_metplus.py script that is called # or the value of the environment variable METPLUS_PARM_BASE if set -POINT_STAT_CONFIG_FILE ={CONFIG_DIR}/PointStatConfig +POINT_STAT_CONFIG_FILE ={PARM_BASE}/met_config/PointStatConfig_wrapped + + +#POINT_STAT_OBS_QUALITY_INC = 1, 2, 3 +#POINT_STAT_OBS_QUALITY_EXC = + +POINT_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = NEAREST +#POINT_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = + +#POINT_STAT_INTERP_VLD_THRESH = +#POINT_STAT_INTERP_SHAPE = +POINT_STAT_INTERP_TYPE_METHOD = BILIN +POINT_STAT_INTERP_TYPE_WIDTH = 2 + +POINT_STAT_OUTPUT_FLAG_FHO = STAT +POINT_STAT_OUTPUT_FLAG_CTC = STAT +POINT_STAT_OUTPUT_FLAG_CTS = STAT +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = STAT +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = STAT +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +#POINT_STAT_OUTPUT_FLAG_MPR = +#POINT_STAT_OUTPUT_FLAG_ORANK = + +POINT_STAT_CLIMO_CDF_BINS = 1 +#POINT_STAT_CLIMO_CDF_CENTER_BINS = False +#POINT_STAT_CLIMO_CDF_WRITE_BINS = True + +#POINT_STAT_HSS_EC_VALUE = + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. Values are set in the 'obs_window' dictionary in the PointStat config file +OBS_POINT_STAT_WINDOW_BEGIN = {OBS_WINDOW_BEGIN} +OBS_POINT_STAT_WINDOW_END = {OBS_WINDOW_END} + +# Optional list of offsets to look for point observation data +POINT_STAT_OFFSETS = 0 # Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc. MODEL = {ENV[MODEL]} + +POINT_STAT_DESC = NA OBTYPE = NDAS # Regrid to specified grid. Indicate NONE if no regridding, or the grid id +# (e.g. G212) POINT_STAT_REGRID_TO_GRID = NONE +POINT_STAT_REGRID_METHOD = BILIN +POINT_STAT_REGRID_WIDTH = 2 POINT_STAT_OUTPUT_PREFIX = {MODEL}_{OBTYPE}_ADPUPA +# sets the -obs_valid_beg command line argument (optional) +# not used for this example +#POINT_STAT_OBS_VALID_BEG = {valid?fmt=%Y%m%d_%H} + +# sets the -obs_valid_end command line argument (optional) +# not used for this example +#POINT_STAT_OBS_VALID_END = {valid?fmt=%Y%m%d_%H} + # Verification Masking regions # Indicate which grid and polygon masking region, if applicable -POINT_STAT_GRID = +POINT_STAT_GRID = # List of full path to poly masking files. NOTE: Only short lists of poly # files work (those that fit on one line), a long list will result in an @@ -124,10 +175,17 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. POINT_STAT_MESSAGE_TYPE = ADPUPA - # Variables and levels as specified in the field dictionary of the MET # point_stat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, # (optional) FCST_VARn_OPTION + +# set to True to run PointStat once for each name/level combination +# set to False to run PointStat once per run time including all fields +POINT_STAT_ONCE_PER_FIELD = False + +# fields to compare +# Note: If FCST_VAR_* is set, then a corresponding OBS_VAR_* variable must be set +# To use one variables for both forecast and observation data, set BOTH_VAR_* instead BOTH_VAR1_NAME = TMP BOTH_VAR1_LEVELS = P1000, P925, P850, P700, P500, P400, P300, P250, P200, P150, P100, P50, P20, P10 @@ -147,7 +205,7 @@ BOTH_VAR5_THRESH = >=2.572 ;; m/s or 5kts BOTH_VAR6_NAME = WIND BOTH_VAR6_LEVELS = P1000, P925, P850, P700, P500, P400, P300, P250, P200, P150, P100, P50, P20, P10 -BOTH_VAR6_THRESH = >=2.572, >=2.572 && <5.144, >=5.144, >=10.288, >=15.433, >=20.577, >=25.722 ;; m/s or 5, 10, 20, 30, 40, 50kts +BOTH_VAR6_THRESH = >=2.572, >=2.572&&<5.144, >=5.144, >=10.288, >=15.433, >=20.577, >=25.722 ;; m/s or 5, 10, 20, 30, 40, 50kts BOTH_VAR7_NAME = HGT BOTH_VAR7_LEVELS = P1000, P950, P925, P850, P700, P500, P400, P300, P250, P200, P150, P100, P50, P20, P10 @@ -176,3 +234,64 @@ FCST_VAR11_OPTIONS = GRIB_lvl_typ = 220; OBS_VAR11_NAME = PBL OBS_VAR11_LEVELS = L0 OBS_VAR11_OPTIONS = desc = "RI"; + +# End of [config] section and start of [dir] section +[dir] + +# directory containing input to PB2NC +PB2NC_INPUT_DIR = {ENV[OBS_DIR]} + +# directory to write output from +PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc + +INPUT_BASE = {ENV[INPUT_BASE]} + +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} +OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR} + +# directory containing climatology mean input to PointStat +# Not used in this example +POINT_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to PointStat +# Not used in this example +POINT_STAT_CLIMO_STDEV_INPUT_DIR = + +OUTPUT_BASE = {ENV[OUTPUT_BASE]} +POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +LOG_DIR = {ENV[EXPTDIR]}/log + +STAGING_DIR = {OUTPUT_BASE}/stage/upper_air + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR +PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} + +# Template to use to write output from PB2NC +PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc + +# Template to look for forecast input to PointStat relative to FCST_POINT_STAT_INPUT_DIR +FCST_POINT_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc + +# Template to look for climatology input to PointStat relative to POINT_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +POINT_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to PointStat relative to POINT_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +POINT_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +#Template for where point-stat output is written +POINT_STAT_OUTPUT_TEMPLATE = metprd/point_stat + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_upa + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/metprd/point_stat/metplus_final.upper_air.conf diff --git a/ush/templates/parm/metplus/PointStat_upper_air_mean.conf b/ush/templates/parm/metplus/PointStat_upper_air_mean.conf index 3f7dfc8f2..515253683 100644 --- a/ush/templates/parm/metplus/PointStat_upper_air_mean.conf +++ b/ush/templates/parm/metplus/PointStat_upper_air_mean.conf @@ -1,65 +1,52 @@ -# Ensemble Mean Grid to Point Example - -[dir] -# Input and output data directories -PB2NC_INPUT_DIR = {ENV[OBS_DIR]} -PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc - -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} - -OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR} - -OUTPUT_BASE = {ENV[EXPTDIR]} -POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {ENV[EXPTDIR]}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/upper_air_mean - -[filename_templates] -# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR -PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} -# Template to use to write output from PB2NC -PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc - -# Template to look for forecast/observation input to PointStat relative to FCST_POINT_STAT_INPUT_DIR -FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_ADPUPA_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc -OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc - -POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_upa - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.upper_air.conf - [config] -# List of applications to run + +# List of applications to run - only PointStat for this case PROCESS_LIST = PB2NC, PointStat # time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Start time for METplus run +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT INIT_BEG = {ENV[CDATE]} -# End time for METplus run + +# End time for METplus run - must match INIT_TIME_FMT INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 + +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H -# list of forecast leads to process. +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = begin_end_incr(0,{ENV[fhr_last]},6) -#LEAD_SEQ = {ENV[fhr_list]} # Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 +# Location of MET config file to pass to PB2NC +PB2NC_CONFIG_FILE = {PARM_BASE}/met_config/PB2NCConfig_wrapped + # For both PB2NC and point_stat OBS_WINDOW_BEGIN = -1799 OBS_WINDOW_END = 1800 @@ -67,9 +54,6 @@ OBS_WINDOW_END = 1800 PB2NC_WINDOW_BEGIN = {OBS_WINDOW_BEGIN} PB2NC_WINDOW_END = {OBS_WINDOW_END} -# Location of MET config file to pass to PB2NC -PB2NC_CONFIG_FILE = {CONFIG_DIR}/PB2NCConfig - # If set to True, skip run if the output file determined by the output directory and # filename template already exists PB2NC_SKIP_IF_OUTPUT_EXISTS = True @@ -78,12 +62,20 @@ PB2NC_SKIP_IF_OUTPUT_EXISTS = True PB2NC_GRID = PB2NC_POLY = PB2NC_STATION_ID = -PB2NC_MESSAGE_TYPE = +PB2NC_MESSAGE_TYPE = ADPSFC, ADPUPA +PB2NC_LEVEL_CATEGORY = 0, 1, 4, 5, 6 +PB2NC_QUALITY_MARK_THRESH = 9 + +PB2NC_PB_REPORT_TYPE = 120, 220, 221, 122, 222, 223, 224, 131, 133, 233, 153, 156, 157, 188, 288, 180, 280, 181, 182, 281, 282, 183, 284, 187, 287 # Leave empty to process all # PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND +# Mapping of input BUFR variable names to output variables names. +# The default PREPBUFR map, obs_prepbufr_map, is appended to this map. +PB2NC_MET_CONFIG_OVERRIDES = obs_bufr_map = [{ key = "HOVI"; val = "VIS"; },{ key = "PMO"; val = "PRMSL"; },{ key = "TDO"; val = "DPT"; }, { key = "PWO"; val = "PWAT"; },{ key = "MXGS"; val = "GUST"; }, { key = "CEILING"; val = "CEILING"; }, { key = "TOCC"; val = "TCDC"; }]; + # For defining the time periods for summarization # False for no time summary, True otherwise # The rest of the PB2NC_TIME_SUMMARY variables are ignored if set to False @@ -95,22 +87,82 @@ PB2NC_TIME_SUMMARY_TYPES = min, max, range, mean, stdev, median, p80 # Location of MET config file to pass to GridStat # References PARM_BASE which is the location of the parm directory corresponding -# to the ush directory of the master_metplus.py script that is called +# to the ush directory of the run_metplus.py script that is called # or the value of the environment variable METPLUS_PARM_BASE if set -POINT_STAT_CONFIG_FILE ={CONFIG_DIR}/PointStatConfig_mean +POINT_STAT_CONFIG_FILE ={PARM_BASE}/met_config/PointStatConfig_wrapped + + +#POINT_STAT_OBS_QUALITY_INC = 1, 2, 3 +#POINT_STAT_OBS_QUALITY_EXC = + +POINT_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = NEAREST +#POINT_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = + +#POINT_STAT_INTERP_VLD_THRESH = +#POINT_STAT_INTERP_SHAPE = +POINT_STAT_INTERP_TYPE_METHOD = BILIN +POINT_STAT_INTERP_TYPE_WIDTH = 2 + +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +POINT_STAT_OUTPUT_FLAG_CNT = STAT +POINT_STAT_OUTPUT_FLAG_SL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +POINT_STAT_OUTPUT_FLAG_VL1L2 = STAT +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +POINT_STAT_OUTPUT_FLAG_VCNT = STAT +#POINT_STAT_OUTPUT_FLAG_PCT = +#POINT_STAT_OUTPUT_FLAG_PSTD = +#POINT_STAT_OUTPUT_FLAG_PJC = +#POINT_STAT_OUTPUT_FLAG_PRC = +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +#POINT_STAT_OUTPUT_FLAG_MPR = +#POINT_STAT_OUTPUT_FLAG_ORANK = + +POINT_STAT_CLIMO_CDF_BINS = 1 +#POINT_STAT_CLIMO_CDF_CENTER_BINS = False +#POINT_STAT_CLIMO_CDF_WRITE_BINS = True + +#POINT_STAT_HSS_EC_VALUE = + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. Values are set in the 'obs_window' dictionary in the PointStat config file +OBS_POINT_STAT_WINDOW_BEGIN = {OBS_WINDOW_BEGIN} +OBS_POINT_STAT_WINDOW_END = {OBS_WINDOW_END} + +# Optional list of offsets to look for point observation data +POINT_STAT_OFFSETS = 0 # Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc. MODEL = {ENV[MODEL]}_mean + +POINT_STAT_DESC = NA OBTYPE = NDAS # Regrid to specified grid. Indicate NONE if no regridding, or the grid id +# (e.g. G212) POINT_STAT_REGRID_TO_GRID = NONE +POINT_STAT_REGRID_METHOD = BILIN +POINT_STAT_REGRID_WIDTH = 2 POINT_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_ADPUPA_{OBTYPE}_mean +# sets the -obs_valid_beg command line argument (optional) +# not used for this example +#POINT_STAT_OBS_VALID_BEG = {valid?fmt=%Y%m%d_%H} + +# sets the -obs_valid_end command line argument (optional) +# not used for this example +#POINT_STAT_OBS_VALID_END = {valid?fmt=%Y%m%d_%H} + # Verification Masking regions # Indicate which grid and polygon masking region, if applicable -POINT_STAT_GRID = +POINT_STAT_GRID = # List of full path to poly masking files. NOTE: Only short lists of poly # files work (those that fit on one line), a long list will result in an @@ -123,10 +175,17 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. POINT_STAT_MESSAGE_TYPE = ADPUPA - # Variables and levels as specified in the field dictionary of the MET # point_stat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, # (optional) FCST_VARn_OPTION + +# set to True to run PointStat once for each name/level combination +# set to False to run PointStat once per run time including all fields +POINT_STAT_ONCE_PER_FIELD = False + +# fields to compare +# Note: If FCST_VAR_* is set, then a corresponding OBS_VAR_* variable must be set +# To use one variables for both forecast and observation data, set BOTH_VAR_* instead FCST_VAR1_NAME = TMP_P850_ENS_MEAN FCST_VAR1_LEVELS = P850 FCST_VAR1_THRESH = >=288, >=293, >=298 @@ -225,3 +284,64 @@ OBS_VAR12_NAME = PBL OBS_VAR12_LEVELS = L0 OBS_VAR12_OPTIONS = desc = "TKE"; OBS_VAR12_THRESH = <500, <1500, >1500 + +# End of [config] section and start of [dir] section +[dir] + +# directory containing input to PB2NC +PB2NC_INPUT_DIR = {ENV[OBS_DIR]} + +# directory to write output from +PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc + +INPUT_BASE = {ENV[INPUT_BASE]} + +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} +OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR} + +# directory containing climatology mean input to PointStat +# Not used in this example +POINT_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to PointStat +# Not used in this example +POINT_STAT_CLIMO_STDEV_INPUT_DIR = + +OUTPUT_BASE = {ENV[EXPTDIR]} +POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +LOG_DIR = {ENV[EXPTDIR]}/log + +STAGING_DIR = {OUTPUT_BASE}/stage/upper_air_mean + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR +PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} + +# Template to use to write output from PB2NC +PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc + +# Template to look for forecast input to PointStat relative to FCST_POINT_STAT_INPUT_DIR +FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_ADPUPA_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc + +# Template to look for climatology input to PointStat relative to POINT_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +POINT_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to PointStat relative to POINT_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +POINT_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +#Template for where point-stat output is written +POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_mean + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_upa + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_mean/metplus_final.upper_air.conf diff --git a/ush/templates/parm/metplus/PointStat_upper_air_prob.conf b/ush/templates/parm/metplus/PointStat_upper_air_prob.conf index cb653746b..0a15f6f1f 100644 --- a/ush/templates/parm/metplus/PointStat_upper_air_prob.conf +++ b/ush/templates/parm/metplus/PointStat_upper_air_prob.conf @@ -1,65 +1,52 @@ -# Ensemble Prob Grid to Point Example - -[dir] -# Input and output data directories -PB2NC_INPUT_DIR = {ENV[OBS_DIR]} -PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc - -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} - -OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR} - -OUTPUT_BASE = {ENV[EXPTDIR]} -POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {ENV[EXPTDIR]}/log - -STAGING_DIR = {OUTPUT_BASE}/stage/upper_air_prob - -[filename_templates] -# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR -PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} -# Template to use to write output from PB2NC -PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc - -# Template to look for forecast/observation input to PointStat relative to FCST_POINT_STAT_INPUT_DIR -FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_ADPUPA_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc -OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc - -POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_upa - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.upper_air.conf - [config] -# List of applications to run + +# List of applications to run - only PointStat for this case PROCESS_LIST = PB2NC, PointStat # time looping - options are INIT, VALID, RETRO, and REALTIME +# If set to INIT or RETRO: +# INIT_TIME_FMT, INIT_BEG, INIT_END, and INIT_INCREMENT must also be set +# If set to VALID or REALTIME: +# VALID_TIME_FMT, VALID_BEG, VALID_END, and VALID_INCREMENT must also be set LOOP_BY = INIT -# Start time for METplus run +# Format of INIT_BEG and INIT_END using % items +# %Y = 4 digit year, %m = 2 digit month, %d = 2 digit day, etc. +# see www.strftime.org for more information +# %Y%m%d%H expands to YYYYMMDDHH +INIT_TIME_FMT = %Y%m%d%H + +# Start time for METplus run - must match INIT_TIME_FMT INIT_BEG = {ENV[CDATE]} -# End time for METplus run + +# End time for METplus run - must match INIT_TIME_FMT INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 + +# Increment between METplus runs (in seconds if no units are specified) +# Must be >= 60 seconds INIT_INCREMENT = 3600 -INIT_TIME_FMT = %Y%m%d%H -# list of forecast leads to process. +# List of forecast leads to process for each run time (init or valid) +# In hours if units are not specified +# If unset, defaults to 0 (don't loop through forecast leads) LEAD_SEQ = begin_end_incr(0,{ENV[fhr_last]},6) -#LEAD_SEQ = {ENV[fhr_list]} # Order of loops to process data - Options are times, processes +# Not relevant if only one item is in the PROCESS_LIST +# times = run all wrappers in the PROCESS_LIST for a single run time, then +# increment the run time and run all wrappers again until all times have +# been evaluated. +# processes = run the first wrapper in the PROCESS_LIST for all times +# specified, then repeat for the next item in the PROCESS_LIST until all +# wrappers have been run LOOP_ORDER = times # Verbosity of MET output - overrides LOG_VERBOSITY for PointStat only LOG_POINT_STAT_VERBOSITY = 2 +# Location of MET config file to pass to PB2NC +PB2NC_CONFIG_FILE = {PARM_BASE}/met_config/PB2NCConfig_wrapped + # For both PB2NC and point_stat OBS_WINDOW_BEGIN = -1799 OBS_WINDOW_END = 1800 @@ -67,9 +54,6 @@ OBS_WINDOW_END = 1800 PB2NC_WINDOW_BEGIN = {OBS_WINDOW_BEGIN} PB2NC_WINDOW_END = {OBS_WINDOW_END} -# Location of MET config file to pass to PB2NC -PB2NC_CONFIG_FILE = {CONFIG_DIR}/PB2NCConfig - # If set to True, skip run if the output file determined by the output directory and # filename template already exists PB2NC_SKIP_IF_OUTPUT_EXISTS = True @@ -78,12 +62,20 @@ PB2NC_SKIP_IF_OUTPUT_EXISTS = True PB2NC_GRID = PB2NC_POLY = PB2NC_STATION_ID = -PB2NC_MESSAGE_TYPE = +PB2NC_MESSAGE_TYPE = ADPSFC, ADPUPA +PB2NC_LEVEL_CATEGORY = 0, 1, 4, 5, 6 +PB2NC_QUALITY_MARK_THRESH = 9 + +PB2NC_PB_REPORT_TYPE = 120, 220, 221, 122, 222, 223, 224, 131, 133, 233, 153, 156, 157, 188, 288, 180, 280, 181, 182, 281, 282, 183, 284, 187, 287 # Leave empty to process all # PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, PMO, TOCC, TDO, HOVI, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL PB2NC_OBS_BUFR_VAR_LIST = PMO, ZOB, TOB, TDO, QOB, UOB, VOB, PWO, TOCC, D_RH, HOVI, CEILING, D_PBL, D_CAPE, MXGS, D_WIND +# Mapping of input BUFR variable names to output variables names. +# The default PREPBUFR map, obs_prepbufr_map, is appended to this map. +PB2NC_MET_CONFIG_OVERRIDES = obs_bufr_map = [{ key = "HOVI"; val = "VIS"; },{ key = "PMO"; val = "PRMSL"; },{ key = "TDO"; val = "DPT"; }, { key = "PWO"; val = "PWAT"; },{ key = "MXGS"; val = "GUST"; }, { key = "CEILING"; val = "CEILING"; }, { key = "TOCC"; val = "TCDC"; }]; + # For defining the time periods for summarization # False for no time summary, True otherwise # The rest of the PB2NC_TIME_SUMMARY variables are ignored if set to False @@ -95,22 +87,82 @@ PB2NC_TIME_SUMMARY_TYPES = min, max, range, mean, stdev, median, p80 # Location of MET config file to pass to GridStat # References PARM_BASE which is the location of the parm directory corresponding -# to the ush directory of the master_metplus.py script that is called +# to the ush directory of the run_metplus.py script that is called # or the value of the environment variable METPLUS_PARM_BASE if set -POINT_STAT_CONFIG_FILE ={CONFIG_DIR}/PointStatConfig_prob +POINT_STAT_CONFIG_FILE ={PARM_BASE}/met_config/PointStatConfig_wrapped + + +#POINT_STAT_OBS_QUALITY_INC = 1, 2, 3 +#POINT_STAT_OBS_QUALITY_EXC = + +POINT_STAT_CLIMO_MEAN_TIME_INTERP_METHOD = NEAREST +#POINT_STAT_CLIMO_STDEV_TIME_INTERP_METHOD = + +#POINT_STAT_INTERP_VLD_THRESH = +#POINT_STAT_INTERP_SHAPE = +POINT_STAT_INTERP_TYPE_METHOD = BILIN +POINT_STAT_INTERP_TYPE_WIDTH = 2 + +#POINT_STAT_OUTPUT_FLAG_FHO = +#POINT_STAT_OUTPUT_FLAG_CTC = +#POINT_STAT_OUTPUT_FLAG_CTS = +#POINT_STAT_OUTPUT_FLAG_MCTC = +#POINT_STAT_OUTPUT_FLAG_MCTS = +#POINT_STAT_OUTPUT_FLAG_CNT = +#POINT_STAT_OUTPUT_FLAG_SL1L2 = +#POINT_STAT_OUTPUT_FLAG_SAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VL1L2 = +#POINT_STAT_OUTPUT_FLAG_VAL1L2 = +#POINT_STAT_OUTPUT_FLAG_VCNT = +POINT_STAT_OUTPUT_FLAG_PCT = STAT +POINT_STAT_OUTPUT_FLAG_PSTD = STAT +POINT_STAT_OUTPUT_FLAG_PJC = STAT +POINT_STAT_OUTPUT_FLAG_PRC = STAT +#POINT_STAT_OUTPUT_FLAG_ECNT = +#POINT_STAT_OUTPUT_FLAG_RPS = +#POINT_STAT_OUTPUT_FLAG_ECLV = +#POINT_STAT_OUTPUT_FLAG_MPR = +#POINT_STAT_OUTPUT_FLAG_ORANK = + +POINT_STAT_CLIMO_CDF_BINS = 1 +#POINT_STAT_CLIMO_CDF_CENTER_BINS = False +#POINT_STAT_CLIMO_CDF_WRITE_BINS = True + +#POINT_STAT_HSS_EC_VALUE = + +# Time relative to each input file's valid time (in seconds if no units are specified) for data within the file to be +# considered valid. Values are set in the 'obs_window' dictionary in the PointStat config file +OBS_POINT_STAT_WINDOW_BEGIN = {OBS_WINDOW_BEGIN} +OBS_POINT_STAT_WINDOW_END = {OBS_WINDOW_END} + +# Optional list of offsets to look for point observation data +POINT_STAT_OFFSETS = 0 # Model/fcst and obs name, e.g. GFS, NAM, GDAS, etc. MODEL = {ENV[MODEL]}_prob + +POINT_STAT_DESC = NA OBTYPE = NDAS # Regrid to specified grid. Indicate NONE if no regridding, or the grid id +# (e.g. G212) POINT_STAT_REGRID_TO_GRID = NONE +POINT_STAT_REGRID_METHOD = BILIN +POINT_STAT_REGRID_WIDTH = 2 POINT_STAT_OUTPUT_PREFIX = {ENV[MODEL]}_ADPUPA_{OBTYPE}_prob +# sets the -obs_valid_beg command line argument (optional) +# not used for this example +#POINT_STAT_OBS_VALID_BEG = {valid?fmt=%Y%m%d_%H} + +# sets the -obs_valid_end command line argument (optional) +# not used for this example +#POINT_STAT_OBS_VALID_END = {valid?fmt=%Y%m%d_%H} + # Verification Masking regions # Indicate which grid and polygon masking region, if applicable -POINT_STAT_GRID = +POINT_STAT_GRID = # List of full path to poly masking files. NOTE: Only short lists of poly # files work (those that fit on one line), a long list will result in an @@ -123,10 +175,17 @@ POINT_STAT_STATION_ID = # Message types, if all message types are to be returned, leave this empty, # otherwise indicate the message types of interest. POINT_STAT_MESSAGE_TYPE = ADPUPA - # Variables and levels as specified in the field dictionary of the MET # point_stat configuration file. Specify as FCST_VARn_NAME, FCST_VARn_LEVELS, # (optional) FCST_VARn_OPTION + +# set to True to run PointStat once for each name/level combination +# set to False to run PointStat once per run time including all fields +POINT_STAT_ONCE_PER_FIELD = False + +# fields to compare +# Note: If FCST_VAR_* is set, then a corresponding OBS_VAR_* variable must be set +# To use one variables for both forecast and observation data, set BOTH_VAR_* instead FCST_VAR1_NAME = TMP_P850_ENS_FREQ_ge288 FCST_VAR1_LEVELS = (*,*) FCST_VAR1_THRESH = ==0.1 @@ -449,3 +508,64 @@ OBS_VAR39_THRESH = >1500 # Forecast data description variables FCST_IS_PROB = True FCST_PROB_IN_GRIB_PDS = False + +# End of [config] section and start of [dir] section +[dir] + +# directory containing input to PB2NC +PB2NC_INPUT_DIR = {ENV[OBS_DIR]} + +# directory to write output from +PB2NC_OUTPUT_DIR = {ENV[EXPTDIR]}/metprd/pb2nc + +INPUT_BASE = {ENV[INPUT_BASE]} + +FCST_POINT_STAT_INPUT_DIR = {INPUT_BASE} +OBS_POINT_STAT_INPUT_DIR = {PB2NC_OUTPUT_DIR} + +# directory containing climatology mean input to PointStat +# Not used in this example +POINT_STAT_CLIMO_MEAN_INPUT_DIR = + +# directory containing climatology mean input to PointStat +# Not used in this example +POINT_STAT_CLIMO_STDEV_INPUT_DIR = + +OUTPUT_BASE = {ENV[EXPTDIR]} +POINT_STAT_OUTPUT_DIR = {OUTPUT_BASE} + +LOG_DIR = {ENV[EXPTDIR]}/log + +STAGING_DIR = {OUTPUT_BASE}/stage/upper_air_prob + +# End of [dir] section and start of [filename_templates] section +[filename_templates] + +# Template to look for prepbvur input to PB2NC relative to PB2NC_INPUT_DIR +PB2NC_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H} + +# Template to use to write output from PB2NC +PB2NC_OUTPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc + +# Template to look for forecast input to PointStat relative to FCST_POINT_STAT_INPUT_DIR +FCST_POINT_STAT_INPUT_TEMPLATE = ensemble_stat_{ENV[MODEL]}_ADPUPA_{OBTYPE}_{valid?fmt=%Y%m%d}_{valid?fmt=%H%M%S}V_ens.nc + +# Template to look for observation input to PointStat relative to OBS_POINT_STAT_INPUT_DIR +OBS_POINT_STAT_INPUT_TEMPLATE = prepbufr.ndas.{valid?fmt=%Y%m%d%H}.nc + +# Template to look for climatology input to PointStat relative to POINT_STAT_CLIMO_MEAN_INPUT_DIR +# Not used in this example +POINT_STAT_CLIMO_MEAN_INPUT_TEMPLATE = + +# Template to look for climatology input to PointStat relative to POINT_STAT_CLIMO_STDEV_INPUT_DIR +# Not used in this example +POINT_STAT_CLIMO_STDEV_INPUT_TEMPLATE = + +#Template for where point-stat output is written +POINT_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H}/metprd/ensemble_stat_prob + +# Specify the name of the metplus.log file +LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]}_upa + +# Specify where the location and name of the final metplus_final.conf +METPLUS_CONF={OUTPUT_BASE}/{ENV[CDATE]}/metprd/ensemble_stat_prob/metplus_final.upper_air.conf diff --git a/ush/templates/parm/metplus/REFC.conf b/ush/templates/parm/metplus/REFC.conf deleted file mode 100644 index a661fabc8..000000000 --- a/ush/templates/parm/metplus/REFC.conf +++ /dev/null @@ -1,102 +0,0 @@ -# Composite Reflectivity Verification Options - -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {ENV[EXPTDIR]}/log - -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} - -STAGING_DIR = {OUTPUT_BASE}/stage/REFC - -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 - -# ANLYS -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/MergedReflectivityQCComposite_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H}0000.grib2 - -GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat - -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.REFC.conf - -[config] -# Model to verify -MODEL = {ENV[MODEL]} -FCST_NATIVE_DATA_TYPE = GRIB - -# Set obtype to vx -OBTYPE = MRMS -OBS_NATIVE_DATA_TYPE = GRIB - -# List of applications to run -PROCESS_LIST = GridStat - -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_REFC -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{OBTYPE} - -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT - -# Format of INIT_BEG and INIT_END -INIT_TIME_FMT = %Y%m%d%H - -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 - -# list of forecast leads to process. -#LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} - -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times - -# run pcp_combine on forecast/obs data? -FCST_PCP_COMBINE_RUN = False -OBS_PCP_COMBINE_RUN = False - -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST - -# Forecast/Observation variable Information -FCST_VAR1_NAME = REFC -FCST_VAR1_LEVELS = L0 -FCST_VAR1_OPTIONS = cnt_thresh = [ >15 ]; cnt_logic = UNION; - -BOTH_VAR1_THRESH = ge20, ge30, ge40, ge50 - -OBS_VAR1_NAME = MergedReflectivityQCComposite -OBS_VAR1_LEVELS = Z500 -OBS_VAR1_OPTIONS = censor_thresh = [eq-999, <-20]; censor_val = [-9999, -20]; cnt_thresh = [ >15 ]; cnt_logic = UNION; - -OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 -OBS_GRID_STAT_FILE_WINDOW_END = 300 - -# Neighborhood shape and width -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE -GRID_STAT_NEIGHBORHOOD_WIDTH = 1, 3, 5, 7 - -# Forecast data description variables -FCST_IS_PROB = False - diff --git a/ush/templates/parm/metplus/RETOP.conf b/ush/templates/parm/metplus/RETOP.conf deleted file mode 100644 index c09ea7a18..000000000 --- a/ush/templates/parm/metplus/RETOP.conf +++ /dev/null @@ -1,102 +0,0 @@ -# Echo Top Verification Options - -[dir] -# Input and output data directories -INPUT_BASE = {ENV[INPUT_BASE]} -FCST_GRID_STAT_INPUT_DIR = {INPUT_BASE} - -OUTPUT_BASE = {ENV[OUTPUT_BASE]} -GRID_STAT_OUTPUT_DIR = {OUTPUT_BASE} - -LOG_DIR = {ENV[EXPTDIR]}/log - -OBS_GRID_STAT_INPUT_DIR = {ENV[OBS_DIR]} - -STAGING_DIR = {OUTPUT_BASE}/stage/RETOP - -[filename_templates] -# format of filenames -FCST_GRID_STAT_INPUT_TEMPLATE = {ENV[NET]}.t{init?fmt=%H}z.prslevf{lead?fmt=%HHH}.tm{init?fmt=%H}.grib2 - -# ANLYS -OBS_GRID_STAT_INPUT_TEMPLATE = {valid?fmt=%Y%m%d}/EchoTop_18_00.50_{valid?fmt=%Y%m%d}-{valid?fmt=%H%M%S}.grib2 - -GRID_STAT_OUTPUT_TEMPLATE = metprd/grid_stat - -# Location of MET poly files -GRID_STAT_VERIFICATION_MASK_TEMPLATE = {MET_INSTALL_DIR}/share/met/poly/CONUS.poly - -# Specify the name of the metplus.log file -LOG_METPLUS = {LOG_DIR}/metplus.log.{ENV[LOG_SUFFIX]} - -# Specify where the location and name of the final metplus_final.conf -METPLUS_CONF={OUTPUT_BASE}/metprd/grid_stat/metplus_final.RETOP.conf - -[config] -# Model to verify -MODEL = {ENV[MODEL]} -FCST_NATIVE_DATA_TYPE = GRIB - -# Set obtype to vx -OBTYPE = MRMS -OBS_NATIVE_DATA_TYPE = GRIB - -# List of applications to run -PROCESS_LIST = GridStat - -# location of grid_stat MET config file -GRID_STAT_CONFIG_FILE = {CONFIG_DIR}/GridStatConfig_REFC -GRID_STAT_OUTPUT_PREFIX = {MODEL}_{CURRENT_FCST_NAME}_{OBTYPE} - -# time looping - options are INIT, VALID, RETRO, and REALTIME -LOOP_BY = INIT - -# Format of INIT_BEG and INIT_END -INIT_TIME_FMT = %Y%m%d%H - -# Start time for METplus run -INIT_BEG = {ENV[CDATE]} -# End time for METplus run -INIT_END = {ENV[CDATE]} -# Increment between METplus runs in seconds. Must be > 60 -INIT_INCREMENT = 3600 - -# list of forecast leads to process. -#LEAD_SEQ = begin_end_incr(1,24,1) -LEAD_SEQ = {ENV[fhr_list]} - -# Options are times, processes -# times = run all items in the PROCESS_LIST for a single initialization -# time, then repeat until all times have been evaluated. -# processes = run each item in the PROCESS_LIST for all times -# specified, then repeat for the next item in the PROCESS_LIST. -LOOP_ORDER = times - -# run pcp_combine on forecast/obs data? -FCST_PCP_COMBINE_RUN = False -OBS_PCP_COMBINE_RUN = False - -# Set grid to verify on -GRID_STAT_REGRID_TO_GRID = FCST - -# Forecast/Observation variable Information -FCST_VAR1_NAME = RETOP -FCST_VAR1_LEVELS = L0 -FCST_VAR1_OPTIONS = convert(x) = M_to_KFT(x); cnt_thresh = [ >0 ]; cnt_logic = UNION; - -BOTH_VAR1_THRESH = ge20, ge30, ge40, ge50 - -OBS_VAR1_NAME = EchoTop18 -OBS_VAR1_LEVELS = Z500 -OBS_VAR1_OPTIONS = convert(x) = KM_to_KFT(x); censor_thresh = [<=-9.84252,eq-3.28084]; censor_val = [-9999,-16.4042]; cnt_thresh = [ >0 ]; cnt_logic = UNION; - -OBS_GRID_STAT_FILE_WINDOW_BEGIN = -300 -OBS_GRID_STAT_FILE_WINDOW_END = 300 - -# Neighborhood shape and width -GRID_STAT_NEIGHBORHOOD_SHAPE = SQUARE -GRID_STAT_NEIGHBORHOOD_WIDTH = 1, 3, 5, 7 - -# Forecast data description variables -FCST_IS_PROB = False - diff --git a/ush/templates/parm/metplus/common.conf b/ush/templates/parm/metplus/common.conf index a04573feb..01cc66746 100644 --- a/ush/templates/parm/metplus/common.conf +++ b/ush/templates/parm/metplus/common.conf @@ -12,7 +12,7 @@ MET_BIN_DIR = {MET_INSTALL_DIR}/{ENV[MET_BIN_EXEC]} METPLUS_PARM_BASE = {ENV[METPLUS_CONF]} # Location of configuration files used by MET applications -CONFIG_DIR = {ENV[MET_CONFIG]} +CONFIG_DIR = {METPLUS_BASE}/parm/met_config # Other directories TMP_DIR = /tmp diff --git a/ush/valid_param_vals.sh b/ush/valid_param_vals.sh index c42144130..1ea3a86b8 100644 --- a/ush/valid_param_vals.sh +++ b/ush/valid_param_vals.sh @@ -4,7 +4,7 @@ valid_vals_RUN_ENVIR=("nco" "community") valid_vals_VERBOSE=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no") valid_vals_DEBUG=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no") -valid_vals_MACHINE=("WCOSS_CRAY" "WCOSS_DELL_P3" "HERA" "ORION" "JET" "ODIN" "CHEYENNE" "STAMPEDE" "LINUX" "MACOS") +valid_vals_MACHINE=("WCOSS_DELL_P3" "HERA" "ORION" "JET" "ODIN" "CHEYENNE" "STAMPEDE" "LINUX" "MACOS" "NOAACLOUD" "SINGULARITY") valid_vals_SCHED=("slurm" "pbspro" "lsf" "lsfcray" "none") valid_vals_FCST_MODEL=("ufs-weather-model" "fv3gfs_aqm") valid_vals_WORKFLOW_MANAGER=("rocoto" "none") @@ -29,11 +29,8 @@ valid_vals_PREDEF_GRID_NAME=( \ "RRFS_NA_3km" \ ) valid_vals_CCPP_PHYS_SUITE=( \ -"FV3_CPT_v0" \ "FV3_GFS_2017_gfdlmp" \ "FV3_GFS_2017_gfdlmp_regional" \ -"FV3_GSD_SAR" \ -"FV3_GSD_v0" \ "FV3_GFS_v15p2" \ "FV3_GFS_v15_thompson_mynn_lam3km" \ "FV3_GFS_v16" \ @@ -68,9 +65,11 @@ valid_vals_NOMADS=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no") valid_vals_NOMADS_file_type=("GRIB2" "grib2" "NEMSIO" "nemsio") valid_vals_DO_ENSEMBLE=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no") valid_vals_USE_CUSTOM_POST_CONFIG_FILE=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no") +valid_vals_USE_CRTM=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no") valid_vals_DO_SHUM=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no") valid_vals_DO_SPPT=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no") valid_vals_DO_SPP=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no") +valid_vals_DO_LSM_SPP=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no") valid_vals_DO_SKEB=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no") valid_vals_USE_ZMTNBLCK=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no") valid_vals_USE_FVCOM=("TRUE" "true" "YES" "yes" "FALSE" "false" "NO" "no")