The code is not a monolithic piece of software but a collection of independent packages that may be installed independently. The Installer script has been designed for the purpose.
Tips for developers¶
Choose the correct package in which to insert the developments¶
The first question to ask yourself is the generality of the
functionality you are going to implement.
The spirit is to work at the lowest possible level for a given task.
The idea is to make available the functionality also to other potential
users of the
This will also help in a better structure of the API of each package.
For instance, suppose you would like to implement a continuum solvent
cavity determination for a particular DFT run of a molecular system.
The correct level of development in this case would be the
package, as this is presently dealing with continuum solvents and cavities.
For a general overview one might say that:
futiledeals with low-level functionalities like
stdlib(but for FORTRAN). New MPI wrappers, strategies for memory copy and allocations should be implemented there.
at_lablibrary (will) deal with all the operations which are associated to position
Document the API of the high-level routines¶
write something here
Create a test for the functionality¶
Each of the packages has its own continuous integration procedure, refer to it for a suitable implementation.
psolver: F_REGTEST_INSTRUCTION (to be documented)
Make a notebook which demonstrates the functionality in PyBigDFT¶
For each new high level functionality, you should create a jupyter notebook which demonstrates the new capability. The idea is to ensure continuity and to help acquaint users with the new feature. Some examples of notebooks can be found on github.
Insert the notebook as a tutorial in the PyBigDFT documentation¶
Once an appropriate notebook has been written, this should be added to the tutorial directory (
BIGDFT_ROOT/PyBigDFT/source/tutorials), so that the documentation will be automatically generated and available as a tutorial at pybigdft_tutorials.