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

#include <DPropertyExtractor.h>

Public Member Functions

 DPropertyExtractor (DiagonalizationSolver *dSolver)
 
 ~DPropertyExtractor ()
 
void saveEigenValues (std::string path="./", std::string filename="EV.dat")
 
void getTabulatedAmplitudeSet (std::complex< double > **amplitudes, int **indices, int *numHoppingAmplitudes, int *maxIndexSize)
 
Property::EigenValuesgetEigenValues ()
 
double getEigenValue (int state)
 
const std::complex< double > getAmplitude (int state, const Index &index)
 
Property::DOScalculateDOS (double l_lim, double u_lim, int resolution)
 
Property::DensitycalculateDensity (Index pattern, Index ranges)
 
Property::MagnetizationcalculateMagnetization (Index pattern, Index ranges)
 
Property::SpinPolarizedLDOScalculateSpinPolarizedLDOS (Index pattern, Index ranges, double l_lim, double u_lim, int resolution)
 

Detailed Description

The DPropertyExtractor extracts common physical properties such as DOS, Density, LDOS, etc. from a DiagonalizationSolver. These can then be written to file using the FileWriter.

Constructor & Destructor Documentation

TBTK::DPropertyExtractor::DPropertyExtractor ( DiagonalizationSolver dSolver)

Constructor.

TBTK::DPropertyExtractor::~DPropertyExtractor ( )

Destructor.

Member Function Documentation

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

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 integer 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::DOS * TBTK::DPropertyExtractor::calculateDOS ( double  l_lim,
double  u_lim,
int  resolution 
)

Calculate density of states.

Parameters
l_limLower limit for energy interval.
u_limUpper limit for energy interval.
resolutionNumber of points used between l_lim and u_lim.
Returns
An array with size resolution.
Property::Magnetization * TBTK::DPropertyExtractor::calculateMagnetization ( Index  pattern,
Index  ranges 
)

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::DPropertyExtractor::calculateSpinPolarizedLDOS ( Index  pattern,
Index  ranges,
double  l_lim,
double  u_lim,
int  resolution 
)

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

const std::complex< double > TBTK::DPropertyExtractor::getAmplitude ( int  state,
const Index index 
)
inline

Get amplitude for given eigenvector $n$ and physical index $x$: $\Psi_{n}(x)$.

Parameters
stateEigenstate number $n$
indexPhysical index $x$.
double TBTK::DPropertyExtractor::getEigenValue ( int  state)
inline

Get eigenvalue.

Property::EigenValues * TBTK::DPropertyExtractor::getEigenValues ( )

Get eigenvalues.

void TBTK::DPropertyExtractor::getTabulatedAmplitudeSet ( std::complex< double > **  amplitudes,
int **  indices,
int *  numHoppingAmplitudes,
int *  maxIndexSize 
)

Experimental. Extracts a tabulated version of the AmplitudeSet.

void TBTK::DPropertyExtractor::saveEigenValues ( std::string  path = "./",
std::string  filename = "EV.dat" 
)

Legacy.


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