--- MITgcm/verification/lab_sea/README 2003/03/11 21:26:04 1.1.2.8 +++ MITgcm/verification/lab_sea/README 2014/03/10 01:35:17 1.18 @@ -27,17 +27,21 @@ 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 [-of my_platform_optionFile] Note that fairly large differences in accuracy occur across different platforms. For example, testscript comparisons between g77 (Linux) @@ -51,325 +55,92 @@ 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 and running a 1-CPU experiment +========================================================== -Instructions for generating 1-CPU and 2-CPU executables -======================================================= + cd MITgcm/verification/lab_sea -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 +Configure and compile the code: + cd build + ../../../tools/genmake2 -mods ../code [-of my_platform_optionFile] make depend make - mv mitgcmuv mitgcmuv_1 + cd .. -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 - -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 - 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 - -Use matlab script lookat_exp1.m to compare the output -of exp1 with that from release1_p10 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. - -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 -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. - - -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 +To run: + cd run + ln -s ../input/* . + ln -s ../build/mitgcmuv . + ./mitgcmuv > output.txt + cd .. -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 -===================================== - -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 -===================================== +There is comparison output in the directory: + results/output.txt -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: +Use matlab script lookat_ice.m to compare the output + with that from checkpoint51f sea-ice code: cd ../../../verification/lab_sea/matlab matlab - lookat_exp8 - + lookat_ice -Instructions for running Experiment 9 -===================================== +Instructions for generating and running a 2-CPU experiment +========================================================== -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 + cd MITgcm/verification/lab_sea -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 +Configure and compile the code: + cd build + ../../../tools/genmake2 -mpi -mods ../code [-of my_platform_optionFile] + ln -s ../code/SIZE.h_mpi SIZE.h + make depend + make + cd .. -Use matlab script lookat_exp10.m to compare -the output of exp10 to that of exp8: - cd ../../../verification/lab_sea/matlab - matlab - lookat_exp10 +To run: + cd run + ln -s ../input/* . + mpirun -np 2 ../build/mitgcmuv + cd .. + +Instructions for testing useExfYearlyFields (Note: might not be up-to-date) +=========================================== + + 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 &