Dirac Museum

As the Dirac suite is developing, from time to time it is abandoning various parts of code or is switching to new programming schemes. Each good software should keep and document own history. Past involves many hours behind the computer screen, plenty of new lines of the code, repeated tests and mainly - new ideas how to do things better.

Everything can be traced in the deepness of the git repository. But some milestones in the code progress are 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 one was the CVS. Later it was replaced with 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 with 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 Python runtest. However, it was found that CMake’s ctest can do the whole job. Also results/filter and menu files in the test directory are 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++

C++ was introduced into Dirac by Ulf.

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 with introducing integer-4/8 control tests against linked libraries.