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.
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:
- Beginners: classicalDFT Primer
- Experienced programmers: How to install classicalDFT
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:
- C++14-standard-compliant compiler, we recommend to check GNU Compiler Collection
- CMake (version >= 3.8)
- Boost provides free peer-reviewed portable C++ source libraries
- GNU Scientific Library
- FFTW3 a library designed to compute discrete Fourier transforms
- Grace plotting tool for the X Window System
- Google Test a testing framework developed by Google's Testing Technology team
If you notice any problems on your platform, please notify [email protected]. Patches for fixing them are more than welcome!
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):
-
- 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
andINFO
-
- Grace: A wrapper class which allows us to produce live graphs by interacting with xmgrace
-
- 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
- Integrator: A wrapper class of some integration methods of the
-
- 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
classicalDFT has been used on a variety of platforms:
- Linux
- Mac OSX
- Windows (by using WSL)
- James F. Lutsko - Initial work - lutsko.com
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.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details
Development was funded by ESA