#!/bin/ksh set -x . /etc/ksh.kshrc if [ -a .profile ]; then . ./.profile fi if [ -a .kshrc ] ; then . ./.kshrc fi machine_prefix=`cat /proc/sys/kernel/hostname | cut -c 1-1` if [[ $machine_prefix == 't' || $machine_prefix == 'g' ]] ; then thismachine=IBM MPIEXEC=mpirun.lsf . /usrx/local/Modules/3.2.9/init/ksh module purge module load lsf module load ics/14.0.2 module load prod_util elif [[ $machine_prefix == 'v' || $machine_prefix == 'm' ]] ; then thismachine=DELL MPIEXEC=mpirun . /usrx/local/prod/lmod/lmod/init/ksh module purge module load ips/18.0.1.163 module load lsf/10.1 module load prod_util/1.1.0 elif [[ $machine_prefix == 'd' || $machine_prefix == 'c' ]] ; then thismachine=CRAY MPIEXEC=mpiexec . /usr/share/lmod/lmod/init/ksh module purge module load envvar/1.0 module load PrgEnv-intel/8.1.0 module load craype/2.7.10 module load intel/19.1.3.304 module load libjpeg/9c module load cray-mpich/8.1.9 module load cray-pals/1.0.17 module load prod_util/2.0.13 fi if [[ $machine_prefix == 'v' || $machine_prefix == 'g' ]] ; then wd=g #stands for wcoss-dev is gyre else wd=t #stands for wcoss-dev is tide fi ########################### BEGIN CHANGES ########################################## vernum=2.9.2 # prod_urma_ver=2.9 # # RUN=hiurma # CAP_RUN=HIURMA # NET=urma # envir=para # ENVIR=PARA # last_jobname=hiparaUftp # # if [[ $thismachine == 'IBM' ]] ; then # ftpqueue=transfer #set to "dev2" when transfer queue is closed # elif [[ $thismachine == 'DELL' ]] ; then # ftpqueue=dev_transfer #set to "dev" when transfer queue is closed # elif [[ $thismachine == 'CRAY' ]] ; then # ftpqueue=dev_transfer #set to "dev" when transfer queue is closed # fi # # ptmp=lfs/h2/emc/ptmp # # minmaxt_grids=' ' #'hawaii'. note: to compute the min/maxT bckgs for all # #grids in this specific $RUN, either comment out this line or # #set value to ' '. To compute for select grids, set value to # #list of such grids. the list should be enclosed in ' ', and # #the individual grids should be separated by a space. # # minmaxt_obs_dirout=default #non_default # # SINGLE_CYCLE=yes # # CDATE0=`date -u +%Y%m%d%H | $NDATE -6` # #CDATE0=2022101006 # # LAST_RESTART=2021081906 #2030010100 # # CDATE_STOP=2030010100 # # write_to_rzdm=no # hpss_save=yes # # # remove_wrkdirs=no #if set to "yes", will remove all working directories # #at the end of the analysis # # ########################### END CHANGES ########################################## ptmp_base=/${ptmp}/${USER}/airportproj cycdir=${ptmp_base}/cycs/${envir}_${RUN} mkdir -p $cycdir if [ ${SINGLE_CYCLE} = yes ] ; then CDATE=$CDATE0 else #make sure previous cycle has finished bjobs | grep " ${last_jobname}" > ${cycdir}/test.dat #CHECK THIS / MPondeca if [[ -s ${cycdir}/test.dat ]] ; then exit 0 fi rm ${cycdir}/test.dat lastCDATE=`cat ${cycdir}/lastCDATE` CDATE=`$NDATE +1 $lastCDATE` if [[ $CDATE -ge $CDATE_STOP ]] ; then echo 'CDATE is ' $CDATE echo 'CDATE_STOP is ' $CDATE_STOP exit 0 fi fi YYYY=`echo ${CDATE} | cut -c 1-4` PDY=`echo ${CDATE} | cut -c 1-8` cyc=`echo ${CDATE} | cut -c 9-10` CDATE_minmaxt_kick_in=`$NDATE +24 $LAST_RESTART` if [[ $CDATE -lt $CDATE_minmaxt_kick_in ]] ; then cyc_mxtm=-1 ; cyc_mxtm_m1=-1 cyc_mitm=-1 ; cyc_mitm_m1=-1 else cyc_mxtm=08 ; cyc_mxtm_m1=07 cyc_mitm=20 ; cyc_mitm_m1=19 fi PDYm1=`$NDATE -24 $CDATE | cut -c 1-8` COMROOT=${ptmp_base}/com COM_OUT=$COMROOT/${NET}/${envir} MINMAXT_R_COM_IN=/lfs/h1/ops/para/com/urma/v${prod_urma_ver} #alternative input path for min/maxT/bckg computation MINMAXT_COM_IN_ALT=/lfs/h1/ops/prod/com/urma/v${prod_urma_ver} #alternative input path for min/maxT/bckg computation MINMAXT_R_COM_IN_ALT=/lfs/h1/ops/prod/com/rtma/v${prod_urma_ver} #alternative input path for min/maxT/bckg computation if [ ${minmaxt_obs_dirout} = default ] ; then COMINobsproc_urma=$COMROOT/${NET}/${envir}/${NET}.$PDY #path to minT obs file COMINobsproc_urma_m1=$COMROOT/${NET}/${envir}/${NET}.$PDYm1 #path to maxT obs file else COMINobsproc_urma=$COMROOT/${NET}/${envir}/${RUN}.$PDY #path to minT obs file COMINobsproc_urma_m1=$COMROOT/${NET}/${envir}/${RUN}.$PDYm1 #path to maxT obs file fi mkdir -p $COMINobsproc_urma mkdir -p $COMINobsproc_urma_m1 if [ ${ftpqueue} != "transfer" && ${ftpqueue} != "dev_transfer" ] ; then write_to_rzdm=no hpss_save=no fi tarfile_1=com2_${NET}_${envir}_${RUN}.${PDY} tarfile_2=com2_${NET}_${envir}_${NET}.${PDY} HOMEurma=/lfs/h2/emc/da/noscrub/${USER}/space2/airportproj/nw${envir}/${NET}.v${vernum} lscripts=$HOMEurma/scripts/${RUN} lscripts_emc=$HOMEurma/emc/scripts lscripts_minmaxt=$HOMEurma/scripts/minmaxt mkdir -p $lscripts mkdir -p $lscripts_emc mkdir -p $lscripts_minmaxt lconfig=${ptmp_base}/config/${NET}/${envir}/${RUN} mkdir -p $lconfig ljobs=$HOMEurma/emc/jobs/${RUN} mkdir -p $ljobs LLOGS0=${ptmp_base}/${envir}_${RUN}_2dvar LLOGS1=$LLOGS0/logs mkdir -p $LLOGS1 LLOGS2=${ptmp_base}/logs #used to store ftp stderr mkdir -p $LLOGS2 utilscript=/nwprod2/util/ush utilexec=/nwprod2/util/exec #========================================================================================= ######################################################################################### ### ascertain if mint_maxt_prep job should be run, and select wall time "HH_MM" ######## # note that the min/maxT obs and bckg files could be available from # a different $RUN run, in which case there would be no need to # run the mint_maxt_prep job for the current $RUN. # The mint_maxt_prep job will run only if minmaxt_prep_flg=+1 ######################################################################################### minmaxt_prep_flg=-1 HH_MM="00:01" if [[ $cyc -eq $cyc_mitm_m1 ]] ; then minmaxt_prep_flg=+1 HH_MM="00:30" if [ -s ${COM_OUT}/${RUN}.${PDY}/${RUN}.${PDY}.minT.grb2 ]; then if [ -s ${COMINobsproc_urma}/${NET}.${PDY}.mintobs.dat ]; then if [ -s ${COM_OUT}/${RUN}.${PDY}/${RUN}.${PDY}.maxRH.grb2 ]; then minmaxt_prep_flg=-1 HH_MM="00:01" fi fi fi fi if [[ $cyc -eq $cyc_mxtm_m1 ]] ; then minmaxt_prep_flg=+1 HH_MM="00:30" if [ -s ${COM_OUT}/${RUN}.${PDYm1}/${RUN}.${PDYm1}.maxT.grb2 ]; then if [ -s ${COMINobsproc_urma_m1}/${NET}.${PDYm1}.maxtobs.dat ]; then if [ -s ${COM_OUT}/${RUN}.${PDYm1}/${RUN}.${PDYm1}.minRH.grb2 ]; then minmaxt_prep_flg=-1 HH_MM="00:01" fi fi fi fi ######################################################################################### #========================================================================================= cat << EOF > $lconfig/${RUN}_envir.sh #! /bin/ksh export thismachine=$thismachine export vernum=$vernum export RUN=$RUN export CAP_RUN=$CAP_RUN export YYYY=$YYYY export NET=$NET export envir=$envir export ENVIR=$ENVIR export PDY=$PDY export PDYm1=$PDYm1 export cyc=$cyc export cyc_mxtm=$cyc_mxtm export cyc_mitm=$cyc_mitm export cyc_mxtm_m1=$cyc_mxtm_m1 export cyc_mitm_m1=$cyc_mitm_m1 export minmaxt_prep_flg=$minmaxt_prep_flg export LAST_RESTART=$LAST_RESTART export COMROOT=$COMROOT export COM_OUT=$COM_OUT export COMOUT=$COMROOT/${NET}/${envir}/${RUN}.$PDY export COMOUT_GEMPAK=${COMROOT}/${envir}/${RUN}.${PDY}/gempak export COMIN=$COMROOT/${NET}/${envir}/${RUN}.$PDY export COMINm1=$COMROOT/${NET}/${envir}/${RUN}.$PDYm1 export COMINhrrr=/lfs/h1/ops/prod/com/hrrr/v4.1 export COMINrap=/lfs/h1/ops/prod/com/rap/v5.1 export COMINnam=/lfs/h1/ops/prod/com/smartinit/v4.4/nam.${PDY} #note that COMINnam contains one more subdirectory than COMINhrrr, COMINrap export COMINww3=/lfs/h1/ops/prod/com/gfs/v16.2 export COMINww3GL=/lfs/h1/ops/prod/com/glwu/v1.1 export COMINsice=/lfs/h1/ops/prod/com/seaice_analysis/v4.5 export DCOMROOT=/lfs/h1/ops/prod/dcom export PREP_MINMAXT_DIR=$COMROOT/${NET}/${envir}/minmaxt_input export R_COM_OUT=${R_COM_OUT} export COM_URMA=/lfs/h1/ops/prod/com/${NET}/prod export COMINobsproc_urma_0=/lfs/h1/ops/prod/com/obsproc/v1.0/${NET}.${PDY} #path to input prepbufr, satwnd, and efclam files for GSI analysis export COMINobsproc_urma_minmaxt=/lfs/h1/ops/prod/com/obsproc/v1.0/${NET}.${PDY} #path to input prepbufr files for minmaxt ob computation export COMINobsproc_urma_minmaxt_alt=/lfs/h1/ops/prod/com/obsproc/v1.0/${NET}.${PDY} export COMINobsproc_urma=$COMINobsproc_urma export COMINobsproc_urma_m1=$COMINobsproc_urma_m1 export MINMAXT_R_COM_IN=$MINMAXT_R_COM_IN export MINMAXT_COM_IN_ALT=$MINMAXT_COM_IN_ALT export MINMAXT_R_COM_IN_ALT=$MINMAXT_R_COM_IN_ALT export minmaxt_grids=$minmaxt_grids export minmaxt_obs_dirout=$minmaxt_obs_dirout export DATAshared=${ptmp_base}/TMPDATA/${CAP_RUN}_${ENVIR} export GESIN=${ptmp_base}/nwges2/${NET}/${envir} export GESOUT=${ptmp_base}/nwges2/${NET}/${envir} export DATAGES=${LLOGS0}/wrkdir_ges.$PDY$cyc export DATAGSI=${LLOGS0}/tmpreg export DATAPOST=${LLOGS0}/wrkdir_post.$PDY$cyc export DATA_WRAPUP=${LLOGS0}/${RUN}_$PDY$cyc export DATA_GEMPAK=${LLOGS0}/wrkdir_gem.$PDY$cyc export DATA_MINT_PREP=${LLOGS0}/wrkdir_mint_prep.$PDY$cyc export DATA_MAXT_PREP=${LLOGS0}/wrkdir_maxt_prep.$PDY$cyc export DATA_RHIST=${LLOGS0}/wrkdir_rhist.$PDY$cyc export FIXdir1=$HOMEurma/fix/${RUN} export FIXdir2=$HOMEurma/fix/minmaxt export EXEC${NET}=$HOMEurma/exec export HOMEurma=$HOMEurma export lscripts=$lscripts export lscripts_emc=$lscripts_emc export lscripts_minmaxt=$lscripts_minmaxt export lcodes=$HOMEurma/sorc export fixparm=$HOMEurma/fix/${RUN} export cycdir=$cycdir export MPIEXEC=$MPIEXEC export SENDCOM=YES export jlogfile_ges=$LLOGS2/${RUN}_jlogfile_ges export jlogfile_gsi=$LLOGS2/${RUN}_jlogfile_gsi export jlogfile_post=$LLOGS2/${RUN}_jlogfile_post export jlogfile_wrapup=$LLOGS2/${RUN}_jlogfile_wrapup export jlogfile_gem=$LLOGS2/${RUN}_jlogfile_gempak export jlogfile_minmaxt_input=$LLOGS2/${RUN}_jlogfile_minmaxt_input export jlogfile_mint_prep=$LLOGS2/${RUN}_jlogfile_mint_prep export jlogfile_maxt_prep=$LLOGS2/${RUN}_jlogfile_maxt_prep export jlogfile_ftp=$LLOGS2/${RUN}_jlogfile_ftp export LLOGS1=$LLOGS1 export LLOGS2=$LLOGS2 export PCOM=$COMROOT/${NET}/${envir}/pcom/${RUN} export utilscript=$utilscript export utilexec=$utilexec #export ldump=${ptmp}/${USER}/${envir}_${RUN}_output/ndfd.$PDY #export ldumphalfres=${ptmp}/${USER}/${envir}_${RUN}_output_5.0km_remap_from_2.5km/ndfd.$PDY export valdir0=/lfs/h2/emc/stmp/${USER}/airportproj/${envir}_CVRAWDATA_${RUN} export cross_validation_on=no export cressman_anl_on=no export gradsdir=$HOMEurma/emc/grads export rungrads=yes export tarfile_1=${tarfile_1} export tarfile_2=${tarfile_2} export hpsspath0=/NCEPDEV/emc-da/5year/${USER}/airportproj/${envir}_${RUN} export write_to_rzdm=${write_to_rzdm} export hpss_save=${hpss_save} export pcpdata_symlink=${pcpdata_symlink} export USHrhist=/nwprod/runhistory.v2.2.39/ush #export OLD_RUNS=/${ptmp}/${USER}/${envir}_${RUN}_2dvar/old_runs export OLD_RUNS=${ptmp_base}/old_runs/${envir}_${RUN}_2dvar export remove_wrkdirs=$remove_wrkdirs EOF #========================================================================================= . $lconfig/${RUN}_envir.sh if [ ${SINGLE_CYCLE} = no ] ; then if [ -s $COMINobsproc_urma_0/urma.t${cyc}z.prepbufr.tm00 ] ; then echo "Proceed! prepbufr file is available." else echo "Quitting now. prepbufr file is unavailable" exit 0 fi if (((${cyc} == ${cyc_mitm}))) ; then if [ -s ${COMIN}/${RUN}.${PDY}.minT.grb2 ]; then echo "Proceed! background for minT analysis is available" else echo "Quitting now. background for minT analysis is unavailable" exit 0 fi fi if (((${cyc} == ${cyc_mxtm}))) ; then if [ -s ${COMINm1}/${RUN}.${PDYm1}.maxT.grb2 ]; then echo "Proceed! background for maxT analysis is available" else echo "Quitting now. background for maxT analysis is unavailable" exit 0 fi fi fi mkdir -p $OLD_RUNS datestring=`date +%d%b%Y`_`date +%T` list_keep="$DATAGES $DATA_WRAPUP $DATA_MINT_PREP $DATA_MAXT_PREP $DATA_GEMPAK" for type in $list_keep do if [ -e $type ] ; then mv ${type} ${type}_${datestring} mv ${type}_${datestring} ${OLD_RUNS}/. fi if [ -d $type ] ; then mv ${type} ${type}_${datestring} mv ${type}_${datestring} ${OLD_RUNS}/. fi mkdir -p $type done list_erase="$DATAGSI $DATAPOST $DATAshared" for type in $list_erase do /bin/rm -rf $type mkdir -p $type done mkdir -p $COMOUT mkdir -p $COMOUT_GEMPAK mkdir -p $GESIN mkdir -p $GESOUT mkdir -p $PCOM cd $LLOGS1 /bin/rm -rf urma_guess.out* /bin/rm -rf urma_gsi_twodvar.out* /bin/rm -rf urma_post.out* /bin/rm -rf urma_wrapup.out* /bin/rm -rf urma_ftp.out* /bin/rm -rf ftp_to_server_* /bin/rm -rf urma_mintmaxt_prep.out* /bin/rm -rf urma_gempak.out* cd $ljobs module list ############### submit jobs ######################### ##MINMAX=`qsub -l walltime=${HH_MM}:00 ./run_mint_maxt_prep.ll` ##echo $MINMAX GES=`qsub ./run_ges.ll` echo $GES GSI=`qsub -W depend=afterok:$GES ./run_gsi.ll` echo $GSI POST=`qsub -W depend=afterok:$GSI ./run_post.ll` echo $POST #GEMPAK=`qsub -W depend=afterok:$POST ./run_gempak.ll` #echo $GEMPAK WRAPUP=`qsub -W depend=afterok:$POST ./run_wrapup.ll` echo $WRAPUP FTP=`qsub -q $ftpqueue -W depend=afterok:$WRAPUP ./run_ftp.ll` echo $FTP ################################################################################################ ################################################################################################ exit