Skip to content
Open
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,6 @@ export RUN=${RUN:-chem}
export VERIF_CASE=${VERIF_CASE:-grid2obs}
export MODELNAME=${MODELNAME:-rrfs}

export VDATE=${VDATE:-$(date --date="3 days ago" +%Y%m%d)}
echo "VDATE=${VDATE}"

export DATA_TYPE=aeronet_aod

export COMIN=/lfs/h2/emc/vpppg/noscrub/$USER/$NET/${evs_ver_2d}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,6 @@ export RUN=${RUN:-chem}
export VERIF_CASE=${VERIF_CASE:-grid2obs}
export MODELNAME=${MODELNAME:-rrfs}

export VDATE=${VDATE:-$(date --date="3 days ago" +%Y%m%d)}
echo "VDATE=${VDATE}"

export DATA_TYPE=airnow_pm10

export COMIN=/lfs/h2/emc/vpppg/noscrub/$USER/$NET/${evs_ver_2d}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,6 @@ export RUN=${RUN:-chem}
export VERIF_CASE=${VERIF_CASE:-grid2obs}
export MODELNAME=${MODELNAME:-rrfs}

export VDATE=${VDATE:-$(date --date="3 days ago" +%Y%m%d)}
echo "VDATE=${VDATE}"

export DATA_TYPE=airnow_pm25

export COMIN=/lfs/h2/emc/vpppg/noscrub/$USER/$NET/${evs_ver_2d}
Expand Down
12 changes: 6 additions & 6 deletions dev/modulefiles/cam/cam_plots.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,16 @@ module load libjpeg/${libjpeg_ver}
module load libpng/${libpng_ver}
module load zlib/${zlib_ver}
module load jasper/${jasper_ver}
module load udunits/${udunits_ver}
##module load udunits/${udunits_ver}
module load gsl/${gsl_ver}
module load netcdf/${netcdf_ver}
module load nco/${nco_ver}
## module load netcdf/${netcdf_ver}
##module load nco/${nco_ver}
module load prod_util/${prod_util_ver}
module load cdo/${cdo_ver}
##module load cdo/${cdo_ver}
module load grib_util/${grib_util_ver}
module load wgrib2/${wgrib2_ver}
module load proj/${proj_ver}
module load geos/${geos_ver}
##module load proj/${proj_ver}
##module load geos/${geos_ver}
module load imagemagick/${imagemagick_ver}
module load met/${met_ver}
module load metplus/${metplus_ver}
Expand Down
6 changes: 3 additions & 3 deletions dev/modulefiles/cam/cam_prep.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ module load libjpeg/${libjpeg_ver}
module load libpng/${libpng_ver}
module load zlib/${zlib_ver}
module load jasper/${jasper_ver}
module load udunits/${udunits_ver}
##module load udunits/${udunits_ver}
module load gsl/${gsl_ver}
module load netcdf/${netcdf_ver}
module load nco/${nco_ver}
##module load nco/${nco_ver}
module load prod_util/${prod_util_ver}
module load cdo/${cdo_ver}
##module load cdo/${cdo_ver}
module load grib_util/${grib_util_ver}
module load wgrib2/${wgrib2_ver}
module load met/${met_ver}
Expand Down
10 changes: 5 additions & 5 deletions dev/modulefiles/cam/cam_stats.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,17 @@ module load libjpeg/${libjpeg_ver}
module load libpng/${libpng_ver}
module load zlib/${zlib_ver}
module load jasper/${jasper_ver}
module load udunits/${udunits_ver}
##module load udunits/${udunits_ver}
module load gsl/${gsl_ver}
module load netcdf/${netcdf_ver}
module load nco/${nco_ver}
## module load netcdf/${netcdf_ver}
##module load nco/${nco_ver}
module load prod_util/${prod_util_ver}
module load cdo/${cdo_ver}
##module load cdo/${cdo_ver}
module load grib_util/${grib_util_ver}
module load wgrib2/${wgrib2_ver}
module load met/${met_ver}
module load metplus/${metplus_ver}
module load bufr/${bufr_ver}
##module load bufr/${bufr_ver}

module list
set -x
9 changes: 5 additions & 4 deletions jobs/JEVS_CAM_PREP
Original file line number Diff line number Diff line change
Expand Up @@ -122,12 +122,13 @@ export COMINrrfs=${COMINrrfs:-$(compath.py ${envir}/com/rrfs/${rrfs_ver})}
if [ "${RUN}" == "chem" ]; then
export DCOMINairnow=${DCOMINairnow:-${DCOMROOT}}
export DCOMINaeronet=${DCOMINaeronet:-${DCOMROOT}}
export COMOUTprep=${COMOUTprep:-${COMOUT}/${RUN}.${INITDATE}/${MODELNAME}}

mkdir -p ${COMOUTprep}
export COMOUT=${COMOUT:-$(compath.py -o ${NET}/${evs_ver})}
export COMOUTprepmdl=${COMOUTprepmdl:-${COMOUT}/${STEP}/${COMPONENT}/${RUN}.${INITDATE}/${MODELNAME}}
export COMOUTprepobs=${COMOUTprepobs:-${COMOUT}/${STEP}/${COMPONENT}/${RUN}.${INITDATE}/obs}

# alternative choice is an option different from aqobs
export airnow_hourly_type=${airnow_hourly_type:-aqobs}
export HOURLY_NCOL=${HOURLY_NCOL:-34}
export restart_mode=${restart_mode:-YES}

else
Expand Down Expand Up @@ -155,7 +156,7 @@ fi
# Execute the script
####################################
if [ "${RUN}" == "chem" ]; then
${HOMEevs}/scripts/${STEP}/${COMPONENT}/exevs_${COMPONENT}_${MODELNAME}_${RUN}_${VERIF_CASE}_${STEP}.sh
${HOMEevs}/scripts/${STEP}/${COMPONENT}/exevs_${STEP}_${COMPONENT}_${MODELNAME}_${RUN}_${VERIF_CASE}.sh
else
$HOMEevs/scripts/$STEP/$COMPONENT/exevs_${MODELNAME}_${VERIF_CASE}_${STEP}.sh
fi
Expand Down
2 changes: 1 addition & 1 deletion jobs/JEVS_CAM_STATS
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ if [ $VERIF_CASE = radar ] || [ $VERIF_CASE = severe ]; then
elif [ $MODELNAME = nam_firewxnest ] || [ $MODELNAME = rrfs_firewxnest ]; then
$HOMEevs/scripts/${STEP}/${COMPONENT}/exevs_${COMPONENT}_${MODELNAME}_${VERIF_CASE}_${STEP}.sh
elif [ "${RUN}" == "chem" ]; then
${HOMEevs}/scripts/${STEP}/${COMPONENT}/exevs_${COMPONENT}_${MODELNAME}_${RUN}_${VERIF_CASE}_${STEP}.sh
${HOMEevs}/scripts/${STEP}/${COMPONENT}/exevs_${STEP}_${COMPONENT}_${MODELNAME}_${RUN}_${VERIF_CASE}.sh
else
$HOMEevs/scripts/${STEP}/${COMPONENT}/exevs_${MODELNAME}_${VERIF_CASE}_${STEP}.sh
fi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,6 @@ POINT_STAT_MESSAGE_TYPE =
[filename_templates]
FCST_POINT_STAT_INPUT_TEMPLATE = {ENV[RUN]}.{init?fmt=%Y%m%d}/{ENV[MODELNAME]}/{ENV[mdl_cyc]}/{ENV[MODELNAME]}.t{ENV[mdl_cyc]}z.prslev.f{lead?fmt=%3H}.reduced.grib2

OBS_POINT_STAT_INPUT_TEMPLATE = {ENV[RUN]}.{valid?fmt=%Y%m%d}/{ENV[MODELNAME]}/{ENV[ObsSrc]}_All_{valid?fmt=%Y%m%d}_lev15.nc
OBS_POINT_STAT_INPUT_TEMPLATE = {ENV[RUN]}.{valid?fmt=%Y%m%d}/obs/{ENV[ObsSrc]}_All_{valid?fmt=%Y%m%d}_lev15.nc

POINT_STAT_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d}.stat
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ OBS_VAR1_NAME= PM10
OBS_VAR1_LEVELS= A1
OBS_VAR1_OPTIONS = message_type = "AIRNOW_HOURLY_AQOBS"; censor_thresh = [ <=0.0 ]; censor_val=[ 0.0 ]; set_attr_units = "10^-6g/m^3";

## POINT_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [ >5, >10, >15, >20, >25, >30, >35, >40, >45, >50, >55, >60, >65 ]; duplicate_flag = UNIQUE; obs_summary = NEAREST;
POINT_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [ >5, >10, >15, >20, >25, >30, >35, >40, >45, >50, >55, >60, >65 ]; duplicate_flag = UNIQUE;
## POINT_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [ >10, >20, >30, >40, >60, >80, >100, >200 ]; duplicate_flag = UNIQUE; obs_summary = NEAREST;
POINT_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [ >10, >20, >30, >40, >60, >80, >100, >200 ]; duplicate_flag = UNIQUE;

## POINT_STAT_MET_CONFIG_OVERRIDES = duplicate_flag = UNIQUE; obs_summary = NEAREST; {ENV[met_config_overrides]}

Expand All @@ -89,6 +89,6 @@ POINT_STAT_MESSAGE_TYPE =

FCST_POINT_STAT_INPUT_TEMPLATE = {ENV[RUN]}.{init?fmt=%Y%m%d}/{ENV[MODELNAME]}/{ENV[mdl_cyc]}/{ENV[MODELNAME]}.t{ENV[mdl_cyc]}z.prslev.f{lead?fmt=%3H}.reduced.grib2

OBS_POINT_STAT_INPUT_TEMPLATE = {ENV[RUN]}.{valid?fmt=%Y%m%d?shift=-3600}/{ENV[MODELNAME]}/{ENV[ObsSrc]}_{ENV[HOURLY_INPUT_TYPE]}_{valid?fmt=%Y%m%d%H?shift=-3600}.nc
OBS_POINT_STAT_INPUT_TEMPLATE = {ENV[RUN]}.{valid?fmt=%Y%m%d?shift=-3600}/obs/{ENV[ObsSrc]}_{ENV[HOURLY_INPUT_TYPE]}_{valid?fmt=%Y%m%d%H?shift=-3600}.nc

POINT_STAT_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d}.stat
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ OBS_VAR1_NAME= PM25
OBS_VAR1_LEVELS= A1
OBS_VAR1_OPTIONS = message_type = "AIRNOW_HOURLY_AQOBS"; censor_thresh = [ <=0.0 ]; censor_val=[ 0.0 ]; set_attr_units = "10^-6g/m^3";

## POINT_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [ >5, >10, >15, >20, >25, >30, >35, >40, >45, >50, >55, >60, >65 ]; duplicate_flag = UNIQUE; obs_summary = NEAREST;
POINT_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [ >5, >10, >15, >20, >25, >30, >35, >40, >45, >50, >55, >60, >65 ]; duplicate_flag = UNIQUE;
## POINT_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [ >5, >10, >15, >20, >25, >35, >40, >50, >60, >80, >100 ]; duplicate_flag = UNIQUE; obs_summary = NEAREST;
POINT_STAT_MET_CONFIG_OVERRIDES = cat_thresh = [ >5, >10, >15, >20, >25, >35, >40, >50, >60, >80, >100 ]; duplicate_flag = UNIQUE;

## POINT_STAT_MET_CONFIG_OVERRIDES = duplicate_flag = UNIQUE; obs_summary = NEAREST; {ENV[met_config_overrides]}

Expand All @@ -89,6 +89,6 @@ POINT_STAT_MESSAGE_TYPE =

FCST_POINT_STAT_INPUT_TEMPLATE = {ENV[RUN]}.{init?fmt=%Y%m%d}/{ENV[MODELNAME]}/{ENV[mdl_cyc]}/{ENV[MODELNAME]}.t{ENV[mdl_cyc]}z.prslev.f{lead?fmt=%3H}.reduced.grib2

OBS_POINT_STAT_INPUT_TEMPLATE = {ENV[RUN]}.{valid?fmt=%Y%m%d?shift=-3600}/{ENV[MODELNAME]}/{ENV[ObsSrc]}_{ENV[HOURLY_INPUT_TYPE]}_{valid?fmt=%Y%m%d%H?shift=-3600}.nc
OBS_POINT_STAT_INPUT_TEMPLATE = {ENV[RUN]}.{valid?fmt=%Y%m%d?shift=-3600}/obs/{ENV[ObsSrc]}_{ENV[HOURLY_INPUT_TYPE]}_{valid?fmt=%Y%m%d%H?shift=-3600}.nc

POINT_STAT_OUTPUT_TEMPLATE = {valid?fmt=%Y%m%d}.stat
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
### Original Author : Ho-Chun Huang
###
### Change Logs:
###
### 01/16/2024 Ho-Chun Huang
### 04/30/2025 Ho-Chun Huang Update warning message for dcom input obs
### and Remove sendmail for missing FCST model output
###
########################################################################
#
Expand Down Expand Up @@ -45,7 +45,7 @@ for OBTTYPE in ${obstype}; do
if [ "${OBTTYPE}" == "aeronet" ]; then
flag_process_ascii_aeronet="YES"
if [ "${check_restart}" == "YES" ]; then ## Check ASCII2NC AERONET AOD file for RESTART ability
checkfile=${COMOUTprep}/${OBTTYPE}_All_${INITDATE}_lev15.nc
checkfile=${COMOUTprepobs}/${OBTTYPE}_All_${INITDATE}_lev15.nc
if [ -s ${checkfile} ]; then
msg=$(ncdump -h ${checkfile} 1> /dev/null 2>&1 ; err=$? ; echo ${err} )
if [ ${msg} -eq 0 ]; then flag_process_ascii_aeronet="NO"; fi
Expand All @@ -68,33 +68,29 @@ for OBTTYPE in ${obstype}; do
if [ ${SENDCOM} = "YES" ]; then
cpfile=${finalprep}/${OBTTYPE}_All_${INITDATE}_lev15.nc
if [ -e ${cpfile} ]; then
cp -v ${cpfile} ${COMOUTprep}
mkdir -p ${COMOUTprepobs}
cp -v ${cpfile} ${COMOUTprepobs}
fi
fi
else
echo "DEBUG: can not find ${prep_config_file}"
fi
else
if [ ${SENDMAIL} = "YES" ]; then
echo "DEBUG: There is no valid record to be processed for ${checkfile}" >> ${email_msg}
echo "File in question is ${checkfile}" >> ${email_msg}
echo "WARNING: There is no valid record to be processed, ${MODELNAME} ${RUN} ${STEP} will skip ${checkfile}" >> ${email_msg}
echo "==============" >> ${email_msg}
flag_send_message=YES
fi
echo "DEBUG: There is no valid record to be processed for ${checkfile}"
echo "WARNING: There is no valid record to be processed, ${MODELNAME} ${RUN} ${STEP} will skip ${checkfile}"
fi
else
if [ "${flag_process_ascii_aeronet}" == "NO" ]; then
echo "DEBUG: ASCII2NC AERONET AOD files has been found. RESTART Skip ASCII2NC processing"
elif [ ! -s ${checkfile} ]; then
if [ ${SENDMAIL} = "YES" ]; then
echo "DEBUG: No AEORNET Level 1.5 data was available for valid date ${INITDATE}" >> ${email_msg}
echo "DEBUG: Missing file is ${checkfile}" >> ${email_msg}
echo "WARNING: ${checkfile} is missing, ${MODELNAME} ${RUN} ${STEP} will skip this file for valid date ${INITDATE}" >> ${email_msg}
echo "==============" >> ${email_msg}
flag_send_message=YES
fi
echo "DEBUG: No AEORNET Level 1.5 data was available for valid date ${INITDATE}"
echo "DEBUG: Missing file is ${checkfile}"
echo "WARNING: ${checkfile} is missing, ${MODELNAME} ${RUN} ${STEP} will skip this file for valid date ${INITDATE}"
fi
fi
elif [ "${OBTTYPE}" == "airnow" ]; then
Expand All @@ -115,13 +111,13 @@ for OBTTYPE in ${obstype}; do

if [ "${check_restart}" == "YES" ]; then ## Check ASCII2NC AIRNOW files for RESTART ability
checkfile="${OBTTYPE}_${HOURLY_OUTPUT_TYPE}_*.nc"
obs_file_count=$(find ${COMOUTprep} -name ${checkfile} | wc -l )
obs_file_count=$(find ${COMOUTprepobs} -name ${checkfile} | wc -l )
if [ ${obs_file_count} -eq 0 ]; then
let ic=0
elif [ ${obs_file_count} -eq ${total_num_file} ]; then
## check corrupted ASCII2NC file
vldhr=$(printf %2.2d ${endvhr})
checkfile="${COMOUTprep}/${OBTTYPE}_${HOURLY_OUTPUT_TYPE}_${INITDATE}${vldhr}.nc"
checkfile="${COMOUTprepobs}/${OBTTYPE}_${HOURLY_OUTPUT_TYPE}_${INITDATE}${vldhr}.nc"
msg=$(ncdump -h ${checkfile} 1> /dev/null 2>&1 ; err=$? ; echo ${err} )
if [ ${msg} -eq 0 ]; then
let ic=${endvhr}+1 ## skip current AIRNOW Processing
Expand Down Expand Up @@ -156,30 +152,28 @@ for OBTTYPE in ${obstype}; do
export err=$?; err_chk
if [ ${SENDCOM} = "YES" ]; then
cpfile=${finalprep}/airnow_hourly_aqobs_${INITDATE}${VHOUR}.nc
if [ -e ${cpfile} ]; then cp -v ${cpfile} ${COMOUTprep}; fi
if [ -e ${cpfile} ]; then
mkdir -p ${COMOUTprepobs}
cp -v ${cpfile} ${COMOUTprepobs}
fi
fi
else
echo "DEBUG: can not find ${prep_config_file}"
fi
else
if [ ${SENDMAIL} = "YES" ]; then
echo "DEBUG: There is no valid record to be processed for ${checkfile}" >> ${email_msg}
echo "File in question is ${checkfile}" >> ${email_msg}
echo "WARNING: There is no valid record to be processed, ${MODELNAME} ${RUN} ${STEP} will skip the ${checkfile}" >> ${email_msg}
echo "==============" >> ${email_msg}
flag_send_message=YES
fi
echo "DEBUG: There is no valid record to be processed for ${checkfile}"
echo "WARNING: There is no valid record to be processed, ${MODELNAME} ${RUN} ${STEP} will skip the ${checkfile}"
fi
else
if [ ${SENDMAIL} = "YES" ]; then
echo "DEBUG: No AIRNOW ASCII data was available for valid date ${INITDATE}${vldhr}" >> ${email_msg}
echo "Missing file is ${checkfile}" >> ${email_msg}
echo "WARNING: ${checkfile} is missing, ${MODELNAME} ${RUN} ${STEP} will skip this file for valid date ${INITDATE}" >> ${email_msg}
echo "==============" >> ${email_msg}
flag_send_message=YES
fi

echo "DEBUG: No AIRNOW ASCII data was available for valid date ${INITDATE}${vldhr}"
echo "DEBUG: Missing file is ${checkfile}"
echo "WARNING: ${checkfile} is missing, ${MODELNAME} ${RUN} ${STEP} will skip this file for valid date ${INITDATE}"
fi
((ic++))
done
Expand All @@ -201,20 +195,22 @@ match_aod_2="entire atmosphere"
#
match_pm25_1="MASSDEN"
match_pm25_2="8 m above ground"
match_pm25_3="aerosol=Missing"
match_pm25_3="aerosol=Total Aerosol"
match_pm25_4="aerosol_size <2.5e-06"
match_pm25_sp="aerosol=Total Aerosol"
#
match_pm10_1="MASSDEN"
match_pm10_2="8 m above ground"
match_pm10_3="aerosol=Missing"
match_pm10_3="aerosol=Total Aerosol"
match_pm10_4="aerosol_size <1e-05"
match_pm10_sp="aerosol=Total Aerosol"
#
declare -a cyc_opt=( 00 06 12 18 )
let inc=1
for mdl_cyc in "${cyc_opt[@]}"; do
com_rrfs=${COMINrrfs}/${MODELNAME}.${INITDATE}/${mdl_cyc}
if [ -d ${com_rrfs} ]; then
prep_rrfs=${COMOUTprep}/${mdl_cyc}
prep_rrfs=${COMOUTprepmdl}/${mdl_cyc}
if [ ! -d ${prep_rrfs} ]; then mkdir -p ${prep_rrfs}; fi
let hour_now=1
let max_hour=84
Expand Down Expand Up @@ -259,30 +255,34 @@ for mdl_cyc in "${cyc_opt[@]}"; do
if [ -e extract_pm10 ]; then /bin/rm -rf extract_pm10; fi
wgrib2 -match "${match_aod_1}" -match "${match_aod_2}" ${check_full_file} -grib extract_aod
wgrib2 -match "${match_pm25_1}" -match "${match_pm25_2}" -match "${match_pm25_3}" -match "${match_pm25_4}" ${check_full_file} -grib extract_pm25
wgrib2 extract_pm25 > extract_pm25_rec
number_of_record=$(wc -l extract_pm25_rec | awk -F" " '{print $1}')
if [ "${number_of_record}" == "0" ]; then
wgrib2 -match "${match_pm25_1}" -match "${match_pm25_2}" -match "${match_pm25_sp}" -match "${match_pm25_4}" ${check_full_file} -grib extract_pm25
fi
wgrib2 extract_pm25 > extract_pm25_rec
number_of_record=$(wc -l extract_pm25_rec | awk -F" " '{print $1}')
echo "DEBUG: Number of extracted record is ${number_of_record} for file extract_pm25"
wgrib2 -match "${match_pm10_1}" -match "${match_pm10_2}" -match "${match_pm10_3}" -match "${match_pm10_4}" ${check_full_file} -grib extract_pm10
wgrib2 extract_pm10 > extract_pm10_rec
number_of_record=$(wc -l extract_pm10_rec | awk -F" " '{print $1}')
if [ "${number_of_record}" == "0" ]; then
wgrib2 -match "${match_pm10_1}" -match "${match_pm10_2}" -match "${match_pm10_sp}" -match "${match_pm10_4}" ${check_full_file} -grib extract_pm10
fi
wgrib2 extract_pm10 > extract_pm10_rec
number_of_record=$(wc -l extract_pm10_rec | awk -F" " '{print $1}')
echo "DEBUG: Number of extracted record is ${number_of_record} for file extract_pm10"
cat extract_pm25 extract_pm10 extract_aod > ${reduced_rec_grib2}
if [ ${SENDCOM} = "YES" ]; then
cp -v ${reduced_rec_grib2} ${prep_rrfs}
fi
else
if [ ${SENDMAIL} = "YES" ]; then
echo "DEBUG: Can not find RRFS aerosol forecast grib2 output" >> ${email_msg}
echo "Missing file is ${check_full_file}" >> ${email_msg}
echo "==============" >> ${email_msg}
flag_send_message=YES
fi
echo "DEBUG: Can not find RRFS aerosol forecast grib2 output"
echo "Missing file is ${check_full_file}"
echo "FCST_OUTPUT_MISSING: RRFS-smoke and dust forecast file ${check_full_file} is missing. The missing RRFS-smoke and dust forecast file will be skipped"
fi
((hour_now+=${inc}))
done
else
if [ ${SENDMAIL} = "YES" ]; then
echo "DEBUG: Can not find RRFS output directory ${com_rrfs}" >> ${email_msg}
echo "==============" >> ${email_msg}
flag_send_message=YES
fi
echo "DEBUG: Can not find RRFS output directory ${com_rrfs}"
echo "FCST_OUTPUT_MISSING: RRFS-smoke and dust output directory ${com_rrfs} is missing. The missing RRFS-smoke and dust forecast files will be skipped"
fi
done
#
Expand Down
Loading