# # Specify job type # # @ job_type = serial # # # # Specify where to put stdout and stderr # # @ output = /stmp/Wesley.Ebisuzaki/gdas1.out # # @ error = /stmp/Wesley.Ebisuzaki/gdas1.err # # # # Specify queue (dev) # # @ class = dev # # # # Specify wall clock limit HH;MM:SS # # @ wall_clock_limit = 00:50:00 # # # # Specify a preference for the development nodes (frames 9-14) # # @ preferences = Feature == "dev" # # # # @ job_name = test # # @ queue # # # # rewrite of gdas1 for operational use # modeled to run off the CDAS archive directory # #!/bin/sh # # inputs: # prepm24 # prepm24 # sges # bges # oldsanl # snow 1 grib record # ice 1 grib record # sst 1 grib record # # Steps: # 0. BEGIN # 1. PREVENTS -- compute increments and split the bufr file # 2. CQC -- complex quality control # 3. ACQC -- aircraft quality control # 4. COMBBUFR -- combine quality controlled radiosonde and aircraft # 5. OIQC -- optimum interpolation quality control # 6. SSI -- spectral statistical interpolation analysis # 7. SFC -- set up surface conditions # 8. FCST -- atmospheric model integration # 9. PGB -- sigma to pressure interpolation of analysis field # 10. SGB -- sigma spectral to sigma grib # 11. POSTVENTS - add analysis increments to bufr file # 12. COPY -- copy/ftp created files to the archive directory # set -x set -e set -u export OMP_NUM_THEADS=1 fixed=/u/Wesley.Ebisuzaki/home/nwprod/fix restart_step=0 # restart_step=0 NDATE=${NDATE:-/nwprod/util/exec/ndate} CWORDSH=${CWORDSH:-/nwprod/ush/cwordsh} if [ $# -eq 1 ] ; then date=$1 fi date=${date:-0} if [ $date -eq 0 ] ; then echo "date not set" exit 8 fi export date adate=$date enddate=${enddate:-$date} yyyymmddhh=$adate odate=`$NDATE -6 $adate` export date enddate adate odate # Symbolic names of input files # by using symbolic names, we should be able to use any naming convention # # # if non-forecast: date .. date of the file # if forecast: odate date (odate is 6 hour earlier than date) # # to get the proper file name # (1) set date and date to the appropriate values # $ date=1999010112 # $ odate=1999010106 # (2) evaluate the name # $ eval name=$sstname # $ cp $name sstfile # # NCO version # prepname='/com/cdas/prod/cdas.`echo $date|cut -c1-8`/cdas.t`echo $date|cut -c9-10`z.prepbufr_pre-qc' # CDAS monthdir version prepname='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/prepbufr$date.gz' sstname='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/sstgrb$date' snowname='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/snogrb$date' icename='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/icegrb$date' # input/output files #R1 bgesname='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/bges$date' ###bgesname='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/sfc.ft06.$odate.ieee' bgesname='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/sfc.ft06.$odate.ieee' #R1 sgesname='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/sges$date' ###sgesname='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/sig.ft06.$odate.ieee' sgesname='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/sig.ft06.$odate.ieee' #R1 sanlname='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/sanl$date' ###sanlname='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/sig.anl.$date.ieee' sanlname='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/sig.anl.$date.ieee' #R1 sfcanlname='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/sfcanl$date' ###sfcanlname='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/sfc.anl.$date.ieee' sfcanlname='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/sfc.anl.$date.ieee' ###mdlpentadname='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/mdl_p_prate$pdate' mdlpentadname='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/mdl_p_prate$pdate' # obspentadname='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/pingrainT62.grb.new' ###obspentadname='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/pingrainT62.grb.new' obspentadname='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/pingrainT62.grb.new' # output files #R1 flxf06name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/grb2d$odate' ###flxf06name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/flx.ft06.$odate.grib' ###flxf00name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/flx.ft00.$odate.grib' flxf06name='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/flx.ft06.$odate.grib' flxf00name='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/flx.ft00.$odate.grib' #R1 dg3f06name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/grb3d$odate' ###dg3f06name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/dg3.ft06.$odate.grib' ###dg3f00name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/dg3.ft00.$odate.grib' dg3f06name='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/dg3.ft06.$odate.grib' dg3f00name='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/dg3.ft00.$odate.grib' #R1 pgbf00name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/pgb.f00$odate' ###pgbf00name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/pgb.anl.$odate.grib' ###pgbf06name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/pgb.ft06.$odate.grib' pgbf00name='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/pgb.anl.$odate.grib' pgbf06name='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/pgb.ft06.$odate.grib' ###sgbf00name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/sgb.anl.$odate.grib' ###sgbf06name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/sgb.ft06.$odate.grib' sgbf00name='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/sgb.anl.$odate.grib' sgbf06name='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/sgb.ft06.$odate.grib' ###txtout1name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/stdout0.anl.$odate.ascii' ###txtout2name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/stdout1.anl.$odate.ascii' txtout1name='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/stdout0.anl.$odate.ascii' txtout2name='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/stdout1.anl.$odate.ascii' #R1 znlf00name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/znl.f00$odate' ###znlf00name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/znl.ft00.$odate.native' znlf00name='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/znl.ft00.$odate.native' #R1 znlf06name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/znl.f06$odate' ###znlf06name='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/znl.ft06.$odate.native' znlf06name='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/znl.ft06.$odate.native' ###cqbname='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/cqb.anl.$odate.ascii' ###cqename='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/cqe.anl.$odate.ascii' ###cqtname='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/cqt.anl.$odate.ascii' cqbname='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/cqb.anl.$odate.ascii' cqename='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/cqe.anl.$odate.ascii' cqtname='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/cqt.anl.$odate.ascii' #R1 prepqm='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/prepqm$date' ###prepoiqc='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/oiqc.anl.$date.bufr' ###prepqm='/u/Wesley.Ebisuzaki/home/data/monthdir.r2/pvents.anl.$date.bufr' prepoiqc='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/oiqc.anl.$date.bufr' prepqm='/sss/cpc/shared/Hui.Wang/home/data/monthdir.r2/pvents.anl.$date.bufr' # FAST = 1 .. save time but use more space FAST=0 startdir=`pwd` STATUS=/sss/cpc/shared/$LOGNAME/home/r2/gdas1.status prepdate=/u/Wesley.Ebisuzaki/home/r1/scripts/prepdate.sh # tmpdir=/stmp/$LOGNAME/gdas1.$$ # tmpdir=/stmp/$LOGNAME/gdas1 ####tmpdir=$TMPDIR/gdas1 tmpdir=/cpc/noscrub/$LOGNAME/gdas1 mkdir -p $tmpdir cd $tmpdir if [ $? -ne 0 ] ; then echo "could not cd to $tmpdir" >>stdout1.anl.ascii echo "could not cd to $tmpdir" >>$STATUS exit 8 fi export mdl_precip=$tmpdir/mdl_precip [ $restart_step -eq 0 ] && touch junk && rm * ###SCRIPTS=/u/Wesley.Ebisuzaki/home/r2/scripts SCRIPTS=/sss/cpc/shared/Hui.Wang/home/r2/scripts ###PRECIP_AVE=/u/Wesley.Ebisuzaki/home/r2/scripts/r2_precip_mk_ave PRECIP_AVE=/sss/cpc/shared/Hui.Wang/home/r2/scripts/r2_precip_mk_ave UTILS=/u/Wesley.Ebisuzaki/home/r1/utils LIB_DIR=/u/Wesley.Ebisuzaki/home/r2/nmm/etc NUTILS=/u/Wesley.Ebisuzaki/home/nwprod/exec export EXPBINDIR=/nwprod/exec export EXPBINDIR=/u/Wesley.Ebisuzaki/home/nwprod/exec export EXPCONDIR=/u/Wesley.Ebisuzaki/home/r2/nmmsave/rerun_ctl/const export GDAS_CONSTANTS_DIR=/u/Wesley.Ebisuzaki/home/r2/nmm/gdas_con export BASIC_CONSTANTS_DIR=/u/Wesley.Ebisuzaki/home/r2/nmm/base_con export FTNID='fort.' namelistend="/" # ibm option to quit on i/o errors # XLFRTEOPTS='cnverr=no' # XLFRTEOPTS='err_recovery=no' # export XLFRTEOPTS namelistend FTNID # # Orography file choices (Introduced for using smoothed orography) # fnorog=${FNOROG:=$EXPCONDIR/orogrd.smth} PRECIPITATION_SOIL_ADJUSTMENT=yes # PRECIPITATION_SOIL_ADJUSTMENT=no # need double precision version of wgrib # wgrib=/u/Wesley.Ebisuzaki/home/r2/bin/wgribdbl # use opn codes .. use regular wgrib wgrib=/nwprod/util/exec/wgrib # # Ozone climatology # if [ ${NEW_CLIM_O3:=yes} = yes ] ; then CLIM_O3=$BASIC_CONSTANTS_DIR/gcmo3.asc else rm dummyO3 touch dummyO3 CLIM_O3=dummyO3 fi echo "date c2`echo $adate | cut -c3-10` washington " >$tmpdir/nmcdate # # check whether file exists # p=sst, bges, etc # check_file() { # get the name of the files eval p1=\$${p}name eval p1=$p1 if [ ! -s $p1 ] ; then echo "missing $p file: $p1" echo "missing $p file: $p1" >>stdout1.anl.ascii echo "missing $p file: $p1" >>$STATUS exit 8 fi } # # check for all prepbufr files -24 -12 0 12 24 hour # unlike original script .. quit if missing prepbufr files # also expand the files for hour in -24 -12 00 +12 +24 do date=`$NDATE $hour $adate` p=prep check_file eval p=$prepname #### $SCRIPTS/gdas0 $p $tmpdir/prepbufr.t$hour stdout0.anl.ascii.tmp /sss/cpc/shared/Hui.Wang/home/r2/scripts/gdas0 $p $tmpdir/prepbufr.t$hour stdout0.anl.ascii.tmp if [ $date -ne `$prepdate $tmpdir/prepbufr.t$hour` ] ; then echo "prepbufr has wrong date" >>stdout1.anl.ascii echo "prepbufr has wrong date" >>$STATUS echo "$date `$prepdate $tmpdir/prepbufr.t$hour` $p" >>$STATUS exit 8 fi [ $hour -eq 0 ] && mv stdout0.anl.ascii.tmp stdout0.anl.ascii done echo "bufr files found" >>stdout1.anl.ascii # # check for sigges, sfcges (bges) and 6 hour old sigma # date=$adate for p in sges bges do check_file echo "$p file found" >>stdout1.anl.ascii done date=$odate p=sanl check_file echo "old sigma analysis file found" >>stdout1.anl.ascii # # check for sst, snow and sea-ice # date=$adate for p in sst snow ice do check_file echo "$p file found" >>stdout1.anl.ascii done # # convert sges, bges and oldsanl to native format # eval sges=$sgesname $NUTILS/cdas2_v1_sig2dbl $sges sges eval bges=$bgesname $NUTILS/cdas2_v1_sig2dbl $bges bges date=$odate eval oldsanl=$sanlname $NUTILS/cdas2_v1_sig2dbl $oldsanl oldsanl # # 1. prevents # if [ $restart_step -le 1 ] ; then # changed 12/2011 PROG=cdas2_prevents PROG=cdas2_v1_prevents echo "-------------- $PROG ------------" >>stdout1.anl.ascii echo `date` -- $PROG for $adate started >>$STATUS touch bufr_adpupa bufr_aircft bufr_sfcsat ${FTNID}0 rm -f bufr_adpupa bufr_aircft bufr_sfcsat ${FTNID}[0-9]* ln -sf $tmpdir/prepbufr.t00 ${FTNID}11 ln -sf sges ${FTNID}12 # $GDAS_CONSTANTS_DIR/ssierr 2657355352 493382 # /u/Wesley.Ebisuzaki/home/r1/fixed_fields/r2/ssierr.new.r2 1459496408 492800 # nersc: 2657355352 493382 ln -sf $GDAS_CONSTANTS_DIR/ssierr ${FTNID}13 # wne # ln -sf /u/Wesley.Ebisuzaki/home/r1/fixed_fields/r2/ssierr.new.r2 ${FTNID}13 ln -sf nmcdate ${FTNID}14 ln -sf bufr_adpupa ${FTNID}50 ln -sf bufr_aircft ${FTNID}51 ln -sf bufr_sfcsat ${FTNID}52 pwd $EXPBINDIR/$PROG 1>$PROG.out 2>&1 if [ $? -ne 0 ] ; then echo `date` - $PROG execution failed >> stdout1.anl.ascii echo `date` - $PROG execution failed >>$STATUS echo ------------------------- >>$STATUS exit 8 fi cat $PROG.out >>stdout1.anl.ascii fi # # 2. cqc # if [ $restart_step -le 2 ] ; then # changed 12/2011 PROG=cdas2_cqc PROG=cdas2_v1_cqc # if [ $yyyymmddhh -ge 1992110100 -a $yyyymmddhh -le 1993022818 ] ; then # PROG=cqctoga # fi echo "-------------- $PROG ------------" >>stdout1.anl.ascii echo `date` -- $PROG started >>$STATUS # diff from gdas1 .. prepbufr files assume to exist touch cqe.anl.ascii cqb.anl.ascii cqt.anl.ascii ${FTNID}0 rm -f cqe.anl.ascii cqb.anl.ascii cqt.anl.ascii ${FTNID}[0-9]* ln -fs bufr_adpupa ${FTNID}14 ln -fs 'prepbufr.t-24' ${FTNID}17 ln -fs 'prepbufr.t-12' ${FTNID}18 ln -fs 'prepbufr.t+12' ${FTNID}19 ln -fs 'prepbufr.t+24' ${FTNID}20 ln -fs bufr_adpupa_cqc_output ${FTNID}51 ln -fs cqc11 ${FTNID}11 ln -fs cqe.anl.ascii ${FTNID}12 ln -fs cqc13 ${FTNID}13 ln -fs cqb.anl.ascii ${FTNID}15 ln -fs cqc16 ${FTNID}16 ln -fs cqt.anl.ascii ${FTNID}60 ln -fs cqc61 ${FTNID}61 ln -fs cqc62 ${FTNID}62 ln -fs cqc64 ${FTNID}63 ln -fs cqc65 ${FTNID}64 touch cqc11 touch cqe.anl.ascii touch cqc13 touch cqb.anl.ascii touch cqc16 touch cqt.anl.ascii touch cqc61 touch cqc62 touch cqc64 touch cqc65 # test touch fort.4 $EXPBINDIR/$PROG 1>$PROG.out 2>&1 if [ $? -ne 0 ] ; then echo `date` - $PROG execution failed >>$STATUS echo --------------------------------- >>$STATUS exit 8 fi # not fatal error if cqe.anl.ascii is missing [ ! -s cqe.anl.ascii ] && echo >cqe.anl.ascii cat $PROG.out >>stdout1.anl.ascii fi # # 3. acqc # if [ $restart_step -le 3 ] ; then # changed 12/2011 PROG=cdas2_acqc PROG=cdas2_v1_acqc echo "-------------- $PROG ------------" >>stdout1.anl.ascii echo `date` -- $PROG started >>$STATUS touch bufr_aircft_acqc_output ${FTNID}0 rm -f bufr_aircft_acqc_output ${FTNID}[0-9]* ln -fs bufr_aircft ${FTNID}14 ln -fs $GDAS_CONSTANTS_DIR/landsea ${FTNID}15 ln -fs $GDAS_CONSTANTS_DIR/waypts ${FTNID}23 ln -fs sdmacqc ${FTNID}52 ln -fs sdmstac ${FTNID}53 ln -fs bufr_aircft_acqc_output ${FTNID}61 ln -fs debugout ${FTNID}88 # # note: code from kana has IFLGUS=1 # nersc output has IFLGUS=0 # 1 -> geographical test # $EXPBINDIR/$PROG 1>$PROG.out 2>&1 <>stdout1.anl.ascii echo `date` - $PROG execution failed >>$STATUS echo --------------------------------- >>$STATUS exit 8 fi cat $PROG.out >>stdout1.anl.ascii fi # # 4. combbufr # # combines the sfc/sat, adpupa and aircft bufr files # if [ $restart_step -le 4 ] ; then # changed 12/2011 PROG=cdas2_combbufr PROG=cdas2_v1_combbufr echo "-------------- $PROG ------------" >>stdout1.anl.ascii echo `date` -- $PROG started >>$STATUS touch combbufr_bufr_output ${FTNID}0 rm -f combbufr_bufr_output ${FTNID}[0-9]* ln -fs bufr_sfcsat ${FTNID}20 ln -fs bufr_adpupa_cqc_output ${FTNID}21 ln -fs bufr_aircft_acqc_output ${FTNID}22 ln -fs combbufr_bufr_output ${FTNID}50 echo 3 | $EXPBINDIR/$PROG 1>$PROG.out 2>&1 if [ $? -ne 0 ] ; then echo `date` - $PROG execution failed >>stdout1.anl.ascii echo `date` - $PROG execution failed >>$STATUS echo --------------------------------- >>$STATUS exit 8 fi cat $PROG.out >>stdout1.anl.ascii fi # # 5. oiqc # if [ $restart_step -le 5 ] ; then # changed 12/2011 PROG=cdas2_oiqc # # changed 11/2012 # for wcoss, bufr library outputs unblocked # but oiqc uses the obsolete routine ufbrew # which gets the message count of combufr by counting # f77 records $CWORDSH block combbufr_bufr_output combbufr.tmp mv combbufr.tmp combbufr_bufr_output PROG=cdas2_v1_oiqc echo "-------------- $PROG ------------" >>stdout1.anl.ascii echo `date` -- $PROG started >>$STATUS touch oiqc_bufr_output ${FTNID}0 rm -f oiqc_bufr_output ${FTNID}[0-9]* ln -sf nmcdate ${FTNID}11 ln -sf combbufr_bufr_output ${FTNID}14 # $GDAS_CONSTANTS_DIR/oiqcerr 3385160718 11392 # nersc oiqcerr: 3385160718 11392 ln -sf $GDAS_CONSTANTS_DIR/oiqcerr ${FTNID}17 ln -sf obprt.wrk ${FTNID}18 ln -sf tolls.wrk ${FTNID}20 ln -sf obcbt.out ${FTNID}60 ln -sf toss.sfz ${FTNID}61 ln -sf toss.upa ${FTNID}62 ln -sf toss.sat ${FTNID}63 ln -sf toss.smi ${FTNID}64 ln -sf tosslist ${FTNID}65 ln -sf oiqc.anl.bufr ${FTNID}70 ln -sf obogram.out ${FTNID}81 ln -sf obogram.bin ${FTNID}82 touch obprt.wrk touch tolls.wrk $EXPBINDIR/$PROG 1>$PROG.out 2>&1 if [ $? -ne 0 ] ; then echo `date` - $PROG execution failed >>stdout1.anl.ascii echo `date` - $PROG execution failed >>$STATUS echo --------------------------------- >>$STATUS exit 8 fi cat $PROG.out >>stdout1.anl.ascii fi # # 6. ssi # if [ $restart_step -le 6 ] ; then # changed 12/2011 PROG=cdas2_ssi PROG=cdas2_v1_ssi echo "-------------- $PROG ------------" >>stdout1.anl.ascii echo `date` -- $PROG started >>$STATUS # T62 L28 values JCAP=${JCAP:-62} LATG=${LATG:-94} LONF=${LONF:-192} LEVS=${LEVS:-28} NITER=${NITER:-100} NLATH=`expr $LATG \/ 2 + 1` cat <$PROG.parm &NAMANAL JCAP=$JCAP,NLATH=$NLATH,NLON=$LONF,NSIG=$LEVS, niter=$NITER,miter=1, a=.25,.33,.42,.45,ampdivt=.7,dampdivt=.8,grosst=10.,grossst=10., grossw=10.,grossp=10.,grossq=5.,grosspw=10., $namelistend EOF date=$adate touch sanl ${FTNID}0 rm -f sanl ${FTNID}[0-9]* ln -fs oiqc.anl.bufr ${FTNID}30 ln -fs sges ${FTNID}35 [ -s oldsanl ] && ln -fs oldsanl ${FTNID}36 ln -fs bges ${FTNID}37 ln -fs $GDAS_CONSTANTS_DIR/divterrs2812645 ${FTNID}47 ln -fs $GDAS_CONSTANTS_DIR/v28newx ${FTNID}48 ln -fs $GDAS_CONSTANTS_DIR/eofs28126 ${FTNID}49 ln -fs sanl ${FTNID}51 ln -fs fort.61 ${FTNID}61 ln -fs scratch3 ${FTNID}98 $EXPBINDIR/$PROG <$PROG.parm 1>$PROG.out 2>&1 if [ $? -ne 0 ] ; then echo `date` - $PROG execution failed >>stdout1.anl.ascii echo `date` - $PROG execution failed >>$STATUS echo --------------------------------- >>$STATUS exit 8 fi if [ ! -s ./sanl ] ; then echo `date` - $PROG execution failed >>stdout1.anl.ascii echo `date` - $PROG execution failed >>$STATUS echo --------------------------------- >>$STATUS exit 8 fi cat $PROG.out >>stdout1.anl.ascii fi # # 7. sfc # if [ $restart_step -le 7 ] ; then # changed 12/2011 PROG=cdas2_sfc PROG=cdas2_v1_sfc echo "-------------- $PROG ------------" >>stdout1.anl.ascii echo `date` -- $PROG started >>$STATUS # # DATE CHECK # # $LIB_DIR/date.s ./sanl >date.out # read hour month day year fhour >$STATUS echo "date check failed: sanl fhour not zero" >>stdout1.anl.ascii exit 8 fi ndate="$year$month$day$hour" if [ "$ndate" != $adate ] ; then echo "date check failed: sanl-$ndate vs $adate" >>$STATUS echo "date check failed: sanl-$ndate vs $adate" >>stdout1.anl.ascii exit 8 fi # # The following surface file name specification is site dependent # date=$adate eval FNTSFA=$sstname eval FNSCVA=$snowname eval FNACNA=$icename echo " &NAMMAIN " >$tmpdir/$PROG.parm echo " IY=$year,IM=$month,ID=$day,IH=$hour,FH=$fhour.," >>$tmpdir/$PROG.parm echo " $namelistend" >>$tmpdir/$PROG.parm echo " &NAMSFC " >>$tmpdir/$PROG.parm echo " FNBGSI='bges'" >>$tmpdir/$PROG.parm echo " FNBGSO='sfc.anl'" >>$tmpdir/$PROG.parm # # echo " FNOROG='$EXPCONDIR/oroggd'" >>$tmpdir/$PROG.parm # # Error fixed on 10-16-97 # # echo " FNOROG='$fnorog'," >>$tmpdir/$PROG.parm echo " FNMASK='$EXPCONDIR/slmsk'," >>$tmpdir/$PROG.parm echo " FNGLAC='$BASIC_CONSTANTS_DIR/clim.glacier'," >>$tmpdir/$PROG.parm echo " FNMXIC='$BASIC_CONSTANTS_DIR/clim.maxice'," >>$tmpdir/$PROG.parm echo " FNTSFC='$BASIC_CONSTANTS_DIR/clim.sst'," >>$tmpdir/$PROG.parm echo " FNWETC=' '," >>$tmpdir/$PROG.parm echo " FNSNOC='$BASIC_CONSTANTS_DIR/clim.snow'," >>$tmpdir/$PROG.parm echo " FNZORC='$BASIC_CONSTANTS_DIR/clim.sibrough'," >>$tmpdir/$PROG.parm echo " FNALBC='$BASIC_CONSTANTS_DIR/clim.matthewalb'," >>$tmpdir/$PROG.parm echo " FNAISC='$BASIC_CONSTANTS_DIR/clim.ice'," >>$tmpdir/$PROG.parm echo " FNPLRC='$BASIC_CONSTANTS_DIR/clim.sibresis'," >>$tmpdir/$PROG.parm echo " FNTG3C='$BASIC_CONSTANTS_DIR/clim.tg3'," >>$tmpdir/$PROG.parm echo " FNSCVC=' '," >>$tmpdir/$PROG.parm echo " FNSMCC='$BASIC_CONSTANTS_DIR/clim.deepsoil'," >>$tmpdir/$PROG.parm echo " FNSTCC=' '," >>$tmpdir/$PROG.parm echo " FNACNC=' '," >>$tmpdir/$PROG.parm echo " FNTSFA='$FNTSFA'," >>$tmpdir/$PROG.parm echo " FNAISA=' '," >>$tmpdir/$PROG.parm echo " FNSNOA=' '," >>$tmpdir/$PROG.parm echo " FNSCVA='$FNSCVA'," >>$tmpdir/$PROG.parm echo " FNACNA='$FNACNA'," >>$tmpdir/$PROG.parm echo " $namelistend" >>$tmpdir/$PROG.parm touch sfc.anl ${FTNID}0 rm -f sfc.anl ${FTNID}[0-9]* time $EXPBINDIR/$PROG <$tmpdir/$PROG.parm 1>$PROG.out 2>&1 if [ $? -ne 0 ] ; then echo `date` - $PROG execution failed >>stdout1.anl.ascii echo `date` - $PROG execution failed >>$STATUS echo --------------------------------- >>$STATUS exit 8 else echo `date` - $PROG execution finished >>stdout1.anl.ascii fi cat $PROG.out >>stdout1.anl.ascii # # 7.5 Soil wetness adjustment # # note: precip_adj program is running in single precision (as is sfcanl file) # must use single precision wgrib # # if [ $PRECIPITATION_SOIL_ADJUSTMENT = yes ] ; then # changed 12/2011 PROG=cdas2_precipadj PROG=cdas2_v1_precipadj # find number of the current pentad # nnumm=`grep -n "$month$day" /nwprod/fix/cdas2_v1_pentads | cut -d':' -f1` nnumm=`grep -n "$month$day" $LIB_DIR/pentads | cut -d':' -f1` # find previous pentad if [ $nnumm -eq 1 ] ; then # nnumm=`grep -n "1231" $LIB_DIR/pentads | cut -d':' -f1` nnumm=73 pyyyy=`expr $year - 1` else nnumm="`expr $nnumm - 1`" pyyyy=$year fi # now, pyyyy, nnumm = year and pentad number of previous pentad # find start and finish of the previous pentad # find start and finish of the previous pentad nams=`sed -n "$nnumm p" $LIB_DIR/pentads | cut -d' ' -f1` namf=`sed -n "$nnumm p" $LIB_DIR/pentads | sed 's/.* //g'` pdate=$pyyyy$nams penddate=$pyyyy$namf # eval mdlprecip=$mdlpentadname eval obsprecip=$obspentadname # extract obs precip echo "obs precipitation:" >>stdout1.anl.ascii $wgrib -s -4yr $obsprecip | grep ":PRATE:" | grep ":d=$pdate" | \ $wgrib $obsprecip -V -i -ieee -o obs_prate$pdate >>stdout1.anl.ascii if [ `wc -c >stdout1.anl.ascii echo `date` - no observed pentad precip >>$STATUS echo --------------------------------- >>$STATUS exit 8 fi # get model prate odate=$pyyyy${nams}00 ldate=$pyyyy${namf}18 [ -f "model_prate$pdate" ] && rm model_prate$pdate while [ $odate -le $ldate ] ; do eval f=$flxf06name n=`$wgrib $f | egrep "(PRATE|RUNOF|LAND)" | sort -t: -k5,6 | \ $wgrib -i -s $f -grib -o model_prate$pdate -append | wc -l` if [ $n -ne 3 ] ; then echo `date` - $PROG execution failed >>$STATUS echo --------------------------------- >>$STATUS exit 8 fi odate=`$NDATE +6 $odate` done # write PRATE, LAND, RUNOF in binary $wgrib -d all model_prate$pdate -ieee -o model_prate$pdate.bin -s touch ${FTNID}0 rm -f ${FTNID}[0-9]* ln -fs sfc.anl ${FTNID}10 ln -fs obs_prate$pdate ${FTNID}11 ln -fs model_prate$pdate.bin ${FTNID}12 ln -fs sfc.adjusted ${FTNID}51 ln -fs precipadj.grib ${FTNID}52 # $EXPBINDIR/$PROG 1>$PROG.out 2>&1 # $EXPBINDIR/$PROG.badunit 1>$PROG.out 2>&1 # $EXPBINDIR/$PROG 1>$PROG.out 2>&1 $EXPBINDIR/cdas2_v1_precipadj 1>$PROG.out 2>&1 if [ $? -ne 0 ] ; then echo `date` - $PROG execution failed >>$STATUS echo --------------------------------- >>$STATUS exit 8 fi # rm obs_prate$pdate model_prate$pdate # test mv sfc.anl sfc.anl.noprecip_adj mv sfc.adjusted sfc.anl cat $PROG.out >>stdout1.anl.ascii fi fi # # 8. fcst # if [ $restart_step -le 8 ] ; then # changed 12/2011 PROG=cdas2_fcst PROG=cdas2_v1_fcst echo "-------------- $PROG ------------" >>stdout1.anl.ascii echo `date` -- $PROG started >>$STATUS h=00 # cp sanl sigit if [ $? -ne 0 ] ; then exit 8 fi cp sfc.anl sfci if [ $? -ne 0 ] ; then exit 8 fi cp sigit sigitdt if [ $? -ne 0 ] ; then exit 8 fi # # Forecast parameters # swhr_gbl=${SHORT_WAVE_INTVL:=1} lwhr_gbl=${LONG_WAVE_INTVL:=1} # # Set INTHOUR)=$INCHOUR/2 to get intermediate output # INCHOUR=6 PRTHOUR=6 ENDHOUR=6 DELTAT=${DELTAT:=1800} INTHOUR=${INTHOUR:=0} HDIFF_Q_T_RATIO=${HDIFF_Q_T_RATIO:=1.0} # echo "&NAMSMF NUM(5)=0, " >$tmpdir/$PROG.parm echo " CON(1)=$DELTAT.,CON(3)=0., " >>$tmpdir/$PROG.parm echo " CON(4)=$swhr_gbl.,CON(5)=$lwhr_gbl., " >>$tmpdir/$PROG.parm echo " CON(7)=$INCHOUR., " >>$tmpdir/$PROG.parm echo " CON(9)=$PRTHOUR., " >>$tmpdir/$PROG.parm echo " CON(17)=$ENDHOUR.," >>$tmpdir/$PROG.parm echo " CON(6)=$INTHOUR., " >>$tmpdir/$PROG.parm echo " CON(8)=$HDIFF_Q_T_RATIO," >>$tmpdir/$PROG.parm echo " ICEN2=1, IGEN=195," >>$tmpdir/$PROG.parm echo "$namelistend" >>$tmpdir/$PROG.parm endhour=$ENDHOUR inchour=$INCHOUR # # Forecast loop # touch sig.ft0 sfc.ft0 flx.ft0 dg3.ft0 znl.ft0 rm sig.ft* sfc.ft* flx.ft* dg3.ft* znl.ft* xc=0 while [ $h -lt $endhour ];do hx=`expr $h + $inchour` hxhf=`expr $hx \/ 2` if [ $hx -lt 10 ] ; then hx=0$hx fi if [ $hxhf -lt 10 ] ; then hxhf=0$hxhf fi touch ${FTNID}0 rm -f ${FTNID}[0-9]* ln -fs sigit ${FTNID}11 ln -fs sigitdt ${FTNID}12 ln -fs sfci ${FTNID}14 # ln -fs $EXPCONDIR/co2con ${FTNID}15 ln -fs $fixed/cdas2_v1_co2con ${FTNID}15 [ -f heatrate ] && rm heatrate ln -fs heatrate ${FTNID}21 # ln -fs $EXPCONDIR/mtnvar ${FTNID}24 ln -fs $fixed/cdas2_v1_mtnvar ${FTNID}24 # ln -fs $BASIC_CONSTANTS_DIR/tune1 ${FTNID}43 ln -fs $fixed/cdas2_v1_tune_nmax_1979.ewmrge.sngl.dbl ${FTNID}43 # tune_new_max_nvvl.197901-12.ewmrge.sngl.dbl ${FTNID}43 # basic_constants/gcmo3.asc 767943794 25388 # nserc gcmo3.asc 767943794 25388 # fixed/cmo3.asc 767943794 25388 # ln -fs $CLIM_O3 ${FTNID}48 # ln -fs $fixed/gcmo3.asc ${FTNID}48 # ln -fs $BASIC_CONSTANTS_DIR/gcmo3.asc ${FTNID}48 ln -sf $fixed/cdas2_v1_gcmo3.asc ${FTNID}48 # test 6 # ln -fs $EXPCONDIR/albaer.snl ${FTNID}49 # ln -fs $fixed/albaer.snl.dbl ${FTNID}49 ln -sf $fixed/cdas2_v1_albaer.snl ${FTNID}49 ln -fs sig.ft$hx ${FTNID}51 ln -fs sigdt ${FTNID}52 ln -fs sfc.ft$hx ${FTNID}53 ln -fs sfc.ft$hxhf ${FTNID}54 ln -fs sig.ft$hxhf ${FTNID}56 ln -fs znl.ft$h.native ${FTNID}61 ln -fs flx.ft$h.grib ${FTNID}62 ln -fs flx.ft$hx.grib ${FTNID}63 ln -fs znl.ft$hx.native ${FTNID}64 ln -fs dg3.ft$h.grib ${FTNID}65 ln -fs dg3.ft$hx.grib ${FTNID}66 ln -fs ken.ft$hx.native ${FTNID}67 ln -fs flx.ft$hxhf.grib ${FTNID}68 ln -fs znl.ft$hxhf.native ${FTNID}69 ln -fs diabanl ${FTNID}81 ln -fs adiages ${FTNID}82 ln -fs fullges ${FTNID}83 ln -fs diagscr ${FTNID}92 ln -fs radscr ${FTNID}98 ln -fs w3out ${FTNID}99 touch heatrate INPUT=$tmpdir/$PROG.parm echo `date` - Forecast executing from hour $h to $hx >>$STATUS FCST_EXECUTABLE=${FCST_EXECUTABLE:-default} [ $FCST_EXECUTABLE = default ] && FCST_EXECUTABLE=$EXPBINDIR/$PROG time $EXPBINDIR/$PROG <$INPUT 1>$PROG.out 2>&1 if [ $? -ne 0 ] ; then echo `date` - $PROG from $h to $hx execution failed >>$STATUS echo --------------------------------- >>$STATUS exit 8 fi cat $PROG.out >>stdout1.anl.ascii # # append precipadj grib file to the flx file # if [ $PRECIPITATION_SOIL_ADJUSTMENT = yes ] ; then cat precipadj.grib >>flx.ft$hx.grib if [ $? -ne 0 ] ; then echo `date` - cat of precipadj.grib failed >>$STATUS exit 8 fi fi cp sig.ft$hx sigit if [ $? -ne 0 ] ; then exit 8 fi mv sigdt sigitdt if [ $? -ne 0 ] ; then exit 8 fi cp sfc.ft$hx sfci if [ $? -ne 0 ] ; then exit 8 fi h=$hx done fi # # 9. Post processing of analysis (PGB) # if [ $restart_step -le 9 -a $FAST -eq 0 ] ; then # changed 12/2011 PROG=cdas2_pgb PROG=cdas2_v1_pgb echo "-------------- $PROG ------------" >>stdout1.anl.ascii echo `date` -- $PROG started >>$STATUS INPUT=$tmpdir/$PROG.parm echo " &NAMPGB" >$tmpdir/$PROG.parm echo " ICEN2=1,">>$tmpdir/$PROG.parm echo " IGEN=195,">>$tmpdir/$PROG.parm echo "$namelistend" >>$tmpdir/$PROG.parm # touch pgb.anl.grib pgb.ft06.grib ${FTNID}0 rm -f pgb.anl.grib pgb.ft06.grib ${FTNID}[0-9]* ln -fs sanl ${FTNID}11 ln -fs pgb.anl.grib ${FTNID}51 $EXPBINDIR/$PROG <$INPUT 1>$PROG.out 2>&1 if [ $? -ne 0 ] ; then echo `date` - $PROG execution failed >>$STATUS echo --------------------------------- >>$STATUS exit 8 fi rm -f ${FTNID}[0-9]* ln -fs sig.ft06 ${FTNID}11 ln -fs pgb.ft06.grib ${FTNID}51 $EXPBINDIR/$PROG <$INPUT 1>$PROG.out 2>&1 if [ $? -ne 0 ] ; then echo `date` - $PROG ft06 execution failed >>$STATUS echo --------------------------------- >>$STATUS exit 8 fi fi # # 10. Post processing of (SGB) # if [ $restart_step -le 10 -a $FAST -eq 0 ] ; then # changed 12/2011 PROG=cdas2_sgb PROG=cdas2_v1_sgb echo "-------------- $PROG ------------" >>stdout1.anl.ascii echo `date` -- $PROG ft06 started >>$STATUS INPUT=$tmpdir/$PROG.parm echo " &NAMSGB" >$tmpdir/$PROG.parm echo " ICEN2=1,">>$tmpdir/$PROG.parm echo " IGEN=195,">>$tmpdir/$PROG.parm echo "$namelistend" >>$tmpdir/$PROG.parm touch sgb.anl.grib sgb.ft06.grib ${FTNID}0 rm -f sgb.anl.grib sgb.ft06.grib ${FTNID}[0-9]* ln -fs sanl ${FTNID}11 ln -fs sig.anl.grib ${FTNID}51 $EXPBINDIR/$PROG <$INPUT 1>$PROG.out 2>&1 if [ $? -ne 0 ] ; then echo `date` - $PROG anl execution failed >>$STATUS echo --------------------------------- >>$STATUS exit 8 fi rm -f {FTNID}[0-9]* ln -fs sig.ft06 ${FTNID}11 ln -fs sig.ft06.grib ${FTNID}51 $EXPBINDIR/$PROG <$INPUT 1>$PROG.out 2>&1 if [ $? -ne 0 ] ; then echo `date` - $PROG ft06 execution failed >>$STATUS echo --------------------------------- >>$STATUS exit 8 fi fi # # 11. Postvents # # postvent crashed 2014061018 if [ 1 -eq 2 ] ; then if [ $restart_step -le 11 -a $FAST -eq 0 ] ; then # changed 12/2011 PROG=cdas2_postvents PROG=cdas2_v1_postvents echo "-------------- $PROG ------------" >>stdout1.anl.ascii echo `date` -- $PROG started >>$STATUS touch ${FTNID}0 pvents.anl.bufr rm -f pvents.anl.bufr ${FTNID}[0-9]* ln -fs oiqc.anl.bufr ${FTNID}20 ln -fs sanl ${FTNID}21 ln -fs GFIT.anl.jwpk ${FTNID}51 ln -fs AFIT.anl.jwpk ${FTNID}52 ln -fs dummy ${FTNID}53 ln -fs pvents.anl.bufr ${FTNID}50 ln -fs dummy ${FTNID}54 $EXPBINDIR/$PROG 1>$PROG.out 2>&1 if [ $? -ne 0 ] ; then echo `date` - $PROG execution failed >>$STATUS echo `date` - $PROG execution failed >>stdout1.anl.ascii echo --------------------------------- >>$STATUS exit 8 fi fi fi # # 12. copy # if [ $restart_step -le 12 ] ; then # analysis products .. name depends only on date date=$adate eval p=$sfcanlname $NUTILS/cdas2_v1_sig2sngl sfc.anl sfc.anl.sngl cp sfc.anl.sngl $p & eval p=$sanlname $NUTILS/cdas2_v1_sig2sngl sanl sanl.sngl cp sanl.sngl $p & eval p=$prepoiqc cp oiqc.anl.bufr $p & if [ $FAST -eq 1 ] ; then wait [ -f $p.gz ] && rm -f $p.gz gzip $p fi # forecast producst odate=$adate date=`$NDATE +6 $adate` if [ $FAST -eq 0 ] ; then eval p=$pgbf00name cp pgb.anl.grib $p & eval p=$pgbf06name cp pgb.ft06.grib $p & eval p=$sgbf00name cp sig.anl.grib $p & eval p=$sgbf06name cp sig.ft06.grib $p & fi wait eval p=$txtout1name cp stdout0.anl.ascii $p & eval p=$txtout2name cp stdout1.anl.ascii $p & wait eval p=$cqbname cp cqb.anl.ascii $p & eval p=$cqename cp cqe.anl.ascii $p & eval p=$cqtname cp cqt.anl.ascii $p & wait eval p=$dg3f00name cp dg3.ft00.grib $p & eval p=$dg3f06name cp dg3.ft06.grib $p & eval p=$flxf00name cp flx.ft00.grib $p & wait eval p=$flxf06name cp flx.ft06.grib $p & eval p=$znlf00name cp znl.ft00.native $p & eval p=$znlf06name cp znl.ft06.native $p & wait eval p=$sgesname $NUTILS/cdas2_v1_sig2sngl sig.ft06 sig.ft06.sngl cp sig.ft06.sngl $p & eval p=$bgesname $NUTILS/cdas2_v1_sig2sngl sfc.ft06 sfc.ft06.sngl cp sfc.ft06.sngl $p & # if [ $FAST -eq 0 ] ; then # eval p=$prepqm # cp pvents.anl.bufr $p # [ -f $p.gz ] && rm -f $p.gz # gzip $p # fi wait fi echo "Finished analysis $adate" >>stdout1.anl.ascii # test # # do next analysis date=`$NDATE +6 $adate` if [ $date -le "$enddate" ] ; then export date enddate cd `dirname $STATUS` ### exec /u/Wesley.Ebisuzaki/home/r2/scripts/gdas1 exec /sss/cpc/shared/Hui.Wang/home/r2/scripts/gdas1 fi exit 0