#!/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) export CASE=$CASE_ENKF export OPREFIX="${CDUMP}.t${cyc}z." export APREFIX="${CDUMP}.t${cyc}z." export GPREFIX="gdas.t${gcyc}z." export GSUFFIX="${GSUFFIX:-$SUFFIX}" export ASUFFIX="${ASUFFIX:-$SUFFIX}" # COMIN_GES, 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_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.ensmean$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 # 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 # Use the selected observations from ensemble mean export RUN_SELECT="NO" export USE_SELECT="YES" export SELECT_OBS="$COMOUT/${APREFIX}obsinput.ensmean" # Get ENSBEG/ENSEND from ENSGRP and NMEM_EOMGGRP export ENSEND=$((NMEM_EOMGGRP * ENSGRP)) export ENSBEG=$((ENSEND - NMEM_EOMGGRP + 1)) ############################################################### # Run relevant exglobal script env msg="HAS BEGUN on `hostname`" postmsg "$jlogfile" "$msg" $LOGSCRIPT ${ENKFINVOBSSH:-$SCRgsi/exglobal_enkf_innovate_obs_fv3gfs.sh.ecf} status=$? [[ $status -ne 0 ]] && exit $status # Double check the status of members in ENSGRP EOMGGRP=$ROTDIR/enkf${CDUMP}.$PDY/$cyc/eomg.grp${ENSGRP} npass=0 if [ -f $EOMGGRP ]; then npass=$(grep "PASS" $EOMGGRP | wc -l) fi echo "$npass/$NMEM_EOMGGRP members successfull in eomg.grp$ENSGRP" if [ $npass -ne $NMEM_EOMGGRP ]; then echo "FATAL ERROR: Failed members in $ENSGRP, ABORT!" cat $EOMGGRP exit 99 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