Skip to content

Commit

Permalink
per #1402, rearrange and clean up config files for short_range use cases
Browse files Browse the repository at this point in the history
  • Loading branch information
georgemccabe committed Jul 22, 2022
1 parent ccfa89a commit 4e2c002
Show file tree
Hide file tree
Showing 10 changed files with 652 additions and 553 deletions.
Original file line number Diff line number Diff line change
@@ -1,77 +1,130 @@
[config]

## Configuration-related settings such as the process list, begin and end times, etc.
# Documentation for this use case can be found at
# https://metplus.readthedocs.io/en/latest/generated/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField.html

# For additional information, please see the METplus Users Guide.
# https://metplus.readthedocs.io/en/latest/Users_Guide

###
# Processes to run
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#process-list
###

PROCESS_LIST = PB2NC, EnsembleStat

# time looping - options are INIT, VALID, RETRO, and REALTIME

###
# Time Info
# LOOP_BY 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
# LEAD_SEQ is the list of forecast leads to process
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#timing-control
###

# 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
LOOP_BY = INIT
INIT_TIME_FMT = %Y%m%d%H

# Start time for METplus run - must match INIT_TIME_FMT
INIT_BEG=2018070912

# End time for METplus run - must match INIT_TIME_FMT
INIT_END=2018070912

# 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 = 0,1,2

# 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

# Name to identify model (forecast) data in output
MODEL = HRRRE_ens

###
# File I/O
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#directory-and-filename-template-info
###

# PB2NC

PB2NC_INPUT_DIR = {INPUT_BASE}/model_applications/short_range/hrrr_ensemble_sfc/prepbufr
PB2NC_INPUT_TEMPLATE = {da_init?fmt=%Y%m%d}/{da_init?fmt=%Y%j%H%M}.rap.t{da_init?fmt=%H}z.prepbufr.tm{offset?fmt=%2H}.{da_init?fmt=%Y%m%d}

PB2NC_SKIP_IF_OUTPUT_EXISTS = True

PB2NC_OUTPUT_DIR = {OUTPUT_BASE}/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField/rap
PB2NC_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d}/{valid?fmt=%Y%m%d%H}.rap.nc


# EnsembleStat

FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE}/model_applications/short_range/hrrr_ensemble_sfc/fcst
FCST_ENSEMBLE_STAT_INPUT_TEMPLATE =
{init?fmt=%Y%m%d%H}/postprd_mem0001/wrfprs_conus_mem0001_{lead?fmt=%HH}.grib2,
{init?fmt=%Y%m%d%H}/postprd_mem0002/wrfprs_conus_mem0002_{lead?fmt=%HH}.grib2

OBS_ENSEMBLE_STAT_POINT_INPUT_DIR = {PB2NC_OUTPUT_DIR}
OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = {PB2NC_OUTPUT_TEMPLATE}

ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE =
{INPUT_BASE}/model_applications/short_range/mask/EAST.nc,
{INPUT_BASE}/model_applications/short_range/mask/WEST.nc,
{INPUT_BASE}/model_applications/short_range/mask/CONUS.nc,
{INPUT_BASE}/model_applications/short_range/mask/LMV.nc

ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE}/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField/EnsembleStat
ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H%M}


###
# Field Info
# https://metplus.readthedocs.io/en/latest/Users_Guide/systemconfiguration.html#field-info
###

MODEL = HRRRE_ens
OBTYPE = ANALYS

# The MET ensemble_stat logging level
# 0 quiet to 5 loud, Verbosity setting for MET output, 2 is default.
# This takes precendence over the general MET logging level set in metplus_logging.conf
#LOG_ENSEMBLE_STAT_VERBOSITY = 3
ENS_VAR1_NAME = TMP
ENS_VAR1_LEVELS = Z02
ENS_VAR1_THRESH = >=283, >=288, >=293, >=298, >=303

ENS_VAR2_NAME = DPT
ENS_VAR2_LEVELS = Z2
ENS_VAR2_THRESH = >=278, >=283, >=288, >=293, >=298

ENS_VAR3_NAME = UGRD
ENS_VAR3_LEVELS = Z10
ENS_VAR3_THRESH = <=-10, <=-5, <=-2, >=2, >=5, >=10

ENS_VAR4_NAME = VGRD
ENS_VAR4_LEVELS = Z10
ENS_VAR4_THRESH = <=-10, <=-5, <=-2, >=2, >=5, >=10

ENS_VAR5_NAME = WIND
ENS_VAR5_LEVELS = Z10
ENS_VAR5_THRESH = >=2, >=4, >=6, >=8, >=10

FCST_VAR1_NAME = TMP
FCST_VAR1_LEVELS = Z2
BOTH_VAR1_THRESH = >=283, >=288, >=293, >=298, >=303

OBS_VAR1_NAME = {FCST_VAR1_NAME}
OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS}
OBS_VAR1_OPTIONS = ens_ssvar_bin_size = 1.0; ens_phist_bin_size = 0.05; wind_thresh = >2.572;


# MET Configuration files for pb2nc
PB2NC_CONFIG_FILE = {PARM_BASE}/met_config/PB2NCConfig_wrapped
###
# PB2NC Settings
# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#pb2nc
###

PB2NC_LEVEL_RANGE_END = 255

PB2NC_QUALITY_MARK_THRESH = 3

# 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

# These are appended with PB2NC to differentiate the GRID, POLY, and MESSAGE_TYPE for point_stat.
PB2NC_GRID =
PB2NC_POLY =
PB2NC_STATION_ID =
PB2NC_MESSAGE_TYPE = ADPUPA, ADPSFC, AIRCFT, PROFLR

# Leave empty to process all
PB2NC_OBS_BUFR_VAR_LIST = POB, QOB, TOB, ZOB, UOB, VOB, D_DPT, D_WDIR, D_WIND, D_RH, D_MIXR, D_PRMSL

# False for no time summary, True otherwise
PB2NC_TIME_SUMMARY_FLAG = False
PB2NC_TIME_SUMMARY_RAW_DATA = False
PB2NC_TIME_SUMMARY_BEG = 000000
Expand All @@ -87,18 +140,19 @@ PB2NC_TIME_SUMMARY_VALID_THRESH = 0.0
PB2NC_OBS_WINDOW_BEGIN = -900
PB2NC_OBS_WINDOW_END = 900


###
# EnsembleStat Settings
# https://metplus.readthedocs.io/en/latest/Users_Guide/wrappers.html#ensemblestat
###

ENSEMBLE_STAT_OBS_WINDOW_BEGIN = -900
ENSEMBLE_STAT_OBS_WINDOW_END = 900

# number of expected members for ensemble. Should correspond with the
# number of items in the list for FCST_ENSEMBLE_STAT_INPUT_TEMPLATE
ENSEMBLE_STAT_N_MEMBERS = 2

# ens.ens_thresh value in the MET config file
# threshold for ratio of valid files to expected files to allow app to run
ENSEMBLE_STAT_ENS_THRESH = 1.0

# Used in the MET config file for: regrid to_grid field
ENSEMBLE_STAT_REGRID_TO_GRID = FCST
ENSEMBLE_STAT_REGRID_METHOD = BILIN
ENSEMBLE_STAT_REGRID_WIDTH = 2
Expand Down Expand Up @@ -140,90 +194,7 @@ ENSEMBLE_STAT_ENSEMBLE_FLAG_NMEP = FALSE
ENSEMBLE_STAT_ENSEMBLE_FLAG_RANK = FALSE
ENSEMBLE_STAT_ENSEMBLE_FLAG_WEIGHT = FALSE

ENSEMBLE_STAT_CONFIG_FILE = {PARM_BASE}/met_config/EnsembleStatConfig_wrapped


# 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.
CONFIG_DIR={PARM_BASE}/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField
ENSEMBLE_STAT_MET_OBS_ERR_TABLE = {CONFIG_DIR}/obs_error_table_V8.0.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

ENS_VAR1_NAME = TMP
ENS_VAR1_LEVELS = Z02
ENS_VAR1_THRESH = >=283, >=288, >=293, >=298, >=303

ENS_VAR2_NAME = DPT
ENS_VAR2_LEVELS = Z2
ENS_VAR2_THRESH = >=278, >=283, >=288, >=293, >=298

ENS_VAR3_NAME = UGRD
ENS_VAR3_LEVELS = Z10
ENS_VAR3_THRESH = <=-10, <=-5, <=-2, >=2, >=5, >=10

ENS_VAR4_NAME = VGRD
ENS_VAR4_LEVELS = Z10
ENS_VAR4_THRESH = <=-10, <=-5, <=-2, >=2, >=5, >=10

ENS_VAR5_NAME = WIND
ENS_VAR5_LEVELS = Z10
ENS_VAR5_THRESH = >=2, >=4, >=6, >=8, >=10


FCST_VAR1_NAME = TMP
FCST_VAR1_LEVELS = Z2
BOTH_VAR1_THRESH = >=283, >=288, >=293, >=298, >=303

OBS_VAR1_NAME = {FCST_VAR1_NAME}
OBS_VAR1_LEVELS = {FCST_VAR1_LEVELS}
OBS_VAR1_OPTIONS = ens_ssvar_bin_size = 1.0; ens_phist_bin_size = 0.05; wind_thresh = >2.572;

ENSEMBLE_STAT_OUTPUT_PREFIX = HRRRE_F{lead?fmt=%3H}_ADPSFC

[dir]
# Use case config directory
CONFIG_DIR={PARM_BASE}/use_cases/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField

# input and output directories for pb2nc
PB2NC_INPUT_DIR = {INPUT_BASE}/model_applications/short_range/hrrr_ensemble_sfc/prepbufr
PB2NC_OUTPUT_DIR = {OUTPUT_BASE}/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField/rap

# input directory for ensemble_stat
FCST_ENSEMBLE_STAT_INPUT_DIR = {INPUT_BASE}/model_applications/short_range/hrrr_ensemble_sfc/fcst

# 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
ENSEMBLE_STAT_OUTPUT_DIR = {OUTPUT_BASE}/model_applications/short_range/EnsembleStat_fcstHRRRE_obsHRRRE_Sfc_MultiField/EnsembleStat


[filename_templates]

# input and output templates for pb2nc
PB2NC_INPUT_TEMPLATE = {da_init?fmt=%Y%m%d}/{da_init?fmt=%Y%j%H%M}.rap.t{da_init?fmt=%H}z.prepbufr.tm{offset?fmt=%2H}.{da_init?fmt=%Y%m%d}

PB2NC_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d}/{valid?fmt=%Y%m%d%H}.rap.nc

# input ensemble template - comma separated list of ensemble members
FCST_ENSEMBLE_STAT_INPUT_TEMPLATE =
{init?fmt=%Y%m%d%H}/postprd_mem0001/wrfprs_conus_mem0001_{lead?fmt=%HH}.grib2,
{init?fmt=%Y%m%d%H}/postprd_mem0002/wrfprs_conus_mem0002_{lead?fmt=%HH}.grib2

# input template for EnsembleStat can also be defined using a single
# member with wildcard characters to find multiple files
#FCST_ENSEMBLE_STAT_INPUT_TEMPLATE =
# {init?fmt=%Y%m%d%H}/postprd_mem000?/wrfprs_conus_mem000?_{lead?fmt=%HH}.grib2

OBS_ENSEMBLE_STAT_POINT_INPUT_TEMPLATE = {PB2NC_OUTPUT_TEMPLATE}

ENSEMBLE_STAT_VERIFICATION_MASK_TEMPLATE =
{INPUT_BASE}/model_applications/short_range/mask/EAST.nc,
{INPUT_BASE}/model_applications/short_range/mask/WEST.nc,
{INPUT_BASE}/model_applications/short_range/mask/CONUS.nc,
{INPUT_BASE}/model_applications/short_range/mask/LMV.nc

ENSEMBLE_STAT_OUTPUT_TEMPLATE = {init?fmt=%Y%m%d%H%M}
Loading

0 comments on commit 4e2c002

Please sign in to comment.