Skip to content

jimlutsko/classicalDFT

Repository files navigation

Unit tests

classicalDFT

Welcome to classicalDFT

classicalDFT aims at making possible to do classical density functional theory (DFT) calculations in a smooth manner.

classicalDFT is a repository which started as a suite of code for doing advanced calculations in various research projects on the broad field of statistical physics. This suite of code has matured over the years and it successfully served its purpose. The evolution of this repository into a standard library (classicalDFT) was motivated by the apparent lack of a standard open-source repository for classical DFT calculations in a compiled and robust language, as is the case of C++.

In the future, a mailing list will be advertised here for questions, discussions, and other topics which might be worth channeling in a unified way.

Getting started

The standard rules for installing a C++ library from an external repository apply in this case too. However, such standard steps which might be obvious for experienced developers could become overwhelming for developers or researchers who just have some basic understanding of software development with CMake and C++. Considering the broad audience this project might be subject to, we recommend the following documentation links for the different users:

Requirements

classicalDFT is thought to keep requirements for building at minimum. However, there are some requirements which need to be satisfied for the correct funcitoning of the library. Such dependencies are:

If you notice any problems on your platform, please notify [email protected]. Patches for fixing them are more than welcome!

Features

In this section we will list the main features implemented in classicalDFT, e.g. the different DFT energy models, differentiation methods, etc. The library is currently being refactored with the aim of achieving a better harmonisation between the different modules implemented. For this reason, we'll be listing here only the modules which are ready in the new refactored version (though you can always check the original version in here):

  • Utils:

    • Console: A namespace with some convenient functionality when interacting with the console/terminal output
    • ConfigParser: A wrapper class of the boost::property_tree::ptree class which allows for parsing configuration files in the following formats: INI, JSON, XML and INFO
  • Graph:

    • Grace: A wrapper class which allows us to produce live graphs by interacting with xmgrace
  • Numerics:

    • Integrator: A wrapper class of some integration methods of the GSL libraries
    • CompensatedSum: A set of free functions and a wrapper class to carry out compensated summations
  • Physics:

    • Potential: This module/class contains the fundamental ingredients to model an inter-particle potential. Besides, it offers three different models, namely: Lennard-Jones, ten Wolde-Frenkel and Wang-Ramirez-Dobnikar-Frenkel potentials

Platforms

classicalDFT has been used on a variety of platforms:

  • Linux
  • Mac OSX
  • Windows (by using WSL)

Authors

Contributing

If you feel like contributing to this project, please read the CONTRIBUTING.md where you will find the basic details on how to contribute to classicalDFT.

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details

Acknowledgments

Development was funded by ESA