Skip to main content

Solving the Schrodinger equation using RBF Neural Net

Project description

Schrodinet

Build Status Codacy Badge

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

schrodinet-0.1.2.tar.gz (23.6 kB view details)

Uploaded Source

Built Distribution

schrodinet-0.1.2-py3-none-any.whl (28.7 kB view details)

Uploaded Python 3

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

Hashes for schrodinet-0.1.2.tar.gz
Algorithm Hash digest
SHA256 9eb95a73ffc3aa49c3c1d0f28ef40a6a9a75afc4a5cb30efa2004b4a47fecb29
MD5 555520efcb7dc5fb412191ff7ee8c363
BLAKE2b-256 f48aa60d3d1c7ddafa38858076aa9e1f389a089ee19ce028e83ca8492bf4c364

See more details on using hashes here.

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

Hashes for schrodinet-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7f40f000ea7a8a99bbab12d9ee588cad9624f902429c442874b00409aa4f2fa3
MD5 d218b0efe5103f92002fb700eacb4913
BLAKE2b-256 6534f0d0586d95b401b968c3523ce85321e61321c58a01abbe144b7546c5c7d1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page