#!/bin/tcsh -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 # # +-======-+ ####################################################################### # Define Colors # Note: For No Colors, set C1 and C2 to NONE ####################################################################### set BLACK = "\033[30m" set RED = "\033[31m" set GREEN = "\033[32m" set YELLOW = "\033[33m" set BLUE = "\033[34m" set MAGENTA = "\033[35m" set CYAN = "\033[36m" set WHITE = "\033[37m" set RESET = "\033[0m" set BOLD = "\033[1m" set COLORS = `echo $BLACK $RED $GREEN $YELLOW $BLUE $MAGENTA $CYAN $WHITE $RESET` if( -e $HOME/.GCMSETUP ) then set GCMSETUPinfo = `cat $HOME/.GCMSETUP` set C1 = $GCMSETUPinfo[1] set C2 = $GCMSETUPinfo[2] else set C1 = $RED set C2 = $BLUE endif set CN = $RESET ####################################################################### # 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 ####################################################################### # Test for Compiler and MPI Setup ####################################################################### set BASEDIR = `$GEOSDEF/src/g5_modules basedir` if ( `echo $BASEDIR | grep -i ifort` != '') then set COMPILER = ifort else if ( `echo $BASEDIR | grep -i pgfortran` != '') then set COMPILER = pgfortran else # Assume default is ifort in case of older baselibs set COMPILER = ifort endif if ( `echo $BASEDIR | grep -i mvapich2` != '') then set MPI = mvapich2 else if ( `echo $BASEDIR | grep -i openmpi` != '') then set MPI = openmpi else if ( `echo $BASEDIR | grep -i impi` != '') then set MPI = impi else if ( `echo $BASEDIR | grep -i mpt` != '') then set MPI = mpt else # Assume default is Intel MPI in case of older baselibs set MPI = impi endif ####################################################################### # Test for Command Line Flags ####################################################################### if( $#argv > 1 ) then # We have too many arguments, only one supported now goto USAGE else if ( $#argv == 1) then switch ( $argv[1] ) # Set our colors case -[Cc]: case --[Cc][Oo][Ll][Oo][Rr]: goto SETCOLOR # Run the gpu code case -[Gg]: case --[Gg][Pp][Uu]: # Test if we are correctly set up for GPUs. # If not, exit with a statement to contact Matt Thompson if ( $COMPILER != pgfortran ) then goto CONTACTMATT endif # If we get here, the environment is (probably) right for GPUs set GPU = TRUE breaksw # Here any string not above will trigger USAGE case -[Hh]: case --[Hh][Ee][Ll][Pp]: default: goto USAGE endsw else set GPU = FALSE endif ####################################################################### # Set up RUN_CMD for MPI Stack ####################################################################### if ( $MPI == mvapich2 ) then setenv RUN_CMD 'mpirun_rsh -hostfile $PBS_NODEFILE -np ' # mpi run for MVAPICH2 else if ( $MPI == openmpi ) then if ( $GPU == TRUE ) then setenv RUN_CMD 'mpirun --bind-to-socket -np ' # mpi run for OpenMPI GPU else setenv RUN_CMD 'mpirun --bind-to-core -np ' # mpi run for OpenMPI CPU endif else if ( $MPI == impi ) then setenv RUN_CMD 'mpirun -perhost 12 -np ' # mpi run for Intel MPI else if ( $MPI == mpt ) then setenv RUN_CMD 'mpiexec -np ' # mpi run for MPT endif ####################################################################### # Enter Experiment Specific Run Parameters ####################################################################### echo echo "Enter the ${C1}Experiment ID${CN}:" set EXPID = $< DESC: echo "Enter a 1-line ${C1}Experiment Description${CN}:" set EXPTMP = `echo $<` if( $#EXPTMP == 0 ) goto DESC set EXPDSC = $EXPTMP[1] foreach WORD ($EXPTMP) if( $WORD != $EXPDSC ) set EXPDSC = `echo ${EXPDSC}_${WORD}` end HRCODE: echo "Enter the ${C1}Atmospheric Horizontal Resolution${CN} code:" echo "-----------------------------------------------------------" echo " Lat/Lon Cubed-Sphere" echo "-----------------------------------------------------------" echo " ${C2}b -- 2 deg ${CN} ${C2}c48 -- 2 deg ${CN}" echo " ${C2}c -- 1 deg ${CN} ${C2}c90 -- 1 deg ${CN}" echo " ${C2}d -- 1/2 deg ${CN} ${C2}c180 -- 1/2 deg (${C1}56-km${C2}) ${CN}" echo " ${C2}e -- 1/4 deg (${C1}35-km${C2}) c360 -- 1/4 deg (${C1}28-km${C2}) ${CN} " echo " ${C2} c720 -- 1/8 deg (${C1}14-km${C2}) ${CN}" echo " ${C2} c1440 - 1/16 deg (${C1} 7-km${C2}) ${CN}" echo " " set HRCODE = `echo $<` set HRCODE = `echo $HRCODE | tr "[:upper:]" "[:lower:]"` if( $HRCODE != 'b' & \ $HRCODE != 'c' & \ $HRCODE != 'd' & \ $HRCODE != 'e' & \ $HRCODE != 'c48' & \ $HRCODE != 'c90' & \ $HRCODE != 'c180' & \ $HRCODE != 'c360' & \ $HRCODE != 'c720' & \ $HRCODE != 'c1440' ) goto HRCODE if( $HRCODE == 'c48' | \ $HRCODE == 'c90' | \ $HRCODE == 'c180' | \ $HRCODE == 'c360' | \ $HRCODE == 'c720' | \ $HRCODE == 'c1440' ) then set Resolution = $HRCODE else if( $HRCODE == 'b' ) set Resolution = `echo 144 91` if( $HRCODE == 'c' ) set Resolution = `echo 288 181` if( $HRCODE == 'd' ) set Resolution = `echo 576 361` if( $HRCODE == 'e' ) set Resolution = `echo 1152 721` endif if( $#Resolution == 2 ) then set AGCM_IM = $Resolution[1] set AGCM_JM = $Resolution[2] set CUBED = FALSE set DYCORE = FV else set CUBED = TRUE set DYCORE = FV3 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 Atmospheric Model ${C1}Vertical Resolution${CN}: ${C2}LM${CN} (Default: 72)" #set AGCM_LM = $< #if( .$AGCM_LM == . ) then set AGCM_LM = 72 #endif ####################################################################### # Check for COUPLED Ocean ####################################################################### OGCM: echo "Do you wish to run the ${C1}COUPLED${CN} Ocean/Sea-Ice Model? (Default: ${C2}NO${CN} or ${C2}FALSE${CN})" set OGCM = $< if( .$OGCM == . ) then set OGCM = FALSE else set OGCM = `echo $OGCM | tr "[:lower:]" "[:upper:]"` if( $OGCM == "Y" | \ $OGCM == "YES" | \ $OGCM == "T" | \ $OGCM == "TRUE" ) set OGCM = TRUE if( $OGCM == "N" | \ $OGCM == "NO" | \ $OGCM == "F" | \ $OGCM == "FALSE" ) set OGCM = FALSE if( $OGCM != TRUE & $OGCM != FALSE ) then echo echo "${C1}COUPLED${CN} must be set equal to TRUE or FALSE!" goto OGCM else echo endif endif if( $OGCM == TRUE ) then set COUPLED = "" set OGRIDTYP = "TM" set DATAOCEAN = "#DELETE" # Coupled Ocean Resolution # ------------------------ CORSLV: echo "Enter the Ocean Lat/Lon ${C1}Horizontal Resolution${CN}: ${C2}IM JM${CN} (Default: 360 200)" set Resolution = `echo $<` set num = $#Resolution if( $num == 2 ) then set OGCM_IM = $Resolution[1] set OGCM_JM = $Resolution[2] else if( $num == 0 ) then set OGCM_IM = 360 set OGCM_JM = 200 else goto CORSLV endif endif set IMO = ${OGCM_IM} set JMO = ${OGCM_JM} if( $IMO < 10 ) set IMO = 000$IMO if( $IMO < 100 ) set IMO = 00$IMO if( $IMO < 1000 ) set IMO = 0$IMO if( $JMO < 10 ) set JMO = 000$JMO if( $JMO < 100 ) set JMO = 00$JMO if( $JMO < 1000 ) set JMO = 0$JMO set OCEANtag = TM${IMO}xPE${JMO} set BCSTAG = Ganymed-4_0_Reynolds set SSTNAME = "#DELETE" set SSTFILE = "#DELETE" set ICEFILE = "#DELETE" set KPARFILE = SEAWIFS_KPAR_mon_clim.${OGCM_IM}x${OGCM_JM} set OSTIA = "#DELETE" echo "Enter the Ocean Model ${C1}Vertical Resolution${CN}: ${C2}LM${CN} (Default: 50)" set OGCM_LM = $< if( .$OGCM_LM == . ) then set OGCM_LM = 50 endif set OGCM_GRIDSPEC = tripolar_${OGCM_IM}x${OGCM_JM}.ascii set OGCM_NX = 8 set OGCM_NY = 10 @ OGCM_NPROCS = $OGCM_NX * $OGCM_NY else # OGCM = FALSE (Data Ocean Resolution) # ------------------------------------ DORSLV: echo "Enter the ${C1}Data_Ocean Horizontal Resolution ${CN}code: ${C2}o1${CN} (1 -deg, 360x180 Reynolds) Default" echo " ${C2}o2${CN} (1/4-deg, 1440x720 MERRA-2)" echo " ${C2}o3${CN} (1/8-deg, 2880x1440 OSTIA)" set HRCODE = `echo $<` if( .$HRCODE == . ) set HRCODE = o1 set HRCODE = `echo $HRCODE | tr "[:upper:]" "[:lower:]"` if( $HRCODE != 'o1' & \ $HRCODE != 'o2' & \ $HRCODE != 'o3' ) goto DORSLV if( $HRCODE == 'o1' ) then set Resolution = `echo 360 180` set OGCM_IM = $Resolution[1] set OGCM_JM = $Resolution[2] set BCSTAG = Ganymed-4_0_Reynolds set SSTNAME = SST set SSTFILE = dataoceanfile_MERRA_sst_1971-current.${OGCM_IM}x${OGCM_JM}.LE set ICEFILE = dataoceanfile_MERRA_fraci_1971-current.${OGCM_IM}x${OGCM_JM}.LE set KPARFILE = SEAWIFS_KPAR_mon_clim.${OGCM_IM}x${OGCM_JM} set OSTIA = "#DELETE" endif if( $HRCODE == 'o2' ) then set Resolution = `echo 1440 720` set OGCM_IM = $Resolution[1] set OGCM_JM = $Resolution[2] set BCSTAG = Ganymed-4_0_MERRA-2 set SSTNAME = MERRA2 set SSTFILE = dataoceanfile_MERRA2_SST.${OGCM_IM}x${OGCM_JM}.\${YEAR}.data set ICEFILE = dataoceanfile_MERRA2_ICE.${OGCM_IM}x${OGCM_JM}.\${YEAR}.data set KPARFILE = SEAWIFS_KPAR_mon_clim.${OGCM_IM}x${OGCM_JM} set OSTIA = "" endif if( $HRCODE == 'o3' ) then set Resolution = `echo 2880 1440` set OGCM_IM = $Resolution[1] set OGCM_JM = $Resolution[2] set BCSTAG = Ganymed-4_0_Ostia set SSTNAME = OSTIA_REYNOLDS set SSTFILE = dataoceanfile_OSTIA_REYNOLDS_SST.${OGCM_IM}x${OGCM_JM}.\${YEAR}.data set ICEFILE = dataoceanfile_OSTIA_REYNOLDS_ICE.${OGCM_IM}x${OGCM_JM}.\${YEAR}.data set KPARFILE = SEAWIFS_KPAR_mon_clim.${OGCM_IM}x${OGCM_JM} set OSTIA = "" endif set IMO = ${OGCM_IM} set JMO = ${OGCM_JM} if( $IMO < 10 ) set IMO = 000$IMO if( $IMO < 100 ) set IMO = 00$IMO if( $IMO < 1000 ) set IMO = 0$IMO if( $JMO < 10 ) set JMO = 000$JMO if( $JMO < 100 ) set JMO = 00$JMO if( $JMO < 1000 ) set JMO = 0$JMO set DATAOCEAN = "" set OGCM_LM = 34 set COUPLED = "#DELETE" set OGRIDTYP = "DE" set OCEANtag = DE${IMO}xPE${JMO} set OGCM_NX = "" set OGCM_NY = "" set OGCM_GRIDSPEC = "" set OGCM_NPROCS = "" endif # Set IAU-Forcing and Bias Correction OFF # --------------------------------------- set FORCEDAS = "#" set FORCEGCM = "#" # Set Default Convert Parameters # ------------------------------ set CNV_NX = 2 set CNV_NY = 12 # Best set to number of cores per node # Default Run Parameters # ---------------------- if( $AGCM_IM == "144" ) then set DT = 1800 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set CHEM_DT = $DT set JOB_SGMT = 00000015 set NUM_SGMT = 20 set NUM_READERS = 2 set NUM_WRITERS = 2 if( $OGCM == TRUE ) then set NX = $OGCM_NX set NY = $OGCM_NY set OCEAN_DT = $DT else if( $GPU == TRUE ) then set NX = 2 set NY = 4 else set NX = 4 set NY = 12 endif set OCEAN_DT = $IRRAD_DT endif set ATMOStag = DC0144xPC0091 set POST_NDS = 4 endif if( $AGCM_IM == "c48" ) then set DT = 1800 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT set CHEM_DT = $DT set AGCM_IM = 48 set AGCM_JM = `expr $AGCM_IM \* 6` if ( $GPU == TRUE) then set NX = 2 else set NX = 4 endif set NY = `expr $NX \* 6` set HYDROSTATIC = TRUE set HIST_IM = 180 set HIST_JM = 91 set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" set NUM_READERS = 2 set NUM_WRITERS = 2 set JOB_SGMT = 00000015 set NUM_SGMT = 20 set ATMOStag = CF0048x6C set POST_NDS = 4 endif if( $AGCM_IM == "288" ) then set DT = 900 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set CHEM_DT = $DT set JOB_SGMT = 00000008 set NUM_SGMT = 5 set NUM_READERS = 2 set NUM_WRITERS = 2 if( $OGCM == TRUE ) then set NX = $OGCM_NX set NY = $OGCM_NY set OCEAN_DT = $DT else if( $GPU == TRUE ) then set NX = 2 set NY = 8 else set NX = 8 set NY = 12 endif set OCEAN_DT = $IRRAD_DT endif set ATMOStag = DC0288xPC0181 set POST_NDS = 8 endif if( $AGCM_IM == "c90" ) then set DT = 900 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT set CHEM_DT = $DT set AGCM_IM = 90 set AGCM_JM = `expr $AGCM_IM \* 6` if ( $GPU == TRUE) then set NX = 2 else set NX = 4 endif set NY = `expr $NX \* 6` set HYDROSTATIC = TRUE set HIST_IM = `expr $AGCM_IM \* 4` set HIST_JM = `expr $AGCM_IM \* 2 + 1` set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" set NUM_READERS = 2 set NUM_WRITERS = 2 set JOB_SGMT = 00000032 set NUM_SGMT = 4 set ATMOStag = CF0090x6C set POST_NDS = 8 endif if( $AGCM_IM == "576" ) then set DT = 450 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set CHEM_DT = $DT set JOB_SGMT = 00000016 set NUM_SGMT = 1 set NUM_READERS = 2 set NUM_WRITERS = 2 if( $OGCM == TRUE ) then set NX = $OGCM_NX set NY = $OGCM_NY set OCEAN_DT = $DT else if( $GPU == TRUE ) then set NX = 2 set NY = 8 else set NX = 12 set NY = 32 endif set OCEAN_DT = $IRRAD_DT endif set ATMOStag = DC0576xPC0361 set POST_NDS = 8 endif if( $AGCM_IM == "c180" ) then set DT = 450 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set OCEAN_DT = $IRRAD_DT set CHEM_DT = $DT set AGCM_IM = 180 set AGCM_JM = `expr $AGCM_IM \* 6` if ( $GPU == TRUE) then set NX = 2 else set NX = 6 endif set NY = `expr $NX \* 6` set HYDROSTATIC = TRUE set HIST_IM = `expr $AGCM_IM \* 4` set HIST_JM = `expr $AGCM_IM \* 2 + 1` set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" set NUM_READERS = 2 set NUM_WRITERS = 2 set JOB_SGMT = 00000016 set NUM_SGMT = 1 set ATMOStag = CF0180x6C set POST_NDS = 8 endif if( $AGCM_IM == "1152" ) then set DT = 450 set SOLAR_DT = 3600 set IRRAD_DT = 3600 set CHEM_DT = $DT set JOB_SGMT = 00000005 set NUM_SGMT = 1 set NUM_READERS = 4 set NUM_WRITERS = 4 if( $OGCM == TRUE ) then set NX = $OGCM_NX set NY = $OGCM_NY set OCEAN_DT = $DT else set NX = 24 set NY = 32 set OCEAN_DT = $IRRAD_DT endif set ATMOStag = DC1152xPC0721 set CNV_NX = 4 set POST_NDS = 12 endif if( $AGCM_IM == "c360" ) then set DT = 450 set SOLAR_DT = 1800 set IRRAD_DT = 1800 set OCEAN_DT = $IRRAD_DT set CHEM_DT = $DT set AGCM_IM = 360 set AGCM_JM = `expr $AGCM_IM \* 6` if ( $GPU == TRUE) then set NX = 3 set NY = 18 else set NX = 12 set NY = `expr $NX \* 6` endif set HYDROSTATIC = TRUE set HIST_IM = `expr $AGCM_IM \* 4` set HIST_JM = `expr $AGCM_IM \* 2 + 1` set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" set NUM_READERS = 4 set NUM_WRITERS = 4 set JOB_SGMT = 00000005 set NUM_SGMT = 1 set ATMOStag = CF0360x6C set CNV_NX = 4 set POST_NDS = 12 endif if( $AGCM_IM == "c500" ) then set DT = 450 set SOLAR_DT = 1800 set IRRAD_DT = 1800 set OCEAN_DT = $IRRAD_DT set CHEM_DT = $DT set AGCM_IM = 500 set AGCM_JM = `expr $AGCM_IM \* 6` set NX = 12 set NY = `expr $NX \* 6` set HYDROSTATIC = TRUE set HIST_IM = `expr $AGCM_IM \* 4` set HIST_JM = `expr $AGCM_IM \* 2 + 1` set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" set NUM_READERS = 4 set NUM_WRITERS = 4 set JOB_SGMT = 00000005 set NUM_SGMT = 1 set ATMOStag = CF0500x6C set CNV_NX = 8 set POST_NDS = 12 endif if( $AGCM_IM == "c720" ) then set DT = 225 set SOLAR_DT = 1800 set IRRAD_DT = 1800 set OCEAN_DT = $IRRAD_DT set CHEM_DT = $DT set AGCM_IM = 720 set AGCM_JM = `expr $AGCM_IM \* 6` if ( $GPU == TRUE) then set NX = 3 set NY = 18 else set NX = 16 set NY = `expr $NX \* 6` endif set HYDROSTATIC = TRUE set HIST_IM = `expr $AGCM_IM \* 4` set HIST_JM = `expr $AGCM_IM \* 2 + 1` set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" set NUM_READERS = 8 set NUM_WRITERS = 8 set JOB_SGMT = 00000005 set NUM_SGMT = 1 set ATMOStag = CF0720x6C set CNV_NX = 8 set POST_NDS = 16 endif if( $AGCM_IM == "c1440" ) then set DT = 180 set SOLAR_DT = 1800 set IRRAD_DT = 1800 set OCEAN_DT = $IRRAD_DT set CHEM_DT = $DT set AGCM_IM = 1440 set AGCM_JM = `expr $AGCM_IM \* 6` if ( $GPU == TRUE) then set NX = 3 set NY = 18 else set NX = 30 set NY = `expr $NX \* 6` endif set HYDROSTATIC = FALSE set HIST_IM = `expr $AGCM_IM \* 4` set HIST_JM = `expr $AGCM_IM \* 2 + 1` set GRID_FILE = "Gnomonic_c${AGCM_IM}.dat" set NUM_READERS = 32 set NUM_WRITERS = 32 set JOB_SGMT = 00000001 set NUM_SGMT = 1 set ATMOStag = CF1440x6C set CNV_NX = 8 set POST_NDS = 32 endif if($CUBED == "TRUE") then set FVCUBED = "" set FVLATLON = "#DELETE" set AGCM_GRIDNAME = "PE${AGCM_IM}x${AGCM_JM}-CF" set OGCM_GRIDNAME = "PE${OGCM_IM}x${OGCM_JM}-${OGRIDTYP}" set BCSRES = "${ATMOStag}_${OCEANtag}" set RES_DATELINE = '${AGCM_IM}x${AGCM_JM}' set TILEDATA = "${ATMOStag}_${OCEANtag}_Pfafstetter.til" set TILEBIN = "${ATMOStag}_${OCEANtag}_Pfafstetter.TIL" if( $HIST_IM >= $OGCM_IM ) then set INTERPOLATE_SST = 1 else set INTERPOLATE_SST = 0 endif else set FVLATLON = "" set FVCUBED = "#DELETE" set AGCM_GRIDNAME = "PC${AGCM_IM}x${AGCM_JM}-DC" set OGCM_GRIDNAME = "PE${OGCM_IM}x${OGCM_JM}-${OGRIDTYP}" set BCSRES = "${ATMOStag}_${OCEANtag}" set RES_DATELINE = '${AGCM_IM}x${AGCM_JM}_${DATELINE}' set TILEDATA = "${ATMOStag}_${OCEANtag}_Pfafstetter.til" set TILEBIN = "${ATMOStag}_${OCEANtag}_Pfafstetter.TIL" set HIST_IM = "$AGCM_IM" set HIST_JM = "$AGCM_JM" if( $AGCM_IM >= $OGCM_IM ) then set INTERPOLATE_SST = 1 else set INTERPOLATE_SST = 0 endif endif set BEG_DATE = '18910301 000000' set END_DATE = '29990302 210000' set JOB_SGMT = "$JOB_SGMT 000000" ####################################################################### # Check for AEROSOL/Chemistry Models ####################################################################### # Check for GOCART # ---------------- GOCART: echo "Do you wish to run ${C1}GOCART${CN}? (Default: ${C2}NO${CN} or ${C2}FALSE${CN})" set GOKART = $< if( .$GOKART == . ) then set GOKART = FALSE else set GOKART = `echo $GOKART | tr "[:lower:]" "[:upper:]"` if( $GOKART == "Y" | \ $GOKART == "YES" | \ $GOKART == "T" | \ $GOKART == "TRUE" ) set GOKART = TRUE if( $GOKART == "N" | \ $GOKART == "NO" | \ $GOKART == "F" | \ $GOKART == "FALSE" ) set GOKART = FALSE if( $GOKART != TRUE & $GOKART != FALSE ) then echo echo "${C1}GOCART${CN} must be set equal to ${C2}TRUE${CN} or ${C2}FALSE${CN}!" goto GOCART else echo endif endif if( $GOKART == TRUE ) then set GOCART = "" set GOCART_INTERNAL = "GOCART_INTERNAL" set HIST_GOCART = "" # Emission Files # -------------- EMISSIONS: set RCDIR = '' echo "Enter the GOCART ${C1}Emission Files${CN} to use: ${C2}PIESA${CN} (Default), ${C2}CMIP${CN}, ${C2}MERRA2${CN}, ${C2}NR${CN} or ${C2}OPS${CN}:" set RCDIR = $< if( .$RCDIR == . ) then set RCDIR = PIESA else set RCDIR = `echo $RCDIR | tr "[:lower:]" "[:upper:]"` if( $RCDIR != CMIP & $RCDIR != MERRA2 & $RCDIR != NR & $RCDIR != PIESA & $RCDIR != OPS ) then echo echo "${C1}Emission Files${CN} must be equal to: ${C2}CMIP${CN}, ${C2}MERRA2${CN}, ${C2}NR${CN}, ${C2}PIESA${CN}, or ${C2}OPS${CN}!" goto EMISSIONS else echo endif endif if( $RCDIR == OPS ) set RCDIR = '' # AERO Provider # ------------- AERO: echo "Enter the ${C1}AERO_PROVIDER${CN}: ${C2}GOCART${CN} (Default) or ${C2}PCHEM${CN}:" 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 "${C1}AERO_PROVIDER${CN} must be equal to ${C2}GOCART${CN} or ${C2}PCHEM${CN}!" goto AERO else echo endif endif else # GOKART = FALSE # -------------- set AERO_PROVIDER = PCHEM set RCDIR = "" set GOCART = "#" set HIST_GOCART = "#DELETE" endif # RATS Provider # ------------- set RATS_PROVIDER = PCHEM ####################################################################### # Architecture Specific Variables ####################################################################### @ NPES = $NX * $NY @ NCUS = $NPES / 12 setenv ARCH ` uname` setenv HOST `hostname` 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-4` ; if( $name == 'warp' ) setenv HOST discover set name = `echo $HOST | cut -b 1-3` ; if( $name == 'pfe' ) setenv HOST pleiades setenv RUN_N `echo $EXPID | cut -b1-11`_RUN # RUN Job Name setenv RUN_FN `echo $EXPID | cut -b1-11`_FCST # Forecast 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 MOVE_N `echo $EXPID | cut -b1-11`_MOVE # MOVE 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 setenv CONVERT_N `echo $EXPID | cut -b1-11`_CNV # CONVERT Job Name if( $HOST == 'pleiades' ) then setenv BATCH_GROUP "PBS -W group_list=" # PBS Syntax for GROUP 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 if( $GPU == "TRUE" ) then @ GPPN = 1 # GPUs per node @ NGND = $NPES / $GPPN # Number of GPU nodes needed setenv RUN_Q gpu # batch queue name for gcm_run.j setenv RUN_P "select=${NGND}:ncpus=${GPPN}:mpiprocs=${GPPN}:model=wes_gpu" # PE Configuration for gcm_run.j setenv RUN_FP "select=${NGND}:ncpus=${GPPN}:mpiprocs=${GPPN}:model=wes_gpu" # PE Configuration for gcm_forecast.j else setenv RUN_Q normal # batch queue name for gcm_run.j setenv RUN_P "select=${NCUS}:ncpus=12:mpiprocs=12:model=wes" # PE Configuration for gcm_run.j setenv RUN_FP "select=32:ncpus=12:mpiprocs=12:model=wes" # PE Configuration for gcm_forecast.j endif if( $MPI == impi ) then # IMPI on pleiades is handled differently setenv RUN_CMD 'mpirun --totalnum=^sort -u $PBS_NODEFILE | wc -l^ --file=$PBS_NODEFILE --rsh=ssh -perhost 12 -np ' endif setenv POST_Q normal # batch queue name for gcm_post.j setenv PLOT_Q normal # batch queue name for gcm_plot.j setenv MOVE_Q normal # batch queue name for gcm_moveplot.j setenv ARCHIVE_Q normal # batch queue name for gcm_archive.j setenv POST_P "select=${POST_NDS}:ncpus=12" # PE Configuration for gcm_post.j setenv PLOT_P "select=2:ncpus=12:mpiprocs=12:model=wes" # PE Configuration for gcm_plot.j setenv ARCHIVE_P "select=1:ncpus=1" # PE Configuration for gcm_archive.j setenv CONVERT_P "select=${CNV_NX}:ncpus=${CNV_NY}:mpiprocs=${CNV_NY}:model=wes" # PE Configuration for gcm_convert.j setenv SITE NAS # platform site setenv BCSDIR /nobackup/gmao_SIteam/ModelData/bcs/Ganymed-4_0/$BCSTAG # location of Boundary Conditions if( ${OGCM_IM}x${OGCM_JM} == "1440x720" ) then setenv SSTDIR /nobackup/gmao_SIteam/ModelData/fvInput/g5gcm/bcs/SST/${OGCM_IM}x${OGCM_JM} # location of SST Boundary Conditions else setenv SSTDIR /nobackup/gmao_SIteam/ModelData/fvInput/g5gcm/bcs/realtime/@SSTNAME/${OGCM_IM}x${OGCM_JM} # location of SST Boundary Conditions endif setenv CHMDIR /nobackup/gmao_SIteam/ModelData/fvInput_nc3 # locations of Aerosol Chemistry BCs setenv WRKDIR /nobackup/$LOGNAME # user work directory setenv COUPLEDIR /nobackup/gmao_SIteam/ModelData/coupled/Forcings # Coupled Ocean/Atmos Forcing endif if( $HOST == 'discover' ) then setenv BATCH_GROUP "SBATCH -A " # SLURM Syntax for GROUP 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 "2:00:00" # Wallclock Time for gcm_archive.j if( $GPU == "TRUE" ) then @ GPPN = 2 # GPUs per node @ NGND = $NPES / $GPPN # Number of GPU nodes needed setenv RUN_Q warp # batch queue name for gcm_run.j setenv RUN_P "select=${NGND}:ncpus=${GPPN}:mpiprocs=${GPPN}" # PE Configuration for gcm_run.j setenv RUN_FP "select=${NGND}:ncpus=${GPPN}:mpiprocs=${GPPN}" # PE Configuration for gcm_forecast.j else setenv RUN_Q general # batch queue name for gcm_run.j setenv RUN_P "select=${NCUS}:ncpus=12:mpiprocs=12" # PE Configuration for gcm_run.j setenv RUN_FP "select=32:ncpus=12:mpiprocs=12" # PE Configuration for gcm_forecast.j endif setenv POST_Q general # batch queue name for gcm_post.j setenv PLOT_Q general_small # batch queue name for gcm_plot.j setenv MOVE_Q datamove # batch queue name for gcm_moveplot.j setenv ARCHIVE_Q datamove # batch queue name for gcm_archive.j setenv POST_P "select=${POST_NDS}:ncpus=12" # PE Configuration for gcm_post.j setenv PLOT_P "select=1:ncpus=12:mpiprocs=12" # PE Configuration for gcm_plot.j setenv ARCHIVE_P "select=1:ncpus=1" # PE Configuration for gcm_archive.j setenv CONVERT_P "select=${CNV_NX}:ncpus=${CNV_NY}:mpiprocs=${CNV_NY}" # PE Configuration for gcm_convert.j setenv SITE NCCS # platform site setenv BCSDIR /discover/nobackup/ltakacs/bcs/Ganymed-4_0/$BCSTAG # location of Boundary Conditions if( ${OGCM_IM}x${OGCM_JM} == "1440x720" ) then setenv SSTDIR $SHARE/dao_ops/fvInput/g5gcm/bcs/SST/${OGCM_IM}x${OGCM_JM} # location of SST Boundary Conditions else setenv SSTDIR $SHARE/dao_ops/fvInput/g5gcm/bcs/realtime/@SSTNAME/${OGCM_IM}x${OGCM_JM} # location of SST Boundary Conditions endif setenv CHMDIR $SHARE/dao_ops/fvInput_nc3 # locations of Aerosol Chemistry BCs setenv WRKDIR /discover/nobackup/$LOGNAME # user work directory setenv COUPLEDIR /discover/nobackup/yvikhlia/coupled/Forcings # Coupled Ocean/Atmos Forcing 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 ${C1}HISTORY.AGCM.rc.tmpl${CN} to use" echo "(To use ${C1}HISTORY.AGCM.rc.tmpl${CN} from current build, Type: ${C2}Current${CN} )" echo "-------------------------------------------------------------------------" echo "Hit ENTER to use Default Tag/Location: (${C2}${HISTORYrc}${CN})" set NUHISTORY = $< if( .$NUHISTORY != . ) set HISTORYrc = $NUHISTORY if( -e $APPDIR/HISTORY.rc.hold ) /bin/mv -f $APPDIR/HISTORY.rc.hold $APPDIR/HISTORY.rc.tmpl if( -e $APPDIR/HISTORY.rc.tmpl ) /bin/mv -f $APPDIR/HISTORY.rc.tmpl $APPDIR/HISTORY.rc.hold 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.tmp1 set EXPID_old = `grep "EXPID:" $APPDIR/HISTORY.rc.tmp1 | cut -d: -f2` set EXPDSC_old = `grep "EXPDSC:" $APPDIR/HISTORY.rc.tmp1 | cut -d: -f2` cat $APPDIR/HISTORY.rc.tmp1 | sed -e "s|${EXPDSC_old}|${EXPDSC}|g" | sed -e "s|${EXPID_old}|${EXPID}|g" > $APPDIR/HISTORY.rc.tmpl /bin/rm -f $APPDIR/HISTORY.rc.tmp1 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 the ${C1}HOME${CN} Directory (to contain scripts and RC files)" echo "Hit ENTER to use Default Location:" echo "----------------------------------" echo "Default: ${C2}${HOMDIR_def}${CN}" 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 ${C1}HOME${CN} Directory MUST point to the ${C1}EXPID${CN}: ${C2}${EXPID}${CN}" 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 the ${C1}EXPERIMENT${CN} Directory (to contain model output and restart files)" echo "Hit ENTER to use Default Location:" echo "----------------------------------" echo "Default: ${C2}${EXPDIR_def}${CN}" 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 ${C1}EXPERIMENT${CN} Directory MUST point to the ${C1}EXPID${CN}: ${C2}${EXPID}${CN}" 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 # Set CNVDIR alias # ---------------- setenv CNVDIR $EXPDIR/convert ####################################################################### # Locate Build Directory ####################################################################### # GEOSagcm Build Directory # ------------------------ set check = FALSE while( $check == FALSE ) echo "Enter Location for ${C1}Build${CN} directory containing: src/ Linux/ etc..." echo "Hit ENTER to use Default Location:" echo "----------------------------------" echo "Default: ${C2}${GEOSDEF}${CN}" 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 ${C1}GEOSagcm Build${CN} \!\!" 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 setenv GCMVER `cat ${GEOSSRC}/Applications/GEOSgcm_App/.AGCM_VERSION` ####################################################################### # 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 ${C1}GROUP ID${CN} for Current EXP: (Default: ${C2}${GROUProot}${CN})" 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 # The below settings seem to be recommended for hybrid # systems using MVAPICH2 but could change if( $MPI == mvapich2 ) then if( $GPU == "TRUE" ) then cat > $HOMDIR/SETENV.commands << EOF setenv MV2_ENABLE_AFFINITY 0 setenv MV2_RNDV_PROTOCOL RPUT setenv MV2_USE_RDMA_ONE_SIDED 1 EOF else cat > $HOMDIR/SETENV.commands << EOF setenv MV2_ENABLE_AFFINITY 0 EOF endif # if gpu else if( $HOST == 'pleiades' ) then if( $MPI == impi ) then cat > $HOMDIR/SETENV.commands << EOF # causes slow Bcast of species records when enabled # setenv MPI_BUFFER_MAX 2000 setenv MPI_BUFS_PER_HOST 1024 setenv MPI_BUFS_PER_PROC 8192 setenv MPI_TYPE_MAX 655360 setenv MPI_TYPE_DEPTH 32 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 1024 setenv MPI_REQUEST_MAX 65536 setenv MPI_DISPLAY_SETTINGS # setenv MPI_VERBOSE # setenv MPI_VERBOSE2 # setenv MPI_DSM_VERBOSE # setenv MPI_STATS # setenv MPI_STATS_FILE stats.txt EOF else if( $MPI == mpt ) then cat > $HOMDIR/SETENV.commands << EOF # causes slow Bcast of species records when enabled # setenv MPI_BUFFER_MAX 2000 setenv MPI_BUFS_THRESHOLD 30 setenv MPI_BUFS_PER_HOST 1024 setenv MPI_BUFS_PER_PROC 16384 setenv MPI_TYPE_MAX 655360 setenv MPI_TYPE_DEPTH 32 setenv MPI_MSGS_MAX 10485760 setenv MPI_IB_XRC setenv MPI_IB_TIMEOUT 18 setenv MPI_IB_RAILS 2 setenv MPI_IB_FAILOVER 1 setenv MPI_GROUP_MAX 1024 setenv MPI_COMM_MAX 1024 setenv MPI_REQUEST_MAX 65536 setenv MPI_FASTSTART TRUE setenv MPI_LAUNCH_TIMEOUT 120 EOF endif # if mpi # PGI uses a different MPI stack than Intel and optimized # environments haven't been determined else if( $HOST == 'discover' ) then if( $MPI == impi ) then cat > $HOMDIR/SETENV.commands << EOF 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 # if impi endif # if host endif # if mvapich2 ####################################################################### # Create Local Scripts and Resource Files ####################################################################### set FILES = "gcm_run.j \ gcm_post.j \ gcm_archive.j \ gcm_regress.j \ gcm_convert.j \ gcm_plot.tmpl \ gcm_moveplot.j \ gcm_forecast.tmpl \ gcm_forecast.setup \ CAP.rc.tmpl \ AGCM.rc.tmpl \ HISTORY.rc.tmpl \ ExtData.rc.tmpl" set FILES = `echo $FILES` if( $OGCM == TRUE ) then set FILES = "$FILES \ input.nml \ diag_table \ field_table \ data_table" set FILES = `echo $FILES` endif if($CUBED == "TRUE") then set FILES = "$FILES \ fvcore_layout.rc" set FILES = `echo $FILES` endif echo " " foreach FILE ($FILES) /bin/rm -f $HOMDIR/tmpfile /bin/rm -f $HOMDIR/sedfile /bin/rm -f $HOMDIR/$FILE cat $APPDIR/$FILE > $HOMDIR/tmpfile cat > $HOMDIR/sedfile << EOF /@SETENVS/ { t success : success r $HOMDIR/SETENV.commands d } s?@GCMVER?$GCMVER?g s?@EXPID?$EXPID?g s?@RUN_N?$RUN_N?g s?@RUN_FN?$RUN_FN?g s?@RUN_T?$RUN_T?g s?@RUN_P?$RUN_P?g s?@RUN_FP?$RUN_FP?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?@MOVE_N?$MOVE_N?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?@MOVE_Q?$MOVE_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?@CONVERT_N?$CONVERT_N?g s?@CONVERT_P?$CONVERT_P?g s?@CNV_NX?$CNV_NX?g s?@CNV_NY?$CNV_NY?g s?@BCSDIR?$BCSDIR?g s?@SSTDIR?$SSTDIR?g s?@SSTNAME?$SSTNAME?g s?@SSTFILE?$SSTFILE?g s?@ICEFILE?$ICEFILE?g s?@KPARFILE?$KPARFILE?g s?@CHMDIR?$CHMDIR?g s?@COUPLEDIR?$COUPLEDIR?g s?@EXPDIR?$EXPDIR?g s?@EXPDSC?$EXPDSC?g s?@HOMDIR?$HOMDIR?g s?@CNVDIR?$CNVDIR?g s?@BATCH_GROUP?${BATCH_GROUP}${GROUP}?g s?@SITE?$SITE?g s?@GEOSSRC?$GEOSSRC?g s?@GEOSBIN?$GEOSBIN?g s?@GEOSUTIL?$GEOSUTIL?g s?@RUN_CMD?$RUN_CMD?g s?@OGCM_NX?$OGCM_NX?g s?@OGCM_NY?$OGCM_NY?g s?@OGCM_NPROCS?$OGCM_NPROCS?g s?@OGCM_GRIDSPEC?$OGCM_GRIDSPEC?g s?@OBSERVER_FRQ?0?g s?RECORD_?#RECORD_?g s?>>>FORCEDAS<<>>FORCEGCM<<>>COUPLED<<>>DATAOCEAN<<>>GOCART<<>>FVCUBED<<>>FVLATLON<<>>HIST_GOCART<<>>OSTIA<<> $HOMDIR/sedfile << EOF s^@HYDROSTATIC^$HYDROSTATIC^g s/@GRID_FILE/$GRID_FILE/g EOF endif sed -f $HOMDIR/sedfile $HOMDIR/tmpfile | sed -e 's/\^/\`/g' > $HOMDIR/$FILE echo "Creating ${C1}${FILE}${CN} for Experiment: $EXPID " chmod 755 $HOMDIR/$FILE end /bin/rm $HOMDIR/SETENV.commands if( -e $APPDIR/HISTORY.rc.hold ) then /bin/mv -f $APPDIR/HISTORY.rc.hold $APPDIR/HISTORY.rc.tmpl else /bin/rm -f $APPDIR/HISTORY.rc.tmpl endif echo $HOMDIR > $EXPDIR/.HOMDIR echo " " ####################################################################### # Produce Final script and .rc files ####################################################################### # Comment or UN-Comment RESTARTS based on EXP Configuration # --------------------------------------------------------- set LH2O = FALSE set LMAM = FALSE set LCARMA = FALSE set LGMICHEM = FALSE set LSTRATCHEM = FALSE set LGOCART = $GOKART set RSNAMES = "LH2O LMAM LCARMA LGMICHEM LSTRATCHEM LGOCART" set RSTYPES = "INTERNAL IMPORT" /bin/rm -f command set FILE = AGCM.rc.tmpl if( -e $HOMDIR/$FILE ) set LOCDIR = $HOMDIR if( -e $EXPDIR/$FILE ) set LOCDIR = $EXPDIR /bin/rm -f $LOCDIR/$FILE.tmp /bin/mv -f $LOCDIR/$FILE $LOCDIR/$FILE.tmp cat $LOCDIR/$FILE.tmp | sed -e "s?saltwater_internal_rst?+saltwater_internal_rst?g" > $LOCDIR/$FILE foreach rsname ($RSNAMES) set name = `echo $rsname | cut -b2-` set test = `eval echo \$$rsname` if( $test == FALSE ) then foreach type ($RSTYPES) set string = ${name}_${type} /bin/rm -f $LOCDIR/$FILE.tmp /bin/mv -f $LOCDIR/$FILE $LOCDIR/$FILE.tmp echo cat $LOCDIR/$FILE.tmp \| awk \'\{if \( \$1 \~ \"${string}\" \) \ \{sub \( \/${string}\/ ,\"\#${string}\" \)\;print\} else print\}\' \> $LOCDIR/$FILE > command chmod +x command ./command /bin/rm -f command end endif end if( $LGOCART == TRUE ) then /bin/rm -f $LOCDIR/$FILE.tmp /bin/mv -f $LOCDIR/$FILE $LOCDIR/$FILE.tmp set string = AEROCLIM echo cat $LOCDIR/$FILE.tmp \| awk \'\{if \( \$1 \~ \"${string}\" \) \ \{sub \( \/${string}\/ ,\"\#${string}\" \)\;print\} else print\}\' \> $LOCDIR/$FILE > command chmod +x command ./command /bin/rm -f command endif /bin/rm -f $LOCDIR/$FILE.tmp # Delete or Enable EXP Configuration Variables # -------------------------------------------- set FILES = "AGCM.rc.tmpl gcm_run.j gcm_forecast.tmpl gcm_forecast.setup HISTORY.rc.tmpl gcm_convert.j" foreach FILE ($FILES) if( -e $HOMDIR/$FILE ) set LOCDIR = $HOMDIR if( -e $EXPDIR/$FILE ) set LOCDIR = $EXPDIR /bin/rm -f $LOCDIR/$FILE.tmp /bin/mv -f $LOCDIR/$FILE $LOCDIR/$FILE.tmp cat $LOCDIR/$FILE.tmp | awk '{ if ( $1 !~ "#DELETE") { print } }' > $LOCDIR/$FILE /bin/rm -f $LOCDIR/$FILE.tmp end chmod +x $HOMDIR/gcm_run.j chmod +x $HOMDIR/gcm_convert.j chmod +x $HOMDIR/gcm_forecast.setup ####################################################################### # Finalizing Experiment Directories and Chem Registry ####################################################################### # Check for Experiment Sub-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 if(! -e $EXPDIR/regress ) mkdir -p $EXPDIR/regress if(! -e $EXPDIR/forecasts ) mkdir -p $EXPDIR/forecasts if(! -e $EXPDIR/convert ) mkdir -p $EXPDIR/convert if( $OGCM == TRUE ) if(! -e $EXPDIR/RESTART ) mkdir -p $EXPDIR/RESTART # Rename and Move Files to Relevant Experiment Work Sub-Directories # ----------------------------------------------------------------- /bin/mv $HOMDIR/gcm_post.j $EXPDIR/post /bin/mv $HOMDIR/gcm_plot.tmpl $EXPDIR/plot /bin/mv $HOMDIR/gcm_moveplot.j $EXPDIR/plot /bin/mv $HOMDIR/gcm_archive.j $EXPDIR/archive /bin/mv $HOMDIR/gcm_regress.j $EXPDIR/regress /bin/mv $HOMDIR/gcm_convert.j $EXPDIR/convert /bin/mv $HOMDIR/gcm_forecast.tmpl $EXPDIR/forecasts /bin/mv $HOMDIR/gcm_forecast.setup $EXPDIR/forecasts /bin/cp $GEOSUTIL/post/plot.rc $EXPDIR/plot /bin/cp $GEOSUTIL/post/post.rc $EXPDIR/post /bin/mv $HOMDIR/CAP.rc.tmpl $HOMDIR/CAP.rc /bin/mv $HOMDIR/AGCM.rc.tmpl $HOMDIR/AGCM.rc /bin/mv $HOMDIR/HISTORY.rc.tmpl $HOMDIR/HISTORY.rc /bin/mv $HOMDIR/ExtData.rc.tmpl $HOMDIR/ExtData.rc ####################################################################### # 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( $RATS_PROVIDER == PCHEM | $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 endif # Turn on GOCART # -------------- if( $GOKART == 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 /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 endif # Turn on RATS_PROVIDER # --------------------- if( $RATS_PROVIDER == PCHEM ) then /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 ####################################################################### # Echo Settings and Messages ####################################################################### echo "Done!" echo "-----" echo " " echo "Build Directory: ${C2}${GEOSDIR}${CN}" echo "----------------" echo " " if ( ! -e $GEOSDIR/$ARCH/bin/GEOSgcm.x ) then echo " " echo "Note: Build directory does not contain ${C1}GEOSgcm.x${CN} !" echo " You will need to put a copy of ${C1}GEOSgcm.x${CN} in your Experiment directory" echo "----------------------------------------------------------------------------" echo " " else echo " " echo "The following executable has been placed in your Experiment Directory:" echo "----------------------------------------------------------------------" echo "${C2}$GEOSDIR/$ARCH/bin/GEOSgcm.x${CN}" echo " " endif echo " " echo "You must now copy your ${C1}Initial Conditions${CN} into: " echo "----------------------------------------------- " echo "${C2}${EXPDIR}${CN}" echo "" echo "" ####################################################################### # Clean-Up ####################################################################### if( -e $HOMDIR/tmpfile ) /bin/rm $HOMDIR/tmpfile if( -e $HOMDIR/sedfile ) /bin/rm $HOMDIR/sedfile exit ####################################################################### # Usage and Error Outputs ####################################################################### CONTACTMATT: cat <> $HOME/.GCMSETUP echo $COLORS[$C2] >> $HOME/.GCMSETUP exit 1 USAGE: cat <