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.