#!/bin/bash if [ $# -ne 1 ] ; then echo " No argument passed - forecast with default config file will be done" fi set -euax export MP_IOAGENT_CNT=all export MP_IO_BUFFER_SIZE=8M ########################################################################## # Runs CLIMATE FORECAST SYSTEM (CFS) in the gdas forecast mde # # Author: Shrinivas Moorthi W/NP2 - june 2010 # ########################################################################## #################################### # Specify NET and RUN Name and model #################################### export NET=cfs export RUN=cdas export RUN1=cdas1 export host=${host:-`hostname | cut -c1`} ############################################### # SETUP CLIMATE FOREFCST PROCESSING VARIABLES ############################################### export PS4='$SECONDS + ' date ########################################################## export DATA=${DATA:-${DATAROOT:?}/${jobid:?}} mkdir -p $DATA cd $DATA #################################### # Specify Execution Areas #################################### export EXECcfs=${EXECcfs:-$HOMEcfs/exec} export FIXcfs=${FIXcfs:-$HOMEcfs/fix} export USHcfs=${USHcfs:-$HOMEcfs/ush} export PARMcfs=${PARMcfs:-$HOMEcfs/parm} export NCP=${NCP:-/bin/cp} export FIX_OM=${FIX_OM:-$HOMEcfs/fix/cfs_fix_om} export FIX_OCN=${FIX_OCN:-$FIX_OM} export PARM_OM=${PARM_OM:-$HOMEcfs/parm/cfs_parm_om} export sigavg=${sigavg:-$EXECcfs/cfs_sigavg} export SIGHDR=${SIGHDR:-$EXECcfs/cfs_sighdr} export mppnccombine=${mppnccombine:-$EXECcfs/cfs_mppnccombine} export AM_EXEC=${AM_EXEC:-${EXEC_AMD:-$EXECcfs}/cfs_cdas_atmos_fcst} export OM_EXEC=${OM_EXEC:-${EXEOMD:-$EXECcfs}/cfs_ocean_mom4ice} export C_EXEC=${C_EXEC:-${EXEC_CD:-$EXECcfs}/cfs_mlc_coupler} export FORECASTSH=${FORECASTSH:-$HOMEcfs/scripts/excfs_cdas_fcst.sh} export FIXGLOBAL=${FIXGLOBAL:-$FIXcfs/cfs_fix_am} export FIXDIR=${FIXDIR:-$FIXcfs/cfs_fix_am} export FIXPREP=$FIXcfs/cfs_fix_prep #################################### # Determine Job Output Name on System #################################### export pgmout="OUTPUT.$$" export pgmerr=errfile export cycle=t${cyc}z #################################### # RERUN - Rerun fcst from beginning (default no) # VERBOSE - Specify Verbose Output in excfs_cdas_fcst.sh #################################### export VERBOSE=${VERBOSE:-YES} export BATCH_POST=${BATCH_POST:-NO} ############################## # Run setpdy and initialize PDY variables ############################## sh setpdy.sh . ./PDY export CDATE=${CDATE:-${PDY}${cyc}} ############################################# # Get the variables setup from config script ############################################# export CDAS_CONFIG_FILE=${CDAS_CONFIG_FILE:-$PARMcfs/cfs_parm_am/cfs_cdas_config} set +u set -a; . $CDAS_CONFIG_FILE; set +a set -u ############################################# # Set the number of cores per model ############################################# export OMP_NUM_THREADS=1 export CPROCS=${CPROCS:-1} export OPROCS=${OPROCS:-63} export APROCS=${APROCS:-195} env export MP_SHARED_MEMORY=no ############################################ # determine the current day of the forecast ############################################ export YEAR=` echo $CDATE | cut -c1-4 ` export MONTH=` echo $CDATE | cut -c5-6 ` export DAY=` echo $CDATE | cut -c7-8 ` export HOUR=$cyc ####################################### # Determine the day for forecast start ####################################### export start_date=${start_date:-$CDATE} export YYYYSTART=$(echo $start_date | cut -c1-4) export MMSTART=$(echo $start_date | cut -c5-6) export DDSTART=$(echo $start_date | cut -c7-8) export HHSTART=$(echo $start_date | cut -c9-10) export ocnic_date=${ocnic_date:-$start_date} if [ ${LENDAY:-0} -gt 0 ] ; then export end_date=$($NDATE $((LENDAY*24)) $start_date) elif [ ${LENHR:-9} -gt 0 ] ; then export end_date=$($NDATE $LENHR $start_date) else echo ' Need to specify propoer forecast length - run terminating' exit fi ############################################## # Define COM directories ############################################## export COMROT=$(compath.py ${NET}/${cfs_ver}) export COMIN=$(compath.py ${NET}/${cfs_ver}/${RUN}.${PDY}) export COMOUT=$(compath.py -o ${NET}/${cfs_ver}/${RUN}.${PDY}) mkdir -m755 -p ${COMOUT} # # Output File Names # export SIGO=${COMOUT}/${RUN1}.${cycle}.sf'${FH}' export SFCO=${COMOUT}/${RUN1}.${cycle}.bf'${FH}' export FLXO=${COMOUT}/${RUN1}.${cycle}.sfluxgrbf'${FH}' export LOGO=${COMOUT}/${RUN1}.${cycle}.logf'${FH}' msg="HAS BEGUN on `hostname`" postmsg "$msg" ############################################## # Define the guess files ############################################## export SIGI=${COMOUT}/${RUN1}.t${cyc}z.sanl export SFCI=${COMOUT}/${RUN1}.t${cyc}z.sfcanl export OCNI=${COMOUT}/${RUN1}.t${cyc}z.ocnanl.tar if [ -s $SIGI -a -s $SFCI -a -s $OCNI ] ; then mkdir -p $DATA/INPUT cp -p $OCNI $DATA/INPUT cd $DATA/INPUT tar -xvf $OCNI cd $DATA msg="Forecast Starting with Initial Guess Fields" postmsg "$msg" else msg="Initial Guess Fields Not Available to run $job" postmsg "$msg" export pgm=$job export err=911 err_chk fi ############################################################# # Execute the script ############################################################# export NTHREADS=${NTHREADS:-2} export SUFOUT=${SUFOUT:-".gdas.$start_date"} export FHINI=0 export VDATE=$($NDATE $FHINI $start_date) export EXEC_OMD=${EXEC_OMD:-HOMEcfs/exec} export FCSTEXEC=${AM_EXEC:-$HOMEcfs/exec/cfs_cdas_atmos_fcst} $FORECASTSH - $DATA $VDATE $EXEC_OMD $COMOUT ### >$DATA/$(basename $FORECASTSH).out.$FHINI 2>$DATA/$(basename $FORECASTSH).err.$FHINI rc=$? set +e cat $(basename $FORECASTSH).out.$FHINI >> $pgmout cp $(basename $FORECASTSH).err.$FHINI errfile set -e if [[ $rc -ne 0 ]] ; then if [ $RUN_ENVIR = nco -o $RUN_ENVIR = devpara ] ; then msg="Error in executing the forecast script" postmsg "$msg" export err=$rc; err_chk else $PERR;exit $rc fi fi ########################################################### # copy the OM restart files to COMOUT for use in next GODAS ########################################################### cd $DATA/IRESTART FDATE=$($NDATE $((FHINI+6)) $CDATE) OCNR=$RUN1.$cycle.next_ocnr.tar tar -cvf $OCNR ${FDATE}* if [ $SENDCOM = YES ] ; then cp $OCNR $COMOUT/. fi ################################################### # msg end of job and clean up temperary directory ################################################### cat $DATA/$pgmout msg="ENDED NORMALLY." postmsg "$msg" ######################################## # Remove the Temporary working directory ######################################## cd $DATAROOT if [ ${KEEPDATA:-NO} = NO ] ; then rm -rf $DATA ; fi date