diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..af332b055 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +fix +ush/config.sh diff --git a/jobs/JREGIONAL_NOVARCLD b/jobs/JREGIONAL_NOVARCLD new file mode 100755 index 000000000..fa85bc1a5 --- /dev/null +++ b/jobs/JREGIONAL_NOVARCLD @@ -0,0 +1,98 @@ +#!/bin/bash + +#----------------------------------------------------------------------- +# +# This J-JOB script runs the standalone No-Var Cloud Analysis +# for the FV3-LAM model +# +#----------------------------------------------------------------------- + +# +#----------------------------------------------------------------------- +# +# Source the variable definitions file and the bash utility functions. +# +#----------------------------------------------------------------------- +# +. ${GLOBAL_VAR_DEFNS_FP} +. $USHDIR/source_util_funcs.sh +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; set -u +x; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +scrfunc_fp=$( readlink -f "${BASH_SOURCE[0]}" ) +scrfunc_fn=$( basename "${scrfunc_fp}" ) +scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Print message indicating entry into script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Entering script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" + +This is the J-job script for the task that runs a standalone No-Var cloud +analysis with FV3 for the specified cycle. +========================================================================" +# +#----------------------------------------------------------------------- +# +# Create the working directory under the cycle directory. +# +#----------------------------------------------------------------------- +# +WORKDIR=${CYCLE_DIR}/novar_cldanl +rm -fr ${WORKDIR} +mkdir_vrfy -p ${WORKDIR} +# +#----------------------------------------------------------------------- +# +# Call the ex-script for this J-job and pass to it the necessary varia- +# bles. +# +#----------------------------------------------------------------------- +# +$SCRIPTSDIR/exregional_novarcldanl.sh \ + CYCLE_DIR="${CYCLE_DIR}" WORKDIR="${WORKDIR}" || \ +print_err_msg_exit "\ +Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed." +# +#----------------------------------------------------------------------- +# +# Print exit message. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Exiting script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" +========================================================================" +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/func- +# tion. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 + diff --git a/jobs/JREGIONAL_PROCESS_BUFR b/jobs/JREGIONAL_PROCESS_BUFR new file mode 100755 index 000000000..a86793d64 --- /dev/null +++ b/jobs/JREGIONAL_PROCESS_BUFR @@ -0,0 +1,99 @@ +#!/bin/bash + +# +#----------------------------------------------------------------------- +# +# This J-JOB script runs the preprocess of BUFR files +# for the FV3-LAM model +# +#----------------------------------------------------------------------- +# +# +#----------------------------------------------------------------------- +# +# Source the variable definitions file and the bash utility functions. +# +#----------------------------------------------------------------------- +# +. ${GLOBAL_VAR_DEFNS_FP} +. $USHDIR/source_util_funcs.sh +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; set -u +x; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +scrfunc_fp=$( readlink -f "${BASH_SOURCE[0]}" ) +scrfunc_fn=$( basename "${scrfunc_fp}" ) +scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Print message indicating entry into script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Entering script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" + +This is the J-job script for the task that runs a BUFR preprocess for +the specified cycle. +========================================================================" +# +#----------------------------------------------------------------------- +# +# Create the working directory under the cycle directory. +# +#----------------------------------------------------------------------- +# +WORKDIR=${CYCLE_DIR}/process_bufr +rm -fr ${WORKDIR} +mkdir_vrfy -p ${WORKDIR} +# +#----------------------------------------------------------------------- +# +# Call the ex-script for this J-job and pass to it the necessary varia- +# bles. +# +#----------------------------------------------------------------------- +# +$SCRIPTSDIR/exregional_process_bufr.sh \ + CYCLE_DIR="${CYCLE_DIR}" WORKDIR="${WORKDIR}" || \ +print_err_msg_exit "\ +Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed." +# +#----------------------------------------------------------------------- +# +# Print exit message. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Exiting script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" +========================================================================" +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/func- +# tion. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 + diff --git a/jobs/JREGIONAL_PROCESS_LIGHTNING b/jobs/JREGIONAL_PROCESS_LIGHTNING new file mode 100755 index 000000000..1c786b034 --- /dev/null +++ b/jobs/JREGIONAL_PROCESS_LIGHTNING @@ -0,0 +1,99 @@ +#!/bin/bash + +# +#----------------------------------------------------------------------- +# +# This J-JOB script runs the NetCDF ligthning observation preprocess +# for the FV3-LAM model +# +#----------------------------------------------------------------------- +# +# +#----------------------------------------------------------------------- +# +# Source the variable definitions file and the bash utility functions. +# +#----------------------------------------------------------------------- +# +. ${GLOBAL_VAR_DEFNS_FP} +. $USHDIR/source_util_funcs.sh +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; set -u +x; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +scrfunc_fp=$( readlink -f "${BASH_SOURCE[0]}" ) +scrfunc_fn=$( basename "${scrfunc_fp}" ) +scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Print message indicating entry into script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Entering script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" + +This is the J-job script for the task that runs a lightning preprocess for +the specified cycle. +========================================================================" +# +#----------------------------------------------------------------------- +# +# Create the working directory under the cycle directory. +# +#----------------------------------------------------------------------- +# +WORKDIR=${CYCLE_DIR}/process_lightning +rm -fr ${WORKDIR} +mkdir_vrfy -p ${WORKDIR} +# +#----------------------------------------------------------------------- +# +# Call the ex-script for this J-job and pass to it the necessary varia- +# bles. +# +#----------------------------------------------------------------------- +# +$SCRIPTSDIR/exregional_process_lightning.sh \ + CYCLE_DIR="${CYCLE_DIR}" WORKDIR="${WORKDIR}" || \ +print_err_msg_exit "\ +Call to ex-script corresponding to J-job \"${scrfunc_fn}\" failed." +# +#----------------------------------------------------------------------- +# +# Print exit message. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Exiting script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" +========================================================================" +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/func- +# tion. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 + diff --git a/jobs/JREGIONAL_PROCESS_RADARREF b/jobs/JREGIONAL_PROCESS_RADARREF index 2c8ec7eb7..103de0282 100755 --- a/jobs/JREGIONAL_PROCESS_RADARREF +++ b/jobs/JREGIONAL_PROCESS_RADARREF @@ -1,11 +1,14 @@ #!/bin/bash + +# #----------------------------------------------------------------------- # # This J-JOB script runs the radar reflectivity preprocess # for the FV3-LAM model # #----------------------------------------------------------------------- +# # #----------------------------------------------------------------------- @@ -60,9 +63,7 @@ preprocess with FV3 for the specified cycle. #----------------------------------------------------------------------- # WORKDIR=${CYCLE_DIR}/PROCESS_RADARREF -if [ -r ${WORKDIR} ]; then - rm -fr ${WORKDIR} -fi +rm -fr ${WORKDIR} mkdir_vrfy -p ${WORKDIR} # #----------------------------------------------------------------------- diff --git a/jobs/JREGIONAL_REFL2TTEN b/jobs/JREGIONAL_REFL2TTEN index 0e7fcadc8..e6de2760c 100755 --- a/jobs/JREGIONAL_REFL2TTEN +++ b/jobs/JREGIONAL_REFL2TTEN @@ -60,9 +60,7 @@ the specified cycle. #----------------------------------------------------------------------- # WORKDIR=${CYCLE_DIR}/REFL2TTEN -if [ -r ${WORKDIR} ]; then - rm -fr ${WORKDIR} -fi +rm -fr ${WORKDIR} mkdir_vrfy -p ${WORKDIR} # #----------------------------------------------------------------------- diff --git a/jobs/JREGIONAL_RUN_ANAL b/jobs/JREGIONAL_RUN_ANAL index da5409208..c49ea087c 100755 --- a/jobs/JREGIONAL_RUN_ANAL +++ b/jobs/JREGIONAL_RUN_ANAL @@ -61,9 +61,7 @@ the specified cycle. #----------------------------------------------------------------------- # ANALWORKDIR=${CYCLE_DIR}/ANAL_GSI -if [ -r ${ANALWORKDIR} ]; then - rm -fr ${ANALWORKDIR} -fi +rm -fr ${ANALWORKDIR} mkdir_vrfy -p ${ANALWORKDIR} # #----------------------------------------------------------------------- diff --git a/scripts/exregional_novarcldanl.sh b/scripts/exregional_novarcldanl.sh new file mode 100755 index 000000000..e25acee9f --- /dev/null +++ b/scripts/exregional_novarcldanl.sh @@ -0,0 +1,315 @@ +#!/bin/bash + +# +#----------------------------------------------------------------------- +# +# Source the variable definitions file and the bash utility functions. +# +#----------------------------------------------------------------------- +# +. ${GLOBAL_VAR_DEFNS_FP} +. $USHDIR/source_util_funcs.sh +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; set -u +x; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +scrfunc_fp=$( readlink -f "${BASH_SOURCE[0]}" ) +scrfunc_fn=$( basename "${scrfunc_fp}" ) +scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Print message indicating entry into script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Entering script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" + +This is the ex-script for the task that conduct no-var cloud analysis +with FV3 for the specified cycle. +========================================================================" +# +#----------------------------------------------------------------------- +# +# Specify the set of valid argument names for this script/function. +# Then process the arguments provided to this script/function (which +# should consist of a set of name-value pairs of the form arg1="value1", +# etc). +# +#----------------------------------------------------------------------- +# +valid_args=( "CYCLE_DIR" "WORKDIR") +process_args valid_args "$@" +# +#----------------------------------------------------------------------- +# +# For debugging purposes, print out values of arguments passed to this +# script. Note that these will be printed out only if VERBOSE is set to +# TRUE. +# +#----------------------------------------------------------------------- +# +print_input_args valid_args +# +#----------------------------------------------------------------------- +# +# Load modules. +# +#----------------------------------------------------------------------- +# +case $MACHINE in +# +"WCOSS_C" | "WCOSS") +# + + if [ "${USE_CCPP}" = "TRUE" ]; then + +# Needed to change to the experiment directory because the module files +# for the CCPP-enabled version of FV3 have been copied to there. + + cd_vrfy ${CYCLE_DIR} + + set +x + source ./module-setup.sh + module use $( pwd -P ) + module load modules.fv3 + module list + set -x + + else + + . /apps/lmod/lmod/init/sh + module purge + module use /scratch4/NCEPDEV/nems/noscrub/emc.nemspara/soft/modulefiles + module load intel/16.1.150 impi/5.1.1.109 netcdf/4.3.0 + module list + + fi + + ulimit -s unlimited + ulimit -a + APRUN="mpirun -l -np ${PE_MEMBER01}" + ;; +# +"HERA") + ulimit -s unlimited + ulimit -a + APRUN="srun" + ;; +# +"JET") + ulimit -s unlimited + ulimit -a + APRUN="srun" + ;; +# +"ODIN") +# + module list + + ulimit -s unlimited + ulimit -a + APRUN="srun -n ${PE_MEMBER01}" + ;; +# +esac +# +#----------------------------------------------------------------------- +# +# Extract from CDATE the starting year, month, day, and hour of the +# forecast. These are needed below for various operations. +# +#----------------------------------------------------------------------- +# +set -x +START_DATE=`echo "${CDATE}" | sed 's/\([[:digit:]]\{2\}\)$/ \1/'` +YYYYMMDDHH=`date +%Y%m%d%H -d "${START_DATE}"` +JJJ=`date +%j -d "${START_DATE}"` + +YYYY=${YYYYMMDDHH:0:4} +MM=${YYYYMMDDHH:4:2} +DD=${YYYYMMDDHH:6:2} +HH=${YYYYMMDDHH:8:2} +YYYYMMDD=${YYYYMMDDHH:0:8} +# +#----------------------------------------------------------------------- +# +# Get into working directory and define fix directory +# +#----------------------------------------------------------------------- +# +print_info_msg "$VERBOSE" " +Getting into working directory for radar tten process ..." + +workdir=${WORKDIR} +cd_vrfy ${workdir} + +fixdir=$FIXgsi +print_info_msg "$VERBOSE" "fixdir is $fixdir" +pwd + +# +#----------------------------------------------------------------------- +# +# link or copy background and grid configuration files +# +#----------------------------------------------------------------------- + +cp_vrfy ${fixdir}/fv3_akbk fv3_akbk +cp_vrfy ${fixdir}/fv3_grid_spec fv3_grid_spec + +bkpath=${CYCLE_DIR}/INPUT +if [ -w ${bkpath}/gfs_data.tile7.halo0.nc ]; then # Use background from INPUT + ln_vrfy -s ${bkpath}/sfc_data.tile7.halo0.nc fv3_sfcdata + ln_vrfy -s ${bkpath}/gfs_data.tile7.halo0.nc fv3_dynvars + ln_vrfy -s ${bkpath}/gfs_data.tile7.halo0.nc fv3_tracer +else # Use background from RESTART + ln_vrfy -s ${bkpath}/fv_core.res.tile1.nc fv3_dynvars + ln_vrfy -s ${bkpath}/fv_tracer.res.tile1.nc fv3_tracer + ln_vrfy -s ${bkpath}/sfc_data.nc fv3_sfcdata +fi + +# +#----------------------------------------------------------------------- +# +# link/copy observation files to working directory +# +#----------------------------------------------------------------------- + +PROCESS_BUFR_PATH=${CYCLE_DIR}/process_bufr + +obs_file=${PROCESS_BUFR_PATH}/LightningInFV3LAM.dat +if [ -r "${obs_file}" ]; then + cp_vrfy "${obs_file}" "LightningInFV3LAM.dat" +else + print_info_msg "$VERBOSE" "Warning: ${obs_file} does not exist!" +fi + +obs_file=${PROCESS_BUFR_PATH}/NASALaRC_cloud4fv3.bin +if [ -r "${obs_file}" ]; then + cp_vrfy "${obs_file}" "NASALaRC_cloud4fv3.bin" +else + print_info_msg "$VERBOSE" "Warning: ${obs_file} does not exist!" +fi + +obs_file=${PROCESS_BUFR_PATH}/fv3_metarcloud.bin +if [ -r "${obs_file}" ]; then + cp_vrfy "${obs_file}" "fv3_metarcloud.bin" +else + print_info_msg "$VERBOSE" "Warning: ${obs_file} does not exist!" +fi + +#----------------------------------------------------------------------- +# +# Build namelist +# +#----------------------------------------------------------------------- + +cat << EOF > gsiparm.anl + + &SETUP + iyear=${YYYY}, + imonth=${MM}, + iday=${DD}, + ihour=${HH}, + iminute=00, + / + &RAPIDREFRESH_CLDSURF + dfi_radar_latent_heat_time_period=20.0, + metar_impact_radius=10.0, + metar_impact_radius_lowCloud=4.0, + l_pw_hgt_adjust=.true., + l_limit_pw_innov=.true., + max_innov_pct=0.1, + l_cleanSnow_WarmTs=.true., + r_cleanSnow_WarmTs_threshold=5.0, + l_conserve_thetaV=.true., + i_conserve_thetaV_iternum=3, + l_cld_bld=.true., + l_numconc=.true., + cld_bld_hgt=1200.0, + build_cloud_frac_p=0.50, + clear_cloud_frac_p=0.10, + iclean_hydro_withRef_allcol=1, + i_gsdcldanal_type=6, + i_gsdsfc_uselist=1, + i_lightpcp=1, + i_gsdqc=2, + l_saturate_bkCloud=.true., + / +EOF + + + +# +#----------------------------------------------------------------------- +# +# Copy the executable to the run directory. +# +#----------------------------------------------------------------------- +# +EXEC="${EXECDIR}/fv3sar_novarcldana.exe" + +if [ -f $EXEC ]; then + print_info_msg "$VERBOSE" " +Copying the noVar Cloud Analysis executable to the run directory..." + cp_vrfy ${EXEC} ${workdir}/fv3sar_novarcldana.exe +else + print_err_msg_exit "\ +The executable specified in EXEC does not exist: + EXEC = \"$EXEC\" +Build executable and rerun." +fi +# +# +# +#----------------------------------------------------------------------- +# +# Run the novar cloud analysis application. +# +#----------------------------------------------------------------------- +# +$APRUN ./fv3sar_novarcldana.exe > stdout 2>&1 || print_err_msg_exit "\ +Call to executable to run No Var Cloud Analysis returned with nonzero exit code." + +# +#----------------------------------------------------------------------- +# +# Print message indicating successful completion of script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +RADAR REFL TTEN PROCESS completed successfully!!! + +Exiting script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" +========================================================================" +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/func- +# tion. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 + diff --git a/scripts/exregional_process_bufr.sh b/scripts/exregional_process_bufr.sh new file mode 100755 index 000000000..22df900b9 --- /dev/null +++ b/scripts/exregional_process_bufr.sh @@ -0,0 +1,433 @@ +#!/bin/bash + +# +#----------------------------------------------------------------------- +# +# Source the variable definitions file and the bash utility functions. +# +#----------------------------------------------------------------------- +# +. ${GLOBAL_VAR_DEFNS_FP} +. $USHDIR/source_util_funcs.sh +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; set -u +x; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +scrfunc_fp=$( readlink -f "${BASH_SOURCE[0]}" ) +scrfunc_fn=$( basename "${scrfunc_fp}" ) +scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Print message indicating entry into script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Entering script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" + +This is the ex-script for the task that runs bufr (cloud, metar, lightning) preprocess +with FV3 for the specified cycle. +========================================================================" +# +#----------------------------------------------------------------------- +# +# Specify the set of valid argument names for this script/function. +# Then process the arguments provided to this script/function (which +# should consist of a set of name-value pairs of the form arg1="value1", +# etc). +# +#----------------------------------------------------------------------- +# +valid_args=( "CYCLE_DIR" "WORKDIR") +process_args valid_args "$@" +# +#----------------------------------------------------------------------- +# +# For debugging purposes, print out values of arguments passed to this +# script. Note that these will be printed out only if VERBOSE is set to +# TRUE. +# +#----------------------------------------------------------------------- +# +print_input_args valid_args +# +#----------------------------------------------------------------------- +# +# Load modules. +# +#----------------------------------------------------------------------- +# +case $MACHINE in +# +"WCOSS_C" | "WCOSS") +# + + if [ "${USE_CCPP}" = "TRUE" ]; then + +# Needed to change to the experiment directory because the module files +# for the CCPP-enabled version of FV3 have been copied to there. + + cd_vrfy ${CYCLE_DIR} + + set +x + source ./module-setup.sh + module use $( pwd -P ) + module load modules.fv3 + module list + set -x + + else + + . /apps/lmod/lmod/init/sh + module purge + module use /scratch4/NCEPDEV/nems/noscrub/emc.nemspara/soft/modulefiles + module load intel/16.1.150 impi/5.1.1.109 netcdf/4.3.0 + module list + + fi + + ulimit -s unlimited + ulimit -a + APRUN="mpirun -l -np ${PE_MEMBER01}" + ;; +# +"HERA") + ulimit -s unlimited + ulimit -a + APRUN="srun" + LD_LIBRARY_PATH="${UFS_WTHR_MDL_DIR}/FV3/ccpp/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" + ;; +# +"JET") + ulimit -s unlimited + ulimit -a + APRUN="srun" + LD_LIBRARY_PATH="${UFS_WTHR_MDL_DIR}/FV3/ccpp/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" + ;; +# +"ODIN") +# + module list + + ulimit -s unlimited + ulimit -a + APRUN="srun -n ${PE_MEMBER01}" + ;; +# +esac +# +#----------------------------------------------------------------------- +# +# Extract from CDATE the starting year, month, day, and hour of the +# forecast. These are needed below for various operations. +# +#----------------------------------------------------------------------- +# +set -x +START_DATE=`echo "${CDATE}" | sed 's/\([[:digit:]]\{2\}\)$/ \1/'` + YYYYMMDDHH=`date +%Y%m%d%H -d "${START_DATE}"` + JJJ=`date +%j -d "${START_DATE}"` + +YYYY=${YYYYMMDDHH:0:4} +MM=${YYYYMMDDHH:4:2} +DD=${YYYYMMDDHH:6:2} +HH=${YYYYMMDDHH:8:2} +YYYYMMDD=${YYYYMMDDHH:0:8} + +YYJJJHH=`date +"%y%j%H" -d "${START_DATE}"` +PREYYJJJHH=`date +"%y%j%H" -d "${START_DATE} 1 hours ago"` + +# +#----------------------------------------------------------------------- +# +# Get into working directory +# +#----------------------------------------------------------------------- +# +print_info_msg "$VERBOSE" " +Getting into working directory for BUFR obseration process ..." + +cd ${WORKDIR} + +fixdir=$FIXgsi/ + +print_info_msg "$VERBOSE" "fixdir is $fixdir" + +# +#----------------------------------------------------------------------- +# +# link or copy background files +# +#----------------------------------------------------------------------- + +cp_vrfy ${fixdir}/fv3_grid_spec fv3sar_grid_spec.nc +cp_vrfy ${fixdir}/geo_em.d01.nc geo_em.d01.nc + + +#----------------------------------------------------------------------- +# +# copy bufr table +# +#----------------------------------------------------------------------- +BUFR_TABLE=${fixdir}/prepobs_prep_RAP.bufrtable +cp_vrfy $BUFR_TABLE prepobs_prep.bufrtable + +# +#----------------------------------------------------------------------- +#----------------------------------------------------------------------- +# +# Link to the observation lightning bufr files +# +#----------------------------------------------------------------------- + +run_lightning=false +obs_file=${OBSPATH}/${YYYYMMDDHH}.rap.t${HH}z.lghtng.tm00.bufr_d +print_info_msg "$VERBOSE" "obsfile is $obs_file" +if [ -r "${obs_file}" ]; then + cp_vrfy "${obs_file}" "lghtngbufr" + run_lightning=true +else + print_info_msg "$VERBOSE" "Warning: ${obs_file} does not exist!" +fi + +#----------------------------------------------------------------------- +# +# Build namelist and run executable for lightning +# +# analysis_time : process obs used for this analysis date (YYYYMMDDHH) +# minute : process obs used for this analysis minute (integer) +# trange_start : obs time window start (minutes before analysis time) +# trange_end : obs time window end (minutes after analysis time) +# bkversion : grid type (background will be used in the analysis) +# 0 for ARW (default) +# 1 for FV3LAM +#----------------------------------------------------------------------- + +cat << EOF > lightning_bufr.namelist + &setup + analysis_time = ${YYYYMMDDHH}, + minute=00, + trange_start=-10, + trange_end=10, + bkversion=1, + / + +EOF + +# +#----------------------------------------------------------------------- +# +# link/copy executable file to working directory +# +#----------------------------------------------------------------------- +# +EXEC="${EXECDIR}/process_Lightning_bufr.exe" + +if [ -f $EXEC ]; then + print_info_msg "$VERBOSE" " +Copying the lightning process executable to the run directory..." + cp_vrfy ${EXEC} ${WORKDIR}/process_Lightning_bufr.exe +else + print_err_msg_exit "\ +The executable specified in EXEC does not exist: + EXEC = \"$EXEC\" +Build lightning process and rerun." +fi +# +# +#----------------------------------------------------------------------- +# +# Run the process for lightning bufr file +# +#----------------------------------------------------------------------- +# +if [ $run_lightning ]; then + $APRUN ./process_Lightning_bufr.exe > stdout_lightning_bufr 2>&1 || print_err_msg "\ + Call to executable to run lightning process returned with nonzero exit code." +fi + +# +#----------------------------------------------------------------------- +#----------------------------------------------------------------------- +# +# Link to the observation NASA LaRC cloud bufr file +# +#----------------------------------------------------------------------- + +obs_file=${OBSPATH}/${YYYYMMDDHH}.rap.t${HH}z.lgycld.tm00.bufr_d +print_info_msg "$VERBOSE" "obsfile is $obs_file" +run_cloud=false +if [ -r "${obs_file}" ]; then + cp_vrfy "${obs_file}" "NASA_LaRC_cloud.bufr" + run_cloud=true +else + print_info_msg "$VERBOSE" "Warning: ${obs_file} does not exist!" +fi + +#----------------------------------------------------------------------- +# +# Build namelist and run executable for NASA LaRC cloud +# +# analysis_time : process obs used for this analysis date (YYYYMMDDHH) +# bufrfile : result BUFR file name +# npts_rad : number of grid point to build search box (integer) +# ioption : interpolation options +# = 1 is nearest neighrhood +# = 2 is median of cloudy fov +# bkversion : grid type (background will be used in the analysis) +# = 0 for ARW (default) +# = 1 for FV3LAM +#----------------------------------------------------------------------- + +cat << EOF > namelist_nasalarc + &setup + analysis_time = ${YYYYMMDDHH}, + bufrfile='NASALaRCCloudInGSI_bufr.bufr', + npts_rad=1, + ioption = 2, + bkversion=1, + / +EOF + +# +#----------------------------------------------------------------------- +# +# Copy the executable to the run directory. +# +#----------------------------------------------------------------------- +# +EXEC="${EXECDIR}/process_larccld.exe" + +if [ -f $EXEC ]; then + print_info_msg "$VERBOSE" " +Copying the NASA LaRC cloud process executable to the run directory..." + cp_vrfy ${EXEC} ${WORKDIR}/process_larccld.exe +else + print_err_msg_exit "\ +The executable specified in EXEC does not exist: + EXEC = \"$EXEC\" +Build lightning process and rerun." +fi +# +# +#----------------------------------------------------------------------- +# +# Run the process for NASA LaRc cloud bufr file +# +#----------------------------------------------------------------------- +# +if [ $run_cloud ]; then + $APRUN ./process_larccld.exe > stdout_nasalarc 2>&1 || print_err_msg "\ + Call to executable to run NASA LaRC Cloud process returned with nonzero exit code." +fi + +# +#----------------------------------------------------------------------- +#----------------------------------------------------------------------- +# +# Link to the observation prepbufr bufr file for METAR cloud +# +#----------------------------------------------------------------------- + +obs_file=${OBSPATH}/${YYYYMMDDHH}.rap.t${HH}z.prepbufr.tm00 +print_info_msg "$VERBOSE" "obsfile is $obs_file" +run_metar=false +if [ -r "${obs_file}" ]; then + cp_vrfy "${obs_file}" "prepbufr" + run_metar=true +else + print_info_msg "$VERBOSE" "Warning: ${obs_file} does not exist!" +fi + +#----------------------------------------------------------------------- +# +# Build namelist for METAR cloud +# +# analysis_time : process obs used for this analysis date (YYYYMMDDHH) +# analysis_minute : process obs used for this analysis minute (integer) +# prepbufrfile : input prepbufr file name +# twindin : observation time window (real: hours before and after analysis time) +# +#----------------------------------------------------------------------- + +cat << EOF > namelist_metarcld + &setup + analysis_time = ${YYYYMMDDHH}, + prepbufrfile='prepbufr', + twindin=0.5, + / +EOF + +# +#----------------------------------------------------------------------- +# +# Copy the executable to the run directory. +# +#----------------------------------------------------------------------- +# +EXEC="${EXECDIR}/process_metarcld.exe" + +if [ -f $EXEC ]; then + print_info_msg "$VERBOSE" " +Copying the METAR cloud process executable to the run directory..." + cp_vrfy ${EXEC} ${WORKDIR}/process_metarcld.exe +else + print_err_msg_exit "\ +The executable specified in EXEC does not exist: + EXEC = \"$EXEC\" +Build lightning process and rerun." +fi +# +# +#----------------------------------------------------------------------- +# +# Run the process for METAR cloud bufr file +# +#----------------------------------------------------------------------- +# +if [ $run_metar ]; then + $APRUN ./process_metarcld.exe > stdout_metarcld 2>&1 || print_err_msg "\ + Call to executable to run METAR cloud process returned with nonzero exit code." +fi + +# +#----------------------------------------------------------------------- +# +# Print message indicating successful completion of script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +BUFR PROCESS completed successfully!!! + +Exiting script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" +========================================================================" +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/func- +# tion. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 + diff --git a/scripts/exregional_process_lightning.sh b/scripts/exregional_process_lightning.sh new file mode 100755 index 000000000..ec39feb59 --- /dev/null +++ b/scripts/exregional_process_lightning.sh @@ -0,0 +1,295 @@ +#!/bin/bash + +# +#----------------------------------------------------------------------- +# +# Source the variable definitions file and the bash utility functions. +# +#----------------------------------------------------------------------- +# +. ${GLOBAL_VAR_DEFNS_FP} +. $USHDIR/source_util_funcs.sh +# +#----------------------------------------------------------------------- +# +# Save current shell options (in a global array). Then set new options +# for this script/function. +# +#----------------------------------------------------------------------- +# +{ save_shell_opts; set -u +x; } > /dev/null 2>&1 +# +#----------------------------------------------------------------------- +# +# Get the full path to the file in which this script/function is located +# (scrfunc_fp), the name of that file (scrfunc_fn), and the directory in +# which the file is located (scrfunc_dir). +# +#----------------------------------------------------------------------- +# +scrfunc_fp=$( readlink -f "${BASH_SOURCE[0]}" ) +scrfunc_fn=$( basename "${scrfunc_fp}" ) +scrfunc_dir=$( dirname "${scrfunc_fp}" ) +# +#----------------------------------------------------------------------- +# +# Print message indicating entry into script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +Entering script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" + +This is the ex-script for the task that runs lightning preprocess +with FV3 for the specified cycle. +========================================================================" +# +#----------------------------------------------------------------------- +# +# Specify the set of valid argument names for this script/function. +# Then process the arguments provided to this script/function (which +# should consist of a set of name-value pairs of the form arg1="value1", +# etc). +# +#----------------------------------------------------------------------- +# +valid_args=( "CYCLE_DIR" "WORKDIR") +process_args valid_args "$@" +# +#----------------------------------------------------------------------- +# +# For debugging purposes, print out values of arguments passed to this +# script. Note that these will be printed out only if VERBOSE is set to +# TRUE. +# +#----------------------------------------------------------------------- +# +print_input_args valid_args +# +#----------------------------------------------------------------------- +# +# Load modules. +# +#----------------------------------------------------------------------- +# +case $MACHINE in +# +"WCOSS_C" | "WCOSS") +# + + if [ "${USE_CCPP}" = "TRUE" ]; then + +# Needed to change to the experiment directory because the module files +# for the CCPP-enabled version of FV3 have been copied to there. + + cd_vrfy ${CYCLE_DIR} + + set +x + source ./module-setup.sh + module use $( pwd -P ) + module load modules.fv3 + module list + set -x + + else + + . /apps/lmod/lmod/init/sh + module purge + module use /scratch4/NCEPDEV/nems/noscrub/emc.nemspara/soft/modulefiles + module load intel/16.1.150 impi/5.1.1.109 netcdf/4.3.0 + module list + + fi + + ulimit -s unlimited + ulimit -a + APRUN="mpirun -l -np ${PE_MEMBER01}" + ;; +# +"HERA") + ulimit -s unlimited + ulimit -a + APRUN="srun" + LD_LIBRARY_PATH="${UFS_WTHR_MDL_DIR}/FV3/ccpp/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" + ;; +# +"JET") + ulimit -s unlimited + ulimit -a + APRUN="srun" + LD_LIBRARY_PATH="${UFS_WTHR_MDL_DIR}/FV3/ccpp/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" + ;; +# +"ODIN") +# + module list + + ulimit -s unlimited + ulimit -a + APRUN="srun -n ${PE_MEMBER01}" + ;; +# +esac +# +#----------------------------------------------------------------------- +# +# Extract from CDATE the starting year, month, day, and hour of the +# forecast. These are needed below for various operations. +# +#----------------------------------------------------------------------- +# +set -x +START_DATE=`echo "${CDATE}" | sed 's/\([[:digit:]]\{2\}\)$/ \1/'` + YYYYMMDDHH=`date +%Y%m%d%H -d "${START_DATE}"` + JJJ=`date +%j -d "${START_DATE}"` + +YYYY=${YYYYMMDDHH:0:4} +MM=${YYYYMMDDHH:4:2} +DD=${YYYYMMDDHH:6:2} +HH=${YYYYMMDDHH:8:2} +YYYYMMDD=${YYYYMMDDHH:0:8} + +YYJJJHH=`date +"%y%j%H" -d "${START_DATE}"` +PREYYJJJHH=`date +"%y%j%H" -d "${START_DATE} 1 hours ago"` + +# +#----------------------------------------------------------------------- +# +# Get into working directory +# +#----------------------------------------------------------------------- +# +print_info_msg "$VERBOSE" " +Getting into working directory for lightning process ..." + +cd ${WORKDIR} + +fixdir=$FIXgsi/ + +print_info_msg "$VERBOSE" "fixdir is $fixdir" + +# +#----------------------------------------------------------------------- +# +# link or copy background and grid files +# +#----------------------------------------------------------------------- + +cp_vrfy ${fixdir}/fv3_grid_spec fv3sar_grid_spec.nc +cp_vrfy ${fixdir}/geo_em.d01.nc geo_em.d01.nc + + +#----------------------------------------------------------------------- +# +# Link to the NLDN data +# +#----------------------------------------------------------------------- +filenum=0 +LIGHTNING_FILE=${LIGHTNING_ROOT}/vaisala/netcdf +for n in 00 05 ; do + filename=${LIGHTNING_FILE}/${YYJJJHH}${n}0005r + if [ -r ${filename} ]; then + ((filenum += 1 )) + ln -sf ${filename} ./NLDN_lightning_${filenum} + else + echo " ${filename} does not exist" + fi +done +for n in 55 50 45 40 35 ; do + filename=${LIGHTNING_FILE}/${PREYYJJJHH}${n}0005r + if [ -r ${filename} ]; then + ((filenum += 1 )) + ln -sf ${filename} ./NLDN_lightning_${filenum} + else + echo " ${filename} does not exist" + fi +done + +echo "found GLD360 files: ${filenum}" + +#----------------------------------------------------------------------- +# +# copy bufr table from fix directory +# +#----------------------------------------------------------------------- +BUFR_TABLE=${fixdir}/prepobs_prep_RAP.bufrtable + +cp_vrfy $BUFR_TABLE prepobs_prep.bufrtable + +#----------------------------------------------------------------------- +# +# Build namelist and run executable +# +# analysis_time : process obs used for this analysis date (YYYYMMDDHH) +# NLDN_filenum : number of NLDN lighting observation files +# IfAlaska : logic to decide if to process Alaska lightning obs +# bkversion : grid type (background will be used in the analysis) +# = 0 for ARW (default) +# = 1 for FV3LAM +#----------------------------------------------------------------------- + +cat << EOF > lightning.namelist + &setup + analysis_time = ${YYYYMMDDHH}, + NLDN_filenum = ${filenum}, + IfAlaska = false, + bkversion=1, + / + +EOF + +# +#----------------------------------------------------------------------- +# +# Copy the executable to the run directory. +# +#----------------------------------------------------------------------- +# +EXEC="${EXECDIR}/process_Lightning_nc.exe" + +if [ -f $EXEC ]; then + print_info_msg "$VERBOSE" " +Copying the lightning process executable to the run directory..." + cp_vrfy ${EXEC} ${WORKDIR}/process_Lightning_nc.exe +else + print_err_msg_exit "\ +The executable specified in EXEC does not exist: + EXEC = \"$EXEC\" +Build lightning process and rerun." +fi +# +# +#----------------------------------------------------------------------- +# +# Run the process +# +#----------------------------------------------------------------------- +# +$APRUN ./process_Lightning_nc.exe < lightning.namelist > stdout 2>&1 || print_err_msg "\ +Call to executable to run lightning (nc) process returned with nonzero exit code." +# +#----------------------------------------------------------------------- +# +# Print message indicating successful completion of script. +# +#----------------------------------------------------------------------- +# +print_info_msg " +======================================================================== +LIGHTNING PROCESS completed successfully!!! + +Exiting script: \"${scrfunc_fn}\" +In directory: \"${scrfunc_dir}\" +========================================================================" +# +#----------------------------------------------------------------------- +# +# Restore the shell options saved at the beginning of this script/func- +# tion. +# +#----------------------------------------------------------------------- +# +{ restore_shell_opts; } > /dev/null 2>&1 + diff --git a/scripts/exregional_process_radarref.sh b/scripts/exregional_process_radarref.sh index 412872c50..cc2777ee0 100755 --- a/scripts/exregional_process_radarref.sh +++ b/scripts/exregional_process_radarref.sh @@ -162,7 +162,7 @@ Getting into working directory for radar reflectivity process ..." cd ${WORKDIR} -fixdir=$FIXgsi/$PREDEF_GRID_NAME +fixdir=$FIXgsi/ print_info_msg "$VERBOSE" "fixdir is $fixdir" @@ -176,6 +176,7 @@ print_info_msg "$VERBOSE" "fixdir is $fixdir" FV3SARPATH=${CYCLE_DIR} cp_vrfy ${fixdir}/fv3_grid_spec fv3sar_grid_spec.nc + # #----------------------------------------------------------------------- # @@ -184,7 +185,9 @@ cp_vrfy ${fixdir}/fv3_grid_spec fv3sar_grid_spec.nc #----------------------------------------------------------------------- NSSL=${OBSPATH_NSSLMOSIAC} -mrms="MRMS_EXP_MergedReflectivityQC" + +mrms="MRMS_MergedReflectivityQC" + echo "${MM0} ${MM1} ${MM2} ${MM3}" # Link to the MRMS operational data @@ -240,6 +243,16 @@ cp_vrfy $BUFR_TABLE prepobs_prep.bufrtable # # Build namelist and run executable # +# tversion : data source version +# = 1 NSSL 1 tile grib2 for single level +# = 4 NSSL 4 tiles binary +# = 8 NSSL 8 tiles netcdf +# bkversion : grid type (background will be used in the analysis) +# 0 for ARW (default) +# 1 for FV3LAM +# analysis_time : process obs used for this analysis date (YYYYMMDDHH) +# dataPath : path of the radar reflectivity mosaic files. +# #----------------------------------------------------------------------- cat << EOF > mosaic.namelist @@ -279,7 +292,7 @@ fi # #----------------------------------------------------------------------- # -$APRUN ./process_NSSL_mosaic.exe > stdout 2>&1 || print_err_msg_exit "\ +$APRUN ./process_NSSL_mosaic.exe > stdout 2>&1 || print_err_msg "\ Call to executable to run radar refl process returned with nonzero exit code." # #----------------------------------------------------------------------- diff --git a/scripts/exregional_refl2tten.sh b/scripts/exregional_refl2tten.sh index 926342cf4..29410defb 100755 --- a/scripts/exregional_refl2tten.sh +++ b/scripts/exregional_refl2tten.sh @@ -161,7 +161,8 @@ Getting into working directory for radar tten process ..." workdir=${WORKDIR} cd_vrfy ${workdir} -fixdir=$FIXgsi/$PREDEF_GRID_NAME +fixdir=$FIXgsi + print_info_msg "$VERBOSE" "fixdir is $fixdir" pwd @@ -189,14 +190,26 @@ fi # #----------------------------------------------------------------------- # -# link observation files -# copy observation files to working directory +# link/copy observation files to working directory # #----------------------------------------------------------------------- - -# Link to the radar binary data PROCESS_RADARREF_PATH=${CYCLE_DIR}/PROCESS_RADARREF -ln -s ${PROCESS_RADARREF_PATH}/RefInGSI3D.dat ./RefInGSI3D.dat_01 +PROCESS_LIGHTNING_PATH=${CYCLE_DIR}/process_lightning + +obs_file=${PROCESS_RADARREF_PATH}/RefInGSI3D.dat +if [ -r "${obs_file}" ]; then + cp_vrfy "${obs_file}" "RefInGSI3D.dat_01" +else + print_info_msg "$VERBOSE" "Warning: ${obs_file} does not exist!" +fi + +obs_file=${PROCESS_RADARREF_PATH}/LightningInFV3LAM.dat +if [ -r "${obs_file}" ]; then + cp_vrfy "${obs_file}" "LightningInGSI.dat_01" +else + print_info_msg "$VERBOSE" "Warning: ${obs_file} does not exist!" +fi + #----------------------------------------------------------------------- # @@ -215,7 +228,8 @@ cp_vrfy $BUFR_TABLE prepobs_prep.bufrtable # #----------------------------------------------------------------------- # -EXEC="${EXECDIR}/ref2ttenfv3sar.exe" + +EXEC="${EXECDIR}/ref2tten.exe" if [ -f $EXEC ]; then print_info_msg "$VERBOSE" " diff --git a/ush/addtten.py b/ush/addtten.py new file mode 100644 index 000000000..5e7d09113 --- /dev/null +++ b/ush/addtten.py @@ -0,0 +1,20 @@ +#! /scratch1/BMC/wrfruc/Samuel.Trahan/soft/anaconda2-5.3.1/bin/python3.7 + +import netCDF4, numpy, sys +rootgrp=netCDF4.Dataset(sys.argv[1],'r+') + +T=rootgrp.variables['sphum'] +varname="radar_tten" +datatype='f4' +dimensions=[ d.name for d in T.get_dims() ] + +Tdat=numpy.array(T) +one=(Tdat*0.+99.) +v=rootgrp.createVariable(varname,datatype,dimensions) + +n=rootgrp.variables[varname] + +n.setncattr('long_name','temperature tendency from reflectivity') +n.setncattr('units','k s-1') +n[:,:,:]=one + diff --git a/ush/config_defaults.sh b/ush/config_defaults.sh index 14244e888..31ad53c4d 100644 --- a/ush/config_defaults.sh +++ b/ush/config_defaults.sh @@ -1145,7 +1145,11 @@ RUN_POST_TN="run_post" ANAL_GSI_INPUT_TN="anal_gsi_input" ANAL_GSI_RESTA_TN="anal_gsi_resta" PROCESS_RADAR_REF_TN="process_radarref" +PROCESS_LIGHTNING_TN="process_lightning" +PROCESS_BUFR_TN="process_bufr" RADAR_REFL2TTEN_TN="radar_refl2tten" +CLDANL_NOVAR_TN="cldanl_novar" + # # Number of nodes. # @@ -1159,6 +1163,12 @@ NNODES_MAKE_LBCS="4" NNODES_RUN_FCST="" # This is calculated in the workflow generation scripts, so no need to set here. NNODES_RUN_POST="2" NNODES_RUN_ANAL="16" +NNODES_PROC_RADAR="2" +NNODES_PROC_LIGHTNING="1" +NNODES_PROC_BUFR="1" +NNODES_RUN_REF2TTEN="1" +NNODES_RUN_NOVARCLDANL="1" + # # Number of MPI processes per node. # @@ -1172,6 +1182,12 @@ PPN_MAKE_LBCS="12" PPN_RUN_FCST="24" # This may have to be changed depending on the number of threads used. PPN_RUN_POST="24" PPN_RUN_ANAL="24" +PPN_PROC_RADAR="24" +PPN_PROC_LIGHTNING="1" +PPN_PROC_BUFR="1" +PPN_RUN_REF2TTEN="1" +PPN_RUN_NOVARCLDANL="1" + # # Walltimes. # @@ -1185,6 +1201,17 @@ WTIME_MAKE_LBCS="00:30:00" WTIME_RUN_FCST="04:30:00" WTIME_RUN_POST="00:15:00" WTIME_RUN_ANAL="00:30:00" +WTIME_PROC_RADAR="00:10:00" +WTIME_PROC_LIGHTNING="00:10:00" +WTIME_PROC_BUFR="00:10:00" +WTIME_RUN_REF2TTEN="00:10:00" +WTIME_RUN_NOVARCLDANL="00:20:00" +# +# Memory. +# +MEMO_RUN_REF2TTEN="10G" +MEMO_RUN_NOVARCLDANL="20G" + # #----------------------------------------------------------------------- # @@ -1278,3 +1305,17 @@ HALO_BLEND=0 #----------------------------------------------------------------------- # GWD_RRFS_v1beta_BASEDIR="" + +#----------------------------------------------------------------------- +# +# Parameters for observation preprocess. +# MM?: minute from the hour that the NSSL mosaic files will be searched for +# data preprocess +# +#----------------------------------------------------------------------- +# +MM0="00" +MM1="01" +MM2="02" +MM3="03" + diff --git a/ush/generate_FV3LAM_wflow.sh b/ush/generate_FV3LAM_wflow.sh index f2b0b7ed1..ac51c8457 100755 --- a/ush/generate_FV3LAM_wflow.sh +++ b/ush/generate_FV3LAM_wflow.sh @@ -182,6 +182,15 @@ settings="\ 'make_lbcs_tn': ${MAKE_LBCS_TN} 'run_fcst_tn': ${RUN_FCST_TN} 'run_post_tn': ${RUN_POST_TN} + + + 'anal_gsi_input': ${ANAL_GSI_INPUT_TN} + 'anal_gsi_resta': ${ANAL_GSI_RESTA_TN} + 'process_radarref': ${PROCESS_RADAR_REF_TN} + 'process_lightning': ${PROCESS_LIGHTNING_TN} + 'process_bufr': ${PROCESS_BUFR_TN} + 'radar_refl2tten': ${RADAR_REFL2TTEN_TN} + 'cldanl_novar': ${CLDANL_NOVAR_TN} # # Number of nodes to use for each task. # @@ -195,6 +204,11 @@ settings="\ 'nnodes_run_fcst': ${NNODES_RUN_FCST} 'nnodes_run_anal': ${NNODES_RUN_ANAL} 'nnodes_run_post': ${NNODES_RUN_POST} + 'nnodes_proc_radar': ${NNODES_PROC_RADAR} + 'nnodes_proc_lightning': ${NNODES_PROC_LIGHTNING} + 'nnodes_proc_bufr': ${NNODES_PROC_BUFR} + 'nnodes_run_ref2tten': ${NNODES_RUN_REF2TTEN} + 'nnodes_run_novarcldanl': ${NNODES_RUN_NOVARCLDANL} # # Number of cores used for a task # @@ -215,6 +229,11 @@ settings="\ 'ppn_run_fcst': ${PPN_RUN_FCST} 'ppn_run_anal': ${PPN_RUN_ANAL} 'ppn_run_post': ${PPN_RUN_POST} + 'ppn_proc_radar': ${PPN_PROC_RADAR} + 'ppn_proc_lightning': ${PPN_PROC_LIGHTNING} + 'ppn_proc_bufr': ${PPN_PROC_BUFR} + 'ppn_run_ref2tten': ${PPN_RUN_REF2TTEN} + 'ppn_run_novarcldanl': ${PPN_RUN_NOVARCLDANL} # # Maximum wallclock time for each task. # @@ -228,6 +247,16 @@ settings="\ 'wtime_run_fcst': ${WTIME_RUN_FCST} 'wtime_run_anal': ${WTIME_RUN_ANAL} 'wtime_run_post': ${WTIME_RUN_POST} + 'wtime_proc_radar': ${WTIME_PROC_RADAR} + 'wtime_proc_lightning': ${WTIME_PROC_LIGHTNING} + 'wtime_proc_bufr': ${WTIME_PROC_BUFR} + 'wtime_run_ref2tten': ${WTIME_RUN_REF2TTEN} + 'wtime_run_novarcldanl': ${WTIME_RUN_NOVARCLDANL} +# +# Maximum memory for each task. +# + 'memo_run_ref2tten': ${MEMO_RUN_REF2TTEN} + 'memo_run_novarcldanl': ${MEMO_RUN_NOVARCLDANL} # # Flags that specify whether to run the preprocessing tasks. # @@ -833,7 +862,7 @@ settings="\ 'make_nh' : false, 'na_init' : 0, 'nggps_ic' : false, - 'no_dycore' : true, + 'mountain' : true, 'warm_start' : true, }" diff --git a/ush/setup.sh b/ush/setup.sh index 625a08069..15d158209 100755 --- a/ush/setup.sh +++ b/ush/setup.sh @@ -2553,6 +2553,7 @@ FV3_NML_ENSMEM_FPS=( $( printf "\"%s\" " "${FV3_NML_ENSMEM_FPS[@]}" )) # for data assimilation OBSPATH="/public/data/grids/rap/obs" OBSPATH_NSSLMOSIAC="/public/data/radar/mrms" +LIGHTNING_ROOT="/public/data/lightning" ENKF_FCST="/lfs4/BMC/public/data/grids/enkf/atm_v15" FIXgsi="${FIXrrfs}/fix_gsi" diff --git a/ush/templates/FV3LAM_wflow.xml b/ush/templates/FV3LAM_wflow.xml index 3f0ccf733..6bc2e403a 100644 --- a/ush/templates/FV3LAM_wflow.xml +++ b/ush/templates/FV3LAM_wflow.xml @@ -32,10 +32,13 @@ Workflow task names. - - - - + + + + + + + @@ -87,6 +90,9 @@ tasks; and the "FCST" type is used for the RUN_FCST_TN task. + + + @Y@m@d@H@M'> @Y@m@d@H@M'> @@ -392,6 +398,96 @@ MODULES_RUN_TASK_FP script. {%- if do_dacycle %} + + + + &RSRV_DEFAULT; + &WALL_LIMIT_ANAL; + + &LOAD_MODULES_RUN_TASK_FP; "&RUN_ANAL_TN;" "&JOBSDIR;/JREGIONAL_PROCESS_RADARREF" + + {{ nnodes_proc_radar }}:ppn={{ ppn_proc_radar }}; + {{ wtime_proc_radar }} + &NCORES_PER_NODE; + &PROCESS_RADAR_REF_TN; + &LOGDIR;/&PROCESS_RADAR_REF_TN;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + PDY@Y@m@d + CDATE@Y@m@d@H + CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H + + + + @Y@m@d@H@M00 + + + + + + + + + &RSRV_DEFAULT; + &WALL_LIMIT_ANAL; + + &LOAD_MODULES_RUN_TASK_FP; "&RUN_ANAL_TN;" "&JOBSDIR;/JREGIONAL_PROCESS_LIGHTNING" + + {{ nnodes_proc_lightning }}:ppn={{ ppn_proc_lightning }}; + {{ wtime_proc_lightning }} + &NCORES_PER_NODE; + &PROCESS_LIGHTNING_TN; + &LOGDIR;/&PROCESS_LIGHTNING_TN;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + PDY@Y@m@d + CDATE@Y@m@d@H + CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H + + + + @Y@m@d@H@M00 + + + + + + + + + &RSRV_DEFAULT; + &WALL_LIMIT_ANAL; + + &LOAD_MODULES_RUN_TASK_FP; "&RUN_ANAL_TN;" "&JOBSDIR;/JREGIONAL_PROCESS_BUFR" + + {{ nnodes_proc_bufr }}:ppn={{ ppn_proc_bufr }}; + {{ wtime_proc_bufr }} + &NCORES_PER_NODE; + &PROCESS_BUFR_TN; + &LOGDIR;/&PROCESS_BUFR_TN;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + PDY@Y@m@d + CDATE@Y@m@d@H + CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H + + + + @Y@m@d@H@M00 + + + + + + + + &RSRV_DEFAULT; + &WALL_LIMIT_ANAL; + + &LOAD_MODULES_RUN_TASK_FP; "&RUN_ANAL_TN;" "&JOBSDIR;/JREGIONAL_REFL2TTEN" + {{ nnodes_run_ref2tten }}:ppn={{ ppn_run_ref2tten }} + {{ wtime_run_ref2tten }} + {{ memo_run_ref2tten }} + &NCORES_PER_NODE; + &RADAR_REFL2TTEN_TN; + &LOGDIR;/&RADAR_REFL2TTEN_TN;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + PDY@Y@m@d + CDATE@Y@m@d@H + CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H + + + + + + + + + + + + + + + + + + + + &RSRV_DEFAULT; + &WALL_LIMIT_ANAL; + + &LOAD_MODULES_RUN_TASK_FP; "&RUN_ANAL_TN;" "&JOBSDIR;/JREGIONAL_NOVARCLD" + {{ nnodes_run_novarcldanl }}:ppn={{ ppn_run_novarcldanl }} + {{ wtime_run_novarcldanl }} + {{ memo_run_novarcldanl }} + &NCORES_PER_NODE; + &CLDANL_NOVAR_TN; + &LOGDIR;/&CLDANL_NOVAR_TN;_@Y@m@d@H.log + + GLOBAL_VAR_DEFNS_FP&GLOBAL_VAR_DEFNS_FP; + PDY@Y@m@d + CDATE@Y@m@d@H + CYCLE_DIR&CYCLE_BASEDIR;/@Y@m@d@H + + + + + + + + + + + + + {%- endif %}