|
| SusceptibilityCalculator (Algorithm algorithm, const RPA::MomentumSpaceContext &momentumSpaceContext, int *kPlusQLookupTable) |
|
bool | getIsMaster () const |
|
int * | getKPlusQLookupTable () |
|
const int * | getKPlusQLookupTable () const |
|
Index | getSusceptibilityResultIndex (const Index &kIndex, const std::vector< int > &orbitalIndices) const |
|
const IndexedDataTree< SerializableVector< std::complex< double > > > & | getSusceptibilityTree () const |
|
template<bool useKPlusQLookupTable> |
int | getKPlusQLinearIndex (unsigned int meshIndex, const std::vector< double > &k, int kLinearIndex) const |
|
void | cacheSusceptibility (const std::vector< std::complex< double >> &result, const std::vector< double > &k, const std::vector< int > &orbitalIndices, const Index &kIndex, const Index &resultIndex) |
|
void | clearCache () |
|
template<> |
int | getKPlusQLinearIndex (unsigned int meshIndex, const std::vector< double > &k, int kLinearIndex) const |
|
template<> |
int | getKPlusQLinearIndex (unsigned int meshIndex, const std::vector< double > &k, int kLinearIndex) const |
|
◆ Algorithm
List of algorithm identifiers. Officilly supported algorithms are given unique identifiers. Algorithms not (yet) supported should make sure they use an identifier that does not clash with the officially supported ones. [ideally a large random looking number (magic number) to also minimize accidental clashes with other algorithms that are not (yet) supported.
◆ EnergyType
Enum class for indicating whether the energy is an arbitrary comlex number, or if it is restricted to the real or imaginary axis.
◆ SusceptibilityCalculator() [1/2]
◆ ~SusceptibilityCalculator()
virtual TBTK::SusceptibilityCalculator::~SusceptibilityCalculator |
( |
| ) |
|
|
virtual |
◆ SusceptibilityCalculator() [2/2]
◆ cacheSusceptibility()
void TBTK::SusceptibilityCalculator::cacheSusceptibility |
( |
const std::vector< std::complex< double >> & |
result, |
|
|
const std::vector< double > & |
k, |
|
|
const std::vector< int > & |
orbitalIndices, |
|
|
const Index & |
kIndex, |
|
|
const Index & |
resultIndex |
|
) |
| |
|
protected |
◆ calculateSusceptibility() [1/3]
virtual std::complex<double> TBTK::SusceptibilityCalculator::calculateSusceptibility |
( |
const std::vector< double > & |
k, |
|
|
const std::vector< int > & |
orbitalIndices, |
|
|
std::complex< double > |
energy |
|
) |
| |
|
pure virtual |
◆ calculateSusceptibility() [2/3]
virtual std::vector<std::complex<double> > TBTK::SusceptibilityCalculator::calculateSusceptibility |
( |
const DualIndex & |
kDual, |
|
|
const std::vector< int > & |
orbitalIndices |
|
) |
| |
|
pure virtual |
◆ calculateSusceptibility() [3/3]
std::vector< std::complex< double > > TBTK::SusceptibilityCalculator::calculateSusceptibility |
( |
const std::vector< double > & |
k, |
|
|
const std::vector< int > & |
orbitalIndices |
|
) |
| |
|
inline |
Calculate the susceptibility.
◆ clearCache()
void TBTK::SusceptibilityCalculator::clearCache |
( |
| ) |
|
|
inlineprotected |
◆ createSlave()
◆ generateKPlusQLookupTable()
void TBTK::SusceptibilityCalculator::generateKPlusQLookupTable |
( |
| ) |
|
Generate lookup table for the k+q linear index. Can be called repeatedly, and the lookup table is only generated the first time.
◆ getAlgorithm()
Get the algorithm used to calculate the susceptibility.
◆ getEnergies()
const std::vector< std::complex< double > > & TBTK::SusceptibilityCalculator::getEnergies |
( |
| ) |
const |
|
inline |
Get the energies for which the susceptibility should be calculated.
◆ getEnergiesAreInversionSymmetric()
bool TBTK::SusceptibilityCalculator::getEnergiesAreInversionSymmetric |
( |
| ) |
const |
|
inline |
Get whether the susceptibility energies are inversion symmetric.
◆ getEnergyType()
◆ getIsMaster()
bool TBTK::SusceptibilityCalculator::getIsMaster |
( |
| ) |
const |
|
inlineprotected |
◆ getKPlusQLinearIndex()
template<bool useKPlusQLookupTable>
int TBTK::SusceptibilityCalculator::getKPlusQLinearIndex |
( |
unsigned int |
meshIndex, |
|
|
const std::vector< double > & |
k, |
|
|
int |
kLinearIndex |
|
) |
| const |
|
protected |
Returns the linear index for k+q.
◆ getKPlusQLookupTable() [1/2]
int * TBTK::SusceptibilityCalculator::getKPlusQLookupTable |
( |
| ) |
|
|
inlineprotected |
Returns the k+q lookup table.
◆ getKPlusQLookupTable() [2/2]
const int * TBTK::SusceptibilityCalculator::getKPlusQLookupTable |
( |
| ) |
const |
|
inlineprotected |
Returns the k+q lookup table.
◆ getMomentumSpaceContext()
Precompute susceptibilities. Will calculate the susceptibility for all values using a parallel algorithm. Can speed up calculations if most of the susceptibilities are needed.
◆ getSusceptibilityResultIndex()
Index TBTK::SusceptibilityCalculator::getSusceptibilityResultIndex |
( |
const Index & |
kIndex, |
|
|
const std::vector< int > & |
orbitalIndices |
|
) |
| const |
|
inlineprotected |
Get Susceptibility result Index.
◆ getSusceptibilityTree()
◆ loadSusceptibilities()
void TBTK::SusceptibilityCalculator::loadSusceptibilities |
( |
const std::string & |
filename | ) |
|
|
inline |
◆ saveSusceptibilities()
void TBTK::SusceptibilityCalculator::saveSusceptibilities |
( |
const std::string & |
filename | ) |
const |
|
inline |
◆ setEnergies()
void TBTK::SusceptibilityCalculator::setEnergies |
( |
const std::vector< std::complex< double >> & |
energies | ) |
|
|
inline |
Set the energies for which the susceptibility should be calculated.
◆ setEnergiesAreInversionSymmetric()
void TBTK::SusceptibilityCalculator::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::SusceptibilityCalculator::setEnergyType |
( |
EnergyType |
energyType | ) |
|
|
inline |
The documentation for this class was generated from the following file: