4 #include "../math/cfunction.h"
5 #include "../utils/complex.h"
21 void setU(
double U) { m_U = U; }
22 void setMu(
double mu) { m_mu = mu; }
23 void setT(
double T) { m_T = T; }
24 void setDelta(
double delta) { m_delta = delta; }
25 void setTolerance(
double tolerance) { m_tolerance = tolerance; }
26 void setMaxIterations(
int maxIterations) { m_maxIterations = maxIterations; }
27 inline double getT() {
return m_T; }
28 inline double getU() {
return m_U; }
29 inline double getMu() {
return m_mu; }
30 inline double getDelta() {
return m_delta; }
31 inline double getScaling() {
return m_scaling; }
32 void setStartWithDelta(
bool startWithDelta) { m_startWithDelta = startWithDelta; }
33 void setScaling(
double scaling) { m_scaling = scaling; }
36 math::CFunction getHybridizationFunction() {
return m_effectiveMedium; }
37 void setSelfEnergy(
const math::CFunction& selfEnergy) { m_selfEnergy = selfEnergy; }
38 void setGreensFunction(
const math::CFunction& G) { m_greenFunction = G; }
39 void setHybridizationFunction(
const math::CFunction& delta) { m_effectiveMedium = delta; }
40 void solve(std::string outputDirectory =
"");
44 inline static double gReal(
double epsk,
int nOmega,
double omega, std::complex<double> fomega,
void * params) {
45 DMFT* dmft =
static_cast<DMFT*
>(params);
46 std::complex<double> G = 1.0 / (omega + I * dmft->getDelta() - fomega - (epsk - dmft->getU()/2.0 - dmft->getMu()));
47 return G.real() * dos::rho3(epsk);
50 inline static double gImag(
double epsk,
int nOmega,
double omega, std::complex<double> fomega,
void * params) {
51 DMFT* dmft =
static_cast<DMFT*
>(params);
52 std::complex<double> G = 1.0 / (omega + I * dmft->getDelta() - fomega - (epsk - dmft->getU()/2.0 - dmft->getMu()));
53 return G.imag() * dos::rho3(epsk);
56 inline static double fReal(
double epsk,
int nOmega,
double omega, std::complex<double> fomega,
void * params) {
57 DMFT* dmft =
static_cast<DMFT*
>(params);
58 std::complex<double> G = 1.0 / (omega + I * dmft->getDelta() - fomega - (epsk - dmft->getU()/2.0 - dmft->getMu()));
59 std::complex<double> F = fomega * G + 1.0;
60 return F.real() * dos::rho3(epsk);
63 inline static double fImag(
double epsk,
int nOmega,
double omega, std::complex<double> fomega,
void * params) {
64 DMFT* dmft =
static_cast<DMFT*
>(params);
65 std::complex<double> G = 1.0 / (omega + I * dmft->getDelta() - fomega - (epsk - dmft->getU()/2.0 - dmft->getMu()));
66 std::complex<double> F = fomega * G + 1.0;
67 return F.imag() * dos::rho3(epsk);
71 void calculateGFInt();
72 void calculateFFInt();
75 double Im_sqr(
double Re,
double Im);
76 double Re_sqr(
double Re,
double Im);
77 double Im_sqrt(
double Re,
double Im);
78 double Re_sqrt(
double Re,
double Im);
79 double Im_calc(
double Re,
double Im);
80 double Re_calc(
double Re,
double Im);
91 bool m_startWithDelta;
A configuration object which is populated from a configuration file and allows to query and modify co...
Definition: configuration.h:46
Discretized complex-valued function for real arguments.
Definition: cfunction.h:34