URI: 
       trun-relax.sh - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
  HTML git clone git://src.adamsgaard.dk/pism
   DIR Log
   DIR Files
   DIR Refs
   DIR LICENSE
       ---
       trun-relax.sh (6714B)
       ---
            1 #!/bin/bash
            2 
            3 # Copyright (C) 2013, 2014, 2015 Andy Aschwanden
            4 #
            5 # *****************************************************************************
            6 # Relax Greenland Topography
            7 # *****************************************************************************
            8 #
            9 #
           10 
           11 # recommended way to run with N processors is " ./run-relax.sh N >& out.relax & "
           12 # which gives a viewable (with "less", for example) transcript in out.relax
           13 
           14 SCRIPTNAME="#(run-relax.sh)"
           15 
           16 echo
           17 echo "# =================================================================================="
           18 echo "# PISM run for relaxation experiment "
           19 echo "# =================================================================================="
           20 echo
           21 
           22 set -e  # exit on error
           23 
           24 NN=2  # default number of processors
           25 if [ $# -gt 0 ] ; then  # if user says "psearise.sh 8" then NN = 8
           26   NN="$1"
           27 fi
           28 
           29 echo "$SCRIPTNAME              NN = $NN"
           30 
           31 # set MPIDO if using different MPI execution command, for example:
           32 #  $ export PISM_MPIDO="aprun -n "
           33 if [ -n "${PISM_MPIDO:+1}" ] ; then  # check if env var is already set
           34   echo "$SCRIPTNAME      PISM_MPIDO = $PISM_MPIDO  (already set)"
           35 else
           36   PISM_MPIDO="mpiexec -n "
           37   echo "$SCRIPTNAME      PISM_MPIDO = $PISM_MPIDO"
           38 fi
           39 
           40 # check if env var PISM_DO was set (i.e. PISM_DO=echo for a 'dry' run)
           41 if [ -n "${PISM_DO:+1}" ] ; then  # check if env var DO is already set
           42   echo "$SCRIPTNAME         PISM_DO = $PISM_DO  (already set)"
           43 else
           44   PISM_DO="" 
           45 fi
           46 
           47 # prefix to pism (not to executables)
           48 if [ -n "${PISM_BIN:+1}" ] ; then  # check if env var is already set
           49   echo "$SCRIPTNAME     PISM_BIN = $PISM_BIN  (already set)"
           50 else
           51   PISM_BIN=""    # just a guess
           52   echo "$SCRIPTNAME     PISM_BIN = $PISM_BIN"
           53 fi
           54 
           55 # set PISM_EXEC if using different executables, for example:
           56 #  $ export PISM_EXEC="pismr -energy cold"
           57 if [ -n "${PISM_EXEC:+1}" ] ; then  # check if env var is already set
           58   echo "$SCRIPTNAME       PISM_EXEC = $PISM_EXEC  (already set)"
           59 else
           60   PISM_EXEC="pismr"
           61   echo "$SCRIPTNAME       PISM_EXEC = $PISM_EXEC"
           62 fi
           63 
           64 # set output format:
           65 #  $ export PISM_OFORMAT="netcdf4_parallel "
           66 if [ -n "${PISM_OFORMAT:+1}" ] ; then  # check if env var is already set
           67   echo "$SCRIPTNAME                      PISM_OFORMAT = $PISM_OFORMAT  (already set)"
           68 else
           69   PISM_OFORMAT="netcdf3"
           70   echo "$SCRIPTNAME                      PISM_OFORMAT = $PISM_OFORMAT"
           71 fi
           72 OFORMAT=$PISM_OFORMAT
           73 
           74 echo
           75 
           76 # preprocess.sh generates pism_*.nc files; run it first
           77 if [ -n "${PISM_DATANAME:+1}" ] ; then  # check if env var is already set
           78   echo "$SCRIPTNAME   PISM_DATANAME = $PISM_DATANAME  (already set)"
           79 else
           80   PISM_DATANAME=pism_Greenland_5km_v1.1.nc
           81 fi
           82 
           83 if [ -n "${PISM_TARGETNAME:+1}" ] ; then  # check if env var is already set
           84   echo "$SCRIPTNAME   PISM_TARGETNAME = $PISM_TARGETNAME  (already set)"
           85 else
           86   PISM_TARGETNAME=target_$PISM_DATANAME
           87 fi
           88 
           89 for INPUT in $PISM_DATANAME $PISM_TARGETNAME; do
           90   if [ -e "$INPUT" ] ; then  # check if file exist
           91     echo "$SCRIPTNAME           input   $INPUT (found)"
           92   else
           93     echo "$SCRIPTNAME           input   $INPUT (MISSING!!)"
           94     echo
           95     echo "     !!!!   RUN  preprocess.sh  TO GENERATE  $INPUT   !!!!"
           96     echo
           97   fi
           98 done
           99 
          100 # grids
          101 GRID20KM="-Mx 76 -My 141 -Lz 4000 -Lbz 2000 -Mz 101 -Mbz 21 -z_spacing equal"
          102 GRID10KM="-Mx 151 -My 281 -Lz 4000 -Lbz 2000 -Mz 201 -Mbz 21 -z_spacing equal"
          103 GRID5KM="-Mx 301 -My 561 -Lz 4000 -Lbz 2000 -Mz 201 -Mbz 21 -z_spacing equal"
          104 GRID3KM="-Mx 501 -My 935 -Lz 4000 -Lbz 2000 -Mz 401 -Mbz 21 -z_spacing equal"
          105 GRID2FKM="-Mx 601 -My 1121 -Lz 4000 -Lbz 2000 -Mz 401 -Mbz 21 -z_spacing equal"
          106 GRID2KM="-Mx 751 -My 1401 -Lz 4000 -Lbz 2000 -Mz 401 -Mbz 21 -z_spacing equal"
          107 GRID1KM="-Mx 1501 -My 2801 -Lz 4000 -Lbz 2000 -Mz 401 -Mbz 21 -z_spacing equal "
          108 
          109 
          110 # grid spacings
          111 GS20KM=20
          112 GS10KM=10
          113 GS5KM=5
          114 GS3KM=3
          115 GS2FKM=2.5
          116 GS2KM=2
          117 GS1KM=1
          118 
          119 # skips
          120 SKIP20KM=10
          121 SKIP10KM=50
          122 SKIP5KM=200
          123 SKIP3KM=500
          124 SKIP2FKM=750
          125 SKIP2KM=1000
          126 SKIP1KM=2000
          127 
          128 # defaults to coarse grid choices
          129 GRID=$GRID20KM
          130 SKIP=$SKIP20KM
          131 GS=$GS20KM
          132 
          133 echo ""
          134 if [ $# -gt 1 ] ; then
          135   if [ $2 -eq "1" ] ; then  # if user says "run-relax.sh N 1" then use:
          136     echo "$SCRIPTNAME grid: RUNS ON 20km and 10km"
          137     echo "$SCRIPTNAME       WARNING: MEDIUM COMPUTATIONAL TIME"
          138     GRID=$GRID10KM
          139     SKIP=$SKIP10KM
          140     GS=$GS10KM
          141   fi
          142   if [ $2 -eq "2" ] ; then  # if user says "run-relax.sh N 2" then use:
          143     echo "$SCRIPTNAME grid: RUNS ON 20km, 10km, 5km and 5km"
          144     echo "$SCRIPTNAME       WARNING: LARGE COMPUTATIONAL TIME"
          145     GRID=$GRID5KM
          146     SKIP=$SKIP5KM
          147     GS=$GS5KM
          148   fi
          149   if [ $2 -eq "3" ] ; then  # if user says "run-relax.sh N 3":
          150     echo "$SCRIPTNAME grid: RUNS ON 20km, 10km, 5km and 2.5km"
          151     echo "$SCRIPTNAME       WARNING: VERY LARGE COMPUTATIONAL TIME"
          152     GRID=$GRID2FKM
          153     SKIP=$SKIP2FKM
          154     GS=$GS2FKM
          155   fi
          156   if [ $2 -eq "4" ] ; then  # if user says "run-relax.sh N 4":
          157     echo "$SCRIPTNAME grid: RUNS ON 10km, 5km, 2.5km and 2km"
          158     echo "$SCRIPTNAME       WARNING: EXTREMELY LARGE COMPUTATIONAL TIME"
          159     GRID=$GRID2KM
          160     SKIP=$SKIP2KM
          161     GS=$GS2KM
          162   fi
          163   if [ $2 -eq "5" ] ; then  # if user says "run-relax.sh N 5":
          164     echo "$SCRIPTNAME grid: RUNS ON 10km, 5km, 2.5km, 2km and 1km"
          165     echo "$SCRIPTNAME       WARNING: EXTREMELY LARGE COMPUTATIONAL TIME"
          166     GRID=$GRID1KM
          167     SKIP=$SKIP1KM
          168     GS=$GS1KM
          169   fi
          170 else
          171     echo "$SCRIPTNAME grid: ALL RUNS ON 20km"
          172 fi
          173 echo ""
          174 
          175 OCEAN="-calving ocean_kill"
          176 # FIXME (CK): OCEAN (above) is never used
          177 COUPLER="-surface given -surface_given_file $PISM_TARGETNAME"
          178 PISM="${PISM_BIN}${PISM_EXEC} -energy none -bed_def lc"
          179 # output file size
          180 OSIZE="big"
          181 
          182 BOOTNAME=$PISM_DATANAME
          183 
          184 STARTTIME=0
          185 ENDTIME=100
          186 
          187 OUTNAME=g${GS}km_removeice.nc
          188 TSNAME=ts_$OUTNAME
          189 TSSTEP=yearly
          190 TSTIMES=$STARTTIME:$TSSTEP:$ENDTIME
          191 EXNAME=ex_$OUTNAME
          192 EXSTEP=100
          193 EXTIMES=$STARTTIME:$EXSTEP:$ENDTIME
          194 EXVARS="diffusivity,thk,mask,lat,lon,taud_mag,topg,usurf"
          195 
          196 
          197 cmd="$PISM_MPIDO $NN $PISM -skip -skip_max $SKIP -i $BOOTNAME -bootstrap 
          198      $GRID $COUPLER \
          199      -ts_file $TSNAME -ts_times $TSTIMES \
          200      -extra_file $EXNAME -extra_vars $EXVARS -extra_times $EXTIMES \
          201      -ys $STARTTIME -ye $ENDTIME -o_size $OSIZE -o $OUTNAME -o_format $OFORMAT"
          202 
          203 $PISM_DO $cmd
          204 
          205 
          206 COUPLER="-no_mass"
          207 
          208 RUNLENGTH=50000
          209 STARTTIME=$ENDTIME
          210 ENDTIME=$(($STARTTIME + $RUNLENGTH))
          211 
          212 INNAME=$OUTNAME
          213 OUTNAME=g${GS}km_relax.nc
          214 TSNAME=ts_$OUTNAME
          215 TSSTEP=yearly
          216 TSTIMES=$STARTTIME:$TSSTEP:$ENDTIME
          217 EXNAME=ex_$OUTNAME
          218 EXSTEP=100
          219 EXTIMES=$STARTTIME:$EXSTEP:$ENDTIME
          220 EXVARS="diffusivity,thk,mask,lat,lon,taud_mag,topg,usurf"
          221 
          222 echo
          223 cmd="$PISM_MPIDO $NN $PISM -skip -skip_max $SKIP -i $INNAME 
          224      $COUPLER \
          225      -ts_file $TSNAME -ts_times $TSTIMES \
          226      -extra_file $EXNAME -extra_vars $EXVARS -extra_times $EXTIMES \
          227      -ys $STARTTIME -ye $ENDTIME -o_size $OSIZE -o $OUTNAME -o_format $OFORMAT"
          228 
          229 $PISM_DO $cmd