TBTK
Public Member Functions | List of all members
TBTK::CPropertyExtractor Class Reference

#include <CPropertyExtractor.h>

Public Member Functions

 CPropertyExtractor (ChebyshevSolver *cSolver, int numCoefficients, int energyResolution, bool useGPUToCalculateCoefficients, bool useGPUToGenerateGreensFunctions, bool useLookupTable=true, double lowerBound=-1., double upperBound=1.)
 
 ~CPropertyExtractor ()
 
std::complex< double > * calculateGreensFunction (Index to, Index from, ChebyshevSolver::GreensFunctionType type=ChebyshevSolver::GreensFunctionType::Retarded)
 
std::complex< double > * calculateGreensFunctions (std::vector< Index > &to, Index from, ChebyshevSolver::GreensFunctionType type=ChebyshevSolver::GreensFunctionType::Retarded)
 
std::complex< double > calculateExpectationValue (Index to, Index from)
 
Property::DensitycalculateDensity (Index pattern, Index ranges)
 
Property::MagnetizationcalculateMagnetization (Index pattern, Index ranges)
 
Property::LDOScalculateLDOS (Index pattern, Index ranges)
 
Property::SpinPolarizedLDOScalculateSpinPolarizedLDOS (Index pattern, Index ranges)
 

Detailed Description

Experimental class for extracting properties from a ChebyshevSolver.

Constructor & Destructor Documentation

TBTK::CPropertyExtractor::CPropertyExtractor ( ChebyshevSolver cSolver,
int  numCoefficients,
int  energyResolution,
bool  useGPUToCalculateCoefficients,
bool  useGPUToGenerateGreensFunctions,
bool  useLookupTable = true,
double  lowerBound = -1.,
double  upperBound = 1. 
)

Constructor.

TBTK::CPropertyExtractor::~CPropertyExtractor ( )

Destructor.

Member Function Documentation

Property::Density * TBTK::CPropertyExtractor::calculateDensity ( Index  pattern,
Index  ranges 
)

!!!Not tested!!! Calculate density.

Parameters
patternSpecifies 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 three-dimensional output, rather than being tied to the x, y, and z used as physical subindices.
rangesSpeifies 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.
Returns
A density array with size equal to the number of points included by specified patter-range combination.
complex< double > TBTK::CPropertyExtractor::calculateExpectationValue ( Index  to,
Index  from 
)

Calculate expectation value.

complex< double > * TBTK::CPropertyExtractor::calculateGreensFunction ( Index  to,
Index  from,
ChebyshevSolver::GreensFunctionType  type = ChebyshevSolver::GreensFunctionType::Retarded 
)

Calculate Green's function.

complex< double > * TBTK::CPropertyExtractor::calculateGreensFunctions ( std::vector< Index > &  to,
Index  from,
ChebyshevSolver::GreensFunctionType  type = ChebyshevSolver::GreensFunctionType::Retarded 
)

Calculate Green's function for a range of 'to'-indices.

Property::LDOS * TBTK::CPropertyExtractor::calculateLDOS ( Index  pattern,
Index  ranges 
)

!!!Not tested!!!. Calculate local density of states.

Parameters
patternSpecifies 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 three-dimensional output, rather than being tied to the x, y, and z used as physical subindices.
rangesSpeifies 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.
Returns
A density array with size equal to the number of points included by specified patter-range combination.
Property::Magnetization * TBTK::CPropertyExtractor::calculateMagnetization ( Index  pattern,
Index  ranges 
)

!!!Not tested!!! Calculate magnetization.

Parameters
patternSpecifies 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 three-dimensional output, rather than being tied to the x, y, and z used as physical subindices.
rangesSpeifies 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.
Returns
A magnetization array with size equal to four times the number of points included by specified patter-range combination. The four entries are

\[ \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]. \]

Property::SpinPolarizedLDOS * TBTK::CPropertyExtractor::calculateSpinPolarizedLDOS ( Index  pattern,
Index  ranges 
)

!!!Not tested!!!. Calculate spin-polarized local density of states.

Parameters
patternSpecifies the index pattern for which to calculate the spin-polarized LDOS. For example, assume that the index scheme is {x, y, z, spin}. {ID_X, 5, 10, IDX_SPIN} will calculate the spin-polarized LDOS for each x along (y,z)=(5,10). Similarly {ID_X, 5, IDX_Y, IDX_SPIN} will return a two dimensional spin-polarized 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 three-dimensional output, rather than being tied to the x, y, and z used as physical subindices.
rangesSpeifies 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.
Returns
A spin-polarized LDOS array with size equal to four times the number of points included by specified patter-range combination. The four entries are

\[ \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_n|c_{i\sigma}^{\dagger}c_{i\sigma'}|\Psi_n\rangle\delta(E - E_n) . \]


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