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