pomerol
2.1
|
3-point fermion-boson susceptibility in the Matsubara representation. More...
#include <ThreePointSusceptibility.hpp>
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< ComplexType > | compute (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... | |
3-point fermion-boson susceptibility in the Matsubara representation.
The susceptibility can be defined in one of the following three channels.
\[\chi^{(3)}_{pp}(\omega_{n_1},\omega_{n_2}) = \int_0^\beta d\tau_1 d\tau_2 e^{-i\omega_{n_1}\tau_1} e^{-i\omega_{n_2}\tau_2} Tr[\mathcal{T}_\tau \hat\rho c^\dagger_1(\tau_1) c_2(0^+) c^\dagger_3(\tau_2) c_4(0)]\]
\[\chi^{(3)}_{ph}(\omega_{n_1},\omega_{n_2}) = \int_0^\beta d\tau_1 d\tau_2 e^{-i\omega_{n_1}\tau_1} e^{i\omega_{n_2}\tau_2} Tr[\mathcal{T}_\tau \hat\rho c^\dagger_1(\tau_1) c_2(\tau_2) c^\dagger_3(0^+) c_4(0)]\]
\[\chi^{(3)}_{\bar{ph}}(\omega_{n_1},\omega_{n_2}) = \int_0^\beta d\tau_1 d\tau_2 e^{-i\omega_{n_1}\tau_1} e^{i\omega_{n_2}\tau_2} Tr[\mathcal{T}_\tau \hat\rho c^\dagger_1(\tau_1) c_2(0) c^\dagger_3(0^+) c_4(\tau_2)]\]
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.
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
[in] | channel | Channel of the 3-point susceptibility. |
[in] | S | Information about invariant subspaces of the Hamiltonian. |
[in] | H | The Hamiltonian. |
[in] | CX1 | The creation operator \(c^\dagger_1\). |
[in] | C2 | The annihilation operator \(c_2\). |
[in] | CX3 | The creation operator \(c^\dagger_3\). |
[in] | C4 | The annihilation operator \(c_4\). |
[in] | DM | Many-body density matrix \(\hat\rho\). |
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.
[in] | clear | If true, computed ThreePointSusceptibilityPart's will be destroyed immediately after filling the precomputed value cache. |
[in] | freqs | List of frequency duplets \((\omega_{n_1},\omega_{n_2})\). |
[in] | comm | MPI communicator used to parallelize the computation. |
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\).
[in] | Position | Position of the requested operator, 0–3. |
|
inline |
Is this susceptibility identically zero?
Definition at line 150 of file ThreePointSusceptibility.hpp.
|
inline |
Return the value of the 3-point susceptibility calculated at a given complex frequency duplet. This method ignores the precomputed value cache.
[in] | z1 | First frequency \(z_1\). |
[in] | z2 | Second frequency \(z_2\). |
Definition at line 162 of file ThreePointSusceptibility.hpp.
|
inline |
Return the value of the 3-point susceptibility calculated a given Matsubara frequency duplet.
[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\)). |
Definition at line 174 of file ThreePointSusceptibility.hpp.
void Pomerol::ThreePointSusceptibility::prepare | ( | ) |
Select relevant parts of \(c^\dagger_1, c_2, c^\dagger_3, c_4\) and allocate resources for the parts.
|
friend |
Definition at line 69 of file ThreePointSusceptibility.hpp.
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.
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.
|
protected |
A flag that marks an identically vanishing susceptibility.
Definition at line 94 of file ThreePointSusceptibility.hpp.