1#ifndef VIENNASHE_MODELS_ALL_BANDGAP_HPP
2#define VIENNASHE_MODELS_ALL_BANDGAP_HPP
89 if ( T < _params.
Tmin ) T = this->_params.
Tmin;
90 if ( T > _params.
Tmax ) T = this->_params.
Tmax;
94 const double prefactor = this->_params.
alpha * this->_params.
theta * 0.5;
95 const double nu = this->_params.
nu;
96 const double theta = this->_params.
theta;
103 const double a1 = (5.0 + nu) / 6.0 * std::pow(pi * 0.5, (2.0 + 0.5 * (nu - 1.0)*(nu - 1.0)));
105 const double a2 = (1.0 - nu) * 0.5;
107 const double a3 = ((5.0 + nu)*(1.0 + nu)*(1.0 + nu)) / (6.0 * nu + 3.0 * nu * nu);
109 const double sum = a1 * std::pow(2.0 * T / theta, 1.0 + nu) + a2 * std::pow(2.0 * T / theta, 2.0 + nu) + a3 * std::pow(2.0 * T / theta, 3.0 + nu);
111 const double Eg = _params.
Eg0 - prefactor * (std::pow(1.0 + sum + std::pow(2.0 * T / theta, 5.0 + nu), 1.0 / (5.0 + nu)) - 1.0);
A simple constant bandgap model. Gets the bandgap and always returns this value.
bandgap_model_const(double Eg)
double operator()(double) const
An elaborate bandgap model, which accounts for the lattice temperature.
double operator()(double TL) const
bandgap_model_extended(const bandgap_model_extended_parameters ¶ms)
Thrown whenever an invalid parameter to a model is given.
Contains forward declarations and definition of small classes that must be defined at an early stage.
Provides a number of fundamental math constants.
Contains exceptions for viennashe::models.
The main ViennaSHE namespace. All functionality resides inside this namespace.
Provides a number of fundamental constants. All constants in SI units.
static const double pi
Pi.
Plain old datatype (POD) of parameters for the bandgap_model_extended.
bandgap_model_extended_parameters()
Basic bandgap model interface.
virtual double operator()(double T) const =0