24 #ifndef COM_DAFER45_TBTK_RPA_SUSCEPTIBILITY_CALCULATOR
25 #define COM_DAFER45_TBTK_RPA_SUSCEPTIBILITY_CALCULATOR
27 #include "TBTK/InteractionAmplitude.h"
28 #include "TBTK/Property/Susceptibility.h"
29 #include "TBTK/MomentumSpaceContext.h"
30 #include "TBTK/SerializableVector.h"
38 class RPASusceptibility :
public Solver,
public Communicator{
42 const MomentumSpaceContext &momentumSpaceContext,
43 const Property::Susceptibility &susceptibility
47 const Property::Susceptibility& getBareSusceptibility()
const;
52 RPASusceptibility* createSlave();
55 void setInteractionAmplitudes(
56 const std::vector<InteractionAmplitude> &interactionAmplitudes
61 virtual std::vector<std::complex<double>> calculateSusceptibility(
63 const std::vector<std::complex<double>> &energies
68 std::vector<std::complex<double>>
69 > calculateRPASusceptibility(
74 const Property::Susceptibility &bareSusceptibility;
77 std::vector<InteractionAmplitude> interactionAmplitudes;
80 const MomentumSpaceContext &momentumSpaceContext;
84 std::complex<double> *matrix,
85 unsigned int dimensions
89 std::vector<std::vector<std::vector<
90 std::vector<std::vector<std::complex<double>>>
91 >>> rpaSusceptibilityMainAlgorithm(
93 const std::vector<InteractionAmplitude> &interactionAmpltiudes
97 inline const Property::Susceptibility&
98 RPASusceptibility::getBareSusceptibility()
const{
99 return bareSusceptibility;
102 inline void RPASusceptibility::setInteractionAmplitudes(
103 const std::vector<InteractionAmplitude> &interactionAmplitudes
105 this->interactionAmplitudes = interactionAmplitudes;
108 inline std::vector<std::complex<double>>
109 RPASusceptibility::calculateSusceptibility(
111 const std::vector<std::complex<double>> &energies
114 "Solver::RPSSusceptibility::calculateSusceptibility()",
115 "This function is not supported by this Solver.",