#!/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 # # +-======-+ ####################################################################### # Build Directory Locations ####################################################################### # Set Current Working Path to gcm_setup # ------------------------------------- set GCMSETUP = `which $0` set root = `echo $GCMSETUP | cut -d / -f1` if($root == . ) set GCMSETUP = `echo $cwd`/gcm_setup set root = `echo $GCMSETUP | cut -b1` if( "$root" != "/" ) set GCMSETUP = `echo $cwd`/$GCMSETUP # Set Default GEOS Build Directory # -------------------------------- @ n = 1 set root = `echo $GCMSETUP | cut -d / -f$n` while( .$root == . ) @ n = $n + 1 set root = `echo $GCMSETUP | cut -d / -f$n` end set GEOSDEF = '' while( $root != 'src' ) set GEOSDEF = `echo ${GEOSDEF}/${root}` @ n = $n + 1 set root = `echo $GCMSETUP | cut -d / -f$n` end # Set Applications Directory # -------------------------- @ n = 1 set root = `echo $GCMSETUP | cut -d / -f$n` while( .$root == . ) @ n = $n + 1 set root = `echo $GCMSETUP | cut -d / -f$n` end set APPDIR = '' while( $root != 'gcm_setup' ) set APPDIR = `echo ${APPDIR}/${root}` @ n = $n + 1 set root = `echo $GCMSETUP | cut -d / -f$n` end ####################################################################### # Enter Experiment Specific Run Parameters ####################################################################### echo echo "Enter the Experiment ID:" set EXPID = $< DESC: echo "Enter a 1-line Experiment Description:" set EXPTMP = `echo $<` if( $#EXPTMP == 0 ) goto DESC set EXPDSC = $EXPTMP[1] foreach WORD ($EXPTMP) if( $WORD != $EXPDSC ) set EXPDSC = `echo ${EXPDSC}_${WORD}` end echo "Enter the Lat/Lon Horizontal Resolution: IM JM" echo " or ..... the Cubed-Sphere Resolution: cNN" set Resolution = `echo $<` if( $#Resolution == 2 ) then set AGCM_IM = $Resolution[1] set AGCM_JM = $Resolution[2] set CUBED = FALSE else set CUBED = TRUE if (`echo $Resolution[1] | cut -b1` == "c" ) then set AGCM_IM = $Resolution[1] else set AGCM_IM = "c$Resolution[1]" endif endif echo "Enter the Model Vertical Resolution: LM (Default: 72)" set AGCM_LM = $< if( .$AGCM_LM == . ) then set AGCM_LM = 72 endif set OGCM_IM = 360 set OGCM_JM = 180 set OGCM_LM = 34 if( $AGCM_IM == "144" ) then set NX = 4 set NY = 16 set DT = 1800 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT set JOB_SGMT = 00000015 set NUM_SGMT = 20 set NUM_READERS = 2 set NUM_WRITERS = 2 endif if( $AGCM_IM == "c45" ) then set AGCM_IM = 45 set AGCM_JM = `expr $AGCM_IM \* 6` set FV_NX = 2 set FV_NY = 2 set NX = $FV_NX set NY = `expr $NX \* 6` set DT = 1800 set HYDROSTATIC = TRUE set KSPLIT = 1 set NSPLIT = 15 set MSPLIT = 0 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT set PCHEM_DT = $DT set GCLL_IM = 144 set GCLL_JM = 91 set HIST_IM = `expr $AGCM_IM \* 4` set HIST_JM = `expr $AGCM_IM \* 2 + 1` set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" set MINDALLOWED = 1000 set MAXDALLOWED = 1000 set NUM_READERS = 2 set NUM_WRITERS = 2 set JOB_SGMT = 00000015 set NUM_SGMT = 20 endif if( $AGCM_IM == "288" ) then set NX = 4 set NY = 32 set DT = 1800 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT set JOB_SGMT = 00000008 set NUM_SGMT = 5 set NUM_READERS = 2 set NUM_WRITERS = 2 endif if( $AGCM_IM == "c90" ) then set AGCM_IM = 90 set AGCM_JM = `expr $AGCM_IM \* 6` set FV_NX = 4 set FV_NY = 4 set NX = $FV_NX set NY = `expr $NX \* 6` set DT = 1800 set HYDROSTATIC = TRUE set KSPLIT = 2 set NSPLIT = 18 set MSPLIT = 0 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT set PCHEM_DT = $DT set GCLL_IM = 288 set GCLL_JM = 181 set HIST_IM = `expr $AGCM_IM \* 4` set HIST_JM = `expr $AGCM_IM \* 2 + 1` set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" set MINDALLOWED = 1000 set MAXDALLOWED = 1000 set NUM_READERS = 2 set NUM_WRITERS = 2 set JOB_SGMT = 00000032 set NUM_SGMT = 4 endif if( $AGCM_IM == "540" | $AGCM_IM == "576" ) then set NX = 8 set NY = 32 set DT = 1200 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT set JOB_SGMT = 00000016 set NUM_SGMT = 1 set NUM_READERS = 2 set NUM_WRITERS = 2 endif if( $AGCM_IM == "c180" ) then set AGCM_IM = 180 set AGCM_JM = `expr $AGCM_IM \* 6` set FV_NX = 6 set FV_NY = 6 set NX = $FV_NX set NY = `expr $NX \* 6` set DT = 900 set HYDROSTATIC = TRUE set KSPLIT = 2 set NSPLIT = 18 set MSPLIT = 0 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT set PCHEM_DT = $DT set GCLL_IM = 576 set GCLL_JM = 361 set HIST_IM = `expr $AGCM_IM \* 4` set HIST_JM = `expr $AGCM_IM \* 2 + 1` set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" set MINDALLOWED = 750 set MAXDALLOWED = 750 set NUM_READERS = 2 set NUM_WRITERS = 2 set JOB_SGMT = 00000016 set NUM_SGMT = 1 endif if( $AGCM_IM == "1080" | $AGCM_IM == "1152" ) then set NX = 16 set NY = 32 set DT = 450 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT set JOB_SGMT = 00000005 set NUM_SGMT = 1 set NUM_READERS = 4 set NUM_WRITERS = 4 endif if( $AGCM_IM == "c360" ) then set AGCM_IM = 360 set AGCM_JM = `expr $AGCM_IM \* 6` set FV_NX = 12 set FV_NY = 12 set NX = $FV_NX set NY = `expr $NX \* 6` set DT = 900 set HYDROSTATIC = TRUE set KSPLIT = 2 set NSPLIT = 18 set MSPLIT = 0 set SOLAR_DT = 1800 set IRRAD_DT = 1800 set OCEAN_DT = $IRRAD_DT set PCHEM_DT = $DT set GCLL_IM = 576 set GCLL_JM = 361 set HIST_IM = `expr $AGCM_IM \* 4` set HIST_JM = `expr $AGCM_IM \* 2 + 1` set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" set MINDALLOWED = 500 set MAXDALLOWED = 500 set NUM_READERS = 4 set NUM_WRITERS = 4 set JOB_SGMT = 00000005 set NUM_SGMT = 1 endif if( $AGCM_IM == "c720" ) then set AGCM_IM = 720 set AGCM_JM = `expr $AGCM_IM \* 6` set FV_NX = 16 set FV_NY = 16 set NX = $FV_NX set NY = `expr $NX \* 6` set DT = 600 set HYDROSTATIC = TRUE set KSPLIT = 2 set NSPLIT = 30 set MSPLIT = 0 set SOLAR_DT = 1800 set IRRAD_DT = 1800 set OCEAN_DT = $IRRAD_DT set PCHEM_DT = $DT set GCLL_IM = 1152 set GCLL_JM = 721 set HIST_IM = `expr $AGCM_IM \* 4` set HIST_JM = `expr $AGCM_IM \* 2 + 1` set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" set MINDALLOWED = 400 set MAXDALLOWED = 400 set NUM_READERS = 8 set NUM_WRITERS = 8 set JOB_SGMT = 00000005 set NUM_SGMT = 1 endif if( $AGCM_IM == "c1440" ) then set AGCM_IM = 1440 set AGCM_JM = `expr $AGCM_IM \* 6` set FV_NX = 32 set FV_NY = 16 set NX = $FV_NX set NY = `expr $NX \* 6` set DT = 600 set HYDROSTATIC = TRUE set KSPLIT = 4 set NSPLIT = 30 set MSPLIT = 0 set SOLAR_DT = 1800 set IRRAD_DT = 1800 set OCEAN_DT = $IRRAD_DT set PCHEM_DT = $DT set GCLL_IM = 1152 set GCLL_JM = 721 set HIST_IM = `expr $AGCM_IM \* 4` set HIST_JM = `expr $AGCM_IM \* 2 + 1` set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" set MINDALLOWED = 400 set MAXDALLOWED = 400 set NUM_READERS = 8 set NUM_WRITERS = 8 set JOB_SGMT = 00000005 set NUM_SGMT = 1 endif if($CUBED == "TRUE") then set DYCORE = FV3 set IMstr = `echo $AGCM_IM | awk '{printf "%4.4i", $1}'` set JMstr = `echo $AGCM_JM | awk '{printf "%5.5i", $1}'` set AGCM_GRIDNAME = "PE${AGCM_IM}x${AGCM_JM}-CF" set OGCM_GRIDNAME = "PE${OGCM_IM}x${OGCM_JM}-DE" set BCSRES = 'c${AGCM_IM}' set RES_DATELINE = '${AGCM_IM}x${AGCM_JM}' set TILEDATA = "CF${IMstr}x6C${JMstr}_DE0360xPE0180_Pfafstetter.til" set TILEBIN = "CF${IMstr}x6C${JMstr}_DE0360xPE0180_Pfafstetter.TIL" set INTERPOLATE_SST = 1 else set DYCORE = FV set AGCM_GRIDNAME = "PC${AGCM_IM}x${AGCM_JM}-DC" set OGCM_GRIDNAME = "PE${OGCM_IM}x${OGCM_JM}-DE" set BCSRES = '${AGCM_IM}x${AGCM_JM}' set RES_DATELINE = '${AGCM_IM}x${AGCM_JM}_${DATELINE}' set TILEDATA = "FV_${RES_DATELINE}"'_${OGCM_IM}x${OGCM_JM}_DE.til' set INTERPOLATE_SST = 0 set HIST_IM = "$AGCM_IM" set HIST_JM = "$AGCM_JM" endif set BEG_DATE = '18910301 000000' set END_DATE = '29990302 210000' set JOB_SGMT = "$JOB_SGMT 000000" # Check for GOCART # ---------------- GOCART: echo "Do you wish to run GOCART? (Default: NO or FALSE)" set GOCART = $< if( .$GOCART == . ) then set GOCART = FALSE else set GOCART = `echo $GOCART | tr "[:lower:]" "[:upper:]"` if( $GOCART == "Y" | \ $GOCART == "YES" | \ $GOCART == "T" | \ $GOCART == "TRUE" ) set GOCART = TRUE if( $GOCART == "N" | \ $GOCART == "NO" | \ $GOCART == "F" | \ $GOCART == "FALSE" ) set GOCART = FALSE if( $GOCART != TRUE & $GOCART != FALSE ) then echo echo "GOCART must be set equal to TRUE or FALSE!" goto GOCART else echo endif endif if( $GOCART == TRUE ) then set AEROCLIM = "#AEROCLIM" set GOCART_INTERNAL = "GOCART_INTERNAL" set HIST_GOCART = " " # Emission Files # -------------- EMISSIONS: set RCDIR = '' echo 'Enter the GOCART Emission Files to use: "CMIP" (Default), "PIESA", or "OPS":' set RCDIR = $< if( .$RCDIR == . ) then set RCDIR = CMIP else set RCDIR = `echo $RCDIR | tr "[:lower:]" "[:upper:]"` if( $RCDIR != CMIP & $RCDIR != PIESA & $RCDIR != OPS ) then echo echo "Emission Files must be equal to: CMIP, PIESA, or OPS!" goto EMISSIONS else echo endif endif if( $RCDIR == OPS ) set RCDIR = '' # AERO Provider # ------------- AERO: echo "Enter the AERO_PROVIDER: GOCART (Default) or PCHEM:" set AERO_PROVIDER = $< if( .$AERO_PROVIDER == . ) then set AERO_PROVIDER = GOCART else set AERO_PROVIDER = `echo $AERO_PROVIDER | tr "[:lower:]" "[:upper:]"` if( $AERO_PROVIDER != PCHEM & $AERO_PROVIDER != GOCART ) then echo echo "AERO_PROVIDER must be equal to GOCART or PCHEM!" goto AERO else echo endif endif else # GOCART = FALSE # -------------- set AERO_PROVIDER = PCHEM set RCDIR = '' set AEROCLIM = "AEROCLIM" set GOCART_INTERNAL = "#GOCART_INTERNAL" set HIST_GOCART = "# " endif ####################################################################### # Architecture Specific Variables ####################################################################### @ NPES = $NX * $NY @ NCUS = $NPES / 8 setenv ARCH ` uname` setenv HOST `hostname` set name = `echo $HOST | cut -b 1-8` ; if( $name == 'columbia' ) setenv HOST $name set name = `echo $HOST | cut -b 1-8` ; if( $name == 'discover' ) setenv HOST $name set name = `echo $HOST | cut -b 1-5` ; if( $name == 'janus' ) setenv HOST $name set name = `echo $HOST | cut -b 1-4` ; if( $name == 'dali' ) setenv HOST discover set name = `echo $HOST | cut -b 1-4` ; if( $name == 'borg' ) setenv HOST discover set name = `echo $HOST | cut -b 1-3` ; if( $name == 'pfe' ) setenv HOST pleiades set name = `echo $HOST | cut -b 1-3` ; if( $name == 'cfe' ) setenv HOST columbia setenv RUN_N `echo $EXPID | cut -b1-11`_RUN # RUN Job Name setenv POST_N `echo $EXPID | cut -b1-10`_POST # POST Job Name setenv PLOT_N `echo $EXPID | cut -b1-11`_PLT # PLOT Job Name setenv ARCHIVE_N `echo $EXPID | cut -b1-10`_ARCH # ARCHIVE Job Name setenv REGRESS_N `echo $EXPID | cut -b1-10`_RGRS # REGRESS Job Name if( $HOST == 'pleiades' ) then setenv RUN_T "8:00:00" # Wallclock Time for gcm_run.j setenv POST_T "8:00:00" # Wallclock Time for gcm_post.j setenv PLOT_T "8:00:00" # Wallclock Time for gcm_plot.j setenv ARCHIVE_T "8:00:00" # Wallclock Time for gcm_archive.j setenv RUN_Q normal # batch queue name for gcm_run.j setenv POST_Q normal # batch queue name for gcm_post.j setenv PLOT_Q normal # batch queue name for gcm_plot.j setenv ARCHIVE_Q normal # batch queue name for gcm_archive.j setenv RUN_P "select=${NCUS}:ncpus=8:model=neh" # PE Configuration for gcm_run.j setenv POST_P "select=8:ncpus=8:model=neh" # PE Configuration for gcm_run.j setenv PLOT_P "select=2:ncpus=8:model=neh" # PE Configuration for gcm_post.j setenv ARCHIVE_P "select=1:ncpus=1" # PE Configuration for gcm_archive.j setenv SITE NAS # platform site setenv RUN_CMD 'mpirun --totalnum=^sort -u $PBS_NODEFILE | wc -l^ --file=$PBS_NODEFILE --rsh=ssh -perhost 8 -np '# mpi run command setenv BCSDIR /nobackup/ltakacs/bcs/Fortuna-2_1 # location of Boundary Conditions setenv SSTDIR /nobackup/ltakacs/bcs_ver01/SST/360x180 # location of SST Boundary Conditions setenv CHMDIR /nobackup/dkokron/fvInput_nc3 # locations of Aerosol Chemistry BCs setenv WRKDIR /nobackup/$LOGNAME # user work directory endif if( $HOST == 'columbia' ) then setenv RUN_T "8:00:00" # Wallclock Time for gcm_run.j setenv POST_T "8:00:00" # Wallclock Time for gcm_post.j setenv PLOT_T "8:00:00" # Wallclock Time for gcm_plot.j setenv ARCHIVE_T "8:00:00" # Wallclock Time for gcm_archive.j setenv RUN_Q normal # batch queue name for gcm_run.j setenv POST_Q normal # batch queue name for gcm_post.j setenv PLOT_Q normal # batch queue name for gcm_plot.j setenv ARCHIVE_Q normal # batch queue name for gcm_archive.j setenv RUN_P ncpus=$NPES # PE Configuration for gcm_run.j setenv POST_P ncpus=32 # PE Configuration for gcm_post.j setenv PLOT_P ncpus=8 # PE Configuration for gcm_plot.j setenv ARCHIVE_P ncpus=8 # PE Configuration for gcm_archive.j setenv SITE NAS # platform site setenv RUN_CMD 'mpirun -np ' # mpi run command setenv BCSDIR /nobackup/ltakacs/bcs_ver01/DC # location of Boundary Conditions setenv SSTDIR /nobackup/ltakacs/bcs_ver01/SST/360x180 # location of SST Boundary Conditions setenv CHMDIR /nobackup/dkokron/fvInput_nc3 # locations of Aerosol Chemistry BCs setenv WRKDIR /nobackup/$LOGNAME # user work directory endif if( $HOST == 'discover' ) then setenv RUN_T "12:00:00" # Wallclock Time for gcm_run.j setenv POST_T "8:00:00" # Wallclock Time for gcm_post.j setenv PLOT_T "12:00:00" # Wallclock Time for gcm_plot.j setenv ARCHIVE_T "1:00:00" # Wallclock Time for gcm_archive.j setenv RUN_Q general # batch queue name for gcm_run.j setenv POST_Q general # batch queue name for gcm_post.j setenv PLOT_Q general_small # batch queue name for gcm_plot.j setenv ARCHIVE_Q datamove # batch queue name for gcm_archive.j setenv RUN_P "select=${NCUS}:ncpus=8:proc=neha" # PE Configuration for gcm_run.j setenv POST_P "select=4:ncpus=8" # PE Configuration for gcm_run.j setenv PLOT_P "select=1:ncpus=8" # PE Configuration for gcm_post.j setenv ARCHIVE_P "select=1:ncpus=1" # PE Configuration for gcm_archive.j setenv SITE NCCS # platform site setenv RUN_CMD 'mpirun -perhost 8 -np ' # mpi run command if($CUBED == "TRUE") then setenv BCSDIR /discover/nobackup/dkokron/bcs/Fortuna-2_1 # location of Boundary Conditions else setenv BCSDIR /discover/nobackup/ltakacs/bcs/Fortuna-2_1 # location of Boundary Conditions endif setenv SSTDIR $SHARE/dao_ops/fvInput/g5gcm/bcs/realtime/SST/360x180 # location of SST Boundary Conditions setenv CHMDIR $SHARE/dao_ops/fvInput_nc3 # locations of Aerosol Chemistry BCs setenv WRKDIR /discover/nobackup/$LOGNAME # user work directory endif if( $HOST == 'janus' ) then setenv RUN_T "8:00:00" # Wallclock Time for gcm_run.j setenv POST_T "8:00:00" # Wallclock Time for gcm_post.j setenv PLOT_T "8:00:00" # Wallclock Time for gcm_plot.j setenv ARCHIVE_T "1:00:00" # Wallclock Time for gcm_archive.j setenv RUN_Q general # batch queue name for gcm_run.j setenv POST_Q general # batch queue name for gcm_post.j setenv PLOT_Q general_small # batch queue name for gcm_plot.j setenv ARCHIVE_Q datamove # batch queue name for gcm_archive.j setenv RUN_P "select=${NCUS}:ncpus=8:proc=harp" # PE Configuration for gcm_run.j setenv POST_P "select=4:ncpus=8:proc=harp" # PE Configuration for gcm_run.j setenv PLOT_P "select=1:ncpus=8:proc=harp" # PE Configuration for gcm_post.j setenv ARCHIVE_P "select=1:ncpus=1" # PE Configuration for gcm_archive.j setenv SITE NCCS # platform site setenv RUN_CMD 'mpirun -np ' # mpi run command setenv BCSDIR /cuda/mathomp4/ModelFiles/DC-F21 # location of Boundary Conditions setenv SSTDIR /cuda/mathomp4/ModelFiles/SST/360x180 # location of SST Boundary Conditions setenv CHMDIR /cuda/mathomp4/ModelFiles # locations of Aerosol Chemistry BCs setenv WRKDIR /home/$LOGNAME # user work directory endif ####################################################################### # Create Desired HISTORY template # Note: Default HISTORY will be kept in $HOME/.HISTORYrc ####################################################################### set check = FALSE while( $check == FALSE ) if( -e $HOME/.HISTORYrc ) then set HISTORYrc = `cat $HOME/.HISTORYrc` else set HISTORYrc = Current echo $HISTORYrc > $HOME/.HISTORYrc endif echo "Enter the tag or directory (/filename) of the HISTORY.AGCM.rc.tmpl to use" echo "(To use HISTORY.AGCM.rc.tmpl from current build, Type: Current )" echo "-------------------------------------------------------------------------" echo "Hit ENTER to use Default Tag/Location: ($HISTORYrc)" set NUHISTORY = $< if( .$NUHISTORY != . ) set HISTORYrc = $NUHISTORY if( -e $APPDIR/HISTORY.rc.tmpl ) /bin/rm $APPDIR/HISTORY.rc.tmpl if( "$HISTORYrc" == "Current" ) then set check = TRUE if( -e $HOME/.HISTORYrc ) /bin/rm $HOME/.HISTORYrc echo $HISTORYrc > $HOME/.HISTORYrc /bin/cp -f $APPDIR/HISTORY.AGCM.rc.tmpl $APPDIR/HISTORY.rc.tmpl endif if( "$HISTORYrc" != "Current" ) then if( -f $HISTORYrc ) then set check = TRUE if( -e $HOME/.HISTORYrc ) /bin/rm $HOME/.HISTORYrc echo $HISTORYrc > $HOME/.HISTORYrc /bin/cp -f $HISTORYrc $APPDIR/HISTORY.rc.tmpl else if( -e $HISTORYrc/HISTORY.AGCM.rc.tmpl ) then set check = TRUE if( -e $HOME/.HISTORYrc ) /bin/rm $HOME/.HISTORYrc echo $HISTORYrc > $HOME/.HISTORYrc /bin/cp -f $HISTORYrc/HISTORY.AGCM.rc.tmpl $APPDIR/HISTORY.rc.tmpl else cvs upd -r $HISTORYrc -p $APPDIR/HISTORY.AGCM.rc.tmpl > $APPDIR/HISTORY.rc.tmpl if( $status != 0 ) then echo " " echo "\!\! ERROR in using $HISTORYrc as a cvs tag or directory/filename. \!\!" echo "\!\! Please check cvs connectivity or $HISTORYrc syntax. \!\!" echo " " else set check = TRUE if( -e $HOME/.HISTORYrc ) /bin/rm $HOME/.HISTORYrc echo $HISTORYrc > $HOME/.HISTORYrc endif endif endif end ####################################################################### # Create Paths for HOME and EXP Directories # Note: Default Path will be kept in $HOME/.HOMDIRroot ####################################################################### # HOME Directory (for scripts and RC files) # ----------------------------------------- set check = FALSE while( $check == FALSE ) if( -e $HOME/.HOMDIRroot ) then set HOMDIRroot = `cat $HOME/.HOMDIRroot` else set HOMDIRroot = $HOME/geos5 endif setenv HOMDIR_def $HOMDIRroot/$EXPID echo " " echo "Enter Desired Location for HOME Directory (to contain scripts and RC files)" echo "Hit ENTER to use Default Location:" echo "----------------------------------" echo "Default: $HOMDIR_def" set NUHOMDIR = $< if( .$NUHOMDIR != . ) then setenv HOMDIR $NUHOMDIR setenv HOMDIR_def $NUHOMDIR else setenv HOMDIR $HOMDIR_def endif if( "$EXPID" != `basename $HOMDIR` ) then echo "\!\! The HOME Directory MUST point to the ExpID: $EXPID" echo " " else set check = TRUE endif end mkdir -p $HOMDIR # EXP Directory (for Output Data and Restarts) # -------------------------------------------- set check = FALSE while( $check == FALSE ) if( -e $HOME/.EXPDIRroot ) then set EXPDIRroot = `cat $HOME/.EXPDIRroot` else set EXPDIRroot = $WRKDIR endif setenv EXPDIR_def $EXPDIRroot/$EXPID echo "" echo "Enter Desired Location for EXP Directory (to contain model output and restart files)" echo "Hit ENTER to use Default Location:" echo "----------------------------------" echo "Default: $EXPDIR_def" set NUEXPDIR = $< if( .$NUEXPDIR != . ) then setenv EXPDIR $NUEXPDIR setenv EXPDIR_def $NUEXPDIR else setenv EXPDIR $EXPDIR_def endif if( "$EXPID" != `basename $EXPDIR` ) then echo "\!\! The EXP Directory MUST point to the ExpID: $EXPID" echo " " else set check = TRUE endif end mkdir -p $EXPDIR # Build HOME Root Directory # ------------------------- @ n = 1 set root = `echo $HOMDIR | cut -d / -f$n` while( .$root == . ) @ n = $n + 1 set root = `echo $HOMDIR | cut -d / -f$n` end set HOMDIRroot = '' while( $root != $EXPID ) set HOMDIRroot = `echo ${HOMDIRroot}/${root}` @ n = $n + 1 set root = `echo $HOMDIR | cut -d / -f$n` end if( -e $HOME/.HOMDIRroot ) /bin/rm $HOME/.HOMDIRroot echo $HOMDIRroot > $HOME/.HOMDIRroot # Build EXP Root Directory # ------------------------ @ n = 1 set root = `echo $EXPDIR | cut -d / -f$n` while( .$root == . ) @ n = $n + 1 set root = `echo $EXPDIR | cut -d / -f$n` end set EXPDIRroot = '' while( $root != $EXPID ) set EXPDIRroot = `echo ${EXPDIRroot}/${root}` @ n = $n + 1 set root = `echo $EXPDIR | cut -d / -f$n` end if( -e $HOME/.EXPDIRroot ) /bin/rm $HOME/.EXPDIRroot echo $EXPDIRroot > $HOME/.EXPDIRroot ####################################################################### # Locate Build Directory ####################################################################### # GEOSagcm Build Directory # ------------------------ set check = FALSE while( $check == FALSE ) echo "Enter Location for Build directory containing: src/ Linux/ etc..." echo "Hit ENTER to use Default Location:" echo "----------------------------------" echo "Default: $GEOSDEF" set GEOSDIR = $GEOSDEF set NUGEOSDIR = $< if( .$NUGEOSDIR != . ) then set GEOSDIR = $NUGEOSDIR endif if(! -e $GEOSDIR/Linux ) then echo " " echo "\!\! You must enter a valid location for the GEOSagcm Build \!\!" echo "\!\! This location should contain: src/ Linux/ Config/ \!\!" echo " " else set check = TRUE endif end setenv GEOSSRC ${GEOSDIR}/src setenv GEOSBIN ${GEOSDIR}/$ARCH/bin setenv GEOSUTIL ${GEOSSRC}/GMAO_Shared/GEOS_Util ####################################################################### # Check for Group ID Sponsor Code # Note: Default GROUP will be kept in $HOME/.GROUProot ####################################################################### set GROUPS = `groups` if( -e $HOME/.GROUProot ) then set GROUProot = `cat $HOME/.GROUProot` else set GROUProot = $GROUPS[1] endif echo " " echo "Current GROUPS: $GROUPS" echo "Enter your GROUP ID for Current EXP: (Default: $GROUProot)" echo "-----------------------------------" set NUGROUP = $< if( .$NUGROUP != . ) then setenv GROUP $NUGROUP else setenv GROUP $GROUProot endif if( -e $HOME/.GROUProot ) /bin/rm $HOME/.GROUProot echo $GROUP > $HOME/.GROUProot ####################################################################### # Copy Model Executable and RC Files to Experiment Directory ####################################################################### mkdir -p $EXPDIR/RC rsync -ax $GEOSDIR/$ARCH/etc/*.rc $EXPDIR/RC if( .$RCDIR != . ) then /bin/cp $GEOSDIR/$ARCH/etc/$RCDIR/*.rc $EXPDIR/RC else set RCDIR = g5chem endif if ( -e $GEOSDIR/$ARCH/bin/GEOSgcm.x ) rsync -avx $GEOSDIR/$ARCH/bin/GEOSgcm.x $EXPDIR ####################################################################### # Create SETENV Commands ####################################################################### /bin/rm -f $HOMDIR/SETENV.commands if( $HOST == 'pleiades' ) then cat > $HOMDIR/SETENV.commands << EOF setenv MPI_BUFFER_MAX 2000 setenv MPI_BUF_PER_HOST 256 setenv MPI_BUF_PER_PROC 64 setenv MPI_TYPE_MAX 655360 setenv MPI_MSGS_MAX 10485760 setenv MPI_IB_TIMEOUT 25 setenv MPI_IB_RAILS 2 setenv MPI_IB_FAILOVER 1 setenv MPI_GROUP_MAX 1024 setenv MPI_COMM_MAX 512 setenv MPI_REQUEST_MAX 65536 EOF endif if( $HOST == 'discover' ) then cat > $HOMDIR/SETENV.commands << EOF setenv MPI_DSM_DISTRIBUTE setenv MPI_BUFFER_MAX 2000 setenv MPI_TYPE_MAX 655360 setenv MPI_MSGS_MAX 10485760 setenv MPI_GROUP_MAX 512 setenv I_MPI_USE_DYNAMIC_CONNECTIONS 0 setenv I_MPI_JOB_STARTUP_TIMEOUT 10000 setenv DAPL_ACK_RETRY 7 setenv DAPL_ACK_TIMER 22 setenv DAPL_RNR_RETRY 7 setenv DAPL_RNR_TIMER 28 setenv I_MPI_RDMA_RNDV_WRITE 1 EOF endif ####################################################################### # Create Local Scripts and Resource Files ####################################################################### set FILES = "gcm_run.j gcm_post.j gcm_plot.j gcm_archive.j gcm_regress.j AGCM.rc CAP.rc HISTORY.rc" if($CUBED == "TRUE") set FILES = `echo $FILES fvcore_layout.rc` echo " " foreach FILE ($FILES) /bin/rm -f $HOMDIR/tmpfile /bin/rm -f $HOMDIR/sedfile /bin/rm -f $HOMDIR/$FILE cat $APPDIR/$FILE.tmpl > $HOMDIR/tmpfile cat > $HOMDIR/sedfile << EOF /@SETENVS/ { t success : success r $HOMDIR/SETENV.commands d } s?@EXPID?$EXPID?g s?@RUN_N?$RUN_N?g s?@RUN_T?$RUN_T?g s?@RUN_P?$RUN_P?g s?@RUN_Q?$RUN_Q?g s?@POST_N?$POST_N?g s?@POST_T?$POST_T?g s?@POST_P?$POST_P?g s?@POST_Q?$POST_Q?g s?@PLOT_N?$PLOT_N?g s?@PLOT_T?$PLOT_T?g s?@PLOT_P?$PLOT_P?g s?@PLOT_Q?$PLOT_Q?g s?@ARCHIVE_N?$ARCHIVE_N?g s?@ARCHIVE_T?$ARCHIVE_T?g s?@ARCHIVE_P?$ARCHIVE_P?g s?@ARCHIVE_Q?$ARCHIVE_Q?g s?@REGRESS_N?$REGRESS_N?g s?@BCSDIR?$BCSDIR?g s?@SSTDIR?$SSTDIR?g s?@CHMDIR?$CHMDIR?g s?@EXPDIR?$EXPDIR?g s?@EXPDSC?$EXPDSC?g s?@HOMDIR?$HOMDIR?g s?@GROUP?$GROUP?g s?@SITE?$SITE?g s?@GEOSSRC?$GEOSSRC?g s?@GEOSBIN?$GEOSBIN?g s?@RUN_CMD?$RUN_CMD?g s?@OBSERVER_FRQ?0?g s?RECORD_?#RECORD_?g s?AGCM_ALPHA:?#AGCM_ALPHA:?g s?AGCM_BETA:?#AGCM_BETA:?g s?>>>FORCEGCM<<> $HOMDIR/sedfile << EOF s^@HYDROSTATIC^$HYDROSTATIC^g s^@KSPLIT^$KSPLIT^g s^@NSPLIT^$NSPLIT^g s^@MSPLIT^$MSPLIT^g s/@PCHEM_DT/$PCHEM_DT/g s/@FV_NX/$FV_NX/g s/@FV_NY/$FV_NY/g s/@GRID_FILE/$GRID_FILE/g s/@MINDALLOWED/$MINDALLOWED/g s/@MAXDALLOWED/$MAXDALLOWED/g s^@TILEBIN^$TILEBIN^g EOF endif sed -f $HOMDIR/sedfile $HOMDIR/tmpfile | sed -e 's/\^/\`/g' > $HOMDIR/$FILE echo "Creating $FILE for Experiment $EXPID ..." chmod 755 $HOMDIR/$FILE end /bin/rm $HOMDIR/SETENV.commands /bin/rm $APPDIR/HISTORY.rc.tmpl echo $HOMDIR > $EXPDIR/.HOMDIR echo " " ####################################################################### # Finalizing Experiment Directories and Chem Registry ####################################################################### # Check for Experiment Work Directories # ------------------------------------- if(! -e $EXPDIR/post ) mkdir -p $EXPDIR/post if(! -e $EXPDIR/plot ) mkdir -p $EXPDIR/plot if(! -e $EXPDIR/archive ) mkdir -p $EXPDIR/archive # Move Archive and Plot jobs to Experiment Work Sub-Directories # ------------------------------------------------------------- /bin/mv $HOMDIR/gcm_post.j $EXPDIR/post /bin/mv $HOMDIR/gcm_plot.j $EXPDIR/plot /bin/mv $HOMDIR/gcm_archive.j $EXPDIR/archive /bin/cp $GEOSUTIL/post/plot.rc $EXPDIR/plot /bin/cp $GEOSUTIL/post/post.rc $EXPDIR/post ####################################################################### # Modify RC Directory for LM and PCHEM/GOCART Options ####################################################################### # Modify RC Files for LM # ---------------------- if( $AGCM_LM != 72 ) then set files = `ls -1 $EXPDIR/RC/*.rc` foreach file ($files) /bin/rm -f $EXPDIR/RC/dummy /bin/mv $file $EXPDIR/RC/dummy cat $EXPDIR/RC/dummy | sed -e "s|/L72/|/L${AGCM_LM}/|g" | sed -e "s|z72|z${AGCM_LM}|g" > $file end endif # Turn on PCHEM # ------------- if( $AERO_PROVIDER == PCHEM ) then /bin/mv $EXPDIR/RC/GEOS_ChemGridComp.rc $EXPDIR/RC/GEOS_ChemGridComp.tmp cat $EXPDIR/RC/GEOS_ChemGridComp.tmp | \ awk '{ if ($1~"PCHEM") { sub(/FALSE/,"TRUE") }; print }' > $EXPDIR/RC/GEOS_ChemGridComp.rc /bin/mv $EXPDIR/RC/Chem_Registry.rc $EXPDIR/RC/Chem_Registry.tmp cat $EXPDIR/RC/Chem_Registry.tmp | \ awk '{ if ( $1 ~ "doing" ) { sub(/yes/, "no" ) }; print }' > $EXPDIR/RC/Chem_Registry.rc /bin/mv $EXPDIR/RC/Chem_Registry.rc $EXPDIR/RC/Chem_Registry.tmp cat $EXPDIR/RC/Chem_Registry.tmp | \ awk '{if ( $1 ~ "doing") { if ( $1 ~ "PC") sub(/no/, "yes" ); print;} else print }' > $EXPDIR/RC/Chem_Registry.rc endif # Turn on GOCART # -------------- if( $GOCART == TRUE ) then /bin/mv $EXPDIR/RC/GEOS_ChemGridComp.rc $EXPDIR/RC/GEOS_ChemGridComp.tmp cat $EXPDIR/RC/GEOS_ChemGridComp.tmp | \ awk '{ if ($1~"GOCART") { sub(/FALSE/,"TRUE") }; print }' > $EXPDIR/RC/GEOS_ChemGridComp.rc else /bin/mv $EXPDIR/RC/GEOS_ChemGridComp.rc $EXPDIR/RC/GEOS_ChemGridComp.tmp cat $EXPDIR/RC/GEOS_ChemGridComp.tmp | \ awk '{ if ($1~"GOCART") { sub(/TRUE/,"FALSE") }; print }' > $EXPDIR/RC/GEOS_ChemGridComp.rc endif ####################################################################### # Echo Settings and Messages ####################################################################### echo "Done!" echo "-----" echo " " echo "Build Directory: $GEOSDIR" echo "----------------" echo " " if ( ! -e $GEOSDIR/$ARCH/bin/GEOSgcm.x ) then echo " " echo "Note: Build directory does not contain GEOSgcm.x !" echo " You will need to put a copy of GEOSgcm.x in your Experiment directory" echo "----------------------------------------------------------------------------" echo " " else echo " " echo "The following executable has been placed in your Experiment Directory:" echo "----------------------------------------------------------------------" echo "$GEOSDIR/$ARCH/bin/GEOSgcm.x" echo " " endif echo " " echo "You must now copy your AGCM Initial Conditions into: " echo "---------------------------------------------------- " echo $EXPDIR echo "" echo "" ####################################################################### # Clean-Up ####################################################################### if( -e $HOMDIR/tmpfile ) /bin/rm $HOMDIR/tmpfile if( -e $HOMDIR/sedfile ) /bin/rm $HOMDIR/sedfile exit