#!/bin/ksh set -x export RUN_ENVIR=${RUN_ENVIR:-"nco"} export PS4='$SECONDS + ' date ############################# # Source relevant config files ############################# export EXPDIR=${EXPDIR:-$HOMEgfs/parm/config} configs="base anal eobs" config_path=${EXPDIR:-$NWROOT/gfs.${gfs_ver}/parm/config} for config in $configs; do . $config_path/config.$config status=$? [[ $status -ne 0 ]] && exit $status done ########################################## # Source machine runtime environment ########################################## . $HOMEgfs/env/${machine}.env eobs status=$? [[ $status -ne 0 ]] && exit $status ############################################## # Obtain unique process id (pid) and make temp directory ############################################## export pid=${pid:-$$} export outid=${outid:-"LL$job"} export DATA=${DATA:-${DATAROOT}/${jobid:?}} mkdir -p $DATA cd $DATA ############################################## # Run setpdy and initialize PDY variables ############################################## export cycle="t${cyc}z" setpdy.sh . ./PDY ############################################## # Determine Job Output Name on System ############################################## export pgmout="OUTPUT.${pid}" export pgmerr=errfile ############################################## # Set variables used in the exglobal script ############################################## export CDATE=${CDATE:-${PDY}${cyc}} export CDUMP=${CDUMP:-${RUN:-"gdas"}} if [ $RUN_ENVIR = "nco" ]; then export ROTDIR=${COMROOT:?}/$NET/$envir fi ############################################## # Begin JOB SPECIFIC work ############################################## GDATE=$($NDATE -$assim_freq $CDATE) gPDY=$(echo $GDATE | cut -c1-8) gcyc=$(echo $GDATE | cut -c9-10) GDUMP=${GDUMP:-"gdas"} export CASE=$CASE_ENKF export CDUMP_OBS=${CDUMP_OBS:-$CDUMP} export OPREFIX="${CDUMP_OBS}.t${cyc}z." export APREFIX="${CDUMP}.t${cyc}z." export GPREFIX="${GDUMP}.t${gcyc}z." export GSUFFIX="${GSUFFIX:-".ensmean${SUFFIX}"}" export ASUFFIX="${ASUFFIX:-"${SUFFIX}"}" if [ $RUN_ENVIR = "nco" -o ${ROTDIR_DUMP:-NO} = "YES" ]; then export COMIN_OBS=${COMIN_OBS:-$ROTDIR/$RUN.$PDY/$cyc} export COMIN_GES_OBS=${COMIN_GES_OBS:-$ROTDIR/$GDUMP.$gPDY/$gcyc} else export COMIN_OBS="$DMPDIR/$CDATE/$CDUMP" export COMIN_GES_OBS="$DMPDIR/$GDATE/$GDUMP" fi # COMIN_GES, COMIN_ANL COMIN_GES_ENS, and COMOUT are used in exglobal script # TO DO: Map NCO's directory into these variables COMIN_GES_CTL="$ROTDIR/gdas.$gPDY/$gcyc" export COMIN_ANL="$ROTDIR/$CDUMP.$PDY/$cyc" export COMIN_GES_ENS="$ROTDIR/enkfgdas.$gPDY/$gcyc" export COMIN_GES=$COMIN_GES_ENS export COMOUT="$ROTDIR/enkf$CDUMP.$PDY/$cyc" export ATMGES_ENSMEAN="$COMIN_GES_ENS/${GPREFIX}atmf006$GSUFFIX" if [ ! -f $ATMGES_ENSMEAN ]; then echo "FATAL ERROR: FILE MISSING: ATMGES_ENSMEAN = $ATMGES_ENSMEAN" exit 1 fi export LEVS=$($NCDUMP -h $ATMGES_ENSMEAN | grep -i "pfull" | head -1 | awk -F" = " '{print $2}' | awk -F" " '{print $1}') # get LEVS status=$? [[ $status -ne 0 ]] && exit $status # Link observational data export PREPQC="$COMIN_ANL/${OPREFIX}prepbufr" if [ ! -f $PREPQC ]; then echo "WARNING: PREPBUFR FILE $PREPQC MISSING" msg="WARNING : Global PREPBUFR file is missing" postmsg "$jlogfile" "$msg" fi export PREPQCPF="$COMIN_ANL/${OPREFIX}prepbufr.acft_profiles" export TCVITL="$COMIN_ANL/${OPREFIX}syndata.tcvitals.tm00" [[ $DONST = "YES" ]] && export NSSTBF="$COMIN_ANL/${OPREFIX}nsstbufr" # Guess Bias correction coefficients related to control export GBIAS=${COMIN_GES_CTL}/${GPREFIX}abias export GBIASPC=${COMIN_GES_CTL}/${GPREFIX}abias_pc export GBIASAIR=${COMIN_GES_CTL}/${GPREFIX}abias_air export GRADSTAT=${COMIN_GES_CTL}/${GPREFIX}radstat # Bias correction coefficients related to ensemble mean export ABIAS="$COMOUT/${APREFIX}abias.ensmean" export ABIASPC="$COMOUT/${APREFIX}abias_pc.ensmean" export ABIASAIR="$COMOUT/${APREFIX}abias_air.ensmean" export ABIASe="$COMOUT/${APREFIX}abias_int.ensmean" # Diagnostics related to ensemble mean export GSISTAT="$COMOUT/${APREFIX}gsistat.ensmean" export CNVSTAT="$COMOUT/${APREFIX}cnvstat.ensmean" export OZNSTAT="$COMOUT/${APREFIX}oznstat.ensmean" export RADSTAT="$COMOUT/${APREFIX}radstat.ensmean" # Select observations based on ensemble mean export RUN_SELECT="YES" export USE_SELECT="NO" export SELECT_OBS="$COMOUT/${APREFIX}obsinput.ensmean" export DIAG_SUFFIX="_ensmean" # GSI namelist options specific to eobs export SETUP_INVOBS="passive_bc=.false.,$SETUP_INVOBS" # Ensure clean stat tarballs for ensemble mean for fstat in $CNVSTAT $OZNSTAT $RADSTAT; do [[ -f $fstat ]] && rm -f $fstat done ############################################################### # Run relevant exglobal script env msg="HAS BEGUN on `hostname`" postmsg "$jlogfile" "$msg" $LOGSCRIPT ${INVOBSSH:-$SCRgsi/exglobal_innovate_obs_fv3gfs.sh.ecf} status=$? [[ $status -ne 0 ]] && exit $status ############################################## # Send Alerts ############################################## if [ $SENDDBN = YES ] ; then $DBNROOT/bin/dbn_alert MODEL ENKF1_MSC_gsistat $job $GSISTAT fi ############################################## # End JOB SPECIFIC work ############################################## ############################################## # Final processing ############################################## if [ -e "$pgmout" ] ; then cat $pgmout fi msg="ENDED NORMALLY." postmsg "$jlogfile" "$msg" ########################################## # Remove the Temporary working directory ########################################## cd $DATAROOT [[ $KEEPDATA = "NO" ]] && rm -rf $DATA date exit 0