Crystallographic fortran modules library (CFML): a simple toolbox for computing programs
Acta Crystallographica Section A Foundations of Crystallography
We have developed a set of Fortran 95 modules that may be used (in the Fortran 95 sense) in crystallographic and diffraction computing programs. Modern array syntax and new features of Fortran 95 (and soon Fortran 2k) are used through the modules. We take advantage of all object oriented programming (OOP) techniques already available in Fortran (user-defined types, encapsulation, overload of procedures and functions). The lacking features (e.g. inheritance and class methods) will be easily
... mented as soon as they become available in the forthcoming new standard. We aim to preserve the efficiency, the simplicity and the adequacy of modern Fortran for numerical calculations. All aspects of symmetry and handling of reflections are treated in dedicated modules. Main programs using the adequate modules may perform more or less complicated calculations with only few lines of code. The present library contains procedures for generating space groups from their Hermann-Mauguin or Hall symbols for whatever setting. More generic space groups with non-conventional lattice centering vectors can also be built using user defined generators. Reflection handling modules may be used for generating reflections in selected regions of reciprocal space and for calculating structure factors. The documentation is written in the source code. A document, in HTML format, containing the description of all modules and procedures can be generated using a program based itself on CFML. The source code will be put in a Web site in order to be accessible for people wishing to use/develop the modules in a collaborative team.