CASINO is a complex software package. The main program consists of several hundred thousand lines of Fortran95 with a bit of C to do timing and shared memory. The distribution also contains a great many separate utility programs, most of which are Fortran95 programs and bash scripts (with a few old csh scripts still hanging about). There are also a very small number of other utilities (one in each) written in C++, Python and Perl. Maintaining and improving all of this – and making sure that the code continues to work with the latest computers and compilers – is a rather complicated and time-consuming business, and the CASINO team is always grateful for extra pairs of hands to help.
Although we have many people working in our groups in Cambridge and London, most students focus on running calculations and doing interesting physics research, rather than pure development work. This is inevitable and quite understandable, as modern academic life is almost all about accumulating ‘credit’, and this is mainly obtained by publishing large numbers of papers. Providing you apply yourself to the right problem, typing ‘
run‘ and writing down the number that appears several hours later sufficiently often will normally give you sufficient credit to get a proper job. 🙂
Nevertheless, getting involved in development work can be a fun and intellectually rewarding experience, and we strongly encourage anyone who is both interested and competent to get in touch with Mike, Neil or Pablo. You’ll need some idea of what you want to do: our Things to do list may help (some of the smaller things may help you to practice) but of course you may also have your own ideas.
Of course, the large pool of helpful open source developers in the world may be put off by three things:
(1) They don’t know anything about quantum physics. This is fair enough. Nothing to be done about that (well, there are some good books..). See it as a challenge!
(2) They think Fortran is a really stupid dead old language which shouldn’t be used by your modern, cool , urban metrosexual. Well OK, but you’ll find that much criticism of this nature is based on mistaking ‘Fortran’ for the ancient Fortran77 standard, which did indeed have some unfortunate features. Modern (post-1990) Fortran is different, and while we admit that you wouldn’t want to be writing Android apps in it, there are many reasons that most of the world’s fastest supercomputers only have Fortran (and C) compilers installed. Modern Fortran (starting with Fortran90, and moving through Fortran95, Fortran 2003, Fortran 2008) is the best language for doing science involving billions of numerical computations, because it is just murderously fast. Even then, large calculations can still take a week, so you can appreciate that making it take four weeks by insisting your language must have the latest cool design features is not an option, especially when you’re paying for the supercomputer time. Here is an interesting 2014 Ars Tecnica article ‘Scientific computing’s future: can any coding language top a 1950s behemoth?‘ in which the author sets out to demonstrate how awful Fortran is with silly references to punched cards and so on, but ends up concluding that it’s the best language available for high-performance supercomputing and likely to remain so.
(3) CASINO isn’t actually an open source code distributed under a GNU Public License. This is true. We behave in this nasty capitalist manner since the technology is still developing, and for the moment we feel the need to retain some sort of control of the direction of evolution of the code (and we need to be able to use our development work to write papers so that we can beg for our jobs to be renewed every couple of years). Nevertheless, we do give the standard version of the code away for free to anyone who asks (one may request immediate download here) and anyone competent who wishes to do useful development work is usually allowed access to the development version.
So, if these things aren’t a problem, do get in touch. If we accept your proposal, the database will be updated so that your CASINO login ID will allow download of the developer’s code (the only real difference is that the developer code is unobfuscated i.e. it is possible to read it.).
CASINO is developed using the
git revision control system. Pablo has written an introductory guide to how to use
git in CASINO development work, including how to submit patches for incorporation in the main distribution. This can be found here. Online instructions for accessing the CASINO
git repository are here.