QInchworm.exact_atomic_ppgf
QInchworm.exact_atomic_ppgf
— ModuleExact atomic pseudo-particle Green's function module enabling exact evaluation of the atomic propagator $P_0(z)$ by evaluating the exponential $P_0(z) = -i e^{-iz \hat H_{loc}}$.
Exports
QInchworm.exact_atomic_ppgf.ExactAtomicPPGF
— Typestruct ExactAtomicPPGF <: Keldysh.AbstractTimeGF{ComplexF64, false}
Exact atomic pseudo-particle Green's function type.
Fields
β::Float64
: Inverse temperatureE::Vector{Float64}
: Eigenvalues of the atomic Hamiltonian
QInchworm.exact_atomic_ppgf.ExactAtomicPPGF
— MethodEvaluate atomic propagator at the difference between imaginary time branch points.
Parameters
z1
: first branch point.z2
: second branch point.
Returns
- Value of atomic pseudo-particle propagator $P_0(z_1 - z_2)$ as a diagonal matrix
Diagonal
.
QInchworm.exact_atomic_ppgf.ExactAtomicPPGF
— MethodEvaluate atomic propagator at complex contour time z
.
Parameters
z
: scalar time.
Returns
- Value of atomic pseudo-particle propagator $P_0(z)$ as a diagonal matrix
Diagonal
.
Keldysh.interpolate!
— Methodinterpolate!(
x::Matrix{ComplexF64},
P_0::QInchworm.exact_atomic_ppgf.ExactAtomicPPGF,
z1::Keldysh.BranchPoint,
z2::Keldysh.BranchPoint
)
In-place evaluation of the atomic propagator at the difference between imaginary time branch points.
Parameters
x
: Matrix to store the value of the atomic pseudo-particle propagator in.P_0
: Atomic pseudo-particle propagator.z1
: first branch point.z2
: second branch point.
Returns
- Value of atomic pseudo-particle propagator $P_0(z_1 - z_2)$ as a diagonal matrix
Diagonal
.
QInchworm.ppgf.atomic_ppgf
— Methodatomic_ppgf(
β::Float64,
ed::KeldyshED.EDCore
) -> Vector{QInchworm.exact_atomic_ppgf.ExactAtomicPPGF}
Construct the exact atomic pseudo-particle Green's function.
Parameters
β
: Inverse temperature.ed
: Exact diagonalization structure describing the atomic problem.
QInchworm.ppgf.density_matrix
— Methoddensity_matrix(
P::Vector{QInchworm.exact_atomic_ppgf.ExactAtomicPPGF}
) -> Vector{Matrix{ComplexF64}}
Extract the equilibrium density matrix $\rho = i P(-i\beta, 0)$ from a normalized pseudo-particle Green's function P
. The density matrix is block-diagonal and is returned as a vector of blocks.
QInchworm.ppgf.partition_function
— Methodpartition_function(
P_0::Vector{QInchworm.exact_atomic_ppgf.ExactAtomicPPGF}
) -> ComplexF64
Extract the partition function $Z = \mathrm{Tr}[i P_0(-i\beta, 0)]$ from a un-normalized pseudo-particle Green's function P_0
.