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