#!/bin/ksh ############################################ # Set up environment for gefs2sref jobs # # change log: # 05/29/2012, Jun Du: Initial program # 05/15/2014, Jun Du: Extended to 129hr # 03/22/2019, Jun Du: Convert to Dell # 02/16/2022, Jun Du: Convert to Cray/WCOSS2 # ############################################ set -xa export OMP_NUM_THREADS=1 export MP_EUIDEVICE=sn_all export MP_EUILIB=us export MP_MPILIB=mpich2 export MP_TASK_AFFINITY=core:1 # ################################### # SET SHELL PROCESSING VARIABLES # ################################### export PS4='$SECONDS + ' date ############################### # Specify NET and RUN name ############################## export NET=sref export RUN=sref ########################################### # Run sref_config to get input parameters ########################################### export RUN_ENVIR=${RUN_ENVIR:-nco} if [ "$RUN_ENVIR" != nco ] ### For Developers then CONFIG_FILE=${CONFIG_FILE:-/lfs/h2/emc/lam/noscrub/${LOGNAME}/sref.v7_cray/parm/sref_para_config_cray} . $CONFIG_FILE export userid=$LOGNAME export DATA_IN=${DATA_IN:-/lfs/h2/emc/ptmp/$userid} fi # # obtain unique process id (pid) and make temp directories # export DATA_IN=${DATA_IN:-${DATAROOT}} if [ ${RUN_ENVIR} != nco ] ; then export DATA=$DATA_IN/sref_gefs2sref_${cyc} else export DATA=$DATA_IN/${jobid:?} fi mkdir $DATA cd $DATA #################################### # File To Log Msgs #################################### export jlogfile=${jlogfile:-$DATA/jlogfile.${job}.$$} #################################### # Determine Job Output Name on System #################################### export pgmout="OUTPUT.$$" export pgmerr=errfile export cycle=t${cyc}z ################################################## # SAVEGES - Copy Files From TMPDIR to $GESdir # SENDECF - Flag Events on ecFflow # SENDCOM - Copy Files From TMPDIR to $COMOUT # SENDDBN - Issue DBNet Client Calls # RERUN - Rerun fcst from beginning (default no) ################################################## export SENDCOM=${SENDCOM:-YES} export SENDECF=${SENDECF:-YES} export SENDDBN=${SENDDBN:-YES} export HOMEsref=${HOMEsref:-${PACKAGEROOT}/${NET}.${sref_ver}} export EXECsref=${EXECsref:-$HOMEsref/exec} export FIXsref=${FIXsref:-$HOMEsref/fix} export PARMsref=${PARMsref:-$HOMEsref/parm} export USHsref=${USHsref:-$HOMEsref/ush} export GEMPAKsref=${GEMPAKsref:-$HOMEsref/gempak} # A temporary link to cnvgrib export CNVGRIB=$HOMEsref/util/cnvgrib # Run setpdy and initialize PDY variables setpdy.sh . ./PDY # Run setup to initialize working directory and utility scripts msg="JOB $job HAS BEGUN" postmsg $jlogfile "$msg" if [ $cyc -eq 03 ]; then export gefscyc=00 fi if [ $cyc -eq 09 ]; then export gefscyc=06 fi if [ $cyc -eq 15 ]; then export gefscyc=12 fi if [ $cyc -eq 21 ]; then export gefscyc=18 fi typeset -Z2 gefscyc ######################################################## # Define COMIN and COMOUT ######################################################## if [ ${RUN_ENVIR} != nco ] ; then export COM_IN=${COM_IN:-${COMROOT}/${NET}/${envir}} export COMIN=${COMIN:-$COM_IN/${RUN}.${PDY}/pgrb_gefs/$gefscyc} export COM_OUT=${COM_OUT:-${COMROOT}/${NET}/${envir}} export COMOUT=${COMOUT:-$COM_OUT/${RUN}.${PDY}/ensprod_gefs/$gefscyc} else export COM_IN=${COM_IN:-$(compath.py ${NET}/${sref_ver})} export COMIN=${COMIN:-$COM_IN/${RUN}.${PDY}/pgrb_gefs/$gefscyc} export COM_OUT=${COM_OUT:-$(compath.py ${NET}/${sref_ver})} export COMOUT=${COMOUT:-$COM_OUT/${RUN}.${PDY}/ensprod_gefs/$gefscyc} fi mkdir -p $COMIN $COMOUT ####################################################### # Pass information which is needed to run the Script ####################################################### export ENDHOUR=192 export INCHOUR=3 env ################################################### # Execute the Scripts ################################################### #1. Convert gefs to sref mkdir -m 775 $DATA/gefs2sref cd $DATA/gefs2sref rm -rf $DATA/gefs2sref/poescript HR=00 while [ $HR -le $ENDHOUR ] do if [ $HR -ge 126 ];then export INCHOUR=06;fi mkdir -m 775 $DATA/gefs2sref/$HR echo "$HOMEsref/scripts/exsref_gefs2sref.sh $HR > $DATA/gefs2sref/${HR}.out" >>$DATA/gefs2sref/poescript HR=`expr $HR + $INCHOUR` if [ $HR -lt 10 ]; then HR=0$HR; fi done chmod 775 $DATA/gefs2sref/poescript export MP_PGMMODEL=mpmd export MP_CMDFILE=$DATA/gefs2sref/poescript #mpiexec cfp $DATA/gefs2sref/poescript #mpiexec -n 1 -ppn $NCPUS --cpu-bind core cfp $DATA/gefs2sref/poescript mpiexec --cpu-bind core --configfile $DATA/gefs2sref/poescript #2. Create ensemble product # Reset initial interval for input files export INCHOUR=3 mkdir -p $DATA/212_3hrly cd $DATA/212_3hrly $HOMEsref/scripts/exsref_enspost4GEFS.sh 3hrly 212 222 > $DATA/212_3hrly.out mkdir -p $DATA/243_3hrly cd $DATA/243_3hrly $HOMEsref/scripts/exsref_enspost4GEFS.sh 3hrly 243 222 > $DATA/243_3hrly.out mkdir -p $DATA/216_3hrly cd $DATA/216_3hrly $HOMEsref/scripts/exsref_enspost4GEFS.sh 3hrly 216 222 > $DATA/216_3hrly.out cd $DATA cat $DATA/212_3hrly.out >>$pgmout cat $DATA/243_3hrly.out >>$pgmout cat $DATA/216_3hrly.out >>$pgmout ################################################### cat $pgmout msg="JOB $job HAS COMPLETED NORMALLY." postmsg "$jlogfile" "$msg" msg="JOB COMPLETED NORMALLY" postmsg "$jlogfile" "$msg" ################################ # Remove the Working Directory ################################ cd $DATA_IN if [ ${KEEPDATA:-NO} != YES ]; then rm -rf $DATA; fi date