tpsg_flowline.sh - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
(HTM) git clone git://src.adamsgaard.dk/pism
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
tpsg_flowline.sh (5938B)
---
1 #!/bin/bash
2
3 # Copyright (C) 2010-2015, 2018 Andy Aschwanden
4
5
6 if [ -n "${SCRIPTNAME:+1}" ] ; then
7 echo "[SCRIPTNAME=$SCRIPTNAME (already set)]"
8 echo ""
9 else
10 SCRIPTNAME="#(psg_flowline.sh)"
11 fi
12
13 echo
14 echo "# =================================================================================="
15 echo "# PISM Storglaciaren Flow Line Model"
16 echo "# =================================================================================="
17 echo
18
19 set -e # exit on error
20
21 NN=2 # default number of processors
22 if [ $# -gt 0 ] ; then # if user says "psg_flowline.sh 8" then NN = 8
23 NN="$1"
24 fi
25
26 echo "$SCRIPTNAME NN = $NN"
27
28 # set MPIDO if using different MPI execution command, for example:
29 # $ export PISM_MPIDO="aprun -n "
30 if [ -n "${PISM_MPIDO:+1}" ] ; then # check if env var is already set
31 echo "$SCRIPTNAME PISM_MPIDO = $PISM_MPIDO (already set)"
32 else
33 PISM_MPIDO="mpiexec -n "
34 echo "$SCRIPTNAME PISM_MPIDO = $PISM_MPIDO"
35 fi
36
37 # check if env var PISM_DO was set (i.e. PISM_DO=echo for a 'dry' run)
38 if [ -n "${PISM_DO:+1}" ] ; then # check if env var DO is already set
39 echo "$SCRIPTNAME PISM_DO = $PISM_DO (already set)"
40 else
41 PISM_DO=""
42 fi
43
44 # prefix to pism (not to executables)
45 if [ -n "${PISM_BIN:+1}" ] ; then # check if env var is already set
46 echo "$SCRIPTNAME PISM_BIN = $PISM_BIN (already set)"
47 else
48 PISM_BIN="" # just a guess
49 echo "$SCRIPTNAME PISM_BIN = $PISM_BIN"
50 fi
51
52 # set PISM_EXEC if using different executables, for example:
53 # $ export PISM_EXEC="pismr -energy cold"
54 if [ -n "${PISM_EXEC:+1}" ] ; then # check if env var is already set
55 echo "$SCRIPTNAME PISM_EXEC = $PISM_EXEC (already set)"
56 else
57 PISM_EXEC="pismr"
58 echo "$SCRIPTNAME PISM_EXEC = $PISM_EXEC"
59 fi
60
61 echo
62
63 PCONFIG=psg_config.nc
64
65 # cat prefix and exec together
66 PISM="${PISM_BIN}${PISM_EXEC} -config_override $PCONFIG -o_order zyx"
67
68
69 DATANAME=storglaciaren_flowline.nc
70 PISM_DATANAME=pism_$DATANAME
71 INNAME=$PISM_DATANAME
72
73 # coupler settings
74 COUPLER="-surface given -surface_given_file $PISM_DATANAME"
75 COUPLER_FORCING="-surface given,forcing -surface_given_file $PISM_DATANAME"
76
77 # force-to-thickness
78 FTALPHA=0.05
79
80 # grid parameters
81 FINEGRID="-periodicity y -Mx 792 -My 3 -Mz 201 -Lz 300 -z_spacing equal" # 5 m grid
82 FS=5
83 FINESKIP=5000
84 COARSEGRID="-periodicity y -Mx 114 -My 3 -Mz 101 -Lz 500 -z_spacing equal" # 35 m grid
85 CS=35
86 COARSESKIP=1000
87
88 GRID=$COARSEGRID
89 SKIP=$COARSESKIP
90 GS=$CS
91 echo ""
92 if [ $# -gt 1 ] ; then
93 if [ $2 -eq "2" ] ; then # if user says "psg_flowline.sh N 1" then use 5m grid:
94 echo "$SCRIPTNAME grid: ALL RUNS ON $FS m"
95 echo "$SCRIPTNAME WARNING: VERY LARGE COMPUTATIONAL TIME"
96 GRID=$FINEGRID
97 SKIP=$FINESKIP
98 GS=$FS
99 fi
100 else
101 echo "$SCRIPTNAME grid: ALL RUNS ON $CS m"
102 fi
103 echo ""
104
105
106
107 EB="-sia_e 0.3"
108
109 #PARAMS="-pseudo_plastic -pseudo_plastic_q 0.75 -pseudo_plastic_uthreshold 10.0 -yield_stress mohr_coulomb -plastic_phi 40.0"
110 PARAMS="-pseudo_plastic -pseudo_plastic_q 0.25 -pseudo_plastic_uthreshold 100.0 -yield_stress mohr_coulomb -plastic_phi 40.0"
111
112 PETSCSTUFF="-ssafd_ksp_type gmres -ssafd_ksp_norm_type unpreconditioned -ssafd_ksp_pc_side right -ssafd_pc_type asm -ssafd_sub_pc_type lu"
113
114
115 FULLPHYS="-stress_balance ssa+sia $PARAMS $PETSCSTUFF"
116
117 SMOOTHRUNLENGTH=1
118 NOMASSRUNLENGTH=500
119
120 STEP=1
121
122 EXVARS="enthalpybase,temppabase,tempicethk,bmelt,tillwat,usurf,velsurf_mag,mask,hardav,thk" # add mask, so that check_stationarity.py ignores ice-free areas.
123
124 PREFIX=psg_flowline_
125
126 # bootstrap and do smoothing run to 1 year
127 OUTNAME=$PREFIX${GS}m_pre$SMOOTHRUNLENGTH.nc
128 echo
129 echo "$SCRIPTNAME bootstrapping plus short smoothing run for ${SMOOTHRUNLENGTH}a"
130 cmd="$PISM_MPIDO $NN $PISM $EB -skip -skip_max $SKIP -i $INNAME -bootstrap $GRID \
131 $COUPLER -y ${SMOOTHRUNLENGTH} -o $OUTNAME"
132 $PISM_DO $cmd
133
134 # run with -no_mass (no surface change)
135 INNAME=$OUTNAME
136 OUTNAME=$PREFIX${GS}m_steady.nc
137 EXNAME=ex_${OUTNAME}
138 EXTIMES=0:25:${NOMASSRUNLENGTH}
139 echo
140 echo "$SCRIPTNAME -no_mass (no surface change) sia run to achieve approximate enthalpy equilibrium, for ${NOMASSRUNLENGTH}a"
141 cmd="$PISM_MPIDO $NN $PISM $EB -i $INNAME $COUPLER \
142 -no_mass -y ${NOMASSRUNLENGTH} \
143 -extra_file $EXNAME -extra_vars $EXVARS -extra_times $EXTIMES -o $OUTNAME"
144 $PISM_DO $cmd
145
146
147 # use the force-to-thickness mechanism to infer the mass balance
148 STARTYEAR=0
149 RUNLENGTH=10
150 ENDTIME=$(($STARTYEAR + $RUNLENGTH))
151 INNAME=$OUTNAME
152 OUTNAME=ssa_ftt_${RUNLENGTH}a.nc
153 OUTNAMEFULL=$PREFIX${GS}m_$OUTNAME
154 TSNAME=ts_${OUTNAME}
155 TSTIMES=$STARTYEAR:$STEP:$ENDTIME
156
157 # create the force-to-thickness mask
158 ncap2 -O -s "ftt_mask = 0*mask+1" $INNAME $INNAME
159
160 echo
161 echo "$SCRIPTNAME SSA run with force-to-thickness for $RUNLENGTH years on ${GS}m grid"
162 cmd="$PISM_MPIDO $NN $PISM -bootstrap $GRID -i $INNAME -regrid_file $INNAME $EB -skip -skip_max $SKIP $COUPLER_FORCING $FULLPHYS\
163 -force_to_thickness_file $INNAME -force_to_thickness_alpha $FTALPHA \
164 -ts_file $TSNAME -ts_times $TSTIMES \
165 -ys $STARTYEAR -y $RUNLENGTH -o_size big -o $OUTNAMEFULL"
166 $PISM_DO $cmd
167 echo
168 $PISM_DO flowline.py -c -o $OUTNAME $OUTNAMEFULL
169
170
171 COUPLER_ELEV="-surface elevation -ice_surface_temp -6,0,1395,1400 -climatic_mass_balance -3,2.5,1200,1450,1615 -climatic_mass_balance_limits -3,0"
172
173 STARTYEAR=0
174 RUNLENGTH=25
175 ENDTIME=$(($STARTYEAR + $RUNLENGTH))
176 INNAME=$OUTNAMEFULL
177 OUTNAME=ssa_${RUNLENGTH}a.nc
178 OUTNAMEFULL=$PREFIX${GS}m_$OUTNAME
179 TSNAME=ts_${OUTNAMEFULL}
180 EXNAME=ex_${OUTNAMEFULL}
181 TSTIMES=$STARTYEAR:$STEP:$ENDTIME
182 EXTIMES=$STARTYEAR:$STEP:$ENDTIME
183
184 echo
185 echo "$SCRIPTNAME SSA run with elevation-dependent mass balance for $RUNLENGTH years on ${GS}m grid"
186 cmd="$PISM_MPIDO $NN $PISM $EB -skip -skip_max $SKIP -i $INNAME $COUPLER_ELEV $FULLPHYS \
187 -ts_file $TSNAME -ts_times $TSTIMES \
188 -extra_file $EXNAME -extra_vars $EXVARS -extra_times $EXTIMES \
189 -ys $STARTYEAR -y $RUNLENGTH -o_size big -o $OUTNAMEFULL"
190 $PISM_DO $cmd
191 echo
192 $PISM_DO flowline.py -c -o $OUTNAME $OUTNAMEFULL