ViennaSHE 1.3.0
Free open-source semiconductor device simulator using spherical harmonics expansions techniques.
viennashe::she::surface_scattering< DeviceType, ElectricFieldAccessor > Class Template Reference

Surface scattering process. More...

#include <surface_scattering.hpp>

Inheritance diagram for viennashe::she::surface_scattering< DeviceType, ElectricFieldAccessor >:
viennashe::she::scattering_base< DeviceType >

Public Types

typedef base_type::scatter_processes_type scatter_processes_type
 
typedef scatter_processes_type value_type
 
- Public Types inherited from viennashe::she::scattering_base< DeviceType >
typedef std::vector< scatter_process_descriptorscatter_processes_type
 
typedef scatter_processes_type value_type
 

Public Member Functions

 surface_scattering (DeviceType const &device, viennashe::config const &conf, ElectricFieldAccessor const &Efield)
 
scatter_processes_type operator() (CellType const &elem, double kinetic_energy, viennashe::carrier_type_id ctype) const
 
scatter_processes_type operator() (FacetType const &elem, double kinetic_energy, viennashe::carrier_type_id ctype) const
 
scatter_process_id id () const
 
- Public Member Functions inherited from viennashe::she::scattering_base< DeviceType >
 scattering_base (DeviceType const &device, viennashe::config const &conf)
 
virtual ~scattering_base ()
 
virtual scatter_processes_type operator() (FacetType const &elem, double kinetic_energy, viennashe::carrier_type_id ctype) const =0
 
virtual scatter_processes_type operator() (CellType const &elem, double kinetic_energy, viennashe::carrier_type_id ctype) const =0
 
virtual scatter_process_id id () const =0
 

Protected Member Functions

template<typename ElementType >
scatter_processes_type get (ElementType const &elem, double kinetic_energy, viennashe::carrier_type_id ctype) const
 Returns all possible final scattering states for a carrier with initial kinetic energy 'kin_energy' for an edge with vertices v1 and v2. More...
 
template<typename ElementType >
double getScatteringRate (ElementType const &elem, double kinetic_energy, viennashe::carrier_type_id ctype) const
 
double get_electric_field_n (CellType const &) const
 
double get_electric_field_n (FacetType const &) const
 
double getScatteringRate (const double T, const double totaldoping, const double Ep, viennashe::carrier_type_id ctype) const
 

Additional Inherited Members

- Protected Types inherited from viennashe::she::scattering_base< DeviceType >
typedef DeviceType::mesh_type MeshType
 
typedef viennagrid::result_of::point< MeshType >::type PointType
 
typedef viennagrid::result_of::vertex< MeshType >::type VertexType
 
typedef viennagrid::result_of::facet< MeshType >::type FacetType
 
typedef viennagrid::result_of::cell< MeshType >::type CellType
 
- Protected Attributes inherited from viennashe::she::scattering_base< DeviceType >
DeviceType const & device_
 
viennashe::config const & conf_
 

Detailed Description

template<typename DeviceType, typename ElectricFieldAccessor>
class viennashe::she::surface_scattering< DeviceType, ElectricFieldAccessor >

Surface scattering process.

Calculates surface scattering based on an estimate of the wave-function of the carriers using the electric field

Definition at line 50 of file surface_scattering.hpp.

Member Typedef Documentation

◆ scatter_processes_type

template<typename DeviceType , typename ElectricFieldAccessor >
typedef base_type::scatter_processes_type viennashe::she::surface_scattering< DeviceType, ElectricFieldAccessor >::scatter_processes_type

Definition at line 57 of file surface_scattering.hpp.

◆ value_type

template<typename DeviceType , typename ElectricFieldAccessor >
typedef scatter_processes_type viennashe::she::surface_scattering< DeviceType, ElectricFieldAccessor >::value_type

Definition at line 58 of file surface_scattering.hpp.

Constructor & Destructor Documentation

◆ surface_scattering()

template<typename DeviceType , typename ElectricFieldAccessor >
viennashe::she::surface_scattering< DeviceType, ElectricFieldAccessor >::surface_scattering ( DeviceType const &  device,
viennashe::config const &  conf,
ElectricFieldAccessor const &  Efield 
)
inlineexplicit

Definition at line 60 of file surface_scattering.hpp.

Member Function Documentation

◆ get()

template<typename DeviceType , typename ElectricFieldAccessor >
template<typename ElementType >
scatter_processes_type viennashe::she::surface_scattering< DeviceType, ElectricFieldAccessor >::get ( ElementType const &  elem,
double  kinetic_energy,
viennashe::carrier_type_id  ctype 
) const
inlineprotected

Returns all possible final scattering states for a carrier with initial kinetic energy 'kin_energy' for an edge with vertices v1 and v2.

Parameters
elemThe element for which to obtain the scattering process
kinetic_energyKinetic energy of the particle before scattering
ctypeCarrier type, either electrons or holes
Returns
A vector describing all possible states. For ionized_impurity_scattering we use the approximation 'incoming energy equal final energy'.

Definition at line 92 of file surface_scattering.hpp.

◆ get_electric_field_n() [1/2]

template<typename DeviceType , typename ElectricFieldAccessor >
double viennashe::she::surface_scattering< DeviceType, ElectricFieldAccessor >::get_electric_field_n ( CellType const &  ) const
inlineprotected

Definition at line 126 of file surface_scattering.hpp.

◆ get_electric_field_n() [2/2]

template<typename DeviceType , typename ElectricFieldAccessor >
double viennashe::she::surface_scattering< DeviceType, ElectricFieldAccessor >::get_electric_field_n ( FacetType const &  ) const
inlineprotected

Definition at line 147 of file surface_scattering.hpp.

◆ getScatteringRate() [1/2]

template<typename DeviceType , typename ElectricFieldAccessor >
double viennashe::she::surface_scattering< DeviceType, ElectricFieldAccessor >::getScatteringRate ( const double  T,
const double  totaldoping,
const double  Ep,
viennashe::carrier_type_id  ctype 
) const
inlineprotected

Definition at line 172 of file surface_scattering.hpp.

◆ getScatteringRate() [2/2]

template<typename DeviceType , typename ElectricFieldAccessor >
template<typename ElementType >
double viennashe::she::surface_scattering< DeviceType, ElectricFieldAccessor >::getScatteringRate ( ElementType const &  elem,
double  kinetic_energy,
viennashe::carrier_type_id  ctype 
) const
inlineprotected

Definition at line 108 of file surface_scattering.hpp.

◆ id()

template<typename DeviceType , typename ElectricFieldAccessor >
scatter_process_id viennashe::she::surface_scattering< DeviceType, ElectricFieldAccessor >::id ( ) const
inlinevirtual

◆ operator()() [1/2]

template<typename DeviceType , typename ElectricFieldAccessor >
scatter_processes_type viennashe::she::surface_scattering< DeviceType, ElectricFieldAccessor >::operator() ( CellType const &  elem,
double  kinetic_energy,
viennashe::carrier_type_id  ctype 
) const
inlinevirtual

◆ operator()() [2/2]

template<typename DeviceType , typename ElectricFieldAccessor >
scatter_processes_type viennashe::she::surface_scattering< DeviceType, ElectricFieldAccessor >::operator() ( FacetType const &  elem,
double  kinetic_energy,
viennashe::carrier_type_id  ctype 
) const
inlinevirtual

The documentation for this class was generated from the following file: