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

3-point fermion-boson susceptibility in the Matsubara representation. More...

#include <ThreePointSusceptibility.hpp>

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

Public Member Functions

 ThreePointSusceptibility (Channel channel, StatesClassification const &S, Hamiltonian const &H, CreationOperator const &CX1, AnnihilationOperator const &C2, CreationOperator const &CX3, AnnihilationOperator const &C4, DensityMatrix const &DM)
 
void prepare ()
 Select relevant parts of \(c^\dagger_1, c_2, c^\dagger_3, c_4\) and allocate resources for the parts. More...
 
std::vector< ComplexTypecompute (bool clear=false, FreqVec2 const &freqs={}, MPI_Comm const &comm=MPI_COMM_WORLD)
 
ParticleIndex getIndex (std::size_t Position) const
 
ComplexType operator() (ComplexType z1, ComplexType z2) const
 
ComplexType operator() (long MatsubaraNumber1, long MatsubaraNumber2) const
 
bool isVanishing () const
 Is this susceptibility 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...
 
- 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 Attributes

bool Vanishing = true
 A flag that marks an identically vanishing susceptibility. More...
 
- Protected Attributes inherited from Pomerol::ComputableObject
StatusEnum Status = Constructed
 Current computation status. More...
 

Friends

class ThreePointSusceptibilityContainer
 

Additional Inherited Members

- Public Types inherited from Pomerol::ComputableObject
enum  StatusEnum { Constructed, Prepared, Computed }
 Computation status of the object. More...
 

Detailed Description

3-point fermion-boson susceptibility in the Matsubara representation.

The susceptibility can be defined in one of the following three channels.

These susceptibilities can be interpreted as 3-point correlators of two fermionic operators \(\hat F_1(\omega_{n_1}), \hat F_2(\omega_{n_2})\) and one quadratic operator \(\hat B\).

It is actually a container class for a collection of ThreePointSusceptibilityPart's (most of the real calculations take place in the parts).

Definition at line 67 of file ThreePointSusceptibility.hpp.

Constructor & Destructor Documentation

◆ ThreePointSusceptibility()

Pomerol::ThreePointSusceptibility::ThreePointSusceptibility ( Channel  channel,
StatesClassification const &  S,
Hamiltonian const &  H,
CreationOperator const &  CX1,
AnnihilationOperator const &  C2,
CreationOperator const &  CX3,
AnnihilationOperator const &  C4,
DensityMatrix const &  DM 
)

Constructor

Parameters
[in]channelChannel of the 3-point susceptibility.
[in]SInformation about invariant subspaces of the Hamiltonian.
[in]HThe Hamiltonian.
[in]CX1The creation operator \(c^\dagger_1\).
[in]C2The annihilation operator \(c_2\).
[in]CX3The creation operator \(c^\dagger_3\).
[in]C4The annihilation operator \(c_4\).
[in]DMMany-body density matrix \(\hat\rho\).

Member Function Documentation

◆ compute()

std::vector<ComplexType> Pomerol::ThreePointSusceptibility::compute ( bool  clear = false,
FreqVec2 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 ThreePointSusceptibilityPart's will be destroyed immediately after filling the precomputed value cache.
[in]freqsList of frequency duplets \((\omega_{n_1},\omega_{n_2})\).
[in]commMPI communicator used to parallelize the computation.
Returns
A list of precomputed values.
Precondition
prepare() has been called.

◆ getIndex()

ParticleIndex Pomerol::ThreePointSusceptibility::getIndex ( std::size_t  Position) const

Returns the single particle index of one of the operators \(c^\dagger_1, c_2, c^\dagger_3, c_4\).

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

◆ isVanishing()

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

Is this susceptibility identically zero?

Definition at line 150 of file ThreePointSusceptibility.hpp.

◆ operator()() [1/2]

ComplexType Pomerol::ThreePointSusceptibility::operator() ( ComplexType  z1,
ComplexType  z2 
) const
inline

Return the value of the 3-point susceptibility calculated at a given complex frequency duplet. This method ignores the precomputed value cache.

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

Definition at line 162 of file ThreePointSusceptibility.hpp.

◆ operator()() [2/2]

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

Return the value of the 3-point susceptibility calculated a given Matsubara frequency duplet.

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

Definition at line 174 of file ThreePointSusceptibility.hpp.

◆ prepare()

void Pomerol::ThreePointSusceptibility::prepare ( )

Select relevant parts of \(c^\dagger_1, c_2, c^\dagger_3, c_4\) and allocate resources for the parts.

Friends And Related Function Documentation

◆ ThreePointSusceptibilityContainer

friend class ThreePointSusceptibilityContainer
friend

Definition at line 69 of file ThreePointSusceptibility.hpp.

Field Documentation

◆ CoefficientTolerance

RealType Pomerol::ThreePointSusceptibility::CoefficientTolerance = 1e-16

Minimal magnitude of the coefficient of a term for it to be taken into account.

Definition at line 100 of file ThreePointSusceptibility.hpp.

◆ ReduceResonanceTolerance

RealType Pomerol::ThreePointSusceptibility::ReduceResonanceTolerance = 1e-8

A difference in energies with magnitude below this value is treated as zero.

Definition at line 98 of file ThreePointSusceptibility.hpp.

◆ Vanishing

bool Pomerol::ThreePointSusceptibility::Vanishing = true
protected

A flag that marks an identically vanishing susceptibility.

Definition at line 94 of file ThreePointSusceptibility.hpp.


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