Giter VIP home page Giter VIP logo

quantumlattices.jl's Introduction

QuantumLattices.jl

CI codecov 996.icu LICENSE LICENSE Code Style: Blue ColPrac: Contributor's Guide on Collaborative Practices for Community Packages

Julia package for the construction of quantum lattice systems.

Welcome to QuantumLattices. Here we provide a general framework to construct the operator-formed Hamiltonian of any quantum lattice system, with the inputs as simple as its description by the natural language. This operator-formed Hamiltonian supports complete symbolic computations when combined with SymPy, and can serve as a convenient frontend of quantum many-body algorithms, such as TBA (tight-bind approximation), LSWT (linear spin wave theory), SCMF (self-consistent mean field theory), ED (exact diagonalization), CPT/VCA (cluster perturbation theory / variational cluster approach), DMRG (density matrix renormalization group), etc. Generic interfaces are defined to provide a unified access to these algorithms with automatic project management.

Installation

In Julia v1.8+, please type ] in the REPL to use the package mode, then type this command:

pkg> add QuantumLattices

Package Features

The mathematical foundations of our package is that the operators in a lattice Hamiltonian:

  • act on local Hilbert spaces, and
  • form an algebra over the complex field.

Based on this, the package has the following features:

  • Unitcell Description Framework: the Hamiltonian can be constructed based on the unitcell of a lattice with the information of the local algebra acting on the local Hilbert space living on each point and the terms that couples different degrees of freedom on the same or different points. Such information can be input into the program as simple as describing the quantum system in a usual research paper.

  • Complete Symbolic Computation: with only this package, symbolic computation between operators is realized while the coefficient of any operator remains numeric; by integrating it with SymPy, complete symbolic computation can be achieved and no modifications need be made on the methods in this package.

  • Generic Frontend of Many-Body Algorithms: with the operator-formed Hamiltonian as the foothold, quantum many-body algorithms can be initialized in quite similar ways with only minor modifications needed. Moreover, automatic project management is realized, including that of result recording, data caching, parameter updating, information logging, dependency managing, etc.

Supported Systems

Four common categories of quantum lattice systems in condensed matter physics are supported:

  • canonical complex fermionic systems
  • canonical complex and hard-core bosonic systems
  • SU(2) spin systems
  • Phononic systems

Furthermore, other systems can be supported easily by extending the generic protocols provided in this package.

Supported Algorithms

Concrete algorithms could be considered as the "backend" of quantum lattice systems. They are developed in separate packages (still in progress):

  • TBA: tight-binding approximation for complex-fermionic/complex-bosonic/phononic systems;
  • SCMF: self-consistent mean field theory for complex fermionic systems;
  • ED: exact diagonalization for complex-fermionic/hard-core-bosonic/local-spin systems;
  • CPT/VCA: cluster perturbation theory and variational cluster approach for complex fermionic and local spin systems;
  • DMRG: density matrix renormalization group for complex-fermionic/hard-core-bosonic/local-spin systems;
  • LSWT: linear spin wave theory for magnetically ordered local-spin systems.

Getting Started

  • [Tutorials: unitcell description](@ref UnitcellDescriptionIntroduction)
  • [Tutorials: advanced topics](@ref AdvancedTopicsIntroduction)

Note

Due to the fast development of this package, releases with different minor version numbers are not guaranteed to be compatible with previous ones before the release of v1.0.0. Comments are welcomed in the GitHub issues.

Contact

[email protected]

Python counterpart

HamiltonianPy: in fact, the authors of this Julia package worked on the python package at first and only turned to Julia later.

quantumlattices.jl's People

Contributors

github-actions[bot] avatar waltergu avatar wwangnju avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

quantumlattices.jl's Issues

Request for Examples

Hello, thank you for making public a very robust numerical package. As it is currently, I do not see a lot of tutorial support or examples. In order for the package to be more user friendly, perhaps you could create some basic tutorials that give examples of say?

-diagonalizing a tight-binding fermionic Hamiltonian to get the dispersion on say a square lattice and /or honeycomb lattice.

  • Exact diagonalization of something simpler like a three or four site triangle or Heisenberg
  • A simple magnon dispersion from linear spin-wave theory.

Building off of these examples would be useful for others hoping to implement your package.

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Plot of lattice is incorrect

Hi,
I was trying to plot some simple lattices, such as
l = Lattice((0.0, 0.0), (0.5, 0.5); vectors=[[1.0, 0.0], [0.0, 1.0]], name=:Square)
with
plot(l,4)
And I see following picture
image

Plot of Lattice

It seams that at the moment it is impossible to plot Lattice, is there any plans to add this to the package ?

Test fails then hangs

I'm looking through PkgEval results and seeing a timeout on QuantumLattices. Locally, I see the following test failure, followed by a hang:

FunctionFactory: Test Failed at /home/keno/.julia/packages/QuantumLattices/9eivC/test/Prerequisites/Factories.jl:121
  Expression: ff.body == Block($(Expr(:quote, quote
    choice(x, y)
end)))
   Evaluated: Block(
  body: Any[:(#= /home/keno/.julia/packages/QuantumLattices/9eivC/test/Prerequisites/Factories.jl:115 =#), :(choice(x, y))]
) == Block(
  body: Any[:(choice(x, y))]
)
Stacktrace:
 [1] top-level scope at /home/keno/.julia/packages/QuantumLattices/9eivC/test/Prerequisites/Factories.jl:121
 [2] top-level scope at /home/keno/julia-old/usr/share/julia/stdlib/v1.3/Test/src/Test.jl:1113
 [3] top-level scope at /home/keno/.julia/packages/QuantumLattices/9eivC/test/Prerequisites/Factories.jl:107

This is on master. I suspect the package may have to be made robust to LineNumberNode parsing differences.

More examples for better documentation

I am quite interested in this package as a tool to tackle quantum many body system in physics.
However, I found the documentation quite primitive, lacking examples to clarify the usage.

I want to know is there any way to implement a Hamiltonian using spin matrices? And if there is any way to implement a time evolution?

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.