1#ifndef VIENNASHE_PHYSICS_PHYSICS_HPP
2#define VIENNASHE_PHYSICS_PHYSICS_HPP
74 return 1.0 / (std::exp(eps_optical / (kB * temperature)) - 1.0);
86 const double Ncv0 = 2.50933670314359713002e19 * 100 * 100 * 100;
89 return Ncv0 * std::pow(me * (temperature / 300.0), 1.5) * 6.0;
131 return band_weight * std::exp(polarity * band_edge / kbT);
143 if (doping_n <= 0 && doping_p <= 0)
return 0;
145 const double net_doping = (doping_n - doping_p);
146 const double T = temperature;
150 double x = std::sqrt(net_doping * net_doping + 4.0 * naux * paux);
152 if ( net_doping >= 0.0 )
154 x = (x + net_doping) * 0.5 / naux;
159 x = (x - net_doping) * 0.5 / paux;
183 return band_weight * std::exp( polarity * ( band_edge - q * phiB ) / kbT ) ;
Contains forward declarations and definition of small classes that must be defined at an early stage.
A very simple material database. Needs to be replaced by something more versatile soon.
Provides a number of fundamental math constants.
double eV_to_joule(const double eps)
double joule_to_eV(const double eps)
double get_optical_phonon_number(double eps_optical, double temperature=300.0)
Returns the optical phonon number for use with optical phonon scattering.
double get_thermal_velocity(double temperature, viennashe::carrier_type_id ctype)
Returns the thermal velocity at the given lattice temperature for a given carrier type.
double get_thermal_potential(double T)
Returns the thermal potential for the provided temperature.
double contact_carrier_ohm(double temperature, double doping_n, double doping_p, viennashe::carrier_type_id ctype)
Consistently calculates the contact carrier concentrations for thermal bath contacts.
double get_band_edge(viennashe::carrier_type_id const &ctype)
Returns the band edge relative to the reference energy (mid-gap)
double get_band_weight(double temperature, viennashe::carrier_type_id ctype)
Returns the band weight (N_c or N_v)
double get_auxilary_concentration(double temperature, viennashe::carrier_type_id ctype)
Returns the auxilary carrier concentration.
double built_in_potential(double temperature, double doping_n, double doping_p)
Computes the built-in potential for a given temperature and given doping.
The main ViennaSHE namespace. All functionality resides inside this namespace.
carrier_type_id
Enumeration type for selecting the carrier type.
Provides a number of fundamental constants. All constants in SI units.
All the exceptions used within the viennashe::physics namespace.
static const double pi
Pi.
static const double q
Elementary charge.
static const double kB
Boltzmann constant.
static const double mass_electron
Electron rest mass.