Computational Chemistry 2.0

Some opinions on the current state of computational chemistry and how it could be modernised.

Computer Cluster

The Current Situation

As the name suggests, computational chemistry is the application of computers to solve chemical problems. A large amount of software has been developed by reseaech groups and specialist firms across the world to solve these problems. These range from simple laboratory-centered calculators up to molecular modelling using quantum mechanics. Different packages offer solutions to similar problems; for example in quamtum molecular modelling a model could be: made of a molecular system either at a fixed point where the molecule is alone in the Universe surrounded by a vacuum or solvent; or part of a periodic pattern repeating to infinity in space representing a crystal structure.

A lot of the software has been developed over many years and is still largely written in Fortran 77 from 1977. Some code is being updated but only to Fortran 90, the 1990 version of the language; the latest version is from 2008. The 2003 and latest versions offer huge extensions to the language including input/output enhancements, greater interoperability with the C programming language, object-orientation and much more. Although Fortran is very good for scientific calculations, using antiquated versions of the language will not take full advantage of moden computational power or programming paradigms and models. A common excuse for not updating is to simply buy newer, more powerful and faster computers. Additionally, every Fortran compiler is different as the results from one may be completely different from another!

Unfortunately, the issues do not end at antiquated Fortran and its compilers. Most of the software is difficult to install as additional dependencies are required and not provided. These dependencies are often written by other research groups, require separate compilation and installation and are often hard to find as no reference is given on where to acquire them! On the development side, it generally does not get any better as source code is poorly written and formatted with very little documentation. This makes it highly complicated for others to take on coding work.

A Possible Solution

In 2000 Microsoft released the .NET Framework, an extensive platform for Windows software development. Through projects such as Mono and DotGNU as well as some work by Microsoft, implementations are now availabe on UNIX systems including Mac OS X and Linux and some mobile platforms. Unlike a native program, a .NET application runs within a program called the Common Language Runtime (CLR) which manages the running of the application. This includes memory management, security and much more thus ensuring it runs smoothly and safely. Also, when first run on a computer a .NET application is compiled to the machine specifications enabling it to run with optimum performance.

.NET also offers very simple methods to implement functionality which would normally be very complicated in native programs. An example is parallel programming which allows a program to run multiple tasks simultaneously on multiple threads or processor cores. In Fortran this is complicated and requires excessive knowledge and exact control. This results in having to write low-level code just for this ability to be available. In .NET only a couple of lines of code are required to acheive the same results, if not better. .NET takes control of the parallel side of the operation to allow the application to run at optimum performance.

A leap from Fortran 77 to the .NET languages of C# or Visual Basic or even (Heaven forbid!) a more modern version of Fortran may seem a big jump, and "waste of time and moeny" to research groups but it is a leap I believe should be made sooner than later. Additionally, investment into proper development tools such as Microsoft Visual Studio, which not only are designed for development but also drive productivity, to replace text editors should be made. Too often in computational chemistry programs are released which are full of bugs due to poor development activities and habits!