Skip to content
Snippets Groups Projects
README.md 2.94 KiB
Newer Older
Kostas Vilkelis's avatar
Kostas Vilkelis committed
# `MeanFi`
root's avatar
root committed

Kostas Vilkelis's avatar
Kostas Vilkelis committed
## What is `MeanFi`?
root's avatar
root committed

Kostas Vilkelis's avatar
Kostas Vilkelis committed
`MeanFi` is a Python package that performs self-consistent Hartree-Fock calculations on tight-binding models.
Kostas Vilkelis's avatar
Kostas Vilkelis committed
It aims to find the groundstate of a Hamiltonian with density-density interactions
root's avatar
root committed

Kostas Vilkelis's avatar
Kostas Vilkelis committed
$$
\hat{H} = \hat{H_0} + \hat{V} = \sum_{ij} h_{ij} c^\dagger_{i} c_{j} + \frac{1}{2} \sum_{ij} v_{ij} \hat{n}_i \hat{n}_j,
$$
root's avatar
root committed

Kostas Vilkelis's avatar
Kostas Vilkelis committed
and computes the mean-field correction $\hat{V}_{\text{MF}}$ which approximates the interaction term:

$$
\hat{V} \approx \hat{V}_{\text{MF}} = \sum_{ij} \tilde{v}_{ij} c^\dagger_{i} c_{j}.
$$

For more details, refer to the [theory overview](docs/source/documentation/mf_notes.md) and [algorithm description](docs/source/documentation/algorithm.md).

Kostas Vilkelis's avatar
Kostas Vilkelis committed
## How to use `MeanFi`?
Kostas Vilkelis's avatar
Kostas Vilkelis committed

The calculation of a mean-field Hamiltonian is a simple 3-step process:

1. **Define**

    To specify the interacting problem, use a `Model` object which collects:
    - Non-interacting Hamiltonian as a tight-binding dictionary.
    - Interaction Hamiltonian as a tight-binding dictionary.
    - Particle filling number in the unit cell.
2. **Guess**

    Construct a starting guess for the mean-field correction.

3. **Solve**

    Solve for the mean-field correction using the `solver` function and add it to the non-interacting part to obtain the total mean-field Hamiltonian.

```python
Kostas Vilkelis's avatar
Kostas Vilkelis committed
import meanfi
Kostas Vilkelis's avatar
Kostas Vilkelis committed

#Define
h_0 = {(0,) : onsite, (1,) : hopping, (-1,) : hopping.T.conj()}
h_int = {(0,) : onsite_interaction}
Kostas Vilkelis's avatar
Kostas Vilkelis committed
model = meanfi.Model(h_0, h_int, filling=2)
Kostas Vilkelis's avatar
Kostas Vilkelis committed

#Guess
Kostas Vilkelis's avatar
Kostas Vilkelis committed
guess = meanfi.guess_tb(guess_hopping_keys, ndof)
Kostas Vilkelis's avatar
Kostas Vilkelis committed

#Solve
Kostas Vilkelis's avatar
Kostas Vilkelis committed
mf_correction = meanfi.solver(model, guess)
h_mf = meanfi.add_tb(h_0, mf_correction)
Kostas Vilkelis's avatar
Kostas Vilkelis committed
```

For more details and examples on how to use the package, we refer to the [tutorials](docs/source/tutorial/hubbard_1d.md).

Kostas Vilkelis's avatar
Kostas Vilkelis committed
## Why `MeanFi`?
Kostas Vilkelis's avatar
Kostas Vilkelis committed

Kostas Vilkelis's avatar
Kostas Vilkelis committed
Here is why you should use `MeanFi`:
Kostas Vilkelis's avatar
Kostas Vilkelis committed

* Simple

    The workflow is straightforward.
    Interface with `Kwant` allows easy creation of complicated tight-binding systems and interactions.

* Extensible

Kostas Vilkelis's avatar
Kostas Vilkelis committed
    `MeanFi`'s code is structured to be easy to understand, modify and extend.
Kostas Vilkelis's avatar
Kostas Vilkelis committed

* Optimized numerical workflow

    Introduces minimal overhead to the calculation of the mean-field Hamiltonian.


Kostas Vilkelis's avatar
Kostas Vilkelis committed
## What `MeanFi` doesn't do (yet)
Kostas Vilkelis's avatar
Kostas Vilkelis committed

Here are some features that are not yet implemented but are planned for future releases:

- **Superconductive order parameters**. Mean-field Hamiltonians do not include pairing terms.
- **General interactions**. We allow only density-density interactions (e.g. Coulomb) which can be described by a second-order tensor.
- **Temperature effects**. Density matrix calculations are done at zero temperature.

## Installation

```
Kostas Vilkelis's avatar
Kostas Vilkelis committed
pip install meanfi
Kostas Vilkelis's avatar
Kostas Vilkelis committed
```

Kostas Vilkelis's avatar
Kostas Vilkelis committed
## Citing `MeanFi`
Kostas Vilkelis's avatar
Kostas Vilkelis committed

Kostas Vilkelis's avatar
Kostas Vilkelis committed
If you have used `MeanFi` for work that has led to a scientific publication, please cite us as:
Kostas Vilkelis's avatar
Kostas Vilkelis committed

```bibtex
Kostas Vilkelis's avatar
Kostas Vilkelis committed
@misc{meanfi,
Kostas Vilkelis's avatar
Kostas Vilkelis committed
  author = {Vilkelis, Kostas and Zijderveld,  R. Johanna and Akhmerov, Anton R. and Manesco, Antonio L.R.},
  doi = {10.5281/zenodo.11149850},
  month = {5},
Kostas Vilkelis's avatar
Kostas Vilkelis committed
  title = {MeanFi},
Kostas Vilkelis's avatar
Kostas Vilkelis committed
  year = {2024}
}
```