Solving the Schrodinger equation using RBF Neural Net
Project description
Schrodinet
Quantum Monte-Carlo Simulations of one-dimensional problem using Radial Basis Functions Neural Networks.
Installation
Clone the repo and pip
insatll the code
git clone https://github.com/NLESC-JCER/Schrodinet/
cd Schrodinet
pip install .
Harmonic Oscillator in 1D
The script below illustrates how to optimize the wave function of the one-dimensional harmonic oscillator.
import torch
from torch import optim
from schrodinet.sampler.metropolis import Metropolis
from schrodinet.wavefunction.wf_potential import Potential
from schrodinet.solver.solver_potential import SolverPotential
from schrodinet.solver.plot_potential import plot_results_1d, plotter1d
def pot_func(pos):
'''Potential function desired.'''
return 0.5*pos**2
def ho1d_sol(pos):
'''Analytical solution of the 1D harmonic oscillator.'''
return torch.exp(-0.5*pos**2)
# Define the domain and the number of RBFs
# wavefunction
wf = Potential(pot_func, domain, ncenter, fcinit='random', nelec=1, sigma=0.5)
# sampler
sampler = Metropolis(nwalkers=1000, nstep=2000,
step_size=1., nelec=wf.nelec,
ndim=wf.ndim, init={'min': -5, 'max': 5})
# optimizer
opt = optim.Adam(wf.parameters(), lr=0.05)
scheduler = optim.lr_scheduler.StepLR(opt, step_size=100, gamma=0.75)
# Solver
solver = SolverPotential(wf=wf, sampler=sampler,
optimizer=opt, scheduler=scheduler)
# Train the wave function
plotter = plotter1d(wf, domain, 100, sol=ho1d_sol)
solver.run(300, loss='variance', plot=plotter, save='model.pth')
# Plot the final wave function
plot_results_1d(solver, domain, 100, ho1d_sol, e0=0.5, load='model.pth')
After otpimization the following trajectory can easily be generated :
The same procedure can be done on different potentials. The figure below shows the performace of the method on the harmonic oscillator and the morse potential.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file schrodinet-0.1.2.tar.gz
.
File metadata
- Download URL: schrodinet-0.1.2.tar.gz
- Upload date:
- Size: 23.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9eb95a73ffc3aa49c3c1d0f28ef40a6a9a75afc4a5cb30efa2004b4a47fecb29 |
|
MD5 | 555520efcb7dc5fb412191ff7ee8c363 |
|
BLAKE2b-256 | f48aa60d3d1c7ddafa38858076aa9e1f389a089ee19ce028e83ca8492bf4c364 |
File details
Details for the file schrodinet-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: schrodinet-0.1.2-py3-none-any.whl
- Upload date:
- Size: 28.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f40f000ea7a8a99bbab12d9ee588cad9624f902429c442874b00409aa4f2fa3 |
|
MD5 | d218b0efe5103f92002fb700eacb4913 |
|
BLAKE2b-256 | 6534f0d0586d95b401b968c3523ce85321e61321c58a01abbe144b7546c5c7d1 |