https://github.com/v1j4y/hubham
A simple HPC massively parallel Hubbard Hamiltonian solver (Exact diagonalization) for general topologies given using the .graphml format.
https://github.com/v1j4y/hubham
exact-diagonalization hubbard petsc slepc
Last synced: 5 months ago
JSON representation
A simple HPC massively parallel Hubbard Hamiltonian solver (Exact diagonalization) for general topologies given using the .graphml format.
- Host: GitHub
- URL: https://github.com/v1j4y/hubham
- Owner: v1j4y
- License: gpl-2.0
- Created: 2023-11-06T13:43:22.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-11-12T17:45:56.000Z (over 1 year ago)
- Last Synced: 2024-11-12T18:35:45.437Z (over 1 year ago)
- Topics: exact-diagonalization, hubbard, petsc, slepc
- Language: C
- Homepage: https://v1j4y.github.io
- Size: 115 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](http://dx.doi.org/10.5281/zenodo.20450)
# HubHam
Hubbard Hamiltonian
===================
(under GNU GENERAL PUBLIC LICENSE v2)
This program can perform Exact diagonalization calculations of various types of
model Hamiltonians. It is especially optimized for the Hubbard Hamiltonian
type model Hamiltonians. The core feature which the program is specialized for
is the adressing of determinant in an efficient manner to quickly construct the
Hamiltonian non-zero matrix-elements. Once the Hamiltonian is constructed in
its sparse format, it is stored in distributed memory for all linear algebra
operations.
The main work of diagonalizing the Hamiltonian is performed using PETSc and
SLEPc helper functions. These functions return the eigenvectors which are
not stored to disk by default due to their large size.
This project also contains subroutines which analyze the wavefunction in
its distributed memory form and calculates the various observables. The
output of the program are the energies and the various observables such as
the total Spin, various Spin-Spin correlation functions, and one-and two-body
density matrices.
Note: Caluculation of S2 can be deactivated to save memory and perform
larger matrix diagonalizations.
_Dependencies_
---------------
1. [PETSc](https://www.mcs.anl.gov/petsc/documentation/installation.html)
2. [SLEPc](http://slepc.upv.es/documentation/instal.htm)
3. [IGraph](http://igraph.org/c/)
4. [slaterlib](http://github.com/scemama/slaterlib)
_Compiling_
------------
1. Configure with explicit paths of installation directories of PETSc and SLEPc.
```shell
./autogen.sh
./configure CFLAGS="-I{PATH-TO-INCLUDE-SLEPC-PETSC-FILES} " LDFLAGS="-L{PATH-FOR-LIBRARY-FILES} -lpetsc -lslepc -lpetsc -lslater -ligraph -lm" CC=mpicc
```
2. Make the executable
```shell
make
make install
```
_Using HubHam_
---------------
1. The HubHam program requires an input file which
has is in the `graphml` format. A few sample files
have been provided in the `data/` directory.
2. running HubHam
```shell
mpiexec -n [nprocs] ./bin/ex1 -eps_nev 10 -f data/c8h8_mma.graphml
```
_Publications using this code_
-------------------------------
1. High-Spin Chains and Crowns from Double-Exchange Mechanism [doi:10.3390/cryst6040039](http://www.dx.doi.org/10.3390/cryst6040039)