This program aims at being readable, fast and versatile using Modern Fortran features.
The most general situation (i.e. short-range and dipolar interactions) requires 2 fundamental constants and 2 bases units, e.g.:
Module procedures and Final subroutines may improve the implementations of constructors and destructors. However, current compilers may not handle them correctly.
Null Objects are used to deactivate a class behaviour without impairing the readability nor the stability of the code. However, they currently raise warnings for ``unused dummy arguments''. A new intent may solve this problem (e.g. intent(none)).