pomerol
2.1
|
Fermionic two-particle Matsubara Green's function. More...
#include <TwoParticleGF.hpp>
Public Member Functions | |
TwoParticleGF (StatesClassification const &S, Hamiltonian const &H, AnnihilationOperator const &C1, AnnihilationOperator const &C2, CreationOperator const &CX3, CreationOperator const &CX4, DensityMatrix const &DM) | |
void | prepare () |
Choose relevant parts of \(c_i,c_j,c^\dagger_k,c^\dagger_l\) and allocate resources for the parts. More... | |
std::vector< ComplexType > | compute (bool clear=false, FreqVec3 const &freqs={}, MPI_Comm const &comm=MPI_COMM_WORLD) |
ParticleIndex | getIndex (std::size_t Position) const |
ComplexType | operator() (ComplexType z1, ComplexType z2, ComplexType z3) const |
ComplexType | operator() (long MatsubaraNumber1, long MatsubaraNumber2, long MatsubaraNumber3) const |
bool | isVanishing () const |
Is this Green's function identically zero? More... | |
Public Member Functions inherited from Pomerol::Thermal | |
Thermal (RealType beta) | |
Public Member Functions inherited from Pomerol::ComputableObject | |
ComputableObject ()=default | |
StatusEnum | getStatus () const |
Return the current computation status. More... | |
void | setStatus (StatusEnum Status_in) |
Data Fields | |
RealType | ReduceResonanceTolerance = 1e-8 |
A difference in energies with magnitude below this value is treated as zero. More... | |
RealType | CoefficientTolerance = 1e-16 |
Minimal magnitude of the coefficient of a term for it to be taken into account. More... | |
RealType | MultiTermCoefficientTolerance = 1e-5 |
Data Fields inherited from Pomerol::Thermal | |
const RealType | beta |
Inverse temperature \(\beta\). More... | |
const ComplexType | MatsubaraSpacing |
Spacing between (imaginary) Matsubara frequencies, \(i\pi/\beta\). More... | |
Protected Member Functions | |
MonomialOperatorPart const & | OperatorPartAtPosition (std::size_t PermutationNumber, std::size_t OperatorPosition, BlockNumber LeftIndex) const |
BlockNumber | getLeftIndex (std::size_t PermutationNumber, std::size_t OperatorPosition, BlockNumber RightIndex) const |
BlockNumber | getRightIndex (std::size_t PermutationNumber, std::size_t OperatorPosition, BlockNumber LeftIndex) const |
Protected Attributes | |
bool | Vanishing = true |
A flag that marks an identically vanishing Green's function. More... | |
Protected Attributes inherited from Pomerol::ComputableObject | |
StatusEnum | Status = Constructed |
Current computation status. More... | |
Friends | |
class | TwoParticleGFContainer |
Additional Inherited Members | |
Public Types inherited from Pomerol::ComputableObject | |
enum | StatusEnum { Constructed, Prepared, Computed } |
Computation status of the object. More... | |
Fermionic two-particle Matsubara Green's function.
\[ \chi_{ijkl}(\omega_{n_1},\omega_{n_2};\omega_{n_3},\omega_{n_1}+\omega_{n_2}-\omega_{n_3}) = \int_0^\beta Tr[\mathcal{T}_\tau \hat\rho c_i(\tau_1)c_j(\tau_2)c^\dagger_k(\tau_3)c^\dagger_l(0)] e^{i\omega_{n_1}\tau_1+i\omega_{n_2}\tau_2-i\omega_{n_3}\tau_3} d\tau_1 d\tau_2 d\tau_3. \]
It is actually a container class for a collection of TwoParticleGFPart's (most of the real calculations take place in the parts).
Definition at line 60 of file TwoParticleGF.hpp.
Pomerol::TwoParticleGF::TwoParticleGF | ( | StatesClassification const & | S, |
Hamiltonian const & | H, | ||
AnnihilationOperator const & | C1, | ||
AnnihilationOperator const & | C2, | ||
CreationOperator const & | CX3, | ||
CreationOperator const & | CX4, | ||
DensityMatrix const & | DM | ||
) |
Constructor.
[in] | S | Information about invariant subspaces of the Hamiltonian. |
[in] | H | The Hamiltonian. |
[in] | C1 | The annihilation operator \(c_i\). |
[in] | C2 | The annihilation operator \(c_j\). |
[in] | CX3 | The creation operator \(c^\dagger_k\). |
[in] | CX4 | The creation operator \(c^\dagger_l\). |
[in] | DM | Many-body density matrix \(\hat\rho\). |
std::vector<ComplexType> Pomerol::TwoParticleGF::compute | ( | bool | clear = false , |
FreqVec3 const & | freqs = {} , |
||
MPI_Comm const & | comm = MPI_COMM_WORLD |
||
) |
Compute the parts in parallel and fill the internal cache of precomputed values.
[in] | clear | If true, computed TwoParticleGFPart's will be destroyed immediately after filling the precomputed value cache. |
[in] | freqs | List of frequency triplets \((\omega_{n_1},\omega_{n_2},\omega_{n_3})\). |
[in] | comm | MPI communicator used to parallelize the computation. |
ParticleIndex Pomerol::TwoParticleGF::getIndex | ( | std::size_t | Position | ) | const |
Returns the single particle index of one of the operators \(c_i,c_j,c^\dagger_k,c^\dagger_l\).
[in] | Position | Position of the requested operator, 0–3. |
|
protected |
Choose the operator standing at a specified position in a given permutation of the list \(\{c_i,c_j,c^\dagger_k,c^\dagger_l\}\) and return its left invariant subspace index corresponding to a given right subspace index. Return INVALID_BLOCK_NUMBER if the operator does not have such a (non-zero) block.
[in] | PermutationNumber | Serial number of the permutation within permutations3. |
[in] | OperatorPosition | Position of the operator, 0–3. |
[in] | RightIndex | The right invariant subspace index. |
|
protected |
Choose the operator standing at a specified position in a given permutation of the list \(\{c_i,c_j,c^\dagger_k,c^\dagger_l\}\) and return its right invariant subspace index corresponding to a given left subspace index. Return INVALID_BLOCK_NUMBER if the operator does not have such a (non-zero) block.
[in] | PermutationNumber | Serial number of the permutation within permutations3. |
[in] | OperatorPosition | Position of the operator, 0–3. |
[in] | LeftIndex | The left invariant subspace index. |
|
inline |
Is this Green's function identically zero?
Definition at line 169 of file TwoParticleGF.hpp.
|
inline |
Return the value of the two-particle Green's function calculated at a given complex frequency triplet. This method ignores the precomputed value cache.
[in] | z1 | First frequency \(z_1\). |
[in] | z2 | Second frequency \(z_2\). |
[in] | z3 | Third frequency \(z_3\). |
Definition at line 174 of file TwoParticleGF.hpp.
|
inline |
Return the value of the two-particle Green's function calculated a given Matsubara frequency triplet.
[in] | MatsubaraNumber1 | Index of the first Matsubara frequency \(n_1\) ( \(\omega_{n_1}=\pi(2n_1+1)/\beta\)). |
[in] | MatsubaraNumber2 | Index of the second Matsubara frequency \(n_2\) ( \(\omega_{n_2}=\pi(2n_2+1)/\beta\)). |
[in] | MatsubaraNumber3 | Index of the third Matsubara frequency \(n_3\) ( \(\omega_{n_3}=\pi(2n_3+1)/\beta\)). |
Definition at line 186 of file TwoParticleGF.hpp.
|
protected |
Extract the operator part standing at a specified position in a given permutation of the list \(\{c_i,c_j,c^\dagger_k,c^\dagger_l\}\).
[in] | PermutationNumber | Serial number of the permutation within permutations3. |
[in] | OperatorPosition | Position of the operator, 0–3. |
[in] | LeftIndex | The left invariant subspace index referring to the requested part. |
void Pomerol::TwoParticleGF::prepare | ( | ) |
Choose relevant parts of \(c_i,c_j,c^\dagger_k,c^\dagger_l\) and allocate resources for the parts.
|
friend |
Definition at line 62 of file TwoParticleGF.hpp.
RealType Pomerol::TwoParticleGF::CoefficientTolerance = 1e-16 |
Minimal magnitude of the coefficient of a term for it to be taken into account.
Definition at line 115 of file TwoParticleGF.hpp.
RealType Pomerol::TwoParticleGF::MultiTermCoefficientTolerance = 1e-5 |
Minimal magnitude of the coefficient of a term for it to be taken into account with respect to the amount of terms.
Definition at line 118 of file TwoParticleGF.hpp.
RealType Pomerol::TwoParticleGF::ReduceResonanceTolerance = 1e-8 |
A difference in energies with magnitude below this value is treated as zero.
Definition at line 113 of file TwoParticleGF.hpp.
|
protected |
A flag that marks an identically vanishing Green's function.
Definition at line 84 of file TwoParticleGF.hpp.