TBTK
TBTK::RPASusceptibilityCalculator Class Reference

Public Types

enum  EnergyType { Real, Imaginary, Complex }
 

Public Member Functions

 RPASusceptibilityCalculator (const RPA::MomentumSpaceContext &momentumSpaceContext, SusceptibilityCalculator::Algorithm algorithm=SusceptibilityCalculator::Algorithm::Lindhard)
 
 ~RPASusceptibilityCalculator ()
 
RPASusceptibilityCalculatorcreateSlave ()
 
void precompute (unsigned int numWorkers=129)
 
const RPA::MomentumSpaceContextgetMomentumSpaceContext () const
 
void setInteractionAmplitudes (const std::vector< InteractionAmplitude > &interactionAmplitudes)
 
void setEnergyType (EnergyType energyType)
 
EnergyType getEnergyType () const
 
void setEnergies (const std::vector< std::complex< double >> &energies)
 
void setEnergiesAreInversionSymmetric (bool energiesAreInversionSymmetric)
 
bool getEnergiesAreInversionSymmetric () const
 
void setSusceptibilityIsSafeFromPoles (bool susceptibilityIsSafeFromPoles)
 
bool getSusceptibilityIsSafeFromPoles () const
 
void saveSusceptibilities (const std::string &filename) const
 
void loadSusceptibilities (const std::string &filename)
 
std::vector< std::complex< double > > calculateRPASusceptibility (const DualIndex &kDual, const std::vector< int > &orbitalIndices)
 
std::vector< std::complex< double > > calculateRPASusceptibility (const std::vector< double > &k, const std::vector< int > &orbitalIndices)
 
std::vector< std::complex< double > > calculateChargeRPASusceptibility (const DualIndex &kDual, const std::vector< int > &orbitalIndices)
 
std::vector< std::complex< double > > calculateChargeRPASusceptibility (const std::vector< double > &k, const std::vector< int > &orbitalIndices)
 
std::vector< std::complex< double > > calculateSpinRPASusceptibility (const DualIndex &kDual, const std::vector< int > &orbitalIndices)
 
std::vector< std::complex< double > > calculateSpinRPASusceptibility (const std::vector< double > &k, const std::vector< int > &orbitalIndices)
 
void setU (std::complex< double > U)
 
void setUp (std::complex< double > Up)
 
void setJ (std::complex< double > J)
 
void setJp (std::complex< double > Jp)
 

Member Enumeration Documentation

◆ EnergyType

Enum class for indicating whether the energy is an arbitrary comlex number, or if it is restricted to the real or imaginary axis.

Constructor & Destructor Documentation

◆ RPASusceptibilityCalculator()

TBTK::RPASusceptibilityCalculator::RPASusceptibilityCalculator ( const RPA::MomentumSpaceContext momentumSpaceContext,
SusceptibilityCalculator::Algorithm  algorithm = SusceptibilityCalculator::Algorithm::Lindhard 
)

Constructor.

◆ ~RPASusceptibilityCalculator()

TBTK::RPASusceptibilityCalculator::~RPASusceptibilityCalculator ( )

Destructor.

Member Function Documentation

◆ calculateChargeRPASusceptibility() [1/2]

std::vector<std::complex<double> > TBTK::RPASusceptibilityCalculator::calculateChargeRPASusceptibility ( const DualIndex kDual,
const std::vector< int > &  orbitalIndices 
)

Calculate charge RPA Susceptibility.

◆ calculateChargeRPASusceptibility() [2/2]

std::vector< std::complex< double > > TBTK::RPASusceptibilityCalculator::calculateChargeRPASusceptibility ( const std::vector< double > &  k,
const std::vector< int > &  orbitalIndices 
)
inline

Calculate charge RPA Susceptibility.

◆ calculateRPASusceptibility() [1/2]

std::vector<std::complex<double> > TBTK::RPASusceptibilityCalculator::calculateRPASusceptibility ( const DualIndex kDual,
const std::vector< int > &  orbitalIndices 
)

Calculate RPA Susceptibility.

◆ calculateRPASusceptibility() [2/2]

std::vector< std::complex< double > > TBTK::RPASusceptibilityCalculator::calculateRPASusceptibility ( const std::vector< double > &  k,
const std::vector< int > &  orbitalIndices 
)
inline

Calculate RPA Susceptibility.

◆ calculateSpinRPASusceptibility() [1/2]

std::vector<std::complex<double> > TBTK::RPASusceptibilityCalculator::calculateSpinRPASusceptibility ( const DualIndex kDual,
const std::vector< int > &  orbitalIndices 
)

Calculate spin RPA Susceptibility.

◆ calculateSpinRPASusceptibility() [2/2]

std::vector< std::complex< double > > TBTK::RPASusceptibilityCalculator::calculateSpinRPASusceptibility ( const std::vector< double > &  k,
const std::vector< int > &  orbitalIndices 
)
inline

Calculate spin RPA Susceptibility.

◆ createSlave()

RPASusceptibilityCalculator* TBTK::RPASusceptibilityCalculator::createSlave ( )

Create slave RPASusceptibilityCalcuator. The slave reuses internal lookup tables used to speed up the calculations and should not be used after the generating master have been destructed.

◆ getEnergiesAreInversionSymmetric()

bool TBTK::RPASusceptibilityCalculator::getEnergiesAreInversionSymmetric ( ) const
inline

Get whether the susceptibility energies are inversion symmetric.

◆ getEnergyType()

RPASusceptibilityCalculator::EnergyType TBTK::RPASusceptibilityCalculator::getEnergyType ( ) const
inline

Get energy type.

◆ getSusceptibilityIsSafeFromPoles()

bool TBTK::RPASusceptibilityCalculator::getSusceptibilityIsSafeFromPoles ( ) const
inline

Get whether the susceptibility is known to only be evaluated at points away from poles.

◆ loadSusceptibilities()

void TBTK::RPASusceptibilityCalculator::loadSusceptibilities ( const std::string &  filename)
inline

Load susceptibilities.

◆ precompute()

void TBTK::RPASusceptibilityCalculator::precompute ( unsigned int  numWorkers = 129)

Precompute susceptibilities. Will calculate the susceptibility for all values using a parallel algorithm. Can speed up calculations if most of the susceptibilities are needed.

◆ saveSusceptibilities()

void TBTK::RPASusceptibilityCalculator::saveSusceptibilities ( const std::string &  filename) const
inline

Set the number of summation energies to use in Mode::Matsubara. Save susceptibilities.

◆ setEnergies()

void TBTK::RPASusceptibilityCalculator::setEnergies ( const std::vector< std::complex< double >> &  energies)
inline

Set the energies for which the susceptibility should be calculated.

◆ setEnergiesAreInversionSymmetric()

void TBTK::RPASusceptibilityCalculator::setEnergiesAreInversionSymmetric ( bool  energiesAreInversionSymmetric)
inline

Set to true if the susceptibility energies can be assumed to be inversion symmetric in the complex plane.

Important note: Only set this to true if the energies passed to setSusceptibilityEnergies() are on the form (-E_n, -E_{n-1}, ..., E_{n-1}, E_n). Setting this flag to true without fullfilling this condition will result in undefined behavior.

◆ setEnergyType()

void TBTK::RPASusceptibilityCalculator::setEnergyType ( EnergyType  energyType)
inline

Set the mode used to calculate the susceptibility. Get the mode used to calculate the susceptibility. Set energy type.

◆ setInteractionAmplitudes()

void TBTK::RPASusceptibilityCalculator::setInteractionAmplitudes ( const std::vector< InteractionAmplitude > &  interactionAmplitudes)
inline

Set interaction amplitudes.

◆ setJ()

void TBTK::RPASusceptibilityCalculator::setJ ( std::complex< double >  J)
inline

Set J.

◆ setJp()

void TBTK::RPASusceptibilityCalculator::setJp ( std::complex< double >  Jp)
inline

Set Jp.

◆ setSusceptibilityIsSafeFromPoles()

void TBTK::RPASusceptibilityCalculator::setSusceptibilityIsSafeFromPoles ( bool  susceptibilityIsSafeFromPoles)
inline

Set to true if the susceptibility is known to only be evaluated at points away from poles.

◆ setU()

void TBTK::RPASusceptibilityCalculator::setU ( std::complex< double >  U)
inline

Set U.

◆ setUp()

void TBTK::RPASusceptibilityCalculator::setUp ( std::complex< double >  Up)
inline

Set Up.


The documentation for this class was generated from the following file: