NanoStructures  1.0
DMFT solver for layered, strongly correlated nanostructures

Public Member Functions

 NanoStructure (std::string filename)
 
 NanoStructure (int n)
 
void configure (config::Configuration &config)
 
void solve ()
 
void solve (mpi::OpenMPI &mpi)
 
std::complex< double > left (int nLayer, int nOmega, double epsk)
 
std::complex< double > right (int nLayer, int nOmega, double epsk)
 
void precalc_L (int nLayer, int nOmega, double epsk)
 
void precalc_R (int nLayer, int nOmega, double epsk)
 
void precalc_dL (int nLayer, int nOmega, double epsk)
 
void precalc_dR (int nLayer, int nOmega, double epsk)
 
double Pi (int alpha, int gamma, int delta, int nOmega, double epsk)
 
std::complex< double > G (int nLayer, int nOmega, double epsk)
 
std::complex< double > F (int nLayer, int nOmega, double epsk)
 
void F_local (int nLayer, math::CFunction &fLocal)
 
void G_local (int nLayer, math::CFunction &gLocal)
 
void F_local (int nLayer, math::CFunction &fLocal, mpi::OpenMPI &mpi)
 
void G_local (int nLayer, math::CFunction &gLocal, mpi::OpenMPI &mpi)
 
std::complex< double > GOff (int alpha, int beta, int nOmega, double epsk)
 
void updatePotentials ()
 
void initializePotentials ()
 
void updatePotentials (mpi::OpenMPI &mpi)
 
double calculateOccupationFromG (int layer, double mu=0.0)
 
double totalExcessCharge (double mu)
 
double adjustMu ()
 
double calculateSigmaXX (int alpha, int beta)
 
double calculatePiXY (int alpha, int gamma, int delta)
 
double calculateSigmaXX (int alpha, int beta, mpi::OpenMPI &mpi)
 
double calculatePiXY (int alpha, int gamma, int delta, mpi::OpenMPI &mpi)
 
bool areAllSelfEnergySizesEqual ()
 
bool isScalingCompatibleWithSelfEnergies ()
 
void setMaxIterations (int maxIterations)
 
void setSelfEnergies (const math::CFunction &selfEnergy)
 
void setHoppings (double tL, double tR)
 
void setUs (double U)
 
bool isConverged ()
 
double getT () const
 
void setAlphaV (double alphaV)
 
void setCalculateRhoXX (bool calc)
 
void setCalculateRhoXY (bool calc)
 
void setVerbose (bool verbose)
 
void setSymmetricNano (bool symmetric)
 
bool isSymmetricNano ()
 
void setMu (int nLayer, double mu)
 
void setSelfEnergy (int nLayer, const math::CFunction &S)
 
void setU (int nLayer, double U)
 
void setDoECR (bool ecr)
 
void writeBinary (std::string directory)
 
void readBinary (std::string directory)
 
void showInfo ()
 

Protected Types

typedef std::map< std::string,
nano::LayerParameters
tPMap
 

Protected Member Functions

double doNRG (int layer)
 
void calculateEffectiveMedia (mpi::OpenMPI &mpi)
 
void allocate (int N)
 
void free ()
 
tPMap parseStructure (const libconfig::Config &structure)
 

Static Protected Member Functions

static std::complex< double > fermiWrapper (double omega, std::complex< double > fomega, void *parameters)
 
static double gReal (double epsk, int nOmega, double omega, std::complex< double > fomega, void *params)
 
static double gImag (double epsk, int nOmega, double omega, std::complex< double > fomega, void *params)
 
static double fReal (double epsk, int nOmega, double omega, std::complex< double > fomega, void *params)
 
static double fImag (double epsk, int nOmega, double omega, std::complex< double > fomega, void *params)
 
static double sigmaXX (double epsk, int nOmega, double omega, std::complex< double > fomega, void *params)
 
static double piXY (double epsk, int nOmega, double omega, std::complex< double > fomega, void *params)
 

Protected Attributes

int m_nLayers
 
math::Functionm_n
 
math::CFunctionm_selfEnergies
 
math::CFunctionm_greensFunctions
 
math::CFunctionm_fFunctions
 
math::CFunctionm_effectiveMedia
 
double * m_U
 
double * m_mu
 
double m_T
 
bool m_doECR
 
double * m_rho
 
double * m_rhoBackground
 
double * m_V
 
double m_rhoBar
 
bool m_symmetricNano
 
double * m_tL
 
double * m_tR
 
double * m_similarities
 
double m_delta
 
double m_scaling
 
double m_alphaV
 
double m_tolerance
 
int m_iteration
 
int m_maxIterations
 
bool m_calculateRhoXX
 
bool m_calculateRhoXY
 
bool m_verbose
 
std::complex< double > * m_L
 
std::complex< double > * m_dL
 
std::complex< double > * m_R
 
std::complex< double > * m_dR
 
std::complex< double > * m_temp
 
config::Configurationm_configuration
 

The documentation for this class was generated from the following files:
  • /home/chris/Development/Release/NanoStructures/nano/nanostructure.h
  • /home/chris/Development/Release/NanoStructures/nano/nanostructure.cpp