#!/bin/sh date export PS4=' $SECONDS + ' set -x #################################### # obtain unique process id (pid) and make temp directory #################################### export pid=${pid:-$$} export DATA=${DATA:-$DATAROOT/${job}}.${pid} mkdir -p $DATA cd $DATA export cycle=${cycle:-t${cyc}z} #################################### # Specify NET Name and RUN # # RUN - RUN grib field to repack #################################### export NET=gfs export RUN=gfsmos #################################### # Determine Job Output Name on System #################################### export outid="LL$job" export jobid="${outid}.o${pid}" export pgmout="OUTPUT.${pid}" #################################### # SENDECF - Flag Events on ECF # SENDCOM - Copy Files From TMPDIR to $com # SENDDBN - Send files to OSO #################################### export SENDECF=${SENDECF:-YES} export SENDCOM=${SENDCOM:-YES} export SENDDBN=${SENDDBN:-YES} #################################### # Specify GFS-MOS version number #################################### export GFSMOS_MODEL_VERSION=${GFSMOS_MODEL_VERSION:-${gfsmos_ver}} export GFSMOS_CODE_VERSION=${GFSMOS_CODE_VERSION:-${mos_shared_ver}} #################################### # Specify Execution Areas #################################### export HOMEmdl=${HOMEmdl:-$NWROOT/gfsmos.${GFSMOS_MODEL_VERSION}} export HOMEcode=${HOMEcode:-$NWROOT/mos_shared.${GFSMOS_CODE_VERSION}} export EXECmdl=${EXECmdl:-$HOMEcode/exec} export FIXmdl=${FIXmdl:-$HOMEmdl/fix} export FIXcode=${FIXcode:-$HOMEcode/fix} export PARMmdl=${PARMmdl:-$HOMEmdl/parm} export PARMcode=${PARMcode:-$HOMEcode/parm} export SCRIPTSmdl=${SCRIPTSmdl:-$HOMEmdl/scripts} ############################## # Run setpdy and initialize PDY variables ############################## setpdy.sh . PDY ############################################## # Define COM directories ############################################## export COMIN=${COMIN:-$COMROOT/${NET}/${envir}/${RUN}.${PDY}} export COMINgfs=${COMINgfs:-$COMROOTp2/gfs/prod/gfs.${PDY}} export COMINhourly=${COMINhourly:-$COMROOTp1/hourly/prod/hourly.$PDY} export COMOUT=${COMOUT:-$COMROOT/${NET}/${envir}/${RUN}.${PDY}} export PCOM=${PCOM:-${PCOMROOT}/gfsmos/} mkdir -m 775 -p $COMOUT $PCOM env ######################################## # EXECUTE THE SCRIPTS USING MPMD ######################################## rm -f $DATA/mpmdscript if [[ $cyc == "00" || $cyc == "12" ]] && [[ $stnonly != "Y" ]]; then complist="metar pac cooprfcmeso goe higoe akgoe tstms" complist2="copopo3 coptype akpopo3 akptype" elif [[ $cyc == "00" || $cyc == "12" ]] && [[ $stnonly == "Y" ]]; then complist="metar pac cooprfcmeso tstms" complist2="" else complist="metar cooprfcmeso tstms" complist2="" fi let ntask=0 for comp in $complist do for dat in $datlist do mkdir -p $DATA/${comp}_${dat} if [[ "$comp" == "metar" || "$comp" == "pac" ]]; then cp $SVI/rotate/hry/${dat}${obhr1} $DATA/${comp}_${dat}/sfctbl.$obhr1 fi echo "($SCRIPTSretro/exgfsmos_${comp}_fcst.sh.ecf ${dat} 2>&1 | sed 's/^/${comp}_${dat}:/')" >> $DATA/mpmdscript ntask=$((ntask+1)) done done for comp in $complist2 do mkdir -p $DATA/$comp echo "$SCRIPTSretro/exgfsmos_${comp}_prdgen.sh.ecf" >> $DATA/mpmdscript done if [ $ntask -le 15 ]; then ptile=$ntask else ptile=15 fi chmod 755 $DATA/mpmdscript export MP_LABELIO=YES export MP_STDOUTMODE=unordered aprun -n ${ntask} -N ${ptile} -d ${OMP_NUM_THREADS} -j ${OMP_NUM_THREADS} -cc depth cfp $DATA/mpmdscript export err=$?; err_chk set +x i=0 export out_dir=${out_dir:-${COMROOT}/output/${envir}/today} for comp in $complist do for dat in $datlist do out_file=$out_dir/gfsmos_forecast_${comp}_${dat}_${cyc}.o${pid} echo "############# OUTPUT FOR GFSMOS $comp $dat#################" > $out_file grep -E "${comp}_${dat}:" $LSB_OUTPUTFILE | cut -d":" -f 2- >> $out_file cat $DATA/${comp}_${dat}/$pgmout >> $out_file let i=i+1 done done for comp in $complist2 do out_file=$out_dir/gfsmos_prdgen_${comp}_$cyc.o${pid} echo "############# OUTPUT FOR GFSMOS $comp #################" > $out_file ranknum=`grep "^cfp: " $LSB_OUTPUTFILE | grep "exgfsmos_${comp}_prdgen" | grep executing | awk '{print $4}'` grep -E "^${ranknum}+ " $LSB_OUTPUTFILE >> $out_file cat $DATA/$comp/$pgmout >> $out_file let i=i+1 done set -x msg="JOB $job HAS COMPLETED NORMALLY" postmsg $jlogfile "$msg" if [ -e $pgmout ]; then cat $pgmout fi if [ "$KEEPDATA" != YES ]; then cd $DATAROOT rm -rf $DATA fi date