Metadata-Version: 2.1
Name: PyDPFT
Version: 1.0.6
Summary: A package for density potential functional theory
Home-page: https://github.com/tesla-cat/PyDPFT
Author: Ding Ruiqi
Author-email: 416640656@qq.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown


# PyDPFT demo


A package for Density Potential Functional Theory introduced by Julian Schwinger and Berge Englert.

A project developed by Ding Ruiqi from National University of Singapore Physics Department for his bachelor thesis

`Author:` Ding Ruiqi

`Date:` 6 April 2020

`Thesis:` https://tesla-cat.github.io/about/Bachelor-Thesis.pdf 

`Presentation:` https://github.com/tesla-cat/PyDPFT/Thesis/PPT

`PyPI:` https://pypi.org/project/PyDPFT/

`Github:` https://github.com/tesla-cat/PyDPFT

**Run this notebook in Google Colab:** https://colab.research.google.com/drive/1bC64gVM2WMk85MH2clTqDnBbaLhLCwTr


`Highlights:`
  - multi-GPU acceleration
  - optimized using Tensor operation (instead of for-loop) 
  - implemented from 1D to 3D with auto detection

## import



```python
!pip install PyDPFT
from PyDPFT import PyDPFT
from PyDPFT.plot import plot
```

    Collecting PyDPFT
      Downloading https://files.pythonhosted.org/packages/b9/f4/c9989112b6c1beafbd7c592ebe07864dcae9d8d93f5878af1207187d3331/PyDPFT-0.0.7-py3-none-any.whl
    Installing collected packages: PyDPFT
    Successfully installed PyDPFT-0.0.7


## 1D Hartree interaction


```python
config = {
    'space':{'x':[-5,5,100]},
    'loop':{'Imax':1000,'precision':1e-6,'mix':0.05},
    'const':{'epsilon':1e-3},
    'rho':{'N':32},
    'Vint':{'name':'Hartree','coef':1},
}

dpft = PyDPFT(config)
Vext = 1e3*dpft.x ** 2
Vx,Vint,rho,N = dpft(Vext)
plot(dpft,Vx,Vint,rho)
```

    PyDPFT: Written by Ding Ruiqi from NUS for his bachelor thesis
    PyDPFT: Detected dim = 1
    PyDPFT: Using 1 GPUs !
    PyDPFT: Starting the self consistent loop
    PyDPFT: Converged after 223 iterations in 2.0902912616729736 seconds!



![png](output_3_1.png)


## 2D Dipole-dipole interaction in momentum (p) space


```python
config = {
    'space':{'x':[-5,5,50],'y':[-5,5,50]},
    'loop':{'Imax':1000,'precision':1e-6,'mix':0.05},
    'const':{'epsilon':1e-2,'mu':[0.7, 0.7]},
    'rho':{'N':32},
    'Vint':{'name':'Dipole-p','coef':.1},
}

dpft = PyDPFT(config)
Vext = dpft.xx**2 + dpft.yy**2
Vx,Vint,rho,N = dpft(Vext)
plot(dpft,Vx,Vint,rho)
```

    PyDPFT: Written by Ding Ruiqi from NUS for his bachelor thesis
    PyDPFT: Detected dim = 2
    PyDPFT: Using 1 GPUs !
    PyDPFT: Starting the self consistent loop
    PyDPFT: Converged after 219 iterations in 11.653722524642944 seconds!



![png](output_5_1.png)


## 3D Dipole-dipole interaction in position (x) space


```python
config = {
    'space':{'x':[-5,5,20],'y':[-5,5,20],'z':[-5,5,20]},
    'loop':{'Imax':1000,'precision':1e-6,'mix':0.05},
    'const':{'epsilon':1e-2,'mu':[0.7, 0.7, 0]},
    'rho':{'N':32},
    'Vint':{'name':'Dipole-x','coef':5},
}

dpft = PyDPFT(config)
Vext = dpft.xx**2 + dpft.yy**2 + dpft.zz**2
Vx,Vint,rho,N = dpft(Vext)
plot(dpft,Vx,Vint,rho)
```

    PyDPFT: Written by Ding Ruiqi from NUS for his bachelor thesis
    PyDPFT: Detected dim = 3
    PyDPFT: Using 1 GPUs !
    PyDPFT: Starting the self consistent loop
    PyDPFT: Converged after 142 iterations in 4.736774921417236 seconds!



![png](output_7_1.png)



