During the TM meetings it was sometimes stated that TM5 lacks a proper versioning. There are no well defined 'frozen' versions with known behaviour, since some users tend to modify and commit the source almost every week (they sometimes appologize for that, but that does not solve the problem ofcourse). Besides, there is lack of benchmark simulations that could be used to test how changes in the code act on tracer concentrations.
To solve the problems, the TM5 source has been changed at 2006-09-01 to have a better control on different versions.
A TM5 version should be identified by a tag of the form:
cy1r1
cy1r2
:
cy2r1
:
The tag contains two fiels, a 'cycle number' and a 'release number'.
Conventions:
Between two releases, smaller cosmetic changes might have been commit, for example compiler dependent fixes and parallelization improvements.
Tags can be assigned to source files by cvs. It is possible to extract a complete source code from the cvs server using its tag.
The source tree of TM5 could look like:
TM5/
TM5/README
TM5/Makefile
TM5/doc
TM5/cy1/
run-tm5
base/
bin/
src/
rc/
idl/
proj/chem/
test/
bin/
src/
rc/
aero/
bin/
:
:
TM5/cy2
run-tm5
base/
src/
:
proj/chem/
ipcc/
bin/
src/
strat/
:
:
Main differences the old tree are:
In practice, where you did before:
home > cd TM5 home/TM5 > ./run-tm5 tm5.rcyou now have to change to the correct cycle directory first:
home > cd TM5/cy1 home/TM5/cy1 > ./run-tm5 tm5.rc
Where have the old sources ended up in the new tree ?
old cycle 1 cycle 2 cycle 3
------------------------- ---------------------------- ---------------------------- ----------------------------
base -> cy1/base
proj/chem/aero -> cy1/proj/chem/aero
proj/chem/cbm4 -> cy1/proj/chem/cbm4
proj/chem/cbm4/enkf_base -> cy1/proj/chem/cbm4/enkf_base
proj/chem/enkf_base -> cy1/proj/chem/enkf_base
proj/chem/eud -> cy1/proj/chem/eud
proj/chem/ipcc -> cy1/proj/chem/ipcc
proj/chem/test -> cy1/proj/chem/test
proj/chem/var4d -> cy1/proj/chem/var4d
proj/base-beta2 -> cy2/base
proj/advect/secmom -> cy2/proj/advect/secmom
proj/chem/cbm4-beta -> cy2/proj/chem/cbm4
proj/chem/co2 -> cy2/proj/chem/co2
proj/chem/enkf_basebeta2 -> cy2/proj/chem/enkf_base
proj/chem/ipcc-beta2 -> cy2/proj/chem/ipcc
proj/chem/noaa_gmd -> cy2/proj/chem/noaa_gmd
proj/chem/strat -> cy2/proj/chem/strat
proj/chem/tc -> cy2/proj/chem/tc
proj/chem/tc/enkf_basebeta2 -> cy2/proj/chem/tc/enkf_base
proj/base-beta3 -> cy3/base
proj/chem/one -> cy3/proj/chem/one
proj/levels/ozone44 -> cy2/proj/levels/ozone44
proj/levels/ml60 -> cy2/proj/levels/ml60 cy3/proj/levels/ml60
proj/levels/ml91 -> cy2/proj/levels/ml91 cy3/proj/levels/ml91
proj/levels/ml91/tropo34 -> cy2/proj/levels/ml91/tropo34 cy3/proj/levels/ml91/tropo34
proj/levels/nc28 -> cy2/proj/levels/nc28
proj/levels/nc64 -> cy2/proj/levels/nc64
proj/grid/eur -> cy2/proj/grid/eur cy3/proj/grid/eur
proj/grid/glb3x2 -> cy2/proj/grid/glb3x2 cy3/proj/grid/glb3x2
proj/grid/glb6x4 -> cy2/proj/grid/glb6x4 cy3/proj/grid/glb6x4
proj/grid/nam -> cy2/proj/grid/nam
The following projects are depricated and therefore not transfered to the new tree:
proj/TMkit
proj/newbase
proj/base-beta
proj/base-alfa1
proj/levels/all60
The old source tree has been saved on the cvs server as 'TM5-oldtree'.
If necessary for re-run or historical surveys, checkout by:
cvs -d :ext:yourname@docex.knmi.nl:/cvs/TM checkout TM5-oldtree
The best way to change from working with the old tree to working with the new tree is:
mv TM5 TM5-my-old-stuff
cvs -d :ext:yourname@docex.knmi.nl:/cvs/TM checkout TM5
cd TM5/cy2
cp -r ../../TM5-my-old-stuff/proj/mystuff proj/
cp ../../TM5-my-old-stuff/tm5-mystuff.rc .
./run-tm5 tm5-mystuff.rc
To checkout the source of of cycle given a release tag, use:
cvs -d :ext:yourname@docex.knmi.nl:/cvs/TM checkout -r 'cy1r1' TM5/cy1
Release tags are assigned to all files in a cy? directory by:
cvs tag -R 'cy1r1' *The idea is that only people who now what they are doing, and are capable of updating the documentation, assign new tags ...
To checkout a model version as it was storred on the cvs server on a certain date, use:
cvs -d :ext:yourname@codex.knmi.nl:/cvs/TM checkout -D 2005-01-01 TM5
The following benckmarks are proposed:
| name | purpose |
| base | 5 tracers filled with 1..5; test parallelization |
| chem/radon | Rn222 and Pb210 to test transport |
| chem/aero | tropospheric chemistry, zooming over europe |
| chem/ozone | stratospheric ozone parameterized with Cariolle scheme |
Each cycle contains its own benchmark chemistries.
An rcfile to run the benchmark should be provided as 'chem/radon/rc/tm5.rc' for example.