From e96e10227998bd235ea746cee6934ba31fb4b6ed Mon Sep 17 00:00:00 2001
From: "Chan-Hoo.Jeon-NOAA" <60152248+chan-hoo@users.noreply.github.com>
Date: Sat, 25 Feb 2023 06:57:13 -0500
Subject: [PATCH] [develop] Add RAVE data processing to fire_emission task for
AQM (#628)
* Add RAVE data processing to fire_emission task
* turn off save options by default
* remove typo
* add file check to aqm_lbcs task
* update hash of upp
---
Externals.cfg | 4 +-
jobs/JREGIONAL_FIRE_EMISSION | 10 ++-
.../tasks/hera/fire_emission.local.lua | 3 +-
.../tasks/wcoss2/fire_emission.local.lua | 5 ++
parm/FV3LAM_wflow.xml | 7 +-
scripts/exregional_aqm_lbcs.sh | 19 +++-
scripts/exregional_fire_emission.sh | 90 ++++++++++++++++---
ush/config.aqm.community.yaml | 5 +-
ush/config.aqm.nco.realtime.yaml | 7 +-
ush/config_defaults.yaml | 10 ++-
ush/machine/hera.yaml | 2 +-
ush/machine/wcoss2.yaml | 2 +-
12 files changed, 132 insertions(+), 32 deletions(-)
diff --git a/Externals.cfg b/Externals.cfg
index a3c5628416..e3c572bead 100644
--- a/Externals.cfg
+++ b/Externals.cfg
@@ -21,7 +21,7 @@ protocol = git
repo_url = https://github.com/NOAA-EMC/UPP
# Specify either a branch name or a hash but not both.
#branch = develop
-hash = a644aaa
+hash = 2b2c84a
local_path = sorc/UPP
required = True
@@ -58,7 +58,7 @@ protocol = git
repo_url = https://github.com/NOAA-EMC/AQM-utils
# Specify either a branch name or a hash but not both.
#branch = develop
-hash = 5ee63d2
+hash = e078c70
local_path = sorc/AQM-utils
required = True
diff --git a/jobs/JREGIONAL_FIRE_EMISSION b/jobs/JREGIONAL_FIRE_EMISSION
index 2196c5dce6..95b53ca4ff 100755
--- a/jobs/JREGIONAL_FIRE_EMISSION
+++ b/jobs/JREGIONAL_FIRE_EMISSION
@@ -86,13 +86,21 @@ fi
#
#-----------------------------------------------------------------------
#
+# Set the run directory
+#
+#-----------------------------------------------------------------------
+#
+DATA="${DATA:-${COMIN}${SLASH_ENSMEM_SUBDIR}}"
+mkdir_vrfy -p "${DATA}"
+#
+#-----------------------------------------------------------------------
+#
# Create the directory where the RAVE fire emission files should be stored
#
#-----------------------------------------------------------------------
#
export FIRE_EMISSION_STAGING_DIR="${COMINext}/FIRE_EMISSION"
mkdir_vrfy -p "${FIRE_EMISSION_STAGING_DIR}"
-cd_vrfy ${FIRE_EMISSION_STAGING_DIR}
#
#-----------------------------------------------------------------------
#
diff --git a/modulefiles/tasks/hera/fire_emission.local.lua b/modulefiles/tasks/hera/fire_emission.local.lua
index d1afe2451e..0260ca57cf 100644
--- a/modulefiles/tasks/hera/fire_emission.local.lua
+++ b/modulefiles/tasks/hera/fire_emission.local.lua
@@ -1,2 +1,3 @@
load("hpss")
-load("miniconda_regional_workflow")
+load("miniconda_online-cmaq")
+load(pathJoin("nco", os.getenv("nco_ver") or "4.9.3"))
diff --git a/modulefiles/tasks/wcoss2/fire_emission.local.lua b/modulefiles/tasks/wcoss2/fire_emission.local.lua
index 3370fa018b..bbff3a76ba 100644
--- a/modulefiles/tasks/wcoss2/fire_emission.local.lua
+++ b/modulefiles/tasks/wcoss2/fire_emission.local.lua
@@ -1 +1,6 @@
load("python_regional_workflow")
+
+load(pathJoin("udunits", os.getenv("udunits_ver")))
+load(pathJoin("gsl", os.getenv("gsl_ver")))
+load(pathJoin("netcdf", os.getenv("netcdf_ver")))
+load(pathJoin("nco", os.getenv("nco_ver")))
diff --git a/parm/FV3LAM_wflow.xml b/parm/FV3LAM_wflow.xml
index 7eb97c4baa..efe0da27fc 100644
--- a/parm/FV3LAM_wflow.xml
+++ b/parm/FV3LAM_wflow.xml
@@ -452,10 +452,10 @@ MODULES_RUN_TASK_FP script.
-->
- {%- if do_real_time %}
- &RSRV_DEFAULT;
- {%- else %}
+ {%- if do_aqm_save_fire %}
&RSRV_HPSS;
+ {%- else %}
+ &RSRV_DEFAULT;
{%- endif %}
&LOAD_MODULES_RUN_TASK_FP; "&TN_FIRE_EMISSION;" "&JOBSdir;/JREGIONAL_FIRE_EMISSION"
{{ nnodes_fire_emission }}:ppn={{ ppn_fire_emission }}
@@ -478,6 +478,7 @@ MODULES_RUN_TASK_FP script.
cyc@H
subcyc@M
LOGDIR&LOGDIR;
+ SLASH_ENSMEM_SUBDIR{{ slash_ensmem_subdir }}
{%- endif %}
{%- if run_task_point_source %}
diff --git a/scripts/exregional_aqm_lbcs.sh b/scripts/exregional_aqm_lbcs.sh
index 242af60ec6..8745ae5c01 100755
--- a/scripts/exregional_aqm_lbcs.sh
+++ b/scripts/exregional_aqm_lbcs.sh
@@ -103,7 +103,7 @@ if [ "${FCST_LEN_HRS}" = "-1" ]; then
done
fi
LBC_SPEC_FCST_HRS=()
-for i_lbc in $(seq ${LBC_SPEC_INTVL_HRS} ${LBC_SPEC_INTVL_HRS} $(( FCST_LEN_HRS+LBC_SPEC_INTVL_HRS )) ); do
+for i_lbc in $(seq ${LBC_SPEC_INTVL_HRS} ${LBC_SPEC_INTVL_HRS} ${FCST_LEN_HRS} ); do
LBC_SPEC_FCST_HRS+=("$i_lbc")
done
@@ -149,12 +149,23 @@ if [ ${DO_AQM_GEFS_LBCS} = "TRUE" ]; then
AQM_GEFS_FILE_CYC=${AQM_GEFS_FILE_CYC:-"${CDATE_MOD:8:2}"}
AQM_GEFS_FILE_CYC=$( printf "%02d" "${AQM_GEFS_FILE_CYC}" )
+ AQM_MOFILE_FN="${AQM_GEFS_FILE_PREFIX}.t${AQM_GEFS_FILE_CYC}z.atmf"
if [ ${DO_REAL_TIME} = "TRUE" ]; then
- AQM_MOFILE_FN="${COMINgefs}/gefs.${PDY_MOD}/${AQM_GEFS_FILE_CYC}/chem/sfcsig/${AQM_GEFS_FILE_PREFIX}.t${AQM_GEFS_FILE_CYC}z.atmf"
+ AQM_MOFILE_FP="${COMINgefs}/gefs.${PDY_MOD}/${AQM_GEFS_FILE_CYC}/chem/sfcsig/${AQM_MOFILE_FN}"
else
- AQM_MOFILE_FN="${AQM_GEFS_DIR}/${PDY}/${AQM_GEFS_FILE_CYC}/${AQM_GEFS_FILE_PREFIX}.t${AQM_GEFS_FILE_CYC}z.atmf"
+ AQM_MOFILE_FP="${AQM_GEFS_DIR}/${PDY}/${AQM_GEFS_FILE_CYC}/${AQM_MOFILE_FN}"
fi
+ # Check if GEFS aerosol files exist
+ for hr in 0 ${LBC_SPEC_FCST_HRS[@]}; do
+ fhr=$( printf "%03d" "${hr}" )
+ AQM_MOFILE_FHR_FP="${AQM_MOFILE_FP}${fhr}.nemsio"
+ if [ ! -e "${AQM_MOFILE_FHR_FP}" ]; then
+ print_err_msg_exit "The GEFS file (AQM_MOFILE_FHR_FP) for LBCs does not exist:
+ AQM_MOFILE_FHR_FP = \"${AQM_MOFILE_FHR_FP}\""
+ fi
+ done
+
GEFS_CYC_DIFF=$( printf "%02d" "$(( RUN_CYC - AQM_GEFS_FILE_CYC ))" )
NUMTS="$(( FCST_LEN_HRS / LBC_SPEC_INTVL_HRS + 1 ))"
@@ -163,7 +174,7 @@ cat > gefs2lbc-nemsio.ini <& ${hsi_log_fn} || \
+ hsi_log_fn="log.hsi_put.${yyyymmdd}_${hh}"
+ hsi put ${aqm_fire_file_fn} : ${AQM_FIRE_ARCHV_DIR}/${aqm_fire_file_fn} >& ${hsi_log_fn} || \
print_err_msg_exit "\
-htar file reading operation (\"hsi get ...\") failed. Check the log
-file hsi_log_fn in the staging directory (fire_emission_staging_dir) for
-details:
- fire_emission_staging_dir = \"${FIRE_EMISSION_STAGING_DIR}\"
+htar file writing operation (\"hsi put ...\") failed. Check the log
+file hsi_log_fn in the DATA directory for details:
+ DATA = \"${DATA}\"
hsi_log_fn = \"${hsi_log_fn}\""
+ fi
fi
#
#-----------------------------------------------------------------------
diff --git a/ush/config.aqm.community.yaml b/ush/config.aqm.community.yaml
index a406e86729..d3d3656be8 100644
--- a/ush/config.aqm.community.yaml
+++ b/ush/config.aqm.community.yaml
@@ -10,8 +10,8 @@ workflow:
EXPT_SUBDIR: aqm_community_aqmna13
PREDEF_GRID_NAME: AQM_NA_13km
CCPP_PHYS_SUITE: FV3_GFS_v16
- DATE_FIRST_CYCL: '2023011700'
- DATE_LAST_CYCL: '2023011706'
+ DATE_FIRST_CYCL: '2023021700'
+ DATE_LAST_CYCL: '2023021706'
INCR_CYCL_FREQ: 6
FCST_LEN_HRS: -1
FCST_LEN_CYCL:
@@ -73,6 +73,7 @@ cpl_aqm_parm:
DO_AQM_CANOPY: false
DO_AQM_PRODUCT: true
DO_AQM_SAVE_AIRNOW_HIST: false
+ DO_AQM_SAVE_FIRE: false
AQM_BIO_FILE: BEIS_RRFScmaq_C775.ncf
AQM_DUST_FILE_PREFIX: FENGSHA_p8_10km_inputs
AQM_DUST_FILE_SUFFIX: .nc
diff --git a/ush/config.aqm.nco.realtime.yaml b/ush/config.aqm.nco.realtime.yaml
index 4f842b0bef..ac272a7950 100644
--- a/ush/config.aqm.nco.realtime.yaml
+++ b/ush/config.aqm.nco.realtime.yaml
@@ -10,8 +10,8 @@ workflow:
EXPT_SUBDIR: aqm_nco_aqmna13km
PREDEF_GRID_NAME: AQM_NA_13km
CCPP_PHYS_SUITE: FV3_GFS_v16
- DATE_FIRST_CYCL: '2023013000'
- DATE_LAST_CYCL: '2023013018'
+ DATE_FIRST_CYCL: '2023021700'
+ DATE_LAST_CYCL: '2023021718'
INCR_CYCL_FREQ: 6
FCST_LEN_HRS: -1
FCST_LEN_CYCL:
@@ -89,7 +89,8 @@ cpl_aqm_parm:
DO_AQM_DUST: true
DO_AQM_CANOPY: false
DO_AQM_PRODUCT: true
- DO_AQM_SAVE_AIRNOW_HIST: true
+ DO_AQM_SAVE_AIRNOW_HIST: false
+ DO_AQM_SAVE_FIRE: false
AQM_BIO_FILE: BEIS_RRFScmaq_C775.ncf
AQM_DUST_FILE_PREFIX: FENGSHA_p8_10km_inputs
AQM_DUST_FILE_SUFFIX: .nc
diff --git a/ush/config_defaults.yaml b/ush/config_defaults.yaml
index f1e68a5dab..6ca94784b2 100644
--- a/ush/config_defaults.yaml
+++ b/ush/config_defaults.yaml
@@ -2655,6 +2655,9 @@ cpl_aqm_parm:
# DO_AQM_SAVE_AIRNOW_HIST:
# Save bias-correction airnow training data
#
+ # DO_AQM_SAVE_FIRE:
+ # Archive fire emission file to HPSS
+ #
# AQM_CONFIG_DIR:
# Configuration directory for AQM
#
@@ -2691,6 +2694,9 @@ cpl_aqm_parm:
# AQM_FIRE_FILE_SUFFIX:
# Suffix and extension of AQM FIRE file
#
+ # AQM_FIRE_ARCHV_DIR:
+ # Path to the archive directory for RAVE emission files on HPSS
+ #
# AQM_RC_FIRE_FREQUENCY:
# Fire frequency in aqm.rc
#
@@ -2753,7 +2759,8 @@ cpl_aqm_parm:
DO_AQM_PRODUCT: true
DO_AQM_CHEM_LBCS: true
DO_AQM_GEFS_LBCS: false
- DO_AQM_SAVE_AIRNOW_HIST: true
+ DO_AQM_SAVE_AIRNOW_HIST: false
+ DO_AQM_SAVE_FIRE: false
AQM_CONFIG_DIR: ""
AQM_BIO_DIR: ""
@@ -2771,6 +2778,7 @@ cpl_aqm_parm:
AQM_FIRE_FILE_PREFIX: "GBBEPx_C401GRID.emissions_v003"
AQM_FIRE_FILE_SUFFIX: ".nc"
AQM_FIRE_FILE_OFFSET_HRS: 0
+ AQM_FIRE_ARCHV_DIR: "/path/to/archive/dir/for/RAVE/on/HPSS"
AQM_RC_FIRE_FREQUENCY: "static"
AQM_RC_PRODUCT_FN: "aqm.prod.nc"
diff --git a/ush/machine/hera.yaml b/ush/machine/hera.yaml
index d45d3a1478..c1b0dfe746 100644
--- a/ush/machine/hera.yaml
+++ b/ush/machine/hera.yaml
@@ -43,7 +43,7 @@ cpl_aqm_parm:
AQM_BIO_DIR: /scratch2/NCEPDEV/naqfc/RRFS_CMAQ/aqm/bio
AQM_DUST_DIR: /scratch2/NCEPDEV/naqfc/RRFS_CMAQ/FENGSHA
AQM_CANOPY_DIR: /scratch2/NCEPDEV/naqfc/RRFS_CMAQ/canopy
- AQM_FIRE_DIR: /scratch2/NCEPDEV/naqfc/RRFS_CMAQ/emissions/GSCE/RAVE.in.793/RAVE_RT
+ AQM_FIRE_DIR: /scratch2/NCEPDEV/naqfc/RRFS_CMAQ/RAVE_fire
AQM_LBCS_DIR: /scratch2/NCEPDEV/naqfc/RRFS_CMAQ/LBCS/AQM_NA13km_AM4_v1
AQM_GEFS_DIR: /scratch2/NCEPDEV/naqfc/RRFS_CMAQ/GEFS_DATA
NEXUS_INPUT_DIR: /scratch2/NCEPDEV/naqfc/RRFS_CMAQ/emissions/nexus
diff --git a/ush/machine/wcoss2.yaml b/ush/machine/wcoss2.yaml
index 2559a9ece8..ad4ee2ae95 100644
--- a/ush/machine/wcoss2.yaml
+++ b/ush/machine/wcoss2.yaml
@@ -43,7 +43,7 @@ cpl_aqm_parm:
AQM_BIO_DIR: /lfs/h2/emc/lam/noscrub/RRFS_CMAQ/aqm/bio
AQM_DUST_DIR: /lfs/h2/emc/lam/noscrub/RRFS_CMAQ/FENGSHA
AQM_CANOPY_DIR: /lfs/h2/emc/lam/noscrub/RRFS_CMAQ/canopy
- AQM_FIRE_DIR: /lfs/h2/emc/physics/noscrub/jianping.huang/data/RRFS_CMAQ/emissions/GSCE/RAVE.in.C793/RAVE_RT
+ AQM_FIRE_DIR: /lfs/h2/emc/aqmtemp/RAVE_NA
AQM_LBCS_DIR: /lfs/h2/emc/lam/noscrub/RRFS_CMAQ/LBCS/AQM_NA13km_AM4_v1
AQM_GEFS_DIR: /lfs/h2/emc/lam/noscrub/RRFS_CMAQ/GEFS_DATA
AQM_AIRNOW_HIST_DIR: /lfs/h2/emc/physics/noscrub/jianping.huang/Bias_correction/aqmv7.0