Dirac Museum

As the Dirac suite is developing, from time to time, it is abandoning various outdated parts of code or is switching to new programming schemes.

Each good software should keep and document its own history. Past involves many hours behind the computer screen, writing many lines of the code, repeated tests and mainly new ideas how to do things better.

Everything can be tracked in the deepness of the git repository. But some milestones in the code progress deserve to be higlighted and remembered here.

With this web page we would like to give tribute to some (old good) files and IT-solutions, which served us for a long time.

Repositories

The first repository one was under the CVS. Later it was replaced by the SVN (subversion) connected with own web-interface, http://dirac.chem.sdu.dk/tracDirac. Test run results were displayed on the web for the first time.

The last (and the best) option is the GIT versioning. The redmine project management web application serves for hosting the git repository on Norway’s server.

Multiple git-repositories is the current trend.

Documentation

It started as versioned LaTeX files within in the Dirac repository. Later, it was replaced by non-versioned wiki web-pages, http://wiki.chem.vu.nl/dirac/index.php/Dirac_Program.

Finally the documentation returned to the Dirac repository under the universal Sphinx documentation generator.

Discussion groups

First we had own installed mailing system within http://dirac.chem.sdu.dk. This changed to two separate Google groups, one for developers, one for users.

Buildup and scripts

configure, config.guess

Shell (sh) scripts for configuring Dirac. Set the platform, compilers, flags, libraries. Completely replaced with the new CMake scheme.

pamadm

Shell (sh) script for selecting modules of Dirac. Currently replaced with platform universal Python version.

Makefile, Makefile.in

Each subdirectory with source files contained own Makefile.in file, which was copied into local Makefile. There was the central Makefile in the trunk directory. Now there are no longer user written makefiles, all are generated by the CMake scheme in buildup directories.

pam

Shell (sh) script for running Dirac. Later it was replaced by Miro’s Python version. Ulf also provided an alternative ‘wrapper.py’ script.

testlast.sh

Shell (sh) script for running last test. Removed.

runtest

Also shell (sh) script for running test suite. Later substitued with Radovan’s Python runtest.

However, it was found that CMake’s own ctest program can do the whole job. Also results/filter and menu files in test directories were replaced with Radovan’s new test Python file.

Programming practices

Fortran90 and modular programming

The first programming language was Fortran77. In some time (maybe 2004?) one happens to have Dirac compiled also with Fortran90.

Instead of “#include <common_block.h>” we started to use “use mymodule”.

C++

The C++ programming language was introduced into Dirac by Ulf. It followed the C language which was in Dirac from its beginnings.

Memory management

The WORK/MEMGET/MEMREL scheme started to be replaced with classic Fortran dynamical allocations. Andre Gomes provided interface for that.

Long-term usage of implicit.h was no longer recommended, instead implicit none with explicit declarations are to be preferred.

8-bytes Integer

In the past we did not care about linking with integer*8 pre-compiled mathematical libraries when using 8-bytes integers. This changed by introducing integer-4/8 control tests against linked libraries.