--- MITgcm/verification/lab_sea/README 2003/04/30 07:04:08 1.6 +++ MITgcm/verification/lab_sea/README 2008/01/29 11:25:54 1.17 @@ -27,17 +27,22 @@ lwdownFile = 'flo.labsea1979' # downward longwave radiation swdownFile = 'fsh.labsea1979' # downward shortwave radiation precipFile = 'prate.labsea1979' # precipitation - evapFile = 'evap.labsea1979' # evaporation + +The experiment uses pkg/gmredi, pkg/kpp, pkg/seaice, and pkg/exf. +The test is a 1-cpu, 10-hour integration. Both the atmospheric +state and the open-water surface fluxes are provided by pkg/exf. + +More pkg/seaice test experiments, configured for low and +high-resolution global cube-sphere domains are described +in MITgcm_contrib/high_res_cube/README_ice. Using testscript to test sea-ice code ===================================== Running the testscript experiment: - cd verification - ./testscript -force lab_sea -The default experiment is Experiment 8, below. -It uses pkg/gmredi, pkg/kpp, pkg/seaice, and pkg/exf. + cd MITgcm/verification + ./testreport -t lab_sea Note that fairly large differences in accuracy occur across different platforms. For example, testscript comparisons between g77 (Linux) @@ -52,323 +57,80 @@ 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 - -1-CPU executable with SEAICE_EXTERNAL_FORCING, without READ_EVAP - 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.BULK.h 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_compute_evap +Instructions for generating and running a 1-CPU experiment +========================================================== -Generating 1-CPU executable with SEAICE_EXTERNAL_FLUXES: - 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.BULK.h ECCO_CPPOPTIONS.h - ln -sf ../code/SEAICE_OPTIONS.EXF_FLUXES.h SEAICE_OPTIONS.h - ../../../tools/genmake -makefile - ==> on alhena use: - ../../../tools/genmake -platform=o2k_noopt -makefile - make clean + cd MITgcm/verification/lab_sea + mkdir build + cd build + cp ../code/*.h ../code/packages.conf . + ../../../tools/genmake2 make depend 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 -===================================== - -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.adi data.seaice - mitgcmuv_1 >&! output.txt - mkdir exp1 - mv *tave.0000000010.data exp1 + cd ../input + ../build/mitgcmuv > output.txt Use matlab script lookat_exp1.m to compare the output -of exp1 with that from release1_p10 sea-ice code: +of exp1 with that from checkpoint51f 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. + lookat_ice -To run Experiment 2: - cd ../../../verification/lab_sea/input - ln -sf DATA.10hours data - ln -sf DATA.SEAICE.lsr data.seaice - mitgcmuv_1 >&! output.txt - mkdir exp2 - mv *tave.0000000010.data exp2 - -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 - -If the dynamic ice solvers are correct, they should converge to a -solution that is constant at each latitude. - - -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.adi 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 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. With NPSEUDO=300 or greater, the tile disappears, but the -computational cost is very large (11 times that of teh forward model). +Instructions for generating and running a 2-CPU experiment on kalpana +===================================================================== + cd MITgcm/verification/lab_sea + mkdir build + cd build + \cp ../code/*.h ../code/packages.conf . + \cp ../code/SIZE.h_mpi SIZE.h + ../../../tools/genmake2 -of ../../../tools/build_options/linux_ia64_efc+mpi_altix + make depend + make + cd ../input + mpirun -np 2 ../build/mitgcmuv -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.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_exp5.m to compare -the 2-cpu output to SMMR-SSM/I data: - cd ../../../verification/lab_sea/matlab - matlab - lookat_exp5 - -Disclaimer: -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 :-) - -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.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 - - -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.adi_exf data.seaice - mitgcmuv_compute_evap >&! output.txt - mkdir exp10 - mv *tave.0000000010.data exp10 +Instructions for testing useExfYearlyFields +=========================================== -Use matlab script lookat_exp10.m to compare -the output of exp10 to that of exp8: - cd ../../../verification/lab_sea/matlab - matlab - lookat_exp10 + cd MITgcm/verification/lab_sea/build + \rm * + \cp ../code/* . + sed 's/undef EXF_V/define EXF_V/' \ + ../../../pkg/exf/EXF_OPTIONS.h > EXF_OPTIONS.h + ../../../tools/genmake2 + make depend + make -j + cd ../run + \rm * + \cp ../input/* . + \mv v10m.labsea1979 v10m.labsea_1979 + \mv u10m.labsea1979 u10m.labsea_1979 + \mv flo.labsea1979 flo.labsea_1979 + \mv prate.labsea1979 prate.labsea_1979 + \mv tair.labsea1979 tair.labsea_1979 + \mv fsh.labsea1979 fsh.labsea_1979 + \mv qa.labsea1979 qa.labsea_1979 + \mv SSS_monthly.labsea1979 SSS_monthly.labsea_1979 + \ln -sf v10m.labsea_1979 v10m.labsea_1978 + \ln -sf u10m.labsea_1979 u10m.labsea_1978 + \ln -sf flo.labsea_1979 flo.labsea_1978 + \ln -sf prate.labsea_1979 prate.labsea_1978 + \ln -sf tair.labsea_1979 tair.labsea_1978 + \ln -sf fsh.labsea_1979 fsh.labsea_1978 + \ln -sf qa.labsea_1979 qa.labsea_1978 + \ln -sf SSS_monthly.labsea_1979 SSS_monthly.labsea_1978 + \ln -sf v10m.labsea_1979 v10m.labsea_1980 + \ln -sf u10m.labsea_1979 u10m.labsea_1980 + \ln -sf flo.labsea_1979 flo.labsea_1980 + \ln -sf prate.labsea_1979 prate.labsea_1980 + \ln -sf tair.labsea_1979 tair.labsea_1980 + \ln -sf fsh.labsea_1979 fsh.labsea_1980 + \ln -sf qa.labsea_1979 qa.labsea_1980 + \ln -sf SSS_monthly.labsea_1979 SSS_monthly.labsea_1980 + \mv data.exf_YearlyFields data.exf + \mv data_YearlyFields data + sed 's/tics = .TRUE./tics = .FALSE./' ../input/data.pkg > data.pkg + ../build/mitgcmuv >& output.txt &