Skip to main content

PyDFTlj

An python library for calculations using the classical Density Functional Theory (cDFT) for Lennard-Jones fluids in 1D and 3D geometries.

Dependencies

  • NumPy is the fundamental package for scientific computing with Python.
  • SciPy is a collection of fundamental algorithms for scientific computing in Python.
  • PyFFTW is a pythonic wrapper around FFTW, the speedy FFT library.
  • PyTorch is a high-level library for machine learning, with multidimensional tensors that can also be operated on a CUDA-capable NVIDIA GPU.
  • Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python.
  • Optional: SciencePlots is a Matplotlib styles for scientific figures

Installation

Option 1: Using setup.py

Clone PyDFTlj repository if you haven't done it yet.

git clone https://github.com/elvissoares/PyDFTlj

Go to PyDFTlj's root folder, there you will find setup.py file, and run the command below:

pip install -e .

The command -e permits to edit the local source code and add these changes to the pydftlj library.

Option 2: Using pip to install directly from the GitHub repo

You can run

pip install git+https://github.com/elvissoares/PyDFTlj

and then you will be able to access the pydftlj library.

cDFT basics

The cDFT is the extension of the equation of state to treat inhomogeneous fluids. For a fluid with temperature T, total volume V, and chemical potential $\mu$ specified, the grand potential, $\Omega$, is written as

$$\Omega[\rho(\boldsymbol{r})] = F[\rho (\boldsymbol{r})] + \int_{V} [ V^{(\text{ext})}(\boldsymbol{r}) - \mu ]\rho(\boldsymbol{r}) d\boldsymbol{r}$$

where $F[\rho (\boldsymbol{r})] $ is the free-energy functional, $V^{(\text{ext})} $ is the external potential, and $\mu $ is the chemical potential. The free-energy functional can be written as a sum $ F = F^\text{id} + F^\text{exc} $, where $F^\text{id} $ is the ideal gas contribution and $F^\text{exc}$ is the excess contribution.

The ideal-gas contribution $F^\text{id} $ is given by the exact expression

$$ F^{\text{id}}[\rho (\boldsymbol{r})] = k_B T\int_{V} \rho(\boldsymbol{r})[\ln(\rho (\boldsymbol{r})\Lambda^3)-1] d\boldsymbol{r}$$

where $k_B $ is the Boltzmann constant, and $\Lambda $ is the well-known thermal de Broglie wavelength.

The excess Helmholtz free-energy, $F^{\text{exc} }$, is the free-energy functional due to particle-particle interactions and can be splitted in the form

$$ F^{\text{exc}}[\rho (\boldsymbol{r})] = F^{\text{hs}}[\rho (\boldsymbol{r})] + F^{\text{att}}[\rho (\boldsymbol{r})] $$ where $F^{\text{hs}} $ is the hard-sphere repulsive interaction excess contribution and $F^{\text{att}} $ is the attractive interaction excess contribution.

The hard-sphere contribution, $F^{\text{hs}} $, represents the hard-sphere exclusion volume correlation and it can be described using different formulations of the fundamental measure theory (FMT) as

The attractive contribution, $F^\text{att}$, of the Lennard-Jones potential can be described by several formulations as listed below:

where [x] represents the implemented functionals.

The thermodynamic equilibrium is given by the functional derivative of the grand potential in the form

$$ \frac{\delta \Omega}{\delta \rho(\boldsymbol{r})} = k_B T \ln(\rho(\boldsymbol{r}) \Lambda^3) + \frac{\delta F^{\text{exc}}[\rho]}{\delta \rho(\boldsymbol{r})} +V^{(\text{ext})}(\boldsymbol{r})-\mu = 0$$

When necessary, we use the MBWR1 equation of state for Lennard-Jones Fluids. We also describe the direct correlation function using the double Yukawa potential from the FMSA2.

Cite PyDFTlj

If you use PyDFTlj in your work, please consider to cite it using the following reference:

Soares, Elvis do A, Amaro G Barreto, and Frederico W Tavares. 2023. “Classical Density Functional Theory Reveals Structural Information of H2 and CH4 Fluids Adsorbed in MOF-5.” Fluid Phase Equilibria, July, 113887. ArXiv: 2303.11384

Bibtex:

@article{Soares2023, 
author = {Soares, Elvis do A and Barreto, Amaro G and Tavares, Frederico W}, 
doi = {10.1016/j.fluid.2023.113887}, 
issn = {03783812}, 
journal = {Fluid Phase Equilibria}, 
keywords = {Adsorption,Density functional theory,Metal–organic framework,Structure factor}, 
month = {jul}, 
pages = {113887}, 
title = {{Classical density functional theory reveals structural information of H2 and CH4 fluids adsorbed in MOF-5}}, 
url = {https://linkinghub.elsevier.com/retrieve/pii/S037838122300167X}, 
year = {2023} 
} 

Contact

Elvis Soares: elvis.asoares@gmail.com

Universidade Federal do Rio de janeiro

School of Chemistry

Usage example

To access the examples folder you will need to clone PyDFTlj repository if you haven't done it yet.

git clone https://github.com/elvissoares/PyDFTlj

The, you can access our examples folder and you can find different applications of the PyDFTlj.

Lennard-Jones equation of State (Example1-Phasediagram-Methane.ipynb)

Figure1 Figure2
Fig.1 - The phase diagram of the LJ fluid. The curve represents the MBWR EoS1. Fig.2 - The saturation pressure as a function of the inverse of the temperature.

Confined LJ fluid (Example2-Hardwall3D.ipynb)

Figure3
Fig.3 - The density profiles of LJ fluid near a hardwall with reduce temperature T*=1.35 and reduced density of ρ*=0.5. Symbols: MC data. Lines: Different DFT formulations.
Figure4
Fig.4 - The density profiles of LJ fluid confined in slit-like pores at reduced density of ρ*=0.5925 and reduced temperature of T*=1.2 for pore size of H = 7.5, 4.0, 3.0, 1.8$\sigma$. Symbols: MC data. Lines: Different DFT formulations.

LJ fluid Radial Distribution Function (Example3-RadialDistributionFunction.ipynb)

Figure7
Fig.7 - The radial distribution function of LJ fluid at reduced density of ρ*=0.84 and reduced temperature of T*=0.71. Symbols: MC data. Lines: Different DFT formulations.

Adsorption of CH4 inside MOF-5 (Example4-Adsorption3D_CH4_on_MOFs.ipynb)

Figure8
Fig.8 - Excess adsorbed quantity of CH4 inside the MOF-5 at 300 K. Symbols: MC data. Lines: Different DFT formulations.

References

  1. Johnson, J. K., Zollweg, J. A., & Gubbins, K. E. (1993). The Lennard-Jones equation of state revisited. Molecular Physics, 78(3), 591–618. ↩ ↩2

  2. Tang, Y., & Lu, B. C. Y. (2001). On the mean spherical approximation for the Lennard-Jones fluid. Fluid Phase Equilibria, 190(1–2), 149–158. ↩

Release files for pydftlj 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pydftlj 1.0.1
File Size Uploaded
pydftlj-1.0.1.tar.gz 39.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pydftlj 1.0.1
File Interpreter ABI Platform
pydftlj-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 76.6 kB

Release files / pydftlj-1.0.1.tar.gz

Download URL pydftlj-1.0.1.tar.gz
Size 39.9 kB
Tags Source
SHA-256 checksum
How to use checksums
62f46f96c5592d963f6a1eb7b09d404cc394b64a438dd3dca44669543ea5caad
BLAKE2b-256 checksum
How to use checksums
72c99452b50cedecde94adc9037984951f8f9f604ff0b2f2017632e8bd65be6b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / pydftlj-1.0.1-py3-none-any.whl

Download URL pydftlj-1.0.1-py3-none-any.whl
Size 36.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d7e0df13e23a4375087a3da998ba8c9cc8ffd46c380ebe51d375a3f227f87555
BLAKE2b-256 checksum
How to use checksums
525cc842f2c6f0d01788548152f874530421cdc8b0cfa815cd08569230bbcac7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release history Release notifications | RSS feed

1.0.2

2 release files

This release

1.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page