24 #ifndef COM_DAFER45_TBTK_PROPERTY_SELF_ENERGY
25 #define COM_DAFER45_TBTK_PROPERTY_SELF_ENERGY
37 class SelfEnergy :
public EnergyResolvedProperty<std::complex<double>>{
53 const IndexTree &indexTree,
56 unsigned int resolution
71 const IndexTree &indexTree,
74 unsigned int resolution,
75 const std::complex<double> *data
89 const IndexTree &indexTree,
90 int lowerMatsubaraEnergyIndex,
91 int upperMatsubaraEnergyIndex,
92 double fundamentalMatsubaraEnergy
108 const IndexTree &indexTree,
109 int lowerMatsubaraEnergyIndex,
110 int upperMatsubaraEnergyIndex,
111 double fundamentalMatsubaraEnergy,
112 const std::complex<double> *data
121 SelfEnergy(
const std::string &serialization, Mode mode);
124 SelfEnergy& operator+=(
const SelfEnergy &rhs);
132 SelfEnergy operator+(
const SelfEnergy &rhs)
const;
135 SelfEnergy& operator-=(
const SelfEnergy &rhs);
143 SelfEnergy operator-(
const SelfEnergy &rhs)
const;
146 SelfEnergy& operator*=(
const std::complex<double> &rhs);
154 SelfEnergy
operator*(
const std::complex<double> &rhs)
const;
164 const std::complex<double> &lhs,
165 const SelfEnergy &rhs
171 SelfEnergy& operator/=(
const std::complex<double> &rhs);
179 SelfEnergy operator/(
const std::complex<double> &rhs)
const;
182 virtual std::string serialize(Mode mode)
const;
186 inline SelfEnergy& SelfEnergy::operator+=(
const SelfEnergy &rhs){
192 inline SelfEnergy SelfEnergy::operator+(
const SelfEnergy &rhs)
const{
193 SelfEnergy selfEnergy = *
this;
195 return selfEnergy += rhs;
198 inline SelfEnergy& SelfEnergy::operator-=(
const SelfEnergy &rhs){
204 inline SelfEnergy SelfEnergy::operator-(
const SelfEnergy &rhs)
const{
205 SelfEnergy selfEnergy = *
this;
207 return selfEnergy -= rhs;
210 inline SelfEnergy& SelfEnergy::operator*=(
const std::complex<double> &rhs){
216 inline SelfEnergy SelfEnergy::operator*(
217 const std::complex<double> &rhs
219 SelfEnergy selfEnergy = *
this;
221 return selfEnergy *= rhs;
224 inline SelfEnergy& SelfEnergy::operator/=(
const std::complex<double> &rhs){
230 inline SelfEnergy SelfEnergy::operator/(
const std::complex<double> &rhs)
const{
231 SelfEnergy selfEnergy = *
this;
233 return selfEnergy /= rhs;