# Introduction

The Hierarchical Equations of Motion (HEOM) method was originally developed by Tanimura and Kubo [TK89] in the context of physical chemistry to ‘’exactly’’ solve a quantum system in contact with a bosonic environment, encapsulated in the Hamiltonian:

\[H = H_s + \sum_k \omega_k a_k^{\dagger}a_k + \hat{Q} \sum_k g_k \left(a_k + a_k^{\dagger}\right).\]

As in other solutions to this problem, the properties of the bath are encapsulated by its temperature and its spectral density,

\[J(\omega) = \pi \sum_k g_k^2 \delta(\omega-\omega_k).\]

In the HEOM, for bosonic baths, one typically chooses a Drude-Lorentz spectral density:

\[J_D = \frac{2\lambda \gamma \omega}{(\gamma^2 + \omega^2)},\]

or an under-damped Brownian motion spectral density:

\[J_U = \frac{\alpha^2 \Gamma \omega}{[(\omega_c^2 - \omega^2)^2 + \Gamma^2 \omega^2]}.\]

Given the spectral density, the HEOM requires a decomposition of the bath correlation functions in terms of exponentials. In Bosonic Environments we describe how this is done with code examples, and how these expansions are passed to the solver.

In addition to support for bosonic environments, QuTiP also provides support for feriomic environments which is described in Fermionic Environments.

Both bosonic and fermionic environments are supported via a single solver, `HEOMSolver`, that supports solving for both dynamics and steady-states.