Coder Social home page Coder Social logo

mlewe / evomps Goto Github PK

View Code? Open in Web Editor NEW

This project forked from amilsted/evomps

0.0 2.0 0.0 5.6 MB

An implementation of the time dependent variational principle for matrix product states

Home Page: http://amilsted.github.io/evoMPS/

License: Other

Python 100.00%
physics simulation quantum-mechanics

evomps's Introduction

evoMPS |. |.:|::>

Quantum many-particle dynamics in 1D with matrix product states

What's new?

  • Python 3 is now supported as well as Python 2 (2.7 and up)
  • Removed dependency on EXPOKIT extension module for use of the "split-step" integrator

Tutorial videos:

Note: These are based on an older version of evoMPS, but the differences are minor.
Most importantly, compilation of extension modules is no longer necessary.

Introduction

evoMPS can find ground states and low-lying excited states of one-dimensional quantum systems (local, translation-invariant Hamiltonians) directly in the thermodynamic limit of infinitely long chains. States are represented as infinite matrix product states (MPS) invariant under translation by L sites (block-translation invariant).

evoMPS finds ground states efficiently, even for critical systems, using the nonlinear conjugate gradient method. It computes dispersion relations using the MPS tangent space as ansatz states for low-lying excitations with well-defined momenta.

evoMPS can also simulate nonuniform dynamics in a finite window of an infinite system.

The above features set evoMPS apart from other MPS and DMRG software, which do not usually work directly in the thermodynamic limit and do not exploit the MPS tangent space as an excitations ansatz. In addition, evoMPS can find ground states and simulate real-time dynamics of finite systems with open boundary conditions.

evoMPS is based on algorithms published by Haegeman et al. [1] and Milsted et al. [2], among others.

See the INSTALL file for installation instructions!

Key Features

  • Finds ground states and simulates dynamics of infinite systems
  • Nonlinear conjugate gradient methods for finding ground states in infinite systems
  • Calculates dispersion relations for infinite systems using tangent plane methods
  • Handles locally nonuniform infinite systems (sandwich MPS aka infinite boundary conditions)
  • Time-Dependent Variational Principle for simulating time evolution
  • Runge-Kutta (RK4) and split-step (finite only) integrators for greater accuracy
  • Supports local Hamiltonians: nearest-neighbour (or next-nearest neighbour)
  • Limited support for long range Hamiltonians (in development, currently for finite systems only, using MPOs)

Usage

The evoMPS algorithms are presented as python classes to be used in a script. Some example scripts can be found in the "examples" directory. To run an example script without installing the evoMPS modules, copy it to the base directory first e.g. under Windows:

copy examples\transverse_ising_uniform.py .
python transverse_ising_uniform.py

Essentially, the user defines a spin chain Hilbert space and a nearest-neighbour Hamiltonian and then carries out a series of small time steps (numerically integrating the effective Schrödinger equation for the MPS parameters):

sim = EvoMPS_TDVP_Uniform(bond_dim, local_hilb_dim, my_hamiltonian)

for i in range(max_steps):
    sim.update()

    my_exp_val = sim.expect_1s(my_op)

    sim.take_step_RK4(dtau)

Operators, including the Hamiltonian, are defined as arrays like this:

pauli_z = numpy.array([[1, 0],
                       [0, -1]])

Calculating expectation values or other quantities can be done after each step as desired.

Switching between imaginary time evolution (for finding the ground state) and real time evolution is as easy as multiplying the time step size by a factor of i!

Contact

Please send comments to:

ashmilsted at <google's well-known email service>

To submit ideas or bug reports, please use the GitHub Issues system <http://github.com/amilsted/evoMPS/>.

References

  1. J. Haegeman, J. I. Cirac, T. J. Osborne, I. Pizorn, H. Verschelde and F. Verstraete, arXiv:1103.0936. <http://arxiv.org/abs/1103.0936v2>.
  2. A. Milsted, T. J. Osborne, F. Verstraete, J. Haegeman, arXiv:1207.0691. <http://arxiv.org/abs/1207.0691>.

About

evoMPS was originally developed as part of an MSc project by Ashley Milsted, supervised by Tobias Osborne at the Institute for Theoretical Physics of Leibniz Universität Hannover <http://www.itp.uni-hannover.de/>.

evomps's People

Contributors

amilsted avatar mlewe avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.