27 |
lwdownFile = 'flo.labsea1979' # downward longwave radiation |
lwdownFile = 'flo.labsea1979' # downward longwave radiation |
28 |
swdownFile = 'fsh.labsea1979' # downward shortwave radiation |
swdownFile = 'fsh.labsea1979' # downward shortwave radiation |
29 |
precipFile = 'prate.labsea1979' # precipitation |
precipFile = 'prate.labsea1979' # precipitation |
30 |
evapFile = 'evap.labsea1979' # evaporation |
|
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 |
|
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. |
38 |
|
|
39 |
|
|
40 |
Using testscript to test sea-ice code |
Using testscript to test sea-ice code |
41 |
===================================== |
===================================== |
42 |
|
|
43 |
Running the testscript experiment: |
Running the testscript experiment: |
44 |
cd verification |
cd MITgcm/verification |
45 |
./testscript -force lab_sea |
./testreport -t lab_sea |
|
The default experiment is Experiment 8, below. |
|
|
It uses pkg/gmredi, pkg/kpp, pkg/seaice, and pkg/exf. |
|
46 |
|
|
47 |
Note that fairly large differences in accuracy occur across different |
Note that fairly large differences in accuracy occur across different |
48 |
platforms. For example, testscript comparisons between g77 (Linux) |
platforms. For example, testscript comparisons between g77 (Linux) |
57 |
Y Y Y Y 8 10 9 11 10 9 11 13 10 9 8 8 9 8 9 8 9 FAIL lab_sea |
Y Y Y Y 8 10 9 11 10 9 11 13 10 9 8 8 9 8 9 8 9 FAIL lab_sea |
58 |
|
|
59 |
|
|
60 |
Instructions for generating 1-CPU and 2-CPU executables |
Instructions for generating and running a 1-CPU experiment |
61 |
======================================================= |
========================================================== |
|
|
|
|
Generating 1-CPU executable: |
|
|
cd verification/lab_sea/input |
|
|
ln -sf ../code/packages.conf . |
|
|
ln -sf ../code/SIZE.h . |
|
|
ln -sf ../code/CPP_EEOPTIONS.h . |
|
|
rm -f SEAICE_OPTIONS.h |
|
|
../../../tools/genmake2 |
|
|
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/packages.conf . |
|
|
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/genmake2 |
|
|
make clean |
|
|
make depend |
|
|
make |
|
|
mv mitgcmuv mitgcmuv_exf_forcing |
|
|
|
|
|
1-CPU executable with SEAICE_EXTERNAL_FORCING, without READ_EVAP |
|
|
cd ../../../verification/lab_sea/input |
|
|
ln -sf ../code/packages.conf . |
|
|
ln -sf ../code/SIZE.h . |
|
|
ln -sf ../code/CPP_EEOPTIONS.h . |
|
|
ln -sf ../code/CPP_OPTIONS.h . |
|
|
ln -sf ../code/ECCO_CPPOPTIONS.BULK.h ECCO_CPPOPTIONS.h |
|
|
ln -sf ../code/SEAICE_OPTIONS.h . |
|
|
../../../tools/genmake2 |
|
|
make clean |
|
|
make depend |
|
|
make |
|
|
mv mitgcmuv mitgcmuv_compute_evap |
|
62 |
|
|
63 |
Generating 1-CPU executable with SEAICE_EXTERNAL_FLUXES: |
cd MITgcm/verification/lab_sea |
64 |
cd ../../../verification/lab_sea/input |
mkdir build |
65 |
ln -sf ../code/packages.conf . |
cd build |
66 |
ln -sf ../code/SIZE.h . |
cp ../code/*.h ../code/packages.conf . |
|
ln -sf ../code/CPP_EEOPTIONS.h . |
|
|
ln -sf ../code/CPP_OPTIONS.h . |
|
|
ln -sf ../code/ECCO_CPPOPTIONS.BULK.h ECCO_CPPOPTIONS.h |
|
|
ln -sf ../code/SEAICE_OPTIONS.EXF_FLUXES.h SEAICE_OPTIONS.h |
|
67 |
../../../tools/genmake2 |
../../../tools/genmake2 |
|
make clean |
|
68 |
make depend |
make depend |
69 |
make |
make |
70 |
mv mitgcmuv mitgcmuv_exf_fluxes |
cd ../input |
71 |
|
../build/mitgcmuv > output.txt |
|
Generating 1-CPU executable with SEAICE_MULTILEVEL: |
|
|
cd ../../../verification/lab_sea/input |
|
|
ln -sf ../code/packages.conf . |
|
|
ln -sf ../code/SIZE.h . |
|
|
ln -sf ../code/CPP_EEOPTIONS.h . |
|
|
ln -sf ../code/SEAICE_OPTIONS.MULTILEVEL.h SEAICE_OPTIONS.h |
|
|
../../../tools/genmake2 |
|
|
make clean |
|
|
make depend |
|
|
make |
|
|
mv mitgcmuv mitgcmuv_multilevel |
|
|
|
|
|
Generating 2-CPU executable: |
|
|
cd ../../../verification/lab_sea/input |
|
|
ln -sf ../code/packages.conf . |
|
|
ln -sf ../code/SIZE.2x1.h SIZE.h |
|
|
ln -sf ../code/CPP_EEOPTIONS.h_mpi CPP_EEOPTIONS.h |
|
|
rm -f SEAICE_OPTIONS.h |
|
|
../../../tools/genmake2 -mpi |
|
|
make clean |
|
|
make depend |
|
|
make |
|
|
mv mitgcmuv mitgcmuv_2x1 |
|
|
|
|
|
|
|
|
Instructions for running Experiment 1 |
|
|
===================================== |
|
|
|
|
|
This is a 1-cpu, 10-hour integration used to make sure that all |
|
|
the files are available and that the sea-ice model compiles and |
|
|
runs. The reading of atmospheric forcing files and the computation |
|
|
of open-water bulk fluxes are carried out within pkg/seaice. |
|
|
|
|
|
To run Experiment 1: |
|
|
cd ../../../verification/lab_sea/input |
|
|
ln -sf DATA.10hours data |
|
|
ln -sf DATA.SEAICE.lsr data.seaice |
|
|
mitgcmuv_1 >&! output.txt |
|
|
mkdir exp1 |
|
|
mv *tave.0000000010.data exp1 |
|
72 |
|
|
73 |
Use matlab script lookat_exp1.m to compare the output |
Use matlab script lookat_exp1.m to compare the output |
74 |
of exp1 with that from checkpoint51f sea-ice code: |
of exp1 with that from checkpoint51f sea-ice code: |
75 |
cd ../../../verification/lab_sea/matlab |
cd ../../../verification/lab_sea/matlab |
76 |
matlab |
matlab |
77 |
lookat_exp1 |
lookat_ice |
78 |
|
|
79 |
|
|
80 |
Instructions for running Experiment 2 |
Instructions for generating and running a 2-CPU experiment on kalpana |
81 |
===================================== |
===================================================================== |
82 |
|
|
83 |
This is a 1-cpu test of the ADI solver. The solution is |
cd MITgcm/verification/lab_sea |
84 |
compared to that of experiment 1, which used the LSR solver. |
mkdir build |
85 |
|
cd build |
86 |
To run Experiment 2: |
\cp ../code/*.h ../code/packages.conf . |
87 |
cd ../../../verification/lab_sea/input |
\cp ../code/SIZE.h_mpi SIZE.h |
88 |
ln -sf DATA.10hours data |
../../../tools/genmake2 -of ../../../tools/build_options/linux_ia64_efc+mpi_altix |
89 |
ln -sf DATA.SEAICE.adi data.seaice |
make depend |
90 |
mitgcmuv_1 >&! output.txt |
make |
91 |
mkdir exp2 |
cd ../input |
92 |
mv *tave.0000000010.data exp2 |
mpirun -np 2 ../build/mitgcmuv |
|
|
|
|
Use matlab script lookat_exp2.m to compare |
|
|
the output of exp2 to that of exp1: |
|
|
cd ../../../verification/lab_sea/matlab |
|
|
matlab |
|
|
lookat_exp2 |
|
|
|
|
|
|
|
|
Instructions for running Experiment 3 |
|
|
===================================== |
|
|
|
|
|
This is a test of periodic boundary conditions for LSR |
|
|
and ADI solvers. The domain has a flat bottom and |
|
|
is periodic both in the x and the y directions. |
|
|
All forcing files are null or constant (u10m = v10m = 5 m/s). |
|
|
|
|
|
To run Experiment 3: |
|
|
cd ../../../verification/lab_sea/input |
|
|
ln -sf DATA.1hour data |
|
|
ln -sf DATA.SEAICE.testadi data.seaice |
|
|
mitgcmuv_1 >&! output.txt |
|
|
mkdir exp3a |
|
|
mv *tave.0000000001.data exp3a |
|
|
ln -sf DATA.SEAICE.testlsr data.seaice |
|
|
mitgcmuv_1 >&! output.txt |
|
|
mkdir exp3b |
|
|
mv *tave.0000000001.data exp3b |
|
|
|
|
|
Use matlab script lookat_exp3.m to look at |
|
|
results from exp3a and exp3b: |
|
|
cd ../../../verification/lab_sea/matlab |
|
|
matlab |
|
|
lookat_exp3 |
|
|
|
|
|
Both solvers should and do converge to solutions |
|
|
that are constant at each latitude. But note that |
|
|
the two solutions are not exactly the same because |
|
|
the two solvers represent slightly different |
|
|
approximations of the viscous/plastic equations. |
|
|
|
|
|
|
|
|
Instructions for running Experiment 4 |
|
|
===================================== |
|
|
|
|
|
This is a 2-cpu, 10-hour integration used to test |
|
|
tile edges for sea-ice dynamic solvers. |
|
|
|
|
|
To run Experiment 4: |
|
|
cd ../../../verification/lab_sea/input |
|
|
ln -sf DATA.10hours data |
|
|
ln -sf DATA.SEAICE.lsr data.seaice |
|
|
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 accuracy of the dynamic solvers is increased by |
|
|
reducing parameter LSR_ERROR for the LSR solver and |
|
|
by increasing parameter NPSEUDO for the ADI solver. |
|
|
The computational cost/accuracy trade-off is quite |
|
|
high for the ADI solver but relatively small for |
|
|
the LSR solver, which is the default solver. |
|
|
|
|
|
|
|
|
Instructions for running Experiment 5 |
|
|
===================================== |
|
|
|
|
|
This is a 2-cpu, 2-year, test integration. It illustrates |
|
|
convention used by seaice_get_forcing.F for multi-year forcing. |
|
|
|
|
|
To run Experiment 5: |
|
|
cd ../../../verification/lab_sea/input |
|
|
ln -sf DATA.2years data |
|
|
ln -sf DATA.SEAICE.lsr 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_exp5.m to compare |
|
|
the 2-cpu output to SMMR-SSM/I data: |
|
|
cd ../../../verification/lab_sea/matlab |
|
|
matlab |
|
|
lookat_exp5 |
|
|
|
|
|
The comparison here is just for fun. |
|
|
The configuration is too coarse and artificial |
|
|
to reproduce realistic sea-ice conditions. |
|
|
|
|
|
|
|
|
Instructions for running Experiment 6 |
|
|
===================================== |
|
|
|
|
|
This is a 1-cpu test of sea-ice thermodynamics (no dynamics). |
|
|
The solution is compared to that of experiment 1. |
|
|
|
|
|
To run Experiment 6: |
|
|
cd ../../../verification/lab_sea/input |
|
|
ln -sf DATA.10hours data |
|
|
ln -sf DATA.SEAICE.nodynamics data.seaice |
|
|
mitgcmuv_1 >&! output.txt |
|
|
mkdir exp6 |
|
|
mv *tave.0000000010.data exp6 |
|
|
|
|
|
Use the matlab script lookat_exp6.m to compare |
|
|
the output of exp6 to that of exp1: |
|
|
cd ../../../verification/lab_sea/matlab |
|
|
matlab |
|
|
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.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.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 |
|
|
|
|
|
|
|
|
Instructions for running Experiment 10 |
|
|
====================================== |
|
|
|
|
|
This is a 1-cpu, 10-hour integration similar to exp8, but |
|
|
with bulk formula computation of evaporation fields. |
|
|
|
|
|
To run Experiment 10: |
|
|
cd ../../../verification/lab_sea/input |
|
|
ln -sf DATA.10hours_exf data |
|
|
ln -sf DATA.SEAICE.exf data.seaice |
|
|
mitgcmuv_compute_evap >&! output.txt |
|
|
mkdir exp10 |
|
|
mv *tave.0000000010.data exp10 |
|
|
|
|
|
Use matlab script lookat_exp10.m to compare |
|
|
the output of exp10 to that of exp8: |
|
|
cd ../../../verification/lab_sea/matlab |
|
|
matlab |
|
|
lookat_exp10 |
|
|
|
|
|
|
|
|
Instructions for running Experiment 11 |
|
|
====================================== |
|
93 |
|
|
|
This is a 1-cpu, 10-hour integration similar to exp1, but |
|
|
with multi-level sea-ice thermodynamics. |
|
94 |
|
|
95 |
To run Experiment 10: |
Instructions for testing useExfYearlyFields |
96 |
cd ../../../verification/lab_sea/input |
=========================================== |
|
ln -sf DATA.10hours data |
|
|
ln -sf DATA.SEAICE.lsr data.seaice |
|
|
mitgcmuv_multilevel >&! output.txt |
|
|
mkdir exp11 |
|
|
mv *tave.0000000010.data exp11 |
|
97 |
|
|
98 |
Use matlab script lookat_exp11.m to compare |
cd MITgcm/verification/lab_sea/build |
99 |
the output of exp11 to that of exp1: |
\rm * |
100 |
cd ../../../verification/lab_sea/matlab |
\cp ../code/* . |
101 |
matlab |
sed 's/undef EXF_V/define EXF_V/' \ |
102 |
lookat_exp11 |
../../../pkg/exf/EXF_OPTIONS.h > EXF_OPTIONS.h |
103 |
|
../../../tools/genmake2 |
104 |
|
make depend |
105 |
|
make -j |
106 |
|
cd ../run |
107 |
|
\rm * |
108 |
|
\cp ../input/* . |
109 |
|
\mv v10m.labsea1979 v10m.labsea_1979 |
110 |
|
\mv u10m.labsea1979 u10m.labsea_1979 |
111 |
|
\mv flo.labsea1979 flo.labsea_1979 |
112 |
|
\mv prate.labsea1979 prate.labsea_1979 |
113 |
|
\mv tair.labsea1979 tair.labsea_1979 |
114 |
|
\mv fsh.labsea1979 fsh.labsea_1979 |
115 |
|
\mv qa.labsea1979 qa.labsea_1979 |
116 |
|
\mv SSS_monthly.labsea1979 SSS_monthly.labsea_1979 |
117 |
|
\ln -sf v10m.labsea_1979 v10m.labsea_1978 |
118 |
|
\ln -sf u10m.labsea_1979 u10m.labsea_1978 |
119 |
|
\ln -sf flo.labsea_1979 flo.labsea_1978 |
120 |
|
\ln -sf prate.labsea_1979 prate.labsea_1978 |
121 |
|
\ln -sf tair.labsea_1979 tair.labsea_1978 |
122 |
|
\ln -sf fsh.labsea_1979 fsh.labsea_1978 |
123 |
|
\ln -sf qa.labsea_1979 qa.labsea_1978 |
124 |
|
\ln -sf SSS_monthly.labsea_1979 SSS_monthly.labsea_1978 |
125 |
|
\mv data.exf_YearlyFields data.exf |
126 |
|
\mv data_YearlyFields data |
127 |
|
sed 's/tics = .TRUE./tics = .FALSE./' ../input/data.pkg > data.pkg |
128 |
|
../build/mitgcmuv >& output.txt & |