#!/bin/csh -f # +-======-+ # Copyright (c) 2003-2007 United States Government as represented by # the Admistrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # THIS OPEN SOURCE AGREEMENT ("AGREEMENT") DEFINES THE RIGHTS OF USE, # REPRODUCTION, DISTRIBUTION, MODIFICATION AND REDISTRIBUTION OF CERTAIN # COMPUTER SOFTWARE ORIGINALLY RELEASED BY THE UNITED STATES GOVERNMENT AS # REPRESENTED BY THE GOVERNMENT AGENCY LISTED BELOW ("GOVERNMENT AGENCY"). # THE UNITED STATES GOVERNMENT, AS REPRESENTED BY GOVERNMENT AGENCY, IS AN # INTENDED THIRD-PARTY BENEFICIARY OF ALL SUBSEQUENT DISTRIBUTIONS OR # REDISTRIBUTIONS OF THE SUBJECT SOFTWARE. ANYONE WHO USES, REPRODUCES, # DISTRIBUTES, MODIFIES OR REDISTRIBUTES THE SUBJECT SOFTWARE, AS DEFINED # HEREIN, OR ANY PART THEREOF, IS, BY THAT ACTION, ACCEPTING IN FULL THE # RESPONSIBILITIES AND OBLIGATIONS CONTAINED IN THIS AGREEMENT. # # Government Agency: National Aeronautics and Space Administration # Government Agency Original Software Designation: GSC-15354-1 # Government Agency Original Software Title: GEOS-5 GCM Modeling Software # User Registration Requested. Please Visit http://opensource.gsfc.nasa.gov # Government Agency Point of Contact for Original Software: # Dale Hithon, SRA Assistant, (301) 286-2691 # # +-======-+ ####################################################################### # Batch Parameters for Run Job ####################################################################### #PBS -l walltime=@RUN_T #PBS -l @RUN_FP #PBS -N @RUN_FN #PBS -q @RUN_Q #PBS -W group_list=@GROUP ####################################################################### # System Environment Variables ####################################################################### umask 022 limit stacksize unlimited @SETENVS ####################################################################### # Architecture Specific Environment Variables ####################################################################### setenv ARCH `uname` setenv SITE @SITE setenv GEOSOPS /home/dao_ops/GEOSadas-5_7_2_p2/GEOSadas/Linux/bin setenv GEOSBIN @GEOSBIN setenv GEOSUTIL @GEOSUTIL setenv RUN_CMD "@RUN_CMD" source $GEOSBIN/g5_modules setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${BASEDIR}/${ARCH}/lib ####################################################################### # Experiment Specific Environment Variables ####################################################################### setenv EXPID @EXPID setenv EXPDIR @EXPDIR setenv HOMDIR @HOMDIR setenv G6DEV /discover/nobackup/projects/gmao/g6dev/ltakacs ####################################################################### # Create Experiment Sub-Directories ####################################################################### mkdir -p $EXPDIR/forecasts/stats ####################################################################### # Set Forecast Run Parameters ####################################################################### set date = `echo &DATE 000000` set HEARTBEAT = &HEARTBEAT set AGCM_IM = &AGCM_IM set AGCM_JM = &AGCM_JM set NX = &NX set NY = &NY set NFMAX = &NFMAX ####################################################################### # Create Forecast Sub-Directory ####################################################################### @ NFCST = 1 while( $NFCST <= $NFMAX ) set date0 = $date[1] set time0 = $date[2] set hour = `echo $time0 | cut -c1-2` set fdate = ${date0}_${hour}z setenv FCSTDIR $EXPDIR/forecasts/$fdate setenv SCRDIR $FCSTDIR/scratch if (! -e $SCRDIR ) mkdir -p $SCRDIR cd $SCRDIR /bin/rm -rf * set date = `$GEOSUTIL/post/tick $date0 $time0 -10800` set nymd0 = $date[1] set nhms0 = $date[2] set hour = `echo $nhms0 | cut -c1-2` ################################################################## ###### Create STRIP Utility for File Modifications ###### (Removes formatted BLANK spaces) ################################################################## set FILE = strip /bin/rm $FILE cat << EOF > $FILE #!/bin/ksh /bin/mv \$1 \$1.tmp touch \$1 while read line do echo \$line >> \$1 done < \$1.tmp exit EOF chmod +x $FILE ####################################################################### # Set Model Resolution Parameters ####################################################################### set AGCM_LM = `grep AGCM_LM: $HOMDIR/AGCM.rc | cut -d':' -f2` set OGCM_IM = `grep OGCM_IM: $HOMDIR/AGCM.rc | cut -d':' -f2` set OGCM_JM = `grep OGCM_JM: $HOMDIR/AGCM.rc | cut -d':' -f2` set AGCM_IM0 = $AGCM_IM set AGCM_JM0 = $AGCM_JM if( $AGCM_IM0 < 10 ) set AGCM_IM0 = 0$AGCM_IM0 if( $AGCM_IM0 < 100 ) set AGCM_IM0 = 0$AGCM_IM0 if( $AGCM_IM0 < 1000 ) set AGCM_IM0 = 0$AGCM_IM0 if( $AGCM_JM0 < 10 ) set AGCM_JM0 = 0$AGCM_JM0 if( $AGCM_JM0 < 100 ) set AGCM_JM0 = 0$AGCM_JM0 if( $AGCM_JM0 < 1000 ) set AGCM_JM0 = 0$AGCM_JM0 set HRSLV = ${AGCM_IM}x${AGCM_JM} set HRSLV0 = ${AGCM_IM0}x${AGCM_JM0} # Set ATMOS and OCEAN Horizontal Resolution Tags # ---------------------------------------------- set AGCM_IM_Tag = `echo $AGCM_IM | awk '{printf "%4.4i", $1}'` set AGCM_JM_Tag = `echo $AGCM_JM | awk '{printf "%4.4i", $1}'` set OGCM_IM_Tag = `echo $OGCM_IM | awk '{printf "%4.4i", $1}'` set OGCM_JM_Tag = `echo $OGCM_JM | awk '{printf "%4.4i", $1}'` >>>FVLATLON<<>>FVCUBED<<>>DATAOCEAN<<>>COUPLED<< cap_restart /bin/cp CAP.rc CAP.rc.orig # Replace Original Horizontal Resolution with 1/2-deg # --------------------------------------------------- ./strip AGCM.rc set oldstring = `cat AGCM.rc | grep AGCM_IM:` set newstring = "AGCM_IM: $AGCM_IM" /bin/mv AGCM.rc AGCM.tmp cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc set oldstring = `cat AGCM.rc | grep AGCM_JM:` set newstring = "AGCM_JM: $AGCM_JM" /bin/mv AGCM.rc AGCM.tmp cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc set oldstring = `cat AGCM.rc | grep NX:` set newstring = "NX: $NX" /bin/mv AGCM.rc AGCM.tmp cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc set oldstring = `cat AGCM.rc | grep NY:` set newstring = "NY: $NY" /bin/mv AGCM.rc AGCM.tmp cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc set oldstring = `cat AGCM.rc | grep AGCM_GRIDNAME:` set newstring = "AGCM_GRIDNAME: PC${HRSLV}-DC" /bin/mv AGCM.rc AGCM.tmp cat AGCM.tmp | sed -e "s?$oldstring?$newstring?g" > AGCM.rc ####################################################################### # Create Forecast History RC Files ####################################################################### set FILE = HISTORY.rc /bin/rm -f $FILE cat << _EOF_ > $FILE EXPID: g5ncep EXPDSC: G5NCEP_based_on_${EXPID} COLLECTIONS: :: _EOF_ set FILE = HISTORY.rc2 /bin/rm -f $FILE cat << _EOF_ > $FILE EXPID: g5ncep EXPDSC: G5NCEP_based_on_${EXPID} COLLECTIONS: 'geosgcm_fcst' :: geosgcm_fcst.template: '%y4%m2%d2_%h2%n2z.nc4', geosgcm_fcst.archive: '%c/Y%y4', geosgcm_fcst.format: 'CFIO', geosgcm_fcst.frequency: 060000, geosgcm_fcst.duration: 000000, geosgcm_fcst.resolution: ${AGCM_IM} ${AGCM_JM}, geosgcm_fcst.vscale: 100.0, geosgcm_fcst.vunit: 'hPa', geosgcm_fcst.vvars: 'log(PLE)' , 'DYN' , geosgcm_fcst.levels: 1000 850 700 500 400 300 250 200 150 100, geosgcm_fcst.fields: 'PHIS' , 'AGCM' , 'SLP' , 'DYN' , 'U' , 'DYN' , 'V' , 'DYN' , 'T' , 'DYN' , 'PS' , 'DYN' , 'ZLE' , 'DYN' , 'H' , 'OMEGA' , 'DYN' , 'Q' , 'MOIST' , 'QV' , 'QITOT' , 'AGCM' , 'QI' , 'QLTOT' , 'AGCM' , 'QL' , 'RH2' , 'MOIST' , 'RH' , 'TPREC' , 'MOIST' , 'O3' , 'CHEMISTRY' , 'TS' , 'SURFACE' , :: _EOF_ ####################################################################### # Create HISTORY Collection Directories ####################################################################### set collections = '' foreach line ("`cat HISTORY.rc2`") set firstword = `echo $line | awk '{print $1}'` set firstchar = `echo $firstword | cut -c1` set secondword = `echo $line | awk '{print $2}'` if ( $firstword == "::" ) goto done if ( $firstchar != "#" ) then set collection = `echo $firstword | sed -e "s/'//g"` set collections = `echo $collections $collection` if ( $secondword == :: ) goto done endif if ( $firstword == COLLECTIONS: ) then set collections = `echo $secondword | sed -e "s/'//g"` endif end done: ####################################################################### # Link Boundary Datasets ####################################################################### setenv BCSDIR @BCSDIR setenv SSTDIR @SSTDIR setenv CHMDIR @CHMDIR setenv BCSTAG ${ATMOStag}_${OCEANtag} setenv DATELINE DC set FILE = linkbcs /bin/rm -f $FILE cat << _EOF_ > $FILE #!/bin/csh -f /bin/mkdir -p ExtData /bin/ln -sf $CHMDIR/* ExtData >>>DATAOCEAN<<>>DATAOCEAN<<>>DATAOCEAN<<>>DATAOCEAN<<>>DATAOCEAN<<>>DATAOCEAN<<>>DATAOCEAN<<>>FVCUBED<<>>FVCUBED<<>>FVCUBED<< CAP.rc set oldstring = `cat CAP.rc | grep HEARTBEAT_DT:` set newstring = "HEARTBEAT_DT: $HEARTBEAT" /bin/mv CAP.rc CAP.tmp cat CAP.tmp | sed -e "s?$oldstring?$newstring?g" > CAP.rc endif if( $counter == 2 ) then /bin/cp HISTORY.rc2 HISTORY.rc /bin/cp CAP.rc.orig CAP.rc ./strip CAP.rc set oldstring = `cat CAP.rc | grep JOB_SGMT:` set newstring = "JOB_SGMT: 00000005 000000" /bin/mv CAP.rc CAP.tmp cat CAP.tmp | sed -e "s?$oldstring?$newstring?g" > CAP.rc set oldstring = `cat CAP.rc | grep HEARTBEAT_DT:` set newstring = "HEARTBEAT_DT: $HEARTBEAT" /bin/mv CAP.rc CAP.tmp cat CAP.tmp | sed -e "s?$oldstring?$newstring?g" > CAP.rc endif @ NPES = $NX * $NY $RUN_CMD $NPES ./GEOSgcm.x ####################################################################### # Move HISTORY Files to Holding Directory ####################################################################### if( $counter == 2 ) then foreach collection ( $collections ) /bin/mv `/bin/ls -1 *.${collection}.*` $FCSTDIR end endif if( $counter == 1 ) then ####################################################################### # Rename Checkpoints => Restarts for Next Segment ####################################################################### set numrst = `echo $rst_types | wc -w` set numchk = `echo $chk_types | wc -w` @ n = 1 @ z = $numrst + 1 while ( $n <= $numchk ) if ( -e $chk_files[$n] ) then @ m = 1 while ( $m <= $numrst ) if( $chk_types[$n] == $rst_types[$m] || \ \#$chk_types[$n] == $rst_types[$m] ) then /bin/mv $chk_files[$n] $rst_files[$m] @ m = $numrst + 999 else @ m = $m + 1 endif end if( $m == $z ) then echo "Warning!! Could not find CHECKPOINT/RESTART match for: " $chk_types[$n] exit endif endif @ n = $n + 1 end ####################################################################### # Blend Updated Restarts with NCEP # -------------------------------- # Note: SAnl data must be Pre-Fetched and Locally Stored # SAnl data is archived at: /archive/u/mkarki/s1/NCEP_GDAS1_data ####################################################################### set nymd = `cat cap_restart | cut -c1-8` set nhms = `cat cap_restart | cut -c10-15` set hour = `echo $nhms | cut -c1-2` set year = `echo $nymd | cut -c1-4` set month = `echo $nymd | cut -c5-6` # Create NCEP Gridded data from GDAS Spectral Analysis # ---------------------------------------------------- $GEOSOPS/ss2gg.x $G6DEV/gdas1/Y${year}/M${month}/gdas1.${nymd}_${hour}z.SAnl SAnl.data SAnl.ctl 0 $AGCM_IM $AGCM_JM # Convert GEOS-5 Restarts to NC4 format # ------------------------------------- set dynrst = fvcore_internal_rst set mstrst = moist_internal_rst set topo = topo_dynave.data $GEOSUTIL/post/rs2hdf.x -dynrst $dynrst \ -moistrst $mstrst \ -topo $topo \ -tag $EXPID \ -nymd $nymd -nhms $nhms # Blend NCEP Data with GEOS-5 Background # -------------------------------------- $GEOSUTIL/post/gg2fv.x -ncep SAnl.data \ -ctl SAnl.ctl \ -ana $EXPID.bkg.eta.${nymd}_${hour}z.nc4 \ -nymd $nymd -nhms $nhms -plow 5 -phigh 2 \ -tag $EXPID # Construct Initial Condition PRS File from BKG.ETA File for Stats # ---------------------------------------------------------------- $GEOSUTIL/post/eta2prs.x -eta $EXPID.gg2fv.eta.${nymd}_${hour}z.nc4 \ -levs 1000 850 700 500 400 300 250 200 150 100 \ -ana -noquad -tag $EXPID.bkg.prs # Create Blended GEOS-5/NCEP Restarts # -------------------------------------------------------------------------------------------- $GEOSUTIL/post/eta2rst.x -dynrst $dynrst \ -moistrst $mstrst \ -ana $EXPID.gg2fv.eta.${nymd}_${hour}z.nc4 stripname .ana.${nymd}_${hour}z foreach collection ( $collections ) /bin/cp `/bin/ls -1 $EXPID.bkg.prs*` $FCSTDIR end ####################################################################### # Update Iteration Counter ####################################################################### endif # End counter=1 iftest @ counter = $counter + 1 end ####################################################################### # Create STATS ####################################################################### cd $EXPDIR/forecasts/stats set year0 = `echo $nymd | cut -b1-4` set month0 = `echo $nymd | cut -b5-6` set fcst_files = `/bin/ls -1 $EXPDIR/forecasts/${nymd}_00z/*bkg.prs* $EXPDIR/forecasts/${nymd}_00z/g5ncep*geosgcm_fcst*nc4` set anal_files = '' @ n = 1 while ($n <= 6) set year = `echo $nymd | cut -b1-4` set month = `echo $nymd | cut -b5-6` # To verify using NCEP Analysis # ----------------------------- #set next = `/bin/ls -1 /discover/nobackup/dao_ops/intermediate/flk/stage/gfs/analysis/gfs.1x125_14_levels.${nymd}*nc4` # For June 2012 # ------------- if( $month0 == "06" ) then set next = `/bin/ls -1 /discover/nobackup/projects/gmao/g6dev/ltakacs/gfs/gfs.1x125_14_levels.${nymd}*nc4` endif # For December 2011 # ----------------- if( $month0 == "12" ) then set next = `/bin/ls -1 /discover/nobackup/projects/gmao/g6dev/ltakacs/gdas1/Y$year/M$month/i.1x125_ncep_26_levels.${nymd}*nc4` endif # To verify using G5NCEP Assimilation # ----------------------------------- #set next = `/bin/ls -1 /discover/nobackup/ltakacs/g5ncep/ana/g5ncep.inst3_3d_asm_Np.${nymd}*nc4` set anal_files = `echo $anal_files $next` set date = `$GEOSUTIL/post/tick $nymd 0 86400` set nymd = $date[1] @ n = $n + 1 end $GEOSUTIL/post/stats.x -fcst $fcst_files \ -ana $anal_files \ -cli $SHARE/gmao_ops/verification/stats/merrasc.197901-200812.clim_00z.144x91.data.nc \ $SHARE/gmao_ops/verification/stats/merrasc.197901-200812.clim_06z.144x91.data.nc \ $SHARE/gmao_ops/verification/stats/merrasc.197901-200812.clim_12z.144x91.data.nc \ $SHARE/gmao_ops/verification/stats/merrasc.197901-200812.clim_18z.144x91.data.nc \ -tag $EXPID -nfreq 060000 ####################################################################### # Update Forecast Counter ####################################################################### @ NFCST = $NFCST + 1 set date = `$GEOSUTIL/post/tick $date0 $time0 86400` end