From d5c9e7a567dca9d3d782254385e7fc7c90ad452b Mon Sep 17 00:00:00 2001 From: Yi-Te Huang Date: Fri, 17 Nov 2023 14:59:27 +0800 Subject: [PATCH] update docs --- docs/make.jl | 1 + docs/src/Parity.md | 41 ++++++++++++++++++++++++++++ docs/src/heom_matrix/HEOMLS_intro.md | 25 ----------------- 3 files changed, 42 insertions(+), 25 deletions(-) create mode 100644 docs/src/Parity.md diff --git a/docs/make.jl b/docs/make.jl index cf2d1570..e0216717 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -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", diff --git a/docs/src/Parity.md b/docs/src/Parity.md new file mode 100644 index 00000000..c36a4f79 --- /dev/null +++ b/docs/src/Parity.md @@ -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 +``` \ No newline at end of file diff --git a/docs/src/heom_matrix/HEOMLS_intro.md b/docs/src/heom_matrix/HEOMLS_intro.md index e9420f7a..9b879300 100644 --- a/docs/src/heom_matrix/HEOMLS_intro.md +++ b/docs/src/heom_matrix/HEOMLS_intro.md @@ -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.