1#ifndef VIENNASHE_SHE_SCATTERING_COMMON_HPP
2#define VIENNASHE_SHE_SCATTERING_COMMON_HPP
64 void rate(
double r) { rate_ = r; }
65 double rate()
const {
return rate_; }
72 double initial_energy_;
75 double generation_rate_;
78 template <
typename DeviceType>
82 typedef typename DeviceType::mesh_type
MeshType;
84 typedef typename viennagrid::result_of::point<MeshType>::type
PointType;
85 typedef typename viennagrid::result_of::vertex<MeshType>::type
VertexType;
86 typedef typename viennagrid::result_of::facet<MeshType>::type
FacetType;
87 typedef typename viennagrid::result_of::cell<MeshType>::type
CellType;
98 double kinetic_energy,
102 double kinetic_energy,
The main SHE configuration class. To be adjusted by the user for his/her needs.
Defines the physical properties of a device, e.g. doping. This is the implementation for 2d and highe...
A simple class returning the scattering rate and the energy of a scattered particle.
void generation_rate(double r)
void final_energy(double e)
double final_energy() const
void initial_energy(double e)
double initial_energy() const
double generation_rate() const
scatter_process_descriptor()
scattering_base(DeviceType const &device, viennashe::config const &conf)
std::vector< scatter_process_descriptor > scatter_processes_type
virtual scatter_processes_type operator()(CellType const &elem, double kinetic_energy, viennashe::carrier_type_id ctype) const =0
viennagrid::result_of::cell< MeshType >::type CellType
virtual scatter_process_id id() const =0
DeviceType::mesh_type MeshType
virtual scatter_processes_type operator()(FacetType const &elem, double kinetic_energy, viennashe::carrier_type_id ctype) const =0
viennagrid::result_of::facet< MeshType >::type FacetType
virtual ~scattering_base()
scatter_processes_type value_type
viennagrid::result_of::point< MeshType >::type PointType
viennashe::config const & conf_
viennagrid::result_of::vertex< MeshType >::type VertexType
DeviceType const & device_
The SHE configuration class is defined here.
A logging facility providing fine-grained control over logging in ViennaSHE.
A very simple material database. Needs to be replaced by something more versatile soon.
Provides a number of fundamental math constants.
@ FIXED_CHARGE_SCATTERING
@ TRAPPED_CHARGE_SCATTERING
@ SURFACE_ACOUSTIC_PHONON_SCATTERING
@ IMPACT_IONIZATION_SCATTERING
@ INVALID_SCATTER_PROCESS
@ SURFACE_ROUGHNESS_SCATTERING
@ ACOUSTIC_PHONON_SCATTERING
@ OPTICAL_PHONON_SCATTERING
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.
Returns a few helper routines for computing physical quantities. To be replaced in the future.
Defines the log keys used within the viennashe::she namespace.