From abdc1334e3c58d40977b20fb7acabd4c14a80cf6 Mon Sep 17 00:00:00 2001 From: "Kate.Friedman" Date: Wed, 3 Feb 2021 19:28:44 +0000 Subject: [PATCH] Further init updates for free-forecast mode - move COMPONENT setting from getic to init job - cleanup how getic job sets tarball paths and pulls pgbanl files - move second step of pgbanl pull to init job for consistency - add MODE variable to config.base and its definition to setup scripts - add MODE setting to config.base if-block that adjusts IAU variables - add missing COMPONENT subfolder to data dependencies for getic and init jobs in setup_workflow_fcstonly.py - remove unneeded commented out wavestat job from setup_workflow_fcstonly.py Refs: #178 --- jobs/rocoto/getic.sh | 22 +++++----------------- jobs/rocoto/init.sh | 15 +++++++++++++++ parm/config/config.base.emc.dyn | 5 ++++- ush/rocoto/setup_expt.py | 1 + ush/rocoto/setup_expt_fcstonly.py | 1 + ush/rocoto/setup_workflow_fcstonly.py | 18 ++++-------------- 6 files changed, 30 insertions(+), 32 deletions(-) diff --git a/jobs/rocoto/getic.sh b/jobs/rocoto/getic.sh index fd07a9ead4..b3cb741b33 100755 --- a/jobs/rocoto/getic.sh +++ b/jobs/rocoto/getic.sh @@ -45,8 +45,6 @@ EXTRACT_DIR=${PTMP}/gdas.init_${CDATE}/input OUTDIR=${PTMP}/gdas.init_${CDATE}/output PRODHPSSDIR=/NCEPPROD/hpssprod/runhistory/rh${yy}/${yy}${mm}/${yy}${mm}${dd} -COMPONENT="atmos" - gfs_ver=v16 GETICSH=${GDASINIT_DIR}/get_v16.data.sh @@ -64,9 +62,11 @@ elif [ $yy$mm$dd$hh -lt 2017072000 ]; then elif [ $yy$mm$dd$hh -lt 2019061200 ]; then gfs_ver=v14 GETICSH=${GDASINIT_DIR}/get_${gfs_ver}.data.sh + tarball=gpfs_hps_nco_ops_com_gfs_prod_gfs.${yy}${mm}${dd}_${hh}.pgrb2_${grid}.tar elif [ $yy$mm$dd$hh -lt 2021020300 ]; then gfs_ver=v15 GETICSH=${GDASINIT_DIR}/get_${gfs_ver}.data.sh + tarball=com_gfs_prod_gfs.${yy}${mm}${dd}_${hh}.gfs_pgrb2.tar fi export EXTRACT_DIR yy mm dd hh UFS_DIR OUTDIR CRES_HIRES CRES_ENKF @@ -78,25 +78,13 @@ sh ${GETICSH} ${CDUMP} status=$? [[ $status -ne 0 ]] && exit $status -# Copy pgbanl file to ROTDIR for verification/archival - v14+ -cd $EXTRACT_DIR -OUTDIR2=${ROTDIR}/gfs.${yy}${mm}${dd}/${hh}/${COMPONENT} -if [ ! -d ${OUTDIR2} ]; then mkdir -p ${OUTDIR2} ; fi -if [ $gfs_ver = v14 ]; then - for grid in 0p25 0p50 1p00 - do - tarball=gpfs_hps_nco_ops_com_gfs_prod_gfs.${yy}${mm}${dd}_${hh}.pgrb2_${grid}.tar - file=gfs.t${hh}z.pgrb2.${grid}.anl - htar -xvf ${PRODHPSSDIR}/${tarball} ./gfs.${yy}${mm}${dd}/${hh}/${file} - mv ${EXTRACT_DIR}/gfs.${yy}${mm}${dd}/${hh}/${file} ${OUTDIR2}/${file} - done -elif [ $gfs_ver = v15 ]; then - tarball=com_gfs_prod_gfs.${yy}${mm}${dd}_${hh}.gfs_pgrb2.tar +# Pull pgbanl file for verification/archival - v14+ +if [ $gfs_ver = v14 -o $gfs_ver = v15 ]; then + cd $EXTRACT_DIR for grid in 0p25 0p50 1p00 do file=gfs.t${hh}z.pgrb2.${grid}.anl htar -xvf ${PRODHPSSDIR}/${tarball} ./gfs.${yy}${mm}${dd}/${hh}/${file} - mv ${EXTRACT_DIR}/gfs.${yy}${mm}${dd}/${hh}/${file} ${OUTDIR2}/${file} done fi diff --git a/jobs/rocoto/init.sh b/jobs/rocoto/init.sh index c36addb2ed..330846290e 100755 --- a/jobs/rocoto/init.sh +++ b/jobs/rocoto/init.sh @@ -45,6 +45,8 @@ EXTRACT_DIR=${PTMP}/gdas.init_${CDATE}/input WORKDIR=${PTMP}/gdas.init_${CDATE}/output OUTDIR=${ROTDIR} +COMPONENT="atmos" + gfs_ver=v16 RUNICSH=${GDASINIT_DIR}/run_v16.chgres.sh @@ -76,6 +78,19 @@ sh ${RUNICSH} ${CDUMP} status=$? [[ $status -ne 0 ]] && exit $status +# Copy pgbanl file to ROTDIR for verification/archival - v14+ +if [ $gfs_ver = v14 -o $gfs_ver = v15 ]; then + cd $EXTRACT_DIR + for grid in 0p25 0p50 1p00 + do + file=gfs.t${hh}z.pgrb2.${grid}.anl + mv ${EXTRACT_DIR}/${CDUMP}.${yy}${mm}${dd}/${hh}/${file} ${OUTDIR}/${CDUMP}.${yy}${mm}${dd}/${hh}/${COMPONENT}/${file} + done +fi + +# Clean up EXTRACT_DIR +rm -rf $EXTRACT_DIR + ############################################################### # Exit out cleanly exit 0 diff --git a/parm/config/config.base.emc.dyn b/parm/config/config.base.emc.dyn index 37669926ee..dd3459ce5d 100755 --- a/parm/config/config.base.emc.dyn +++ b/parm/config/config.base.emc.dyn @@ -58,6 +58,8 @@ export WAFSF="NO" # WAFS products # use RUNMOS flag (currently in config.vrfy) export REALTIME="YES" +# Experiment mode (cycled or free-forecast) +export MODE="@MODE@" # cycled/free #################################################### # DO NOT ADD MACHINE DEPENDENT STUFF BELOW THIS LINE @@ -209,7 +211,8 @@ export IAU_OFFSET=6 export DOIAU_ENKF=${DOIAU:-"YES"} # Enable 4DIAU for EnKF ensemble export IAUFHRS_ENKF="3,6,9" export IAU_DELTHRS_ENKF=6 -if [[ "$SDATE" = "$CDATE" && $EXP_WARM_START = ".false." ]] || [[ "$DOIAU" = "NO" ]] ; then # Cold starting or IAU off +# Check if cycle is cold starting, DOIAU off, or free-forecast mode +if [[ "$MODE" = "cycled" && "$SDATE" = "$CDATE" && $EXP_WARM_START = ".false." ]] || [[ "$DOIAU" = "NO" ]] || [[ "$MODE" = "free" && $EXP_WARM_START = ".false." ]] ; then export IAU_OFFSET=0 export IAU_FHROT=0 fi diff --git a/ush/rocoto/setup_expt.py b/ush/rocoto/setup_expt.py index afd3b02830..903b91eaf5 100755 --- a/ush/rocoto/setup_expt.py +++ b/ush/rocoto/setup_expt.py @@ -105,6 +105,7 @@ def edit_baseconfig(): .replace('@QUEUE_SERVICE@', queue_service) \ .replace('@PARTITION_BATCH@', partition_batch) \ .replace('@EXP_WARM_START@', exp_warm_start) \ + .replace('@MODE@', 'cycled') \ .replace('@CHGRP_RSTPROD@', chgrp_rstprod) \ .replace('@CHGRP_CMD@', chgrp_cmd) \ .replace('@HPSSARCH@', hpssarch) \ diff --git a/ush/rocoto/setup_expt_fcstonly.py b/ush/rocoto/setup_expt_fcstonly.py index 8a7ffb58dc..c95d88cea0 100755 --- a/ush/rocoto/setup_expt_fcstonly.py +++ b/ush/rocoto/setup_expt_fcstonly.py @@ -79,6 +79,7 @@ def edit_baseconfig(): .replace('@QUEUE_SERVICE@', queue_service) \ .replace('@PARTITION_BATCH@', partition_batch) \ .replace('@EXP_WARM_START@', exp_warm_start) \ + .replace('@MODE@', 'free') \ .replace('@CHGRP_RSTPROD@', chgrp_rstprod) \ .replace('@CHGRP_CMD@', chgrp_cmd) \ .replace('@HPSSARCH@', hpssarch) \ diff --git a/ush/rocoto/setup_workflow_fcstonly.py b/ush/rocoto/setup_workflow_fcstonly.py index 1bd02a8504..7e6a7779af 100755 --- a/ush/rocoto/setup_workflow_fcstonly.py +++ b/ush/rocoto/setup_workflow_fcstonly.py @@ -245,10 +245,10 @@ def get_workflow(dict_configs, cdump='gdas'): # getic deps = [] - data = '&ROTDIR;/&CDUMP;.@Y@m@d/@H/INPUT/sfc_data.tile6.nc' + data = '&ROTDIR;/&CDUMP;.@Y@m@d/@H/atmos/INPUT/sfc_data.tile6.nc' dep_dict = {'type':'data', 'data':data} deps.append(rocoto.add_dependency(dep_dict)) - data = '&ROTDIR;/&CDUMP;.@Y@m@d/@H/RESTART/@Y@m@d.@H0000.sfcanl_data.tile6.nc' + data = '&ROTDIR;/&CDUMP;.@Y@m@d/@H/atmos/RESTART/@Y@m@d.@H0000.sfcanl_data.tile6.nc' dep_dict = {'type':'data', 'data':data} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='nor', dep=deps) @@ -259,10 +259,10 @@ def get_workflow(dict_configs, cdump='gdas'): # init - chgres_cube deps = [] - data = '&ROTDIR;/&CDUMP;.@Y@m@d/@H/INPUT/sfc_data.tile6.nc' + data = '&ROTDIR;/&CDUMP;.@Y@m@d/@H/atmos/INPUT/sfc_data.tile6.nc' dep_dict = {'type':'data', 'data':data} deps.append(rocoto.add_dependency(dep_dict)) - data = '&ROTDIR;/&CDUMP;.@Y@m@d/@H/RESTART/@Y@m@d.@H0000.sfcanl_data.tile6.nc' + data = '&ROTDIR;/&CDUMP;.@Y@m@d/@H/atmos/RESTART/@Y@m@d.@H0000.sfcanl_data.tile6.nc' dep_dict = {'type':'data', 'data':data} deps.append(rocoto.add_dependency(dep_dict)) dependencies = rocoto.create_dependency(dep_condition='nor', dep=deps) @@ -380,16 +380,6 @@ def get_workflow(dict_configs, cdump='gdas'): tasks.append(task) tasks.append('\n') - # wavestat - #if do_wave in ['Y', 'YES'] and do_wave_cdump in ['GFS', 'BOTH']: - # deps = [] - # dep_dict = {'type':'task', 'name':'%swavepost' % cdump} - # deps.append(rocoto.add_dependency(dep_dict)) - # dependencies = rocoto.create_dependency(dep=deps) - # task = wfu.create_wf_task('wavestat', cdump=cdump, envar=envars, dependency=dependencies) - # tasks.append(task) - # tasks.append('\n') - # wavegempak if do_wave in ['Y', 'YES'] and do_gempak in ['Y', 'YES']: deps = []