|
| | DOS () |
| |
| | DOS (double lowerBound, double upperBound, int resolution) |
| |
| | DOS (double lowerBound, double upperBound, int resolution, const double *data) |
| |
| | DOS (const std::string &serialization, Mode mode) |
| |
| DOS & | operator+= (const DOS &rhs) |
| |
| DOS | operator+ (const DOS &rhs) const |
| |
| DOS & | operator-= (const DOS &rhs) |
| |
| DOS | operator- (const DOS &rhs) const |
| |
| DOS & | operator*= (const double &rhs) |
| |
| DOS | operator* (const double &rhs) const |
| |
| DOS & | operator/= (const double &rhs) |
| |
| DOS | operator/ (const double &rhs) const |
| |
| virtual std::string | toString () const |
| |
| virtual std::string | serialize (Mode mode) const |
| |
| | EnergyResolvedProperty () |
| |
| | EnergyResolvedProperty (double lowerBound, double upperBound, unsigned int resolution) |
| |
| | EnergyResolvedProperty (double lowerBound, double upperBound, unsigned int resolution, const double *data) |
| |
| | EnergyResolvedProperty (const std::vector< int > &ranges, double lowerBound, double upperBound, unsigned int resolution) |
| |
| | EnergyResolvedProperty (const std::vector< int > &ranges, double lowerBound, double upperBound, unsigned int resolution, const double *data) |
| |
| | EnergyResolvedProperty (const IndexTree &indexTree, double lowerBound, double upperBound, unsigned int resolution) |
| |
| | EnergyResolvedProperty (const IndexTree &indexTree, double lowerBound, double upperBound, unsigned int resolution, const double *data) |
| |
| | EnergyResolvedProperty (EnergyType energyType, const IndexTree &indexTree, int lowerMatsubaraEnergyIndex, int upperMatsubaraEnergtIndex, double fundamentalMatsubaraEnergy) |
| |
| | EnergyResolvedProperty (EnergyType energyType, const IndexTree &indexTree, int lowerMatsubaraEnergyIndex, int upperMatsubaraEnergtIndex, double fundamentalMatsubaraEnergy, const double *data) |
| |
| | EnergyResolvedProperty (const std::string &serialization, Serializable::Mode mode) |
| |
|
EnergyType | getEnergyType () const |
| |
| double | getLowerBound () const |
| |
| double | getUpperBound () const |
| |
| unsigned int | getResolution () const |
| |
| double | getDeltaE () const |
| |
| double | getEnergy (unsigned int n) const |
| |
| int | getLowerMatsubaraEnergyIndex () const |
| |
| int | getUpperMatsubaraEnergyIndex () const |
| |
| unsigned int | getNumMatsubaraEnergies () const |
| |
| double | getFundamentalMatsubaraEnergy () const |
| |
| double | getLowerMatsubaraEnergy () const |
| |
| double | getUpperMatsubaraEnergy () const |
| |
| std::complex< double > | getMatsubaraEnergy (unsigned int n) const |
| |
| unsigned int | getNumEnergies () const |
| |
| bool | energyWindowsAreEqual (const EnergyResolvedProperty &energyResolvedProperty, double precision=1e-1) const |
| |
| unsigned int | getBlockSize () const |
| |
| unsigned int | getSize () const |
| |
| const std::vector< double > & | getData () const |
| |
| std::vector< double > & | getDataRW () |
| |
| unsigned int | getDimensions () const |
| |
| std::vector< int > | getRanges () const |
| |
| int | getOffset (const Index &index) const |
| |
| const IndexDescriptor & | getIndexDescriptor () const |
| |
| bool | contains (const Index &index) const |
| |
| void | reduce (const std::vector< Index > &targetPatterns, const std::vector< Index > &newPatterns) |
| |
| void | hermitianConjugate () |
| |
| std::vector< SparseMatrix< double > > | toSparseMatrices (const Model &model) const |
| |
| virtual const double & | operator() (const Index &index, unsigned int offset=0) const |
| |
| virtual double & | operator() (const Index &index, unsigned int offset=0) |
| |
| double & | operator() (const std::initializer_list< Subindex > &index) |
| |
| const double & | operator() (const std::initializer_list< Subindex > &index) const |
| |
| virtual const double & | operator() (unsigned int offset) const |
| |
| virtual double & | operator() (unsigned int offset) |
| |
| void | setAllowIndexOutOfBoundsAccess (bool allowIndexOutOfBoundsAccess) |
| |
| void | setDefaultValue (const double &defaultValue) |
| |
| void | replaceValues (const double &targetValue, const double &replacementValue) |
| |
| virtual std::string | toString () const |
| |
|
template<> |
| std::string | serialize (const bool &data, Mode mode) |
| |
|
template<> |
| std::string | serialize (const double &data, Mode mode) |
| |
|
template<> |
| std::string | serialize (const std::complex< double > &data, Mode mode) |
| |
|
template<> |
| std::string | serialize (const int &data, Mode mode) |
| |
|
template<> |
| std::string | serialize (const unsigned int &data, Mode mode) |
| |
|
template<> |
| std::string | serialize (const SpinMatrix &data, Mode mode) |
| |
|
template<> |
| std::string | serialize (const Statistics &data, Mode mode) |
| |
|
template<> |
| std::string | serialize (const std::vector< std::complex< double >> &data, Mode mode) |
| |
|
template<> |
| int | deserialize (const std::string &serialization, Mode mode) |
| |
|
| enum | EnergyType |
| |
| enum | Mode { Debug,
Binary,
XML,
JSON
} |
| |
| static bool | hasID (const std::string &serialization, Mode mode) |
| |
| static std::string | getID (const std::string &serialization, Mode mode) |
| |
| static std::string | extractComponent (const std::string &serialization, const std::string &containerID, const std::string &componentID, const std::string &componentName, Mode mode) |
| |
| EnergyResolvedProperty & | operator+= (const EnergyResolvedProperty &rhs) |
| |
| EnergyResolvedProperty & | operator-= (const EnergyResolvedProperty &rhs) |
| |
| EnergyResolvedProperty & | operator*= (const double &rhs) |
| |
| EnergyResolvedProperty & | operator/= (const double &rhs) |
| |
| | AbstractProperty () |
| |
| | AbstractProperty (unsigned int blockSize) |
| |
| | AbstractProperty (unsigned int blockSize, const double *data) |
| |
| | AbstractProperty (const std::vector< int > &ranges, unsigned int blockSize) |
| |
| | AbstractProperty (const std::vector< int > &ranges, unsigned int blockSize, const double *data) |
| |
| | AbstractProperty (const IndexTree &indexTree, unsigned int blockSize) |
| |
| | AbstractProperty (const IndexTree &indexTree, unsigned int blockSize, const double *data) |
| |
| | AbstractProperty (const AbstractProperty &abstractProperty) |
| |
| | AbstractProperty (AbstractProperty &&abstractProperty) |
| |
| | AbstractProperty (const std::string &serialization, Mode mode) |
| |
| virtual | ~AbstractProperty () |
| |
| AbstractProperty & | operator= (const AbstractProperty &abstractProperty) |
| |
| AbstractProperty & | operator= (AbstractProperty &&abstractProperty) |
| |
| AbstractProperty & | operator+= (const AbstractProperty &rhs) |
| |
| AbstractProperty & | operator-= (const AbstractProperty &rhs) |
| |
| AbstractProperty & | operator*= (const double &rhs) |
| |
| AbstractProperty & | operator/= (const double &rhs) |
| |
| | Property () |
| |
| virtual | ~Property () |
| |
| static bool | validate (const std::string &serialization, const std::string &id, Mode mode) |
| |
| static std::string | getContent (const std::string &serialization, Mode mode) |
| |
| static std::vector< std::string > | split (const std::string &content, Mode mode) |
| |
| template<typename DataType > |
| static std::enable_if<!std::is_pointer< DataType >::value, std::string >::type | serialize (const DataType &data, Mode mode) |
| |
|
template<typename DataType > |
| static std::enable_if< std::is_pointer< DataType >::value, std::string >::type | serialize (const DataType &data, Mode mode) |
| |
| template<typename DataType > |
| static DataType | deserialize (const std::string &serialization, Mode mode) |
| |
| static std::string | extract (const std::string &serialization, Mode mode, std::string component) |
| |
Property container for density of states (DOS).
The DOS is an EnergyResolvedProperty with DataType double.
Conventions
DOS extracted by native PropertyExtractors satisfies the following convention.
- The DOS is normalized such that, if it covers the full energy range, it integrates to the Model's basis size. \(\sum_{n}DOS(n)\Delta E\) = basis size.
Example
#include "TBTK/PropertyExtractor/Diagonalizer.h"
using namespace TBTK;
using namespace Visualization::MatPlotLib;
int main(){
const unsigned int SIZE_X = 40;
const unsigned int SIZE_Y = 40;
double t = 1;
const double LOWER_BOUND = -5;
const double UPPER_BOUND = 5;
const unsigned int RESOLUTION = 200;
propertyExtractor.setEnergyWindow(
LOWER_BOUND,
UPPER_BOUND,
RESOLUTION
);
double integratedDOS = 0;
double dE = dos.getDeltaE();
for(unsigned int n = 0; n < dos.getResolution(); n++)
integratedDOS += dos(n)*dE;
Streams::out <<
"Integrated DOS: " << integratedDOS <<
"\n";
const double SMOOTHING_SIGMA = 0.2;
const unsigned int SMOOTHING_WINDOW = 51;
Plotter plotter;
plotter.plot(dos);
plotter.save("figures/DOS.png");
}
Output
Lower bound: -5 eV (-5 n.u.)
Upper bound: 5 eV (5 n.u.)
Resolution: 200
dos(50) = 159.2