Phoebe developer's documentation  1.1.0
Phonon and Electron Boltzmann Equations
Window Class Reference

The window class contains the logic to decide whether to keep or discard a Bloch state. More...

#include <window.h>

Public Member Functions

 Window (Context &context, Particle &particle_, const double &temperatureMin=0., const double &temperatureMax=0., const double &chemicalPotentialMin=0., const double &chemicalPotentialMax=0.)
 Class constructor. More...
 
std::tuple< std::vector< double >, std::vector< int > > apply (Eigen::VectorXd &energies)
 public interface to use the window, used by activeBandStructure. More...
 
int getMethodUsed () const
 Returns the kind of energy filter used. More...
 

Static Public Attributes

static const int nothing = 0
 nothing=0 identifies the do-nothing window
 
static const int population = 1
 population labels the window type looking for partially occupied states
 
static const int energy = 2
 energy labels the window type looking for states within two energy values
 
static const int muEnergy = 3
 the window type is provided by the user as an energy range, where the values are a +/- range around mu
 

Detailed Description

Mainly used by ActiveBandStructure, it contains some criteria by which we decide to discard some points from the calculation. Only three filters are implemented: 1- no filter is applied 2- population: we discard states that are scarcely (or fully) populated. 3- energy: the user provides a lower an upper bound to the energies to be considered.

Constructor & Destructor Documentation

◆ Window()

Window::Window ( Context context,
Particle particle_,
const double &  temperatureMin = 0.,
const double &  temperatureMax = 0.,
const double &  chemicalPotentialMin = 0.,
const double &  chemicalPotentialMax = 0. 
)
Parameters
contextobject with user input
particleobject describing whether we have electrons or phonons.
temperatureMinsmallest value of temperature used in the calculation.
temperatureMaxlargest value of temperature used.
chemicalPotentialMinsmallest value of chemical potential used in the calculation.
chemicalPotentialMaxlargest value of chemical potential used in the calculation.

Note: temperatures and chemical potentials are used only if we are using a filter on populations.

Here is the call graph for this function:

Member Function Documentation

◆ apply()

std::tuple< std::vector< double >, std::vector< int > > Window::apply ( Eigen::VectorXd &  energies)
Parameters
energies: a list of energies, in absolute units. They should be using the same offset of the chemical potential. Nota Bene: the energies should be sorted! This is typically true if we are looping over the energies of a single wavevector.
Returns
filteredEnergies: the values of energies after the filter, an empty vector if nothing is found.
filteredBandsExtrema: the smallest and largest band index of the bands that pass the filter. We are assuming that the filtered energies are contiguous in the band index. Returns an empty vector if nothing goes past the filter.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getMethodUsed()

int Window::getMethodUsed ( ) const
Returns
method: an integer equal to either Window::nothing, Window::population, or Window::energy.
Here is the caller graph for this function: