Julia package for the construction of quantum lattice systems.
Welcome to QuantumLattices. Here we provide a general framework to construct the second quantized operator formed Hamiltonian of any quantum lattice system, with the inputs as simple as its description by natural languages. Combined with SymPy, this operator formed Hamiltonian supports complete symbolic computations, making it a convenient prerequisite of quantum many-body algorithms, such as TBA(tight-bind approximation), SCMF(self-consistent mean field theory), ED(exact diagonalization), CPT/VCA(cluster perturbation theory and variational cluster approach ), DMRG(density matrix renormalization group), etc. Generic interfaces are defined to give a unified access to these algorithms although their real implementations come in separate packages. Only minor modifications need be made when users alter from one algorithm to another.
In Julia v1.1+, please type
] in the REPL to use the package mode, then type this command:
pkg> add QuantumLattices
The core of the package is the construction of the operator representations of lattice Hamiltonians. This is based on the following mathematical observations that the operators in a lattice Hamiltonian:
The first observation is the starting point of our unitcell description framework and the second is the mathematical foundation of our symbolic computing system.
It is noted that our implementation of the symbolic computation only involves
The symbolic operations between two scalars are not implemented because:
Another major aim of this package is to provide unified interfaces to access all quantum-many algorithms. Much of the job can be done by the construction of the operator-formed Hamiltonians, which serves as a common input for different algorithms. The remaining stuff concerns mainly with project management, such as result recording, data caching, parameter updating, code logging, dependency managing, etc. Utilities are provided to handle these tasks.
Three common kinds of systems in condensed matter physics are perfectly supported:
Furthermore, other systems can be supported easily by extending the generic "protocols" provided in this package.
Concrete algorithms are implemented in separate packages (still in progress):
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.
HamiltonianPy: in fact, the authors of this Julia package worked on the python package at first and only turned to Julia later.
7 days ago