3 |
|
|
4 |
This example sets up a small (20x16x23) Labrador Sea experiment |
This example sets up a small (20x16x23) Labrador Sea experiment |
5 |
coupled to a dynamic thermodynamic sea-ice model. |
coupled to a dynamic thermodynamic sea-ice model. |
6 |
A brief description of the sea-ice model is in "seaice.ps". |
A brief description of the sea-ice model is in "doc/seaice.ps". |
7 |
|
|
8 |
The domain of integration spans 280E to 320E and 46N to 78N. |
The domain of integration spans 280E to 320E and 46N to 78N. |
9 |
Horizontal grid spacing is 2 degrees. |
Horizontal grid spacing is 2 degrees. |
20 |
|
|
21 |
Forcing files are a 1979-1999 monthly climatology computed from the |
Forcing files are a 1979-1999 monthly climatology computed from the |
22 |
NCEP reanalysis (see pkg/seaice/SEAICE_FFIELDS.h for units and signs) |
NCEP reanalysis (see pkg/seaice/SEAICE_FFIELDS.h for units and signs) |
23 |
uwindFile = 'u10m.labsea79' # 10-m zonal wind |
gairxFile = 'u10m.labsea79' # 10-m zonal wind |
24 |
vwindFile = 'v10m.labsea79' # 10-m meridional wind |
gairyFile = 'v10m.labsea79' # 10-m meridional wind |
25 |
atempFile = 'tair.labsea1979' # 2-m air temperature |
tairFile = 'tair.labsea1979' # 2-m air temperature |
26 |
aqhFile = 'qa.labsea1979' # 2-m specific humidity |
qaFile = 'qa.labsea1979' # 2-m specific humidity |
27 |
lwfluxFile = 'flo.labsea1979' # longwave radiation |
floFile = 'flo.labsea1979' # longwave radiation |
28 |
swfluxFile = 'fsh.labsea1979' # shortwave radiation |
fshFile = 'fsh.labsea1979' # shortwave radiation |
29 |
precipFile = 'prate.labsea1979' # precipitation |
rainFile = 'prate.labsea1979' # precipitation |
30 |
evapFile = 'evap.labsea1979' # evaporation |
evapFile = 'evap.labsea1979' # evaporation |
31 |
|
|
32 |
|
|
33 |
Using testscript to test sea-ice code |
Instructions for running Experiment 1 |
34 |
===================================== |
===================================== |
35 |
|
|
36 |
Running the testscript experiment: |
This is a 1-cpu, 10-hour integration used to make sure that all the |
37 |
cd verification |
files are available and that the model compiles and integrates. |
|
./testscript -force lab_sea |
|
|
The default experiment is Experiment 8, below. |
|
|
It uses pkg/gmredi, pkg/kpp, pkg/seaice, and pkg/exf. |
|
|
|
|
|
Note that fairly large differences in accuracy occur across different |
|
|
platforms. For example, testscript comparisons between g77 (Linux) |
|
|
and f77 (SGI) generated output gives: |
|
|
|
|
|
T S U V |
|
|
C D M c m s m s m s m s |
|
|
n p a R g m m e . m m e . m m e . m m e . |
|
|
f n k u 2 i a a d i a a d i a a d i a a d |
|
|
g d e n d n x n . n x n . n x n . n x n . |
|
|
|
|
|
Y Y Y Y 8 10 9 11 10 9 11 13 10 9 8 8 9 8 9 8 9 FAIL lab_sea |
|
|
|
|
|
|
|
|
Instructions for generating 1-CPU and 2-CPU executables |
|
|
======================================================= |
|
|
|
|
|
Generating 1-CPU executable: |
|
|
cd verification/lab_sea/input |
|
|
ln -sf ../code/SIZE.h . |
|
|
ln -sf ../code/CPP_EEOPTIONS.h . |
|
|
ln -sf ../code/CPP_OPTIONS.NOEXF.h CPP_OPTIONS.h |
|
|
rm -f SEAICE_OPTIONS.h |
|
|
../../../tools/genmake -makefile |
|
|
==> on alhena use: |
|
|
../../../tools/genmake -platform=o2k_noopt -makefile |
|
|
make clean |
|
|
make depend |
|
|
make |
|
|
mv mitgcmuv mitgcmuv_1 |
|
|
|
|
|
Generating 1-CPU executable with SEAICE_EXTERNAL_FORCING: |
|
|
cd ../../../verification/lab_sea/input |
|
|
ln -sf ../code/SIZE.h . |
|
|
ln -sf ../code/CPP_EEOPTIONS.h . |
|
|
ln -sf ../code/CPP_OPTIONS.h . |
|
|
ln -sf ../code/ECCO_CPPOPTIONS.h . |
|
|
ln -sf ../code/SEAICE_OPTIONS.h . |
|
|
../../../tools/genmake -makefile |
|
|
==> on alhena use: |
|
|
../../../tools/genmake -platform=o2k_noopt -makefile |
|
|
make clean |
|
|
make depend |
|
|
make |
|
|
mv mitgcmuv mitgcmuv_exf_forcing |
|
38 |
|
|
39 |
Generating 1-CPU executable with SEAICE_EXTERNAL_FLUXES: |
To configure and compile the code: |
40 |
cd ../../../verification/lab_sea/input |
cd MITgcmUV |
41 |
ln -sf ../code/SIZE.h . |
mkdir bin exe |
42 |
ln -sf ../code/CPP_EEOPTIONS.h . |
cd bin |
43 |
ln -sf ../code/CPP_OPTIONS.h . |
ln -sf ../verification/lab_sea/code/SIZE.h . |
44 |
ln -sf ../code/ECCO_CPPOPTIONS.BULK.h ECCO_CPPOPTIONS.h |
ln -sf ../verification/lab_sea/code/CPP_OPTIONS.h . |
45 |
ln -sf ../code/SEAICE_OPTIONS.EXF_FLUXES.h SEAICE_OPTIONS.h |
ln -sf ../verification/lab_sea/code/CPP_EEOPTIONS.h . |
46 |
../../../tools/genmake -makefile |
../tools/genmake -makefile |
|
==> on alhena use: |
|
|
../../../tools/genmake -platform=o2k_noopt -makefile |
|
|
make clean |
|
47 |
make depend |
make depend |
48 |
make |
make |
|
mv mitgcmuv mitgcmuv_exf_fluxes |
|
|
|
|
|
Generating 2-CPU executable: |
|
|
cd ../../../verification/lab_sea/input |
|
|
ln -sf ../code/SIZE.2x1.h SIZE.h |
|
|
ln -sf ../code/CPP_EEOPTIONS.MPI.h CPP_EEOPTIONS.h |
|
|
ln -sf ../code/CPP_OPTIONS.NOEXF.h CPP_OPTIONS.h |
|
|
rm -f SEAICE_OPTIONS.h |
|
|
../../../tools/genmake -mpi -makefile |
|
|
==> on alhena for comparison purposes use: |
|
|
../../../tools/genmake -mpi -platform=o2k_noopt -makefile |
|
|
==> on alhena for fast execution use: |
|
|
../../../tools/genmake -mpi -platform=o2k -makefile |
|
|
make clean |
|
|
make depend |
|
|
make |
|
|
mv mitgcmuv mitgcmuv_2x1 |
|
|
|
|
|
|
|
|
Instructions for running Experiment 1 |
|
|
===================================== |
|
49 |
|
|
50 |
This is a 1-cpu, 10-hour integration used to make sure that all |
To run: |
51 |
the files are available and that the sea-ice model compiles and |
cd ../exe |
52 |
runs. The reading of atmospheric forcing files and the computation |
cp ../verification/lab_sea/input/* . |
53 |
of open-water bulk fluxes are carried out within pkg/seaice. |
ln -sf data.10hours data |
54 |
|
ln -sf data.seaice.adi data.seaice |
55 |
To run Experiment 1: |
mv mitgcmuv mitgcmuv1 |
56 |
cd ../../../verification/lab_sea/input |
mitgcmuv1 >&! output.txt |
|
ln -sf DATA.10hours data |
|
|
ln -sf DATA.SEAICE.adi data.seaice |
|
|
mitgcmuv_1 >&! output.txt |
|
57 |
mkdir exp1 |
mkdir exp1 |
58 |
mv *tave.0000000010.data exp1 |
mv *tave.0000000010.data exp1 |
59 |
|
|
60 |
Use matlab script lookat_exp1.m to compare the output |
There is comparison output in: |
61 |
of exp1 with that from release1_p10 sea-ice code: |
diff output.txt ../verification/lab_sea/results/output.txt | more |
62 |
cd ../../../verification/lab_sea/matlab |
|
63 |
|
Use the matlab script lookat_exp1.m to compare the output |
64 |
|
of exp1 with that from release1_beta1 sea-ice code: |
65 |
|
cd ../verification/lab_sea/matlab |
66 |
matlab |
matlab |
67 |
lookat_exp1 |
lookat_exp1 |
68 |
|
|
|
|
|
69 |
Instructions for running Experiment 2 |
Instructions for running Experiment 2 |
70 |
===================================== |
===================================== |
71 |
|
|
72 |
This is a 1-cpu test of the LSR solver. The solution is |
This is a 1-cpu test of the LSR solver. The solution is |
73 |
compared to that of experiment 1, which used the ADI solver. |
compared to that of experiment 1, which used the ADI solver. |
74 |
|
1-CPU executable from experiment 1 is required. |
75 |
|
|
76 |
To run Experiment 2: |
To run: |
77 |
cd ../../../verification/lab_sea/input |
cd ../exe |
78 |
ln -sf DATA.10hours data |
cp ../verification/lab_sea/input/* . |
79 |
ln -sf DATA.SEAICE.lsr data.seaice |
ln -sf data.10hours data |
80 |
mitgcmuv_1 >&! output.txt |
ln -sf data.seaice.lsr data.seaice |
81 |
|
mitgcmuv1 >&! output.txt |
82 |
mkdir exp2 |
mkdir exp2 |
83 |
mv *tave.0000000010.data exp2 |
mv *tave.0000000010.data exp2 |
84 |
|
|
85 |
Use matlab script lookat_exp2.m to compare |
Use the matlab script lookat_exp2.m to compare |
86 |
the output of exp2 to that of exp1: |
the output of exp2 to that of exp1: |
87 |
cd ../../../verification/lab_sea/matlab |
cd ../verification/lab_sea/matlab |
88 |
matlab |
matlab |
89 |
lookat_exp2 |
lookat_exp2 |
90 |
|
|
|
|
|
91 |
Instructions for running Experiment 3 |
Instructions for running Experiment 3 |
92 |
===================================== |
===================================== |
93 |
|
|
94 |
This is a test of periodic boundary conditions for LSR |
This is a test of periodic boundary conditions for LSR |
95 |
and ADI solvers. The domain has a flat bottom and |
and ADI solvers. The domain has a flat bottom and |
96 |
is periodic both in the x and the y directions. |
is periodic both in the x and the y directions. |
97 |
All forcing files are null or constant (u10m = v10m = 5 m/s). |
All forcing files are null or constant |
98 |
|
(u10m = v10m = 5 m/s). |
99 |
|
|
100 |
To run Experiment 3: |
1-CPU executable from experiment 1 is required. |
101 |
cd ../../../verification/lab_sea/input |
|
102 |
ln -sf DATA.1hour data |
To run: |
103 |
ln -sf DATA.SEAICE.testadi data.seaice |
cd ../exe |
104 |
mitgcmuv_1 >&! output.txt |
cp ../verification/lab_sea/input/* . |
105 |
|
ln -sf data.1hour data |
106 |
|
ln -sf data.seaice.testadi data.seaice |
107 |
|
mitgcmuv1 >&! output.txt |
108 |
mkdir exp3a |
mkdir exp3a |
109 |
mv *tave.0000000001.data exp3a |
mv *tave.0000000001.data exp3a |
110 |
ln -sf DATA.SEAICE.testlsr data.seaice |
ln -sf data.seaice.testlsr data.seaice |
111 |
mitgcmuv_1 >&! output.txt |
mitgcmuv1 >&! output.txt |
112 |
mkdir exp3b |
mkdir exp3b |
113 |
mv *tave.0000000001.data exp3b |
mv *tave.0000000001.data exp3b |
114 |
|
|
115 |
Use matlab script lookat_exp3.m to compare |
Use the matlab script lookat_exp3.m to compare |
116 |
the output of exp2 to that of exp1: |
the output of exp2 to that of exp1: |
117 |
cd ../../../verification/lab_sea/matlab |
cd ../verification/lab_sea/matlab |
118 |
matlab |
matlab |
119 |
lookat_exp3 |
lookat_exp3 |
120 |
|
|
123 |
solver are unable to handle periodic domains and therefore that they |
solver are unable to handle periodic domains and therefore that they |
124 |
cannot be "correctly" parallelized. |
cannot be "correctly" parallelized. |
125 |
|
|
|
|
|
126 |
Instructions for running Experiment 4 |
Instructions for running Experiment 4 |
127 |
===================================== |
===================================== |
128 |
|
|
129 |
This is a 2-cpu, 10-hour integration used to test |
This is a 2-cpu, 10-hour integration used to test |
130 |
tile edges for sea-ice dynamic solvers. |
tile edges for sea-ice dynamic solvers. |
131 |
|
|
132 |
To run Experiment 4: |
To configure and compile the code: |
133 |
cd ../../../verification/lab_sea/input |
cd ../bin |
134 |
ln -sf DATA.10hours data |
rm -rf *.f |
135 |
ln -sf DATA.SEAICE.adi data.seaice |
rm -rf *.o |
136 |
|
ln -sf ../verification/lab_sea/code/SIZE_2x1.h SIZE.h |
137 |
|
ln -sf ../verification/lab_sea/code/CPP_OPTIONS.h . |
138 |
|
ln -sf ../verification/lab_sea/code/CPP_EEOPTIONS_MPI.h CPP_EEOPTIONS.h |
139 |
|
../tools/genmake -mpi -makefile |
140 |
|
( on alhena use: ../tools/genmake -mpi -platform=o2k -makefile ) |
141 |
|
make depend |
142 |
|
make |
143 |
|
|
144 |
|
To run: |
145 |
|
cd ../exe |
146 |
|
cp ../verification/lab_sea/input/* . |
147 |
|
ln -sf data.10hours data |
148 |
|
ln -sf data.seaice.adi data.seaice |
149 |
|
mv mitgcmuv mitgcmuv_2x1 |
150 |
mpirun -np 2 mitgcmuv_2x1 |
mpirun -np 2 mitgcmuv_2x1 |
151 |
mkdir exp4 |
mkdir exp4 |
152 |
mv *tave.0000000010.data exp4 |
mv *tave.0000000010.data exp4 |
153 |
|
|
154 |
Use the matlab script lookat_exp4.m to compare |
Use the matlab script lookat_exp4.m to compare |
155 |
the 2-cpu output to that of exp1: |
the 2-cpu output to that of exp1: |
156 |
cd ../../../verification/lab_sea/matlab |
cd ../verification/lab_sea/matlab |
157 |
matlab |
matlab |
158 |
lookat_exp4 |
lookat_exp4 |
159 |
|
|
169 |
===================================== |
===================================== |
170 |
|
|
171 |
This is a 2-cpu, 2-year, test integration. It illustrates |
This is a 2-cpu, 2-year, test integration. It illustrates |
172 |
convention used by seaice_get_forcing.F for multi-year forcing. |
convention used for forcing data files by seaice_get_forcing.F. |
173 |
|
|
174 |
To run Experiment 5: |
To run: |
175 |
cd ../../../verification/lab_sea/input |
cd ../exe |
176 |
ln -sf DATA.2years data |
cp ../verification/lab_sea/input/* . |
177 |
ln -sf DATA.SEAICE.adi data.seaice |
cp eedata_mpi eedata |
178 |
ln -sf evap.labsea1979 evap.labsea1980 |
ln -sf data.2years data |
179 |
ln -sf flo.labsea1979 flo.labsea1980 |
ln -sf data.seaice.adi data.seaice |
180 |
ln -sf fsh.labsea1979 fsh.labsea1980 |
ln -sf evap.labsea1979 evap.labsea1980 |
181 |
|
ln -sf flo.labsea1979 flo.labsea1980 |
182 |
|
ln -sf fsh.labsea1979 fsh.labsea1980 |
183 |
ln -sf prate.labsea1979 prate.labsea1980 |
ln -sf prate.labsea1979 prate.labsea1980 |
184 |
ln -sf qa.labsea1979 qa.labsea1980 |
ln -sf qa.labsea1979 qa.labsea1980 |
185 |
ln -sf tair.labsea1979 tair.labsea1980 |
ln -sf tair.labsea1979 tair.labsea1980 |
186 |
ln -sf u10m.labsea79 u10m.labsea80 |
ln -sf u10m.labsea79 u10m.labsea80 |
187 |
ln -sf v10m.labsea79 v10m.labsea80 |
ln -sf v10m.labsea79 v10m.labsea80 |
188 |
mpirun -np 2 mitgcmuv_2x1 |
mpirun -np 2 mitgcmuv_2x1 |
189 |
|
|
190 |
Use the matlab script lookat_exp5.m to compare |
Use the matlab script lookat_exp3.m to compare |
191 |
the 2-cpu output to SMMR-SSM/I data: |
the 2-cpu output to SMMR-SSM/I data: |
192 |
cd ../../../verification/lab_sea/matlab |
cd ../verification/lab_sea/matlab |
193 |
matlab |
matlab |
194 |
lookat_exp5 |
lookat_exp5 |
195 |
|
|
203 |
|
|
204 |
This is a 1-cpu test of sea-ice thermodynamics (no dynamics). |
This is a 1-cpu test of sea-ice thermodynamics (no dynamics). |
205 |
The solution is compared to that of experiment 1. |
The solution is compared to that of experiment 1. |
206 |
|
1-CPU executable from experiment 1 is required. |
207 |
|
|
208 |
To run Experiment 6: |
To run: |
209 |
cd ../../../verification/lab_sea/input |
cd ../exe |
210 |
ln -sf DATA.10hours data |
cp ../verification/lab_sea/input/* . |
211 |
ln -sf DATA.SEAICE.nodynamics data.seaice |
ln -sf data.10hours data |
212 |
mitgcmuv_1 >&! output.txt |
ln -sf data.seaice.nodynamics data.seaice |
213 |
|
mitgcmuv1 >&! output.txt |
214 |
mkdir exp6 |
mkdir exp6 |
215 |
mv *tave.0000000010.data exp6 |
mv *tave.0000000010.data exp6 |
216 |
|
|
217 |
Use the matlab script lookat_exp6.m to compare |
Use the matlab script lookat_exp6.m to compare |
218 |
the output of exp6 to that of exp1: |
the output of exp2 to that of exp1: |
219 |
cd ../verification/lab_sea/matlab |
cd ../verification/lab_sea/matlab |
220 |
matlab |
matlab |
221 |
lookat_exp6 |
lookat_exp6 |
|
|
|
|
Instructions for running Experiment 7 |
|
|
===================================== |
|
|
|
|
|
This is a 2-cpu, 10-hour integration used to test |
|
|
tile edges for sea-ice thermodynamics (no dynamics). |
|
|
2-CPU executable from experiment 4 is required. |
|
|
|
|
|
To run Experiment 7: |
|
|
cd ../../../verification/lab_sea/input |
|
|
ln -sf DATA.10hours data |
|
|
ln -sf DATA.SEAICE.nodynamics data.seaice |
|
|
mpirun -np 2 mitgcmuv_2x1 |
|
|
mkdir exp7 |
|
|
mv *tave.0000000010.data exp7 |
|
|
|
|
|
Use the matlab script lookat_exp7.m to compare |
|
|
the output of exp7 to that of exp6: |
|
|
cd ../verification/lab_sea/matlab |
|
|
matlab |
|
|
lookat_exp7 |
|
|
|
|
|
|
|
|
Instructions for running Experiment 8 |
|
|
===================================== |
|
|
|
|
|
This is the default experiment which is executed by |
|
|
verification/testscript. It is a 1-cpu, 10-hour integration |
|
|
used to test CPP option SEAICE_EXTERNAL_FORCING. Atmospheric |
|
|
state is read-in using pkg/exf, rather than pkg/seaice routines. |
|
|
This experiment uses pkg/gmredi, pkg/kpp, pkg/seaice, and pkg/exf. |
|
|
|
|
|
To run Experiment 8: |
|
|
cd ../../../verification/lab_sea/input |
|
|
ln -sf DATA.10hours_exf data |
|
|
ln -sf DATA.SEAICE.adi_exf data.seaice |
|
|
mitgcmuv_exf_forcing >&! output.txt |
|
|
mkdir exp8 |
|
|
mv *tave.0000000010.data exp8 |
|
|
|
|
|
Use matlab script lookat_exp8.m to compare |
|
|
the output of exp8 to that of exp1: |
|
|
cd ../../../verification/lab_sea/matlab |
|
|
matlab |
|
|
lookat_exp8 |
|
|
|
|
|
|
|
|
Instructions for running Experiment 9 |
|
|
===================================== |
|
|
|
|
|
This is a 1-cpu, 10-hour integration used to test CPP option |
|
|
SEAICE_EXTERNAL_FLUXES. Both the atmospheric state and the |
|
|
open-water surface fluxes are provided by pkg/exf. |
|
|
|
|
|
To run Experiment 9: |
|
|
cd ../../../verification/lab_sea/input |
|
|
ln -sf DATA.10hours_exf data |
|
|
ln -sf DATA.SEAICE.adi_exf data.seaice |
|
|
mitgcmuv_exf_fluxes >&! output.txt |
|
|
mkdir exp9 |
|
|
mv *tave.0000000010.data exp9 |
|
|
|
|
|
Use matlab script lookat_exp9.m to compare |
|
|
the output of exp9 to that of exp8: |
|
|
cd ../../../verification/lab_sea/matlab |
|
|
matlab |
|
|
lookat_exp9 |
|