1#ifndef VIENNASHE_SHE_SCATTERING_CONFIG_HPP 
    2#define VIENNASHE_SHE_SCATTERING_CONFIG_HPP 
  129            return fit_factor_n(NI, is_donor_dominated);
 
  130          return fit_factor_p(NI, is_donor_dominated);
 
  135        double fit_factor_n(
double NI, 
bool is_donor_dominated)
 const 
  139          const long i = 
static_cast<long>(std::log(NI/100/100/100)/std::log(10.0));
 
  141          if (is_donor_dominated)
 
  143           if (i <= 14) factor = 0.0479266894808;
 
  144           else if (i <= 15) factor = 0.0143814762161;
 
  145           else if (i <= 16) factor = 0.163014476723;
 
  146           else if (i <= 17) factor = 1.27621982607;
 
  147           else if (i <= 18) factor = 2.07841863841;
 
  148           else if (i <= 19) factor = 2.66848494897;
 
  149           else if (i <= 20) factor = 8.69553015708;
 
  150           else factor = 71.4713817122;
 
  154           if (i <= 14) factor = 0.0135170431921;
 
  155           else if (i <= 15) factor = 0.110716650784;
 
  156           else if (i <= 16) factor = 0.499715004949;
 
  157           else if (i <= 17) factor = 1.4012436912;
 
  158           else if (i <= 18) factor = 1.24925936014;
 
  159           else if (i <= 19) factor = 1.0073534599;
 
  160           else if (i <= 20) factor = 2.84325491032;
 
  161           else factor = 22.5197987554;
 
  167        double fit_factor_p(
double NI, 
bool is_donor_dominated)
 const 
  171          const long i = 
static_cast<long>(std::log(NI/100/100/100)/std::log(10.0));
 
  174          if (is_donor_dominated)
 
  177           if (i <= 14) factor = 0.0001;
 
  178           else if (i <= 15) factor = 0.0229086958854;
 
  179           else if (i <= 16) factor = 0.106259676639;
 
  180           else if (i <= 17) factor = 0.492336240353;
 
  181           else if (i <= 18) factor = 0.529652548279;
 
  182           else if (i <= 19) factor = 0.336197331939; 
 
  183           else if (i <= 20) factor = 0.512045950387;
 
  184           else factor = 3.01287648798;
 
  190           if (i <= 14) factor =  1.1566304323;
 
  191           else if (i <= 15) factor = 0.324429154352; 
 
  192           else if (i <= 16) factor = 0.253416326007; 
 
  193           else if (i <= 17) factor = 0.718942981114; 
 
  194           else if (i <= 18) factor = 1.22458439328;
 
  195           else if (i <= 19) factor = 1.12207235068;
 
  196           else if (i <= 20) factor = 1.69835752347;
 
  197           else factor = 9.99694686735;
 
  320#ifdef VIENNASHE_USE_DISABLED_CODE 
  321    struct surface_roughness_scattering_parameters
 
  330      double get_fit_factor()
 const { 
return 1.0; }
 
  334    struct surface_acoustic_phonon_scattering_parameters
 
  351      double get_fit_factor()
 const { 
return 1.0; }
 
Parameters for elastic acoustic phonon scattering.
double get_fit_factor(viennashe::carrier_type_id ctype) const
double get_mass_density(viennashe::carrier_type_id) const
double get_longitudinal_sound_velocity(viennashe::carrier_type_id) const
double get_deformation_potential(viennashe::carrier_type_id ctype) const
void set_fit_factor(viennashe::carrier_type_id ctype, double value)
acoustic_phonon_scattering_parameters()
double get_fit_factor(viennashe::carrier_type_id ctype) const
fixed_charge_scattering_parameters()
void set_fit_factor(viennashe::carrier_type_id ctype, double value)
impact_ionization_scattering_parameters()
void set_fit_factor(viennashe::carrier_type_id ctype, double value)
double get_fit_factor(viennashe::carrier_type_id ctype) const
Parameters for ionized impurity scattering using an isotropic fit, cf. papers by Jungemann.
ionized_impurity_scattering_parameters()
double fit_factor(double NI, bool is_donor_dominated, viennashe::carrier_type_id ctype) const
Parameters for inelastic optical phonon scattering in single valley approximation.
optical_phonon_scattering_parameters()
double get_mass_density(viennashe::carrier_type_id) const
double get_phonon_energy() const
double get_fit_factor(viennashe::carrier_type_id ctype) const
void set_fit_factor(viennashe::carrier_type_id ctype, double value)
double get_coupling_constant(viennashe::carrier_type_id) const
A configuration class for scattering mechanisms. Enable or disable scattering mechanisms here.
optical_phonon_scattering_parameters & optical_phonon()
Returns the parameters for optical phonon scattering. Non-const-version.
acoustic_phonon_scattering_parameters & acoustic_phonon()
Returns the parameters for acoustic phonon scattering. Non-const-version.
ionized_impurity_scattering_parameters const & ionized_impurity() const
Returns the parameters for ionized impurity scattering. Const-version.
fixed_charge_scattering_parameters & fixed_charge()
Returns the parameters for fixed charge scattering. Non-const-version.
impact_ionization_scattering_parameters const & impact_ionization() const
Returns the parameters for impact ionization scattering. Const-version.
surface_scattering_parameters const & surface() const
Returns the parameters for surface scattering. Const-version.
surface_scattering_parameters & surface()
Returns the parameters for surface scattering. Non-const-version.
void electron_electron(bool b)
Enables/Disables electron-electron scattering.
acoustic_phonon_scattering_parameters const & acoustic_phonon() const
Returns the parameters for acoustic phonon scattering. Const-version.
trapped_charge_scattering_parameters & trapped_charge()
Returns the parameters for fixed charge scattering. Non-const-version.
trapped_charge_scattering_parameters const & trapped_charge() const
Returns the parameters for fixed charge scattering. Const-version.
optical_phonon_scattering_parameters const & optical_phonon() const
Returns the parameters for optical phonon scattering. Const-version.
bool electron_electron() const
Returns true if electron-electron scattering is activated.
impact_ionization_scattering_parameters & impact_ionization()
Returns the parameters for impact ionization scattering. Non-const-version.
ionized_impurity_scattering_parameters & ionized_impurity()
Returns the parameters for ionized impurity scattering. Non-const-version.
fixed_charge_scattering_parameters const & fixed_charge() const
Returns the parameters for fixed charge scattering. Const-version.
Common base class for all scattering parameter classes. Provides enable/disable interface.
scattering_parameter_base(bool b)
double second_factor(viennashe::carrier_type_id) const
surface_scattering_parameters()
double cutoff_distance() const
void set_fit_factor(viennashe::carrier_type_id ctype, double value)
double first_factor(viennashe::carrier_type_id) const
double get_fit_factor(viennashe::carrier_type_id ctype) const
double third_factor(viennashe::carrier_type_id) const
double get_fit_factor(viennashe::carrier_type_id ctype) const
void set_fit_factor(viennashe::carrier_type_id ctype, double value)
trapped_charge_scattering_parameters()
Contains forward declarations and definition of small classes that must be defined at an early stage.
A logging facility providing fine-grained control over logging in ViennaSHE.
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.
static const double q
Elementary charge.