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 "doc/seaice.ps". |
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. |
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 |
gairxFile = 'u10m.labsea79' # 10-m zonal wind |
uwindFile = 'u10m.labsea79' # 10-m zonal wind |
24 |
gairyFile = 'v10m.labsea79' # 10-m meridional wind |
vwindFile = 'v10m.labsea79' # 10-m meridional wind |
25 |
tairFile = 'tair.labsea1979' # 2-m air temperature |
atempFile = 'tair.labsea1979' # 2-m air temperature |
26 |
qaFile = 'qa.labsea1979' # 2-m specific humidity |
aqhFile = 'qa.labsea1979' # 2-m specific humidity |
27 |
floFile = 'flo.labsea1979' # longwave radiation |
lwdownFile = 'flo.labsea1979' # downward longwave radiation |
28 |
fshFile = 'fsh.labsea1979' # shortwave radiation |
swdownFile = 'fsh.labsea1979' # downward shortwave radiation |
29 |
rainFile = 'prate.labsea1979' # precipitation |
precipFile = 'prate.labsea1979' # precipitation |
|
evapFile = 'evap.labsea1979' # evaporation |
|
30 |
|
|
31 |
|
The experiment uses pkg/gmredi, pkg/kpp, pkg/seaice, and pkg/exf. |
32 |
|
The test is a 1-cpu, 10-hour integration. Both the atmospheric |
33 |
|
state and the open-water surface fluxes are provided by pkg/exf. |
34 |
|
|
35 |
Instructions for running Experiment 1 |
More pkg/seaice test experiments, configured for low and |
36 |
===================================== |
high-resolution global cube-sphere domains are described |
37 |
|
in MITgcm_contrib/high_res_cube/README_ice. |
|
This is a 1-cpu, 10-hour integration used to make sure that all the |
|
|
files are available and that the model compiles and integrates. |
|
|
|
|
|
To configure and compile the code: |
|
|
cd MITgcmUV |
|
|
mkdir bin exe |
|
|
cd bin |
|
|
ln -sf ../verification/lab_sea/code/SIZE.h . |
|
|
ln -sf ../verification/lab_sea/code/CPP_OPTIONS.h . |
|
|
ln -sf ../verification/lab_sea/code/CPP_EEOPTIONS.h . |
|
|
../tools/genmake -makefile |
|
|
make depend |
|
|
make |
|
|
|
|
|
To run: |
|
|
cd ../exe |
|
|
cp ../verification/lab_sea/input/* . |
|
|
ln -sf data.10hours data |
|
|
ln -sf data.seaice.adi data.seaice |
|
|
mv mitgcmuv mitgcmuv1 |
|
|
mitgcmuv1 >&! output.txt |
|
|
mkdir exp1 |
|
|
mv *tave.0000000010.data exp1 |
|
|
|
|
|
There is comparison output in: |
|
|
diff output.txt ../verification/lab_sea/results/output.txt | more |
|
|
|
|
|
Use the matlab script lookat_exp1.m to compare the output |
|
|
of exp1 with that from release1_beta1 sea-ice code: |
|
|
cd ../verification/lab_sea/matlab |
|
|
matlab |
|
|
lookat_exp1 |
|
|
|
|
|
Instructions for running Experiment 2 |
|
|
===================================== |
|
|
|
|
|
This is a 1-cpu test of the LSR solver. The solution is |
|
|
compared to that of experiment 1, which used the ADI solver. |
|
|
1-CPU executable from experiment 1 is required. |
|
|
|
|
|
To run: |
|
|
cd ../exe |
|
|
cp ../verification/lab_sea/input/* . |
|
|
ln -sf data.10hours data |
|
|
ln -sf data.seaice.lsr data.seaice |
|
|
mitgcmuv1 >&! output.txt |
|
|
mkdir exp2 |
|
|
mv *tave.0000000010.data exp2 |
|
|
|
|
|
Use the matlab script lookat_exp2.m to compare |
|
|
the output of exp2 to that of exp1: |
|
|
cd ../verification/lab_sea/matlab |
|
|
matlab |
|
|
lookat_exp2 |
|
38 |
|
|
39 |
Instructions for running Experiment 3 |
Using testscript to test sea-ice code |
40 |
===================================== |
===================================== |
41 |
|
|
42 |
This is a test of periodic boundary conditions for LSR |
Running the testscript experiment: |
43 |
and ADI solvers. The domain has a flat bottom and |
cd MITgcm/verification |
44 |
is periodic both in the x and the y directions. |
./testreport -t lab_sea [-of my_platform_optionFile] |
|
All forcing files are null or constant |
|
|
(u10m = v10m = 5 m/s). |
|
45 |
|
|
46 |
1-CPU executable from experiment 1 is required. |
Note that fairly large differences in accuracy occur across different |
47 |
|
platforms. For example, testscript comparisons between g77 (Linux) |
48 |
|
and f77 (SGI) generated output gives: |
49 |
|
|
50 |
To run: |
T S U V |
51 |
cd ../exe |
C D M c m s m s m s m s |
52 |
cp ../verification/lab_sea/input/* . |
n p a R g m m e . m m e . m m e . m m e . |
53 |
ln -sf data.1hour data |
f n k u 2 i a a d i a a d i a a d i a a d |
54 |
ln -sf data.seaice.testadi data.seaice |
g d e n d n x n . n x n . n x n . n x n . |
|
mitgcmuv1 >&! output.txt |
|
|
mkdir exp3a |
|
|
mv *tave.0000000001.data exp3a |
|
|
ln -sf data.seaice.testlsr data.seaice |
|
|
mitgcmuv1 >&! output.txt |
|
|
mkdir exp3b |
|
|
mv *tave.0000000001.data exp3b |
|
|
|
|
|
Use the matlab script lookat_exp3.m to compare |
|
|
the output of exp2 to that of exp1: |
|
|
cd ../verification/lab_sea/matlab |
|
|
matlab |
|
|
lookat_exp3 |
|
55 |
|
|
56 |
If the dynamic ice solvers are correct, they should converge to a |
Y Y Y Y 8 10 9 11 10 9 11 13 10 9 8 8 9 8 9 8 9 FAIL lab_sea |
|
constant solution. The tests above show that both the ADI and the LSR |
|
|
solver are unable to handle periodic domains and therefore that they |
|
|
cannot be "correctly" parallelized. |
|
57 |
|
|
58 |
Instructions for running Experiment 4 |
Instructions for generating and running a 1-CPU experiment |
59 |
===================================== |
========================================================== |
60 |
|
|
61 |
This is a 2-cpu, 10-hour integration used to test |
cd MITgcm/verification/lab_sea |
|
tile edges for sea-ice dynamic solvers. |
|
62 |
|
|
63 |
To configure and compile the code: |
Configure and compile the code: |
64 |
cd ../bin |
cd build |
65 |
rm -rf *.f |
../../../tools/genmake2 -mods ../code [-of my_platform_optionFile] |
|
rm -rf *.o |
|
|
ln -sf ../verification/lab_sea/code/SIZE_2x1.h SIZE.h |
|
|
ln -sf ../verification/lab_sea/code/CPP_OPTIONS.h . |
|
|
ln -sf ../verification/lab_sea/code/CPP_EEOPTIONS_MPI.h CPP_EEOPTIONS.h |
|
|
../tools/genmake -mpi -makefile |
|
|
( on alhena use: ../tools/genmake -mpi -platform=o2k -makefile ) |
|
66 |
make depend |
make depend |
67 |
make |
make |
68 |
|
cd .. |
69 |
|
|
70 |
To run: |
To run: |
71 |
cd ../exe |
cd run |
72 |
cp ../verification/lab_sea/input/* . |
ln -s ../input/* . |
73 |
ln -sf data.10hours data |
ln -s ../build/mitgcmuv . |
74 |
ln -sf data.seaice.adi data.seaice |
./mitgcmuv > output.txt |
75 |
mv mitgcmuv mitgcmuv_2x1 |
cd .. |
|
mpirun -np 2 mitgcmuv_2x1 |
|
|
mkdir exp4 |
|
|
mv *tave.0000000010.data exp4 |
|
|
|
|
|
Use the matlab script lookat_exp4.m to compare |
|
|
the 2-cpu output to that of exp1: |
|
|
cd ../verification/lab_sea/matlab |
|
|
matlab |
|
|
lookat_exp4 |
|
|
|
|
|
The inaccuracy at the tile boundary can be decreased by increasing |
|
|
NPSEUDO in data.seaice at the expense of computation time. |
|
|
Also as sea-ice ages (thickens) the difference at the tiles becomes |
|
|
increasingly small. For solver pkg/seaice/adi.F a value of NPSEUDO=10 |
|
|
appears adequate for forward integrations but cannot be used for sea-ice |
|
|
adjoint model. Work is underway to fix this problem. |
|
|
|
|
|
|
|
|
Instructions for running Experiment 5 |
|
|
===================================== |
|
76 |
|
|
77 |
This is a 2-cpu, 2-year, test integration. It illustrates |
There is comparison output in the directory: |
78 |
convention used for forcing data files by seaice_get_forcing.F. |
results/output.txt |
79 |
|
|
80 |
To run: |
Use matlab script lookat_ice.m to compare the output |
81 |
cd ../exe |
with that from checkpoint51f sea-ice code: |
82 |
cp ../verification/lab_sea/input/* . |
cd ../../../verification/lab_sea/matlab |
|
cp eedata_mpi eedata |
|
|
ln -sf data.2years data |
|
|
ln -sf data.seaice.adi data.seaice |
|
|
ln -sf evap.labsea1979 evap.labsea1980 |
|
|
ln -sf flo.labsea1979 flo.labsea1980 |
|
|
ln -sf fsh.labsea1979 fsh.labsea1980 |
|
|
ln -sf prate.labsea1979 prate.labsea1980 |
|
|
ln -sf qa.labsea1979 qa.labsea1980 |
|
|
ln -sf tair.labsea1979 tair.labsea1980 |
|
|
ln -sf u10m.labsea79 u10m.labsea80 |
|
|
ln -sf v10m.labsea79 v10m.labsea80 |
|
|
mpirun -np 2 mitgcmuv_2x1 |
|
|
|
|
|
Use the matlab script lookat_exp3.m to compare |
|
|
the 2-cpu output to SMMR-SSM/I data: |
|
|
cd ../verification/lab_sea/matlab |
|
83 |
matlab |
matlab |
84 |
lookat_exp5 |
lookat_ice |
85 |
|
|
86 |
Disclaimer: |
Instructions for generating and running a 2-CPU experiment |
87 |
The comparison here is just for fun, not really supposed |
========================================================== |
|
to look anything like the data. |
|
|
Otherwise it would put a lot of people out of business :-) |
|
88 |
|
|
89 |
Instructions for running Experiment 6 |
cd MITgcm/verification/lab_sea |
|
===================================== |
|
90 |
|
|
91 |
This is a 1-cpu test of sea-ice thermodynamics (no dynamics). |
Configure and compile the code: |
92 |
The solution is compared to that of experiment 1. |
cd build |
93 |
1-CPU executable from experiment 1 is required. |
../../../tools/genmake2 -mpi -mods ../code [-of my_platform_optionFile] |
94 |
|
ln -s ../code/SIZE.h_mpi SIZE.h |
95 |
|
make depend |
96 |
|
make |
97 |
|
cd .. |
98 |
|
|
99 |
To run: |
To run: |
100 |
cd ../exe |
cd run |
101 |
cp ../verification/lab_sea/input/* . |
ln -s ../input/* . |
102 |
ln -sf data.10hours data |
mpirun -np 2 ../build/mitgcmuv |
103 |
ln -sf data.seaice.nodynamics data.seaice |
cd .. |
104 |
mitgcmuv1 >&! output.txt |
|
105 |
mkdir exp6 |
Instructions for testing useExfYearlyFields (Note: might not be up-to-date) |
106 |
mv *tave.0000000010.data exp6 |
=========================================== |
107 |
|
|
108 |
Use the matlab script lookat_exp6.m to compare |
cd MITgcm/verification/lab_sea/build |
109 |
the output of exp2 to that of exp1: |
\rm * |
110 |
cd ../verification/lab_sea/matlab |
\cp ../code/* . |
111 |
matlab |
sed 's/undef EXF_V/define EXF_V/' \ |
112 |
lookat_exp6 |
../../../pkg/exf/EXF_OPTIONS.h > EXF_OPTIONS.h |
113 |
|
../../../tools/genmake2 |
114 |
|
make depend |
115 |
|
make -j |
116 |
|
cd ../run |
117 |
|
\rm * |
118 |
|
\cp ../input/* . |
119 |
|
\mv v10m.labsea1979 v10m.labsea_1979 |
120 |
|
\mv u10m.labsea1979 u10m.labsea_1979 |
121 |
|
\mv flo.labsea1979 flo.labsea_1979 |
122 |
|
\mv prate.labsea1979 prate.labsea_1979 |
123 |
|
\mv tair.labsea1979 tair.labsea_1979 |
124 |
|
\mv fsh.labsea1979 fsh.labsea_1979 |
125 |
|
\mv qa.labsea1979 qa.labsea_1979 |
126 |
|
\mv SSS_monthly.labsea1979 SSS_monthly.labsea_1979 |
127 |
|
\ln -sf v10m.labsea_1979 v10m.labsea_1978 |
128 |
|
\ln -sf u10m.labsea_1979 u10m.labsea_1978 |
129 |
|
\ln -sf flo.labsea_1979 flo.labsea_1978 |
130 |
|
\ln -sf prate.labsea_1979 prate.labsea_1978 |
131 |
|
\ln -sf tair.labsea_1979 tair.labsea_1978 |
132 |
|
\ln -sf fsh.labsea_1979 fsh.labsea_1978 |
133 |
|
\ln -sf qa.labsea_1979 qa.labsea_1978 |
134 |
|
\ln -sf SSS_monthly.labsea_1979 SSS_monthly.labsea_1978 |
135 |
|
\ln -sf v10m.labsea_1979 v10m.labsea_1980 |
136 |
|
\ln -sf u10m.labsea_1979 u10m.labsea_1980 |
137 |
|
\ln -sf flo.labsea_1979 flo.labsea_1980 |
138 |
|
\ln -sf prate.labsea_1979 prate.labsea_1980 |
139 |
|
\ln -sf tair.labsea_1979 tair.labsea_1980 |
140 |
|
\ln -sf fsh.labsea_1979 fsh.labsea_1980 |
141 |
|
\ln -sf qa.labsea_1979 qa.labsea_1980 |
142 |
|
\ln -sf SSS_monthly.labsea_1979 SSS_monthly.labsea_1980 |
143 |
|
\mv data.exf_YearlyFields data.exf |
144 |
|
\mv data_YearlyFields data |
145 |
|
sed 's/tics = .TRUE./tics = .FALSE./' ../input/data.pkg > data.pkg |
146 |
|
../build/mitgcmuv >& output.txt & |