Public Types | |
enum | EnergyType { Real, Imaginary, Complex } |
Public Member Functions | |
RPASusceptibilityCalculator (const RPA::MomentumSpaceContext &momentumSpaceContext, SusceptibilityCalculator::Algorithm algorithm=SusceptibilityCalculator::Algorithm::Lindhard) | |
~RPASusceptibilityCalculator () | |
RPASusceptibilityCalculator * | createSlave () |
void | precompute (unsigned int numWorkers=129) |
const RPA::MomentumSpaceContext & | getMomentumSpaceContext () 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) |
|
strong |
Enum class for indicating whether the energy is an arbitrary comlex number, or if it is restricted to the real or imaginary axis.
TBTK::RPASusceptibilityCalculator::RPASusceptibilityCalculator | ( | const RPA::MomentumSpaceContext & | momentumSpaceContext, |
SusceptibilityCalculator::Algorithm | algorithm = SusceptibilityCalculator::Algorithm::Lindhard |
||
) |
Constructor.
TBTK::RPASusceptibilityCalculator::~RPASusceptibilityCalculator | ( | ) |
Destructor.
std::vector<std::complex<double> > TBTK::RPASusceptibilityCalculator::calculateChargeRPASusceptibility | ( | const DualIndex & | kDual, |
const std::vector< int > & | orbitalIndices | ||
) |
Calculate charge RPA Susceptibility.
|
inline |
Calculate charge RPA Susceptibility.
std::vector<std::complex<double> > TBTK::RPASusceptibilityCalculator::calculateRPASusceptibility | ( | const DualIndex & | kDual, |
const std::vector< int > & | orbitalIndices | ||
) |
Calculate RPA Susceptibility.
|
inline |
Calculate RPA Susceptibility.
std::vector<std::complex<double> > TBTK::RPASusceptibilityCalculator::calculateSpinRPASusceptibility | ( | const DualIndex & | kDual, |
const std::vector< int > & | orbitalIndices | ||
) |
Calculate spin RPA Susceptibility.
|
inline |
Calculate spin RPA Susceptibility.
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.
|
inline |
Get whether the susceptibility energies are inversion symmetric.
|
inline |
Get energy type.
|
inline |
Get whether the susceptibility is known to only be evaluated at points away from poles.
|
inline |
Load susceptibilities.
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.
|
inline |
Set the number of summation energies to use in Mode::Matsubara. Save susceptibilities.
|
inline |
Set the energies for which the susceptibility should be calculated.
|
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.
|
inline |
Set the mode used to calculate the susceptibility. Get the mode used to calculate the susceptibility. Set energy type.
|
inline |
Set interaction amplitudes.
|
inline |
Set J.
|
inline |
Set Jp.
|
inline |
Set to true if the susceptibility is known to only be evaluated at points away from poles.
|
inline |
Set U.
|
inline |
Set Up.