TBTK

#include <PropertyExtractor.h>
Protected Member Functions  
void  calculate (void(*callback)(PropertyExtractor *cb_this, void *memory, const Index &index, int offset), void *memory, Index pattern, const Index &ranges, int currentOffset, int offsetMultiplier) 
template<typename DataType >  
void  calculate (void(*callback)(PropertyExtractor *cb_this, void *memory, const Index &index, int offset), const IndexTree &allIndices, const IndexTree &memoryLayout, Property::AbstractProperty< DataType > &abstractProperty, int *spinIndexHint=nullptr) 
void  ensureCompliantRanges (const Index &pattern, Index &ranges) 
void  getLoopRanges (const Index &pattern, const Index &ranges, int *lDimensions, int **lRanges) 
IndexTree  generateIndexTree (std::initializer_list< Index > patterns, const HoppingAmplitudeSet &hoppingAmplitudeSet, bool keepSumationWildcards, bool keepSpinWildcards) 
Protected Attributes  
int  energyResolution 
double  lowerBound 
double  upperBound 
void *  hint 
Static Protected Attributes  
static constexpr int  ENERGY_RESOLUTION = 1000 
static constexpr double  LOWER_BOUND = 1. 
static constexpr double  UPPER_BOUND = 1. 
The PropertyExtractor extracts is a base class for derived PropertyExtractors that are used to extract common physical properties such as DOS, Density, LDOS, etc. from a Solvers.
TBTK::PropertyExtractor::PropertyExtractor::PropertyExtractor  (  ) 
Constructor.

virtual 
Destructor.

protected 
Loops over range indices and calls the appropriate callback function to calculate the correct quantity.

protected 
Loops over the indices satisfying the specified patterns and calls the appropriate callback function to calculate the correct quantity.

virtual 
Calculate density.
pattern  Specifies the index pattern for which to calculate the density. For example, assume that the index scheme is {x, y, z, spin}. {ID_X, 5, 10, IDX_SUM_ALL} will calculate the density for each x along (y,z)=(5,10) by summing over spin. Similarly {ID_X, 5, IDX_Y, IDX_SUM_ALL} will return a two dimensional density for all x and z and y = 5. Note that IDX_X IDX_Y, and IDX_Z refers to the first, second, and third index used by the routine to create a one, two, or threedimensional output, rather than being tied to the x, y, and z used as physical subindices. 
ranges  Speifies the number of elements for each subindex. Is ignored for indices specified with positive integers in the pattern, but is used to loop from 0 to the value in ranges for IDX_X, IDX_Y, IDX_Z, and IDX_SUM_ALL. Appropriate ranges corresponding to the two pattern examples above are {SIZE_X, 1, 1, NUM_SPINS} and {SIZE_X, 1, SIZE_Z, NUM_SPINS}, respectively. 
Reimplemented in TBTK::PropertyExtractor::Diagonalizer, TBTK::PropertyExtractor::ChebyshevExpander, and TBTK::PropertyExtractor::ExactDiagonalizer.

virtual 
Calculate density.
Reimplemented in TBTK::PropertyExtractor::BlockDiagonalizer, TBTK::PropertyExtractor::Diagonalizer, and TBTK::PropertyExtractor::ChebyshevExpander.

virtual 
Calculate density of states.
Reimplemented in TBTK::PropertyExtractor::BlockDiagonalizer, TBTK::PropertyExtractor::Diagonalizer, and TBTK::PropertyExtractor::ArnoldiIterator.

virtual 
Calculate entropy.
Reimplemented in TBTK::PropertyExtractor::BlockDiagonalizer, and TBTK::PropertyExtractor::Diagonalizer.

virtual 
Calculate expectation value.
Reimplemented in TBTK::PropertyExtractor::BlockDiagonalizer, TBTK::PropertyExtractor::Diagonalizer, TBTK::PropertyExtractor::ChebyshevExpander, and TBTK::PropertyExtractor::ExactDiagonalizer.

virtual 
Calculate local density of states.
pattern  Specifies the index pattern for which to calculate the LDOS. For example, assume that the index scheme is {x, y, z, spin}. {ID_X, 5, 10, IDX_SUM_ALL} will calculate the LDOS for each x along (y,z)=(5,10) by summing over spin. Similarly {ID_X, 5, IDX_Y, IDX_SUM_ALL} will return a two dimensional LDOS for all x and z and y = 5. Note that IDX_X, IDX_Y, and IDX_Z refers to the first, second, and third index used by the routine to create a one, two, or threedimensional output, rather than being tied to the x, y, and z used as physical subindices. 
ranges  Speifies the number of elements for each subindex. Is ignored for indices specified with positive integers in the pattern, but is used to loop from 0 to the value in ranges for IDX_X, IDX_Y, IDX_Z, and IDX_SUM_ALL. Appropriate ranges corresponding to the two pattern examples above are {SIZE_X, 1, 1, NUM_SPINS} and {SIZE_X, 1, SIZE_Z, NUM_SPINS}, respectively. 
Reimplemented in TBTK::PropertyExtractor::Diagonalizer, TBTK::PropertyExtractor::ChebyshevExpander, TBTK::PropertyExtractor::ArnoldiIterator, and TBTK::PropertyExtractor::ExactDiagonalizer.

virtual 
Calculate local density of states.
Reimplemented in TBTK::PropertyExtractor::BlockDiagonalizer, TBTK::PropertyExtractor::Diagonalizer, TBTK::PropertyExtractor::ChebyshevExpander, and TBTK::PropertyExtractor::ArnoldiIterator.

virtual 
Calculate magnetization.
pattern  Specifies the index pattern for which to calculate the magnetization. For example, assume that the index scheme is {x, y, z, spin}. {ID_X, 5, 10, IDX_SPIN} will calculate the magnetization for each x along (y,z)=(5,10). Similarly {ID_X, 5, IDX_Y, IDX_SPIN} will return a two dimensional magnetiation for all x and z and y = 5. Note that IDX_X, IDX_Y, and IDX_Z refers to the first, second, and third index used by the routine to create a one, two, or threedimensional output, rather than being tied to the x, y, and z used as physical subindices. 
ranges  Speifies the number of elements for each subindex. Is ignored for indices specified with positive integers in the pattern, but is used to loop from 0 to the value in ranges for IDX_X, IDX_Y, IDX_Z, and IDX_SUM_ALL. Appropriate ranges corresponding to the two pattern examples above are {SIZE_X, 1, 1, NUM_SPINS} and {SIZE_X, 1, SIZE_Z, NUM_SPINS}, respectively. 
\[ \left[\begin{array}{cc} 0 & 1\\ 2 & 3 \end{array}\right] = \left[\begin{array}{cc} \langle c_{i\uparrow}^{\dagger}c_{i\uparrow}\rangle & \langle c_{i\uparrow}^{\dagger}c_{i\downarrow}\rangle\\ \langle c_{i\downarrow}^{\dagger}c_{u\uparrow}\rangle & \langle c_{i\downarrow}^{\dagger}c_{i\downarrow}\rangle \end{array}\right]. \]
Reimplemented in TBTK::PropertyExtractor::Diagonalizer, TBTK::PropertyExtractor::ChebyshevExpander, and TBTK::PropertyExtractor::ExactDiagonalizer.

virtual 
Calculate Magnetization.
Reimplemented in TBTK::PropertyExtractor::BlockDiagonalizer, TBTK::PropertyExtractor::Diagonalizer, and TBTK::PropertyExtractor::ChebyshevExpander.

virtual 
Calculate spinpolarized local density of states.
pattern  Specifies the index pattern for which to calculate the spinpolarized LDOS. For example, assume that the index scheme is {x, y, z, spin}. {ID_X, 5, 10, IDX_SPIN} will calculate the spinpolarized LDOS for each x along (y,z)=(5,10). Similarly {ID_X, 5, IDX_Y, IDX_SPIN} will return a two dimensional spinpolarized LDOS for all x and z and y = 5. Note that IDX_X, IDX_Y, and IDX_Z refers to the first, second, and third index used by the routine to create a one, two, or threedimensional output, rather than being tied to the x, y, and z used as physical subindices. 
ranges  Speifies the number of elements for each subindex. Is ignored for indices specified with positive integers in the pattern, but is used to loop from 0 to the value in ranges for IDX_X, IDX_Y, IDX_Z, and IDX_SUM_ALL. Appropriate ranges corresponding to the two pattern examples above are {SIZE_X, 1, 1, NUM_SPINS} and {SIZE_X, 1, SIZE_Z, NUM_SPINS}, respectively. 
\[ \left[\begin{array}{cc} 0 & 1\\ 2 & 3 \end{array}\right] = \left[\begin{array}{cc} \rho_{i\uparrow i\uparrow}(E) & \rho_{i\uparrow i\downarrow}(E)\\ \rho_{i\downarrow i\uparrow}(E) & \rho_{i\downarrow i\downarrow}(E)\\ \end{array}\right], \]
where\[ \rho_{i\sigma i\sigma'}(E) = \sum_{E_n}\langle\Psi_nc_{i\sigma}^{\dagger}c_{i\sigma'}\Psi_n\rangle\delta(E  E_n) . \]
Reimplemented in TBTK::PropertyExtractor::Diagonalizer, TBTK::PropertyExtractor::ChebyshevExpander, TBTK::PropertyExtractor::ArnoldiIterator, and TBTK::PropertyExtractor::ExactDiagonalizer.

virtual 
Calculate spinpolarized local density of states.
Reimplemented in TBTK::PropertyExtractor::BlockDiagonalizer, TBTK::PropertyExtractor::Diagonalizer, TBTK::PropertyExtractor::ChebyshevExpander, and TBTK::PropertyExtractor::ArnoldiIterator.

protected 
Ensure that range indices are on compliant format. (Set range to one for indices with nonnegative pattern value.)

protected 
Generate IndexTree.

protected 
Extract ranges for loop indices.

virtual 
Set the energy window used for energy dependent quantities.
Reimplemented in TBTK::PropertyExtractor::ChebyshevExpander.

staticprotected 
Default energy resolution.

protected 
Energy resolution used for energy dependent quantities.

protected 
Hint used to pass information between calculate[Property] and calculate[Property]Callback.

staticprotected 
Default lower bound.

protected 
Lower bound used for energy dependent quantities.

staticprotected 
Default upper bound.

protected 
Upper bound used for energy dependent quantities.