1 |
Example: Labrador Sea Region with Sea-Ice |
2 |
========================================= |
3 |
|
4 |
This example sets up a small (20x16x23) Labrador Sea experiment |
5 |
coupled to a dynamic thermodynamic sea-ice model. |
6 |
A brief description of the sea-ice model is in "seaice.ps". |
7 |
|
8 |
The domain of integration spans 280E to 320E and 46N to 78N. |
9 |
Horizontal grid spacing is 2 degrees. |
10 |
The 23 vertical levels and the bathymetry file |
11 |
bathyFile = 'bathy.labsea' |
12 |
are obtained from the the 2-degree ECCO configuration. |
13 |
|
14 |
Integration is initialized from annual-mean Levitus climatology |
15 |
hydrogThetaFile = 'LevCli_temp.labsea' |
16 |
hydrogSaltFile = 'LevCli_salt.labsea' |
17 |
|
18 |
Surface salinity relaxation is to the monthly mean Levitus climatology |
19 |
saltClimFile = 'SSS.labsea' |
20 |
|
21 |
Forcing files are a 1979-1999 monthly climatology computed from the |
22 |
NCEP reanalysis (see pkg/seaice/SEAICE_FFIELDS.h for units and signs) |
23 |
uwindFile = 'u10m.labsea79' # 10-m zonal wind |
24 |
vwindFile = 'v10m.labsea79' # 10-m meridional wind |
25 |
atempFile = 'tair.labsea1979' # 2-m air temperature |
26 |
aqhFile = 'qa.labsea1979' # 2-m specific humidity |
27 |
lwdownFile = 'flo.labsea1979' # downward longwave radiation |
28 |
swdownFile = 'fsh.labsea1979' # downward shortwave radiation |
29 |
precipFile = 'prate.labsea1979' # precipitation |
30 |
evapFile = 'evap.labsea1979' # evaporation |
31 |
|
32 |
|
33 |
Using testscript to test sea-ice code |
34 |
===================================== |
35 |
|
36 |
Running the testscript experiment: |
37 |
cd MITgcm/verification |
38 |
./testreport -t lab_sea |
39 |
The default experiment is Experiment 8, below. |
40 |
It uses pkg/gmredi, pkg/kpp, pkg/seaice, and pkg/exf. |
41 |
|
42 |
Note that fairly large differences in accuracy occur across different |
43 |
platforms. For example, testscript comparisons between g77 (Linux) |
44 |
and f77 (SGI) generated output gives: |
45 |
|
46 |
T S U V |
47 |
C D M c m s m s m s m s |
48 |
n p a R g m m e . m m e . m m e . m m e . |
49 |
f n k u 2 i a a d i a a d i a a d i a a d |
50 |
g d e n d n x n . n x n . n x n . n x n . |
51 |
|
52 |
Y Y Y Y 8 10 9 11 10 9 11 13 10 9 8 8 9 8 9 8 9 FAIL lab_sea |
53 |
|
54 |
|
55 |
Instructions for generating 1-CPU and 2-CPU executables |
56 |
======================================================= |
57 |
|
58 |
Generating 1-CPU executable: |
59 |
cd verification/lab_sea/input |
60 |
ln -sf ../code/packages.conf . |
61 |
ln -sf ../code/SIZE.h . |
62 |
ln -sf ../code/CPP_EEOPTIONS.h . |
63 |
rm -f SEAICE_OPTIONS.h |
64 |
../../../tools/genmake2 |
65 |
make clean |
66 |
make depend |
67 |
make |
68 |
mv mitgcmuv mitgcmuv_1 |
69 |
|
70 |
Generating 1-CPU executable with SEAICE_EXTERNAL_FORCING: |
71 |
cd ../../../verification/lab_sea/input |
72 |
ln -sf ../code/packages.conf . |
73 |
ln -sf ../code/SIZE.h . |
74 |
ln -sf ../code/CPP_EEOPTIONS.h . |
75 |
ln -sf ../code/CPP_OPTIONS.h . |
76 |
ln -sf ../code/ECCO_CPPOPTIONS.h . |
77 |
ln -sf ../code/SEAICE_OPTIONS.h . |
78 |
../../../tools/genmake2 |
79 |
make clean |
80 |
make depend |
81 |
make |
82 |
mv mitgcmuv mitgcmuv_exf_forcing |
83 |
|
84 |
1-CPU executable with SEAICE_EXTERNAL_FORCING, without READ_EVAP |
85 |
cd ../../../verification/lab_sea/input |
86 |
ln -sf ../code/packages.conf . |
87 |
ln -sf ../code/SIZE.h . |
88 |
ln -sf ../code/CPP_EEOPTIONS.h . |
89 |
ln -sf ../code/CPP_OPTIONS.h . |
90 |
ln -sf ../code/ECCO_CPPOPTIONS.BULK.h ECCO_CPPOPTIONS.h |
91 |
ln -sf ../code/SEAICE_OPTIONS.h . |
92 |
../../../tools/genmake2 |
93 |
make clean |
94 |
make depend |
95 |
make |
96 |
mv mitgcmuv mitgcmuv_compute_evap |
97 |
|
98 |
Generating 1-CPU executable with SEAICE_EXTERNAL_FLUXES: |
99 |
cd ../../../verification/lab_sea/input |
100 |
ln -sf ../code/packages.conf . |
101 |
ln -sf ../code/SIZE.h . |
102 |
ln -sf ../code/CPP_EEOPTIONS.h . |
103 |
ln -sf ../code/CPP_OPTIONS.h . |
104 |
ln -sf ../code/ECCO_CPPOPTIONS.BULK.h ECCO_CPPOPTIONS.h |
105 |
ln -sf ../code/SEAICE_OPTIONS.EXF_FLUXES.h SEAICE_OPTIONS.h |
106 |
../../../tools/genmake2 |
107 |
make clean |
108 |
make depend |
109 |
make |
110 |
mv mitgcmuv mitgcmuv_exf_fluxes |
111 |
|
112 |
Generating 1-CPU executable with SEAICE_MULTILEVEL: |
113 |
cd ../../../verification/lab_sea/input |
114 |
ln -sf ../code/packages.conf . |
115 |
ln -sf ../code/SIZE.h . |
116 |
ln -sf ../code/CPP_EEOPTIONS.h . |
117 |
ln -sf ../code/SEAICE_OPTIONS.MULTILEVEL.h SEAICE_OPTIONS.h |
118 |
../../../tools/genmake2 |
119 |
make clean |
120 |
make depend |
121 |
make |
122 |
mv mitgcmuv mitgcmuv_multilevel |
123 |
|
124 |
Generating 2-CPU executable: |
125 |
cd ../../../verification/lab_sea/input |
126 |
ln -sf ../code/packages.conf . |
127 |
ln -sf ../code/SIZE.2x1.h SIZE.h |
128 |
ln -sf ../code/CPP_EEOPTIONS.h_mpi CPP_EEOPTIONS.h |
129 |
rm -f SEAICE_OPTIONS.h |
130 |
../../../tools/genmake2 -mpi |
131 |
make clean |
132 |
make depend |
133 |
make |
134 |
mv mitgcmuv mitgcmuv_2x1 |
135 |
|
136 |
|
137 |
Instructions for running Experiment 1 |
138 |
===================================== |
139 |
|
140 |
This is a 1-cpu, 10-hour integration used to make sure that all |
141 |
the files are available and that the sea-ice model compiles and |
142 |
runs. The reading of atmospheric forcing files and the computation |
143 |
of open-water bulk fluxes are carried out within pkg/seaice. |
144 |
|
145 |
To run Experiment 1: |
146 |
cd ../../../verification/lab_sea/input |
147 |
ln -sf DATA.10hours data |
148 |
ln -sf DATA.SEAICE.lsr data.seaice |
149 |
mitgcmuv_1 >&! output.txt |
150 |
mkdir exp1 |
151 |
mv *tave.0000000010.data exp1 |
152 |
|
153 |
Use matlab script lookat_exp1.m to compare the output |
154 |
of exp1 with that from checkpoint51f sea-ice code: |
155 |
cd ../../../verification/lab_sea/matlab |
156 |
matlab |
157 |
lookat_exp1 |
158 |
|
159 |
|
160 |
Instructions for running Experiment 2 |
161 |
===================================== |
162 |
|
163 |
This is a 1-cpu test of the ADI solver. The solution is |
164 |
compared to that of experiment 1, which used the LSR solver. |
165 |
|
166 |
To run Experiment 2: |
167 |
cd ../../../verification/lab_sea/input |
168 |
ln -sf DATA.10hours data |
169 |
ln -sf DATA.SEAICE.adi data.seaice |
170 |
mitgcmuv_1 >&! output.txt |
171 |
mkdir exp2 |
172 |
mv *tave.0000000010.data exp2 |
173 |
|
174 |
Use matlab script lookat_exp2.m to compare |
175 |
the output of exp2 to that of exp1: |
176 |
cd ../../../verification/lab_sea/matlab |
177 |
matlab |
178 |
lookat_exp2 |
179 |
|
180 |
|
181 |
Instructions for running Experiment 3 |
182 |
===================================== |
183 |
|
184 |
This is a test of periodic boundary conditions for LSR |
185 |
and ADI solvers. The domain has a flat bottom and |
186 |
is periodic both in the x and the y directions. |
187 |
All forcing files are null or constant (u10m = v10m = 5 m/s). |
188 |
|
189 |
To run Experiment 3: |
190 |
cd ../../../verification/lab_sea/input |
191 |
ln -sf DATA.1hour data |
192 |
ln -sf DATA.SEAICE.testadi data.seaice |
193 |
mitgcmuv_1 >&! output.txt |
194 |
mkdir exp3a |
195 |
mv *tave.0000000001.data exp3a |
196 |
ln -sf DATA.SEAICE.testlsr data.seaice |
197 |
mitgcmuv_1 >&! output.txt |
198 |
mkdir exp3b |
199 |
mv *tave.0000000001.data exp3b |
200 |
|
201 |
Use matlab script lookat_exp3.m to look at |
202 |
results from exp3a and exp3b: |
203 |
cd ../../../verification/lab_sea/matlab |
204 |
matlab |
205 |
lookat_exp3 |
206 |
|
207 |
Both solvers should and do converge to solutions |
208 |
that are constant at each latitude. But note that |
209 |
the two solutions are not exactly the same because |
210 |
the two solvers represent slightly different |
211 |
approximations of the viscous/plastic equations. |
212 |
|
213 |
|
214 |
Instructions for running Experiment 4 |
215 |
===================================== |
216 |
|
217 |
This is a 2-cpu, 10-hour integration used to test |
218 |
tile edges for sea-ice dynamic solvers. |
219 |
|
220 |
To run Experiment 4: |
221 |
cd ../../../verification/lab_sea/input |
222 |
ln -sf DATA.10hours data |
223 |
ln -sf DATA.SEAICE.lsr data.seaice |
224 |
mpirun -np 2 mitgcmuv_2x1 |
225 |
mkdir exp4 |
226 |
mv *tave.0000000010.data exp4 |
227 |
|
228 |
Use the matlab script lookat_exp4.m to compare |
229 |
the 2-cpu output to that of exp1: |
230 |
cd ../../../verification/lab_sea/matlab |
231 |
matlab |
232 |
lookat_exp4 |
233 |
|
234 |
The accuracy of the dynamic solvers is increased by |
235 |
reducing parameter LSR_ERROR for the LSR solver and |
236 |
by increasing parameter NPSEUDO for the ADI solver. |
237 |
The computational cost/accuracy trade-off is quite |
238 |
high for the ADI solver but relatively small for |
239 |
the LSR solver, which is the default solver. |
240 |
|
241 |
|
242 |
Instructions for running Experiment 5 |
243 |
===================================== |
244 |
|
245 |
This is a 2-cpu, 2-year, test integration. It illustrates |
246 |
convention used by seaice_get_forcing.F for multi-year forcing. |
247 |
|
248 |
To run Experiment 5: |
249 |
cd ../../../verification/lab_sea/input |
250 |
ln -sf DATA.2years data |
251 |
ln -sf DATA.SEAICE.lsr data.seaice |
252 |
ln -sf evap.labsea1979 evap.labsea1980 |
253 |
ln -sf flo.labsea1979 flo.labsea1980 |
254 |
ln -sf fsh.labsea1979 fsh.labsea1980 |
255 |
ln -sf prate.labsea1979 prate.labsea1980 |
256 |
ln -sf qa.labsea1979 qa.labsea1980 |
257 |
ln -sf tair.labsea1979 tair.labsea1980 |
258 |
ln -sf u10m.labsea79 u10m.labsea80 |
259 |
ln -sf v10m.labsea79 v10m.labsea80 |
260 |
mpirun -np 2 mitgcmuv_2x1 |
261 |
|
262 |
Use the matlab script lookat_exp5.m to compare |
263 |
the 2-cpu output to SMMR-SSM/I data: |
264 |
cd ../../../verification/lab_sea/matlab |
265 |
matlab |
266 |
lookat_exp5 |
267 |
|
268 |
The comparison here is just for fun. |
269 |
The configuration is too coarse and artificial |
270 |
to reproduce realistic sea-ice conditions. |
271 |
|
272 |
|
273 |
Instructions for running Experiment 6 |
274 |
===================================== |
275 |
|
276 |
This is a 1-cpu test of sea-ice thermodynamics (no dynamics). |
277 |
The solution is compared to that of experiment 1. |
278 |
|
279 |
To run Experiment 6: |
280 |
cd ../../../verification/lab_sea/input |
281 |
ln -sf DATA.10hours data |
282 |
ln -sf DATA.SEAICE.nodynamics data.seaice |
283 |
mitgcmuv_1 >&! output.txt |
284 |
mkdir exp6 |
285 |
mv *tave.0000000010.data exp6 |
286 |
|
287 |
Use the matlab script lookat_exp6.m to compare |
288 |
the output of exp6 to that of exp1: |
289 |
cd ../../../verification/lab_sea/matlab |
290 |
matlab |
291 |
lookat_exp6 |
292 |
|
293 |
|
294 |
Instructions for running Experiment 7 |
295 |
===================================== |
296 |
|
297 |
This is a 2-cpu, 10-hour integration used to test |
298 |
tile edges for sea-ice thermodynamics (no dynamics). |
299 |
2-CPU executable from experiment 4 is required. |
300 |
|
301 |
To run Experiment 7: |
302 |
cd ../../../verification/lab_sea/input |
303 |
ln -sf DATA.10hours data |
304 |
ln -sf DATA.SEAICE.nodynamics data.seaice |
305 |
mpirun -np 2 mitgcmuv_2x1 |
306 |
mkdir exp7 |
307 |
mv *tave.0000000010.data exp7 |
308 |
|
309 |
Use the matlab script lookat_exp7.m to compare |
310 |
the output of exp7 to that of exp6: |
311 |
cd ../verification/lab_sea/matlab |
312 |
matlab |
313 |
lookat_exp7 |
314 |
|
315 |
|
316 |
Instructions for running Experiment 8 |
317 |
===================================== |
318 |
|
319 |
This is the default experiment which is executed by |
320 |
verification/testscript. It is a 1-cpu, 10-hour integration |
321 |
used to test CPP option SEAICE_EXTERNAL_FORCING. Atmospheric |
322 |
state is read-in using pkg/exf, rather than pkg/seaice routines. |
323 |
This experiment uses pkg/gmredi, pkg/kpp, pkg/seaice, and pkg/exf. |
324 |
|
325 |
To run Experiment 8: |
326 |
cd ../../../verification/lab_sea/input |
327 |
ln -sf DATA.10hours_exf data |
328 |
ln -sf DATA.SEAICE.exf data.seaice |
329 |
mitgcmuv_exf_forcing >&! output.txt |
330 |
mkdir exp8 |
331 |
mv *tave.0000000010.data exp8 |
332 |
|
333 |
Use matlab script lookat_exp8.m to compare |
334 |
the output of exp8 to that of exp1: |
335 |
cd ../../../verification/lab_sea/matlab |
336 |
matlab |
337 |
lookat_exp8 |
338 |
|
339 |
|
340 |
Instructions for running Experiment 9 |
341 |
===================================== |
342 |
|
343 |
This is a 1-cpu, 10-hour integration used to test CPP option |
344 |
SEAICE_EXTERNAL_FLUXES. Both the atmospheric state and the |
345 |
open-water surface fluxes are provided by pkg/exf. |
346 |
|
347 |
To run Experiment 9: |
348 |
cd ../../../verification/lab_sea/input |
349 |
ln -sf DATA.10hours_exf data |
350 |
ln -sf DATA.SEAICE.exf data.seaice |
351 |
mitgcmuv_exf_fluxes >&! output.txt |
352 |
mkdir exp9 |
353 |
mv *tave.0000000010.data exp9 |
354 |
|
355 |
Use matlab script lookat_exp9.m to compare |
356 |
the output of exp9 to that of exp8: |
357 |
cd ../../../verification/lab_sea/matlab |
358 |
matlab |
359 |
lookat_exp9 |
360 |
|
361 |
|
362 |
Instructions for running Experiment 10 |
363 |
====================================== |
364 |
|
365 |
This is a 1-cpu, 10-hour integration similar to exp8, but |
366 |
with bulk formula computation of evaporation fields. |
367 |
|
368 |
To run Experiment 10: |
369 |
cd ../../../verification/lab_sea/input |
370 |
ln -sf DATA.10hours_exf data |
371 |
ln -sf DATA.SEAICE.exf data.seaice |
372 |
mitgcmuv_compute_evap >&! output.txt |
373 |
mkdir exp10 |
374 |
mv *tave.0000000010.data exp10 |
375 |
|
376 |
Use matlab script lookat_exp10.m to compare |
377 |
the output of exp10 to that of exp8: |
378 |
cd ../../../verification/lab_sea/matlab |
379 |
matlab |
380 |
lookat_exp10 |
381 |
|
382 |
|
383 |
Instructions for running Experiment 11 |
384 |
====================================== |
385 |
|
386 |
This is a 1-cpu, 10-hour integration similar to exp1, but |
387 |
with multi-level sea-ice thermodynamics. |
388 |
|
389 |
To run Experiment 10: |
390 |
cd ../../../verification/lab_sea/input |
391 |
ln -sf DATA.10hours data |
392 |
ln -sf DATA.SEAICE.lsr data.seaice |
393 |
mitgcmuv_multilevel >&! output.txt |
394 |
mkdir exp11 |
395 |
mv *tave.0000000010.data exp11 |
396 |
|
397 |
Use matlab script lookat_exp11.m to compare |
398 |
the output of exp11 to that of exp1: |
399 |
cd ../../../verification/lab_sea/matlab |
400 |
matlab |
401 |
lookat_exp11 |