#!/bin/sh date export PS4=' $(basename $0).$LINENO: $SECONDS + ' set -xa envir=${envir:?} # Typically set to prod DATAROOT=${DATAROOT:?} # Typically default to {DATAROOT:-/tmpnwprd1} COMROOT=${COMROOT:?} # Typically default to -/com PACKAGEROOT=${PACKAGEROOT:?} #################################### # obtain unique process id (pid) and make temp directory #################################### export DATA=${DATA:-${DATAROOT}/${jobid}} mkdir -p $DATA cd $DATA export cycle=${cycle:-t${cyc}z} export ECMWF_FILE_EXT=${ECMWF_FILE_EXT:-1} export process_grib2=${process_grib2:-"YES"} #################################### # File To Log Msgs #################################### export jlogfile=${jlogfile:-${DATA}/jlogfile.${jobid}} #################################### # Specify NET Name and model # # model - model grib field to repack #################################### export NET=${NET:-ecmwf_mos} export RUN=${RUN:-ecmwf_mos} export model=${model:-ecmwf_mos} ################################################## # SENDECF - Flag Events on ECF # SENDCOM - Copy Files From TMPDIR to $COMOUT # SENDDBN - Issue DBNet Client Calls ################################################## export SENDCOM=${SENDCOM:-YES} export SENDDBN=${SENDDBN:-YES} export SENDECF=${SENDECF:-YES} export GET_IOPROFILE=${GET_IOPROFILE:-NO} #################################### # Determine Job Output Name on System #################################### export pgmout="OUTPUT.$$" #################################### # Specify ECMWF-MOS version number #################################### export ECMWFMOS_MODEL_VERSION=${ECMWFMOS_MODEL_VERSION:-${ecmwf_mos_ver}} export ECMWFMOS_CODE_VERSION=${ECMWFMOS_CODE_VERSION:-${mos_shared_ver}} #################################### # Specify Execution Areas #################################### export HOMEmdl=${HOMEmdl:-$PACKAGEROOT/ecmwf_mos.${ECMWFMOS_MODEL_VERSION}} export FIXmdl=${FIXmdl:-$HOMEmdl/fix} export PARMmdl=${PARMmdl:-$HOMEmdl/parm} ############################## # Run setpdy and initialize PDY variables ############################## setpdy.sh . ./PDY ############################################## # Define COM directories ############################################## export COMIN=${COMIN:-$(compath.py ${envir}$NET/${ecmwf_mos_ver})/${RUN}.${PDY}} export COMOUT=${COMOUT:-$(compath.py -o ${NET}/${ecmwf_mos_ver}/${RUN}.${PDY})} export COMINhry_mos=${COMINhry_mos:-$(compath.py hry_mos/${hry_mos_ver}/hry_mos.$PDY)} export DCOMIN=${DCOMIN:-${DCOMROOT}/${PDY}/wgrbbul/ecmwf} export pcom=${pcom:-${COMOUT}/wmo} mkdir -m 775 -p $COMOUT $pcom env ################################################## # Check for data availability ################################################## Ref_date=`echo $PDY | cut -c 5-8`$cyc Valid_date=`$NDATE +360 ${PDY}${cyc} | cut -c5-10` Last_file=$DCOMIN/DCE${Ref_date}00${Valid_date}00${ECMWF_FILE_EXT} let attempts=1 while [ $attempts -le 60 ]; do if [ -f $Last_file ]; then break else sleep 60 attempts=$((attempts+1)) fi done if [ $attempts -gt 60 ] && [ ! -f $Last_file ]; then echo "Data still not available after waiting 60 minutes... exiting" date exit 1 fi ################################################## # Copy data into shared_input directory ################################################## mkdir -p $DATA/shared_input cpreq --preserve=mode,ownership $DCOMIN/DCE${Ref_date}00*00${ECMWF_FILE_EXT}* $DATA/shared_input ################################################## # Build the MPMD script from all perturbations ################################################## if [[ -f $DATA/mpmdscript ]]; then rm -f $DATA/mpmdscript fi # Set-up a poescript that will allow for all ensembles to be processed # simultaneously. pertlist=`seq 0 50` for pert in $pertlist do echo "${HOMEmdl}/scripts/execmwf_mos_stations_ens_fcst.sh $pert 2>&1 | sed 's/^/stnfcst_${pert}:/'" >> $DATA/mpmdscript done ######################################## # EXECUTE THE SCRIPT ######################################## chmod 755 $DATA/mpmdscript export MP_LABELIO=YES export MP_STDOUTMODE=unordered mpiexec --cpu-bind core -n $NTASK -ppn $PTILE cfp $DATA/mpmdscript export err=$?; err_chk date if [ "$KEEPDATA" != YES ]; then cd $DATAROOT rm -rf $DATA fi