#!/bin/ksh ############################################################# # Setup environment for the SREF's downscaling job # # change log: # 12/10/2011 Jun Du, initial implementation # # 02/23/2022 Jun Du, converted it to cray/WCOSS2 ############################################################# set -xa export PS4='$SECONDS + ' export OMP_NUM_THREADS=1 export MP_EUIDEVICE=sn_all export MP_EUILIB=us export MP_MPILIB=mpich2 export MP_TASK_AFFINITY=core:1 # # Specify whether the run is production or development # export RUN_ENVIR=${RUN_ENVIR:-nco} ##################################################################################### # Run config file to get input parameters # This config file should define the following variables # DATA_IN: Location of working directory, default to ${DATAROOT} # DEV_SMS: If the job is to be running using ecFlow, default to YES # SENDDBN: Set to NO for developers, default to YES # COM_IN: Directory for input files, default to ${COMROOT}/$NET/${envir} # COM_OUT: Directory for output file, default to ${COMROOT}/$NET/${envir} # gespath: Directory for the guess or restart files, default to ${GESROOT}/${envir} ##################################################################################### if [ "$RUN_ENVIR" != nco ] ### For Developers, "group_name" is passed from the ecFlow script 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 echo `date` $0 `date -u` begin ########################################################### # 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_downscaling_${cyc} else export DATA=$DATA_IN/${jobid:?} fi rm -rf $DATA mkdir -p $DATA cd $DATA #################################### # File To Log Msgs #################################### export jlogfile=${jlogfile:-$DATA/jlogfile.${job}.$$} #################################### # Determine Job Output Name on System #################################### export pgmout="OUTPUT.$$" export cycle=t${cyc}z ############################### # Specify NET and RUN name ############################## export NET=sref export RUN=sref ################################################## # SAVEGES - Copy Files From TMPDIR to $GESdir # SENDECF - Flag Events on ecFlow # 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 VERBOSE=${VERBOSE:-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 HOMEglobal=${HOMEglobal:-${PACKAGEROOTp1}} #export EXECglobal=$HOMEglobal/exec #export FIXglobal=$HOMEglobal/fix #export PARMglobal=$HOMEglobal/parm #export USHglobal=$HOMEglobal/ush # Temporary link to cnvgrib tool export CNVGRIB=$HOMEsref/util/cnvgrib # Run setpdy and initialize PDY variables setpdy.sh . ./PDY ############################################# # COMIN and COMOUT ############################################# if [ ${RUN_ENVIR} != nco ] ; then export COM_IN=${COM_IN:-${COMROOT}/${NET}/${envir}} export COM_OUT=${COM_OUT:-${COMROOT}/${NET}/${envir}} export COMINnam=${COMINnam:-$(compath.py nam/prod)} else export COM_IN=${COM_IN:-$(compath.py ${NET}/${sref_ver})} export COM_OUT=${COM_OUT:-$(compath.py ${NET}/${sref_ver})} export COMINnam=${COMINnam:-$(compath.py nam/$nam_ver)} fi export COMIN=${COMIN:-$COM_IN/${RUN}.${PDY}/${cyc}/pgrb} export COM_NDGD=${COMOUT_NDGD:-$COM_IN/${RUN}.${PDY}/${cyc}/pgrb_ndgd} export COMOUT_MISC=${COMOUT_MISC:-$COM_IN/${RUN}.${PDY}/${cyc}/misc} export COMIN_BC=${COMIN_BC:-$COM_OUT/${RUN}.${PDY}/$cyc/pgrb_biasc} export COMOUT=${COMOUT:-$COM_OUT/${RUN}.${PDY}/$cyc/pgrb_biasc} export COMOUT_BC=${COMOUT_BC:-$COM_OUT/${RUN}.${PDY}/${cyc}/ensprod_biasc} export COMOUT_NDGD=${COMOUT_NDGD:-$COM_OUT/${RUN}.${PDY}/${cyc}/ensprod_ndgd} mkdir -p -m 775 ${COMOUT_NDGD} ${COM_NDGD} ${COMOUT_BC} env ####################################################### # Pass information which is needed to run the Script ####################################################### export ENDHOUR=87 export INCHOUR=03 export VERBOSE=YES ################################################### # Execute the Script ################################################### # 1. Downscaling vector calculation export COMINrtma=${COMINrtma:-$(compath.py rtma/$rtma_ver)} mkdir -m 775 $DATA/downscalevector cd $DATA/downscalevector ## setup.sh # no need, since using module load prod_util $HOMEsref/scripts/exsref_caldwnsvect.sh # 2. Downscaling forecast (note: this job has to be run after Job 1 finishes!) mkdir -m 775 $DATA/downscaleforecast cd $DATA/downscaleforecast rm -rf $DATA/downscaleforecast/poescript typeset -Z2 HR HR=03 echo "#!/bin/ksh" > $DATA/downscaleforecast/poescript while [ $HR -le $ENDHOUR ] do mkdir -m 775 $DATA/downscaleforecast/$HR echo "$HOMEsref/scripts/exsref_dwnsfcst.sh $HR > $DATA/downscaleforecast/${HR}.out 2>&1" >>$DATA/downscaleforecast/poescript HR=`expr $HR + $INCHOUR` done chmod 775 $DATA/downscaleforecast/poescript export MP_PGMMODEL=mpmd export MP_CMDFILE=$DATA/downscaleforecast/poescript mpiexec --cpu-bind core --configfile $DATA/downscaleforecast/poescript # 3. Ensemble product of downscaled forecasts (note: this job has to be run after Job 2 finishes!) mkdir -m 775 $DATA/downscaleproduct cd $DATA/downscaleproduct $HOMEsref/scripts/exsref_enspost_afterDS.sh 3hrly 197 111 ######################################################## cat $pgmout msg="JOB COMPLETED NORMALLY" postmsg $jlogfile "$msg" ################################ # Remove the Working Directory ################################ cd $DATA_IN if [ ${KEEPDATA:-NO} != YES ] ; then rm -rf $DATA ; fi date