24 #ifndef COM_DAFER45_TBTK_SOLVER_ELECTRON_FLUCTUATION_VERTEX
25 #define COM_DAFER45_TBTK_SOLVER_ELECTRON_FLUCTUATION_VERTEX
27 #include "TBTK/BrillouinZone.h"
29 #include "TBTK/Property/Susceptibility.h"
30 #include "TBTK/MomentumSpaceContext.h"
36 class ElectronFluctuationVertex :
public Solver,
public Communicator{
39 ElectronFluctuationVertex(
40 const MomentumSpaceContext &momentumSpaceContext,
41 const Property::Susceptibility &susceptibility
45 const MomentumSpaceContext& getMomentumSpaceContext()
const;
48 const Property::Susceptibility& getSusceptibility()
const;
51 std::vector<std::complex<double>> calculateSelfEnergyVertex(
56 void setLeftInteraction(
57 const std::vector<InteractionAmplitude> &leftInteraction
61 void setRightInteraction(
62 const std::vector<InteractionAmplitude> &rightInteraction
66 const MomentumSpaceContext &momentumSpaceContext;
69 const Property::Susceptibility &susceptibility;
72 std::vector<InteractionAmplitude> leftInteraction;
75 std::vector<InteractionAmplitude> rightInteraction;
78 void calculateSelfEnergyVertexMainAlgorithm(
79 std::vector<std::complex<double>> &selfEnergyVertex,
81 const Property::Susceptibility &susceptibility,
82 const std::vector<InteractionAmplitude> &uLeft,
83 const std::vector<InteractionAmplitude> &uRight
87 inline const MomentumSpaceContext&
88 ElectronFluctuationVertex::getMomentumSpaceContext()
const{
89 return momentumSpaceContext;
92 inline const Property::Susceptibility&
93 ElectronFluctuationVertex::getSusceptibility()
const{
94 return susceptibility;
97 inline void ElectronFluctuationVertex::setLeftInteraction(
98 const std::vector<InteractionAmplitude> &leftInteraction
100 this->leftInteraction = leftInteraction;
103 inline void ElectronFluctuationVertex::setRightInteraction(
104 const std::vector<InteractionAmplitude> &rightInteraction
106 this->rightInteraction = rightInteraction;