pomerol  2.1
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes | Friends
Pomerol::TwoParticleGF Class Reference

Fermionic two-particle Matsubara Green's function. More...

#include <TwoParticleGF.hpp>

Inheritance diagram for Pomerol::TwoParticleGF:
Inheritance graph
[legend]
Collaboration diagram for Pomerol::TwoParticleGF:
Collaboration graph
[legend]

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< ComplexTypecompute (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...
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ TwoParticleGF()

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.

Parameters
[in]SInformation about invariant subspaces of the Hamiltonian.
[in]HThe Hamiltonian.
[in]C1The annihilation operator \(c_i\).
[in]C2The annihilation operator \(c_j\).
[in]CX3The creation operator \(c^\dagger_k\).
[in]CX4The creation operator \(c^\dagger_l\).
[in]DMMany-body density matrix \(\hat\rho\).

Member Function Documentation

◆ compute()

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.

Parameters
[in]clearIf true, computed TwoParticleGFPart's will be destroyed immediately after filling the precomputed value cache.
[in]freqsList of frequency triplets \((\omega_{n_1},\omega_{n_2},\omega_{n_3})\).
[in]commMPI communicator used to parallelize the computation.
Returns
A list of precomputed values.
Precondition
prepare() has been called.

◆ getIndex()

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\).

Parameters
[in]PositionPosition of the requested operator, 0–3.

◆ getLeftIndex()

BlockNumber Pomerol::TwoParticleGF::getLeftIndex ( std::size_t  PermutationNumber,
std::size_t  OperatorPosition,
BlockNumber  RightIndex 
) const
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.

Parameters
[in]PermutationNumberSerial number of the permutation within permutations3.
[in]OperatorPositionPosition of the operator, 0–3.
[in]RightIndexThe right invariant subspace index.

◆ getRightIndex()

BlockNumber Pomerol::TwoParticleGF::getRightIndex ( std::size_t  PermutationNumber,
std::size_t  OperatorPosition,
BlockNumber  LeftIndex 
) const
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.

Parameters
[in]PermutationNumberSerial number of the permutation within permutations3.
[in]OperatorPositionPosition of the operator, 0–3.
[in]LeftIndexThe left invariant subspace index.

◆ isVanishing()

bool Pomerol::TwoParticleGF::isVanishing ( ) const
inline

Is this Green's function identically zero?

Definition at line 169 of file TwoParticleGF.hpp.

◆ operator()() [1/2]

ComplexType Pomerol::TwoParticleGF::operator() ( ComplexType  z1,
ComplexType  z2,
ComplexType  z3 
) const
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.

Parameters
[in]z1First frequency \(z_1\).
[in]z2Second frequency \(z_2\).
[in]z3Third frequency \(z_3\).

Definition at line 174 of file TwoParticleGF.hpp.

◆ operator()() [2/2]

ComplexType Pomerol::TwoParticleGF::operator() ( long  MatsubaraNumber1,
long  MatsubaraNumber2,
long  MatsubaraNumber3 
) const
inline

Return the value of the two-particle Green's function calculated a given Matsubara frequency triplet.

Parameters
[in]MatsubaraNumber1Index of the first Matsubara frequency \(n_1\) ( \(\omega_{n_1}=\pi(2n_1+1)/\beta\)).
[in]MatsubaraNumber2Index of the second Matsubara frequency \(n_2\) ( \(\omega_{n_2}=\pi(2n_2+1)/\beta\)).
[in]MatsubaraNumber3Index of the third Matsubara frequency \(n_3\) ( \(\omega_{n_3}=\pi(2n_3+1)/\beta\)).

Definition at line 186 of file TwoParticleGF.hpp.

◆ OperatorPartAtPosition()

MonomialOperatorPart const& Pomerol::TwoParticleGF::OperatorPartAtPosition ( std::size_t  PermutationNumber,
std::size_t  OperatorPosition,
BlockNumber  LeftIndex 
) const
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\}\).

Parameters
[in]PermutationNumberSerial number of the permutation within permutations3.
[in]OperatorPositionPosition of the operator, 0–3.
[in]LeftIndexThe left invariant subspace index referring to the requested part.

◆ prepare()

void Pomerol::TwoParticleGF::prepare ( )

Choose relevant parts of \(c_i,c_j,c^\dagger_k,c^\dagger_l\) and allocate resources for the parts.

Friends And Related Function Documentation

◆ TwoParticleGFContainer

friend class TwoParticleGFContainer
friend

Definition at line 62 of file TwoParticleGF.hpp.

Field Documentation

◆ CoefficientTolerance

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.

◆ MultiTermCoefficientTolerance

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.

◆ ReduceResonanceTolerance

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.

◆ Vanishing

bool Pomerol::TwoParticleGF::Vanishing = true
protected

A flag that marks an identically vanishing Green's function.

Definition at line 84 of file TwoParticleGF.hpp.


The documentation for this class was generated from the following file: