Skip to content

Commit

Permalink
update docs
Browse files Browse the repository at this point in the history
  • Loading branch information
ytdHuang committed Nov 17, 2023
1 parent 0e10515 commit d5c9e7a
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 25 deletions.
1 change: 1 addition & 0 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ const PAGES = Any[
"HEOMLS for Bosonic and Fermionic Bath" => "heom_matrix/M_Boson_Fermion.md",
"HEOMLS for Master Equation" => "heom_matrix/master_eq.md",
],
"Parity Support" => "Parity.md",
"Hierarchy Dictionary" => "hierarchy_dictionary.md",
"Time Evolution" => "time_evolution.md",
"Stationary State" => "stationary_state.md",
Expand Down
41 changes: 41 additions & 0 deletions docs/src/Parity.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# [Parity Support](@id doc-Parity)
## Introduction
When the system Hamiltonian contains fermionic systems, the HEOMLS matrix ``\hat{\mathcal{M}}`` might be constructed into a different one depend on the parity of the input operator which ``\hat{\mathcal{M}}`` is acting on. This dependence intuitively originates from the properties of partial traces over composite fermionic spaces, where operators do not necessarily commute.

As an example, for an environment made out of a single fermion, the reduced matrix elements ``\langle{i}|\rho_\textrm{s}^p|{j}\rangle`` (in a basis labeled by ``\langle i|`` and ``|{j}\rangle``) involve the perturbative sum of expressions of the form ``\langle i| (c \tilde{\rho}_\textrm{e} \tilde{\rho}_\textrm{s}^p c^\dagger+\tilde{\rho}_\textrm{e} \tilde{\rho}_\textrm{s}^p)|{j}\rangle`` (in terms of environmental operators ``\tilde{\rho}_{\textrm{e}}``, system operators ``\tilde{\rho}_\textrm{s}^p`` with parity ``p``, and the environment-annihilation operator ``c``). These quantities depend on the commutator between ``\tilde{\rho}_\textrm{s}^p`` and ``c``, which is trivial only for `EVEN`-parity (``p=+``). In the `ODD`-parity (``p=-``) case, the partial trace over the environment requires further anti-commutations, ultimately resulting in extra minus signs in the expression for the effective propagator describing the reduced dynamics.

It is important to explicitly note that, here, by `parity` we do not refer to the presence of an odd or even number of fermions in the system but, rather, to the number of fermionic (annihilation or creation) operators needed to represent ``\rho_\textrm{s}^p``. The reduced density matrix of the system should be an `EVEN`-parity operator and can be expressed as ``\rho_{\textrm{s}}^{p=+}(t)``. However, there are some situations (for example, [calculating density of states for fermionic systems](@ref doc-DOS)) where ``\hat{\mathcal{M}}`` is acting on `ODD`-parity ADOs, e.g., ``\rho_{\textrm{s}}^{p=-}(t)=d_{\textrm{s}}\rho_{\textrm{s}}^{+}(t)`` or ``\rho_{\textrm{s}}^{p=-}(t)=d_{\textrm{s}}^\dagger\rho_{\textrm{s}}^{+}(t)``, where ``d_{\textrm{s}}`` is an annihilation operator acting on fermionic systems.

## Parity support for HEOMLS
One can specify the parameter `parity::AbstractParity` in the function of constructing ``\hat{\mathcal{M}}`` which describes the dynamics of [`EVEN`](@ref)- or [`ODD`](@ref)-parity auxiliary density operators (ADOs). The default value of the parameter is `parity=EVEN`.
```julia
Hs::AbstractMatrix # system Hamiltonian
Bbath::BosonBath # bosonic bath object
Fbath::FermionBath # fermionic bath object
Btier::Int # bosonic truncation level
Ftier::Int # fermionic truncation level

# create HEOMLS matrix in EVEN or ODD parity
M_even = M_S(Hs, EVEN)
M_odd = M_S(Hs, ODD)

M_even = M_Boson(Hs, Btier, Bbath, EVEN)
M_odd = M_Boson(Hs, Btier, Bbath, ODD)

M_even = M_Fermion(Hs, Ftier, Fbath, EVEN)
M_odd = M_Fermion(Hs, Ftier, Fbath, ODD)

M_even = M_Boson_Fermion(Hs, Btier, Ftier, Bbath, Fbath, EVEN)
M_odd = M_Boson_Fermion(Hs, Btier, Ftier, Bbath, Fbath, ODD)
```

## Base functions support
### Multiplication between Parity labels
```julia
EVEN * EVEN # gives EVEN
EVEN * ODD # gives ODD
ODD * EVEN # gives ODD
ODD * ODD # gives EVEN
!EVEN # gives ODD
!ODD # gives EVEN
```
25 changes: 0 additions & 25 deletions docs/src/heom_matrix/HEOMLS_intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,31 +49,6 @@ M = M_Boson_Fermion(Hs, Btier, Ftier, Bbath, Fbath; threshold=1e-7)
!!! note "Default value of importance threshold"
The full hierarchical equations can be recovered in the limiting case ``\mathcal{I}_\textrm{th}\rightarrow 0``, which is the default value of the parameter : `threshold=0.0`. This means that all of the ADOs will be taken into account by default.

## [Parity Support for HEOMLS Matrices](@id doc-Parity)
When the system Hamiltonian contains fermionic systems, the HEOMLS matrix ``\hat{\mathcal{M}}`` might be constructed into a different one depend on the parity of the input operator (HEOMLS) it is acting on. Usually, it is acting on the reduced density operator and [auxiliary density operators (ADOs)](@ref doc-ADOs), which are all in `EVEN`-parity. However, there are some situations (for example, [calculating density of states for fermionic systems](@ref doc-DOS)) where ``\hat{\mathcal{M}}`` is acting on ADOs with `ODD`-parity.

One can specify the parameter `parity::AbstractParity` in the function of constructing ``\hat{\mathcal{M}}`` to be [`EVEN`](@ref) or [`ODD`](@ref). The default value of the parameter is `parity=EVEN`.
```julia
Hs::AbstractMatrix # system Hamiltonian
Bbath::BosonBath # bosonic bath object
Fbath::FermionBath # fermionic bath object
Btier::Int # bosonic truncation level
Ftier::Int # fermionic truncation level

# create HEOMLS matrix in EVEN or ODD parity
M_even = M_S(Hs, EVEN)
M_odd = M_S(Hs, ODD)

M_even = M_Boson(Hs, Btier, Bbath, EVEN)
M_odd = M_Boson(Hs, Btier, Bbath, ODD)

M_even = M_Fermion(Hs, Ftier, Fbath, EVEN)
M_odd = M_Fermion(Hs, Ftier, Fbath, ODD)

M_even = M_Boson_Fermion(Hs, Btier, Ftier, Bbath, Fbath, EVEN)
M_odd = M_Boson_Fermion(Hs, Btier, Ftier, Bbath, Fbath, ODD)
```

## Methods
All of the HEOMLS matrices supports the following two `Base` Functions :
- `size(M::AbstractHEOMLSMatrix)` : Returns the size of the HEOMLS matrix.
Expand Down

0 comments on commit d5c9e7a

Please sign in to comment.