ViennaSHE 1.3.0
Free open-source semiconductor device simulator using spherical harmonics expansions techniques.
viennashe::device< MeshT, edges_and_cells_different > Class Template Reference

Defines the physical properties of a device, e.g. doping. This is the implementation for 2d and higher dimensions. More...

#include <device.hpp>

Inheritance diagram for viennashe::device< MeshT, edges_and_cells_different >:
viennashe::detail::device_base< MeshT >

Additional Inherited Members

- Public Types inherited from viennashe::detail::device_base< MeshT >
typedef MeshT mesh_type
 
typedef viennagrid::result_of::facet< MeshT >::type facet_type
 
typedef viennagrid::result_of::cell< MeshT >::type cell_type
 
typedef viennagrid::result_of::accessor_container< cell_type, bool, viennagrid::std_vector_tag >::type CellRefinementContainerType
 
typedef viennagrid::result_of::segment_handle< segmentation_type >::type segment_type
 
typedef viennagrid::result_of::segmentation_segment_id_type< segmentation_type >::type segment_id_type
 
typedef long material_id_type
 
typedef std::size_t id_type
 
typedef trap_level trap_level_type
 
typedef std::vector< trap_level_typetrap_level_container_type
 
typedef viennagrid::result_of::voronoi_cell_contribution< const_cell_handle_type >::type voronoi_contribution_container_type
 
- Public Member Functions inherited from viennashe::detail::device_base< MeshT >
 device_base ()
 
void load_mesh (std::string filename)
 
template<typename DeviceLoaderType >
void load_device (DeviceLoaderType &loader)
 
void generate_mesh (viennashe::util::device_generation_config const &generator_params)
 
template<typename MeshGeneratorType >
void generate_mesh (MeshGeneratorType const &gen)
 
MeshT const & mesh () const
 Returns the underlying mesh. More...
 
MeshT & mesh ()
 
segmentation_type const & segmentation () const
 
segmentation_typesegmentation ()
 
segment_type const & segment (segment_id_type id) const
 
void scale (double factor)
 
void refine (int factor)
 
void set_lattice_temperature (double new_value)
 Sets the homogeneous temperature of the device. More...
 
void set_lattice_temperature (double new_value, cell_type const &c)
 Sets the lattice temperature at a cell. More...
 
void set_lattice_temperature (double new_value, segment_type const &s)
 Sets the lattice temperature on a segment. More...
 
double get_lattice_temperature (cell_type const &c) const
 Returns the lattice temperature on a cell. More...
 
double get_lattice_temperature (facet_type const &facet) const
 
void set_doping_n (double value, cell_type const &c)
 Sets the donator doping (in m^-3) in the specified cell. More...
 
void set_doping_n (double value, segment_type const &d)
 Sets the donator doping (in m^-3) in the specified segment. More...
 
void set_doping_n (double value, segment_id_type const &seg_id)
 Sets the donator doping (in m^-3) in the specified segment. More...
 
void set_doping_n (double value)
 Sets the donator doping (in m^-3) in the whole device. More...
 
double get_doping_n (cell_type const &c) const
 Returns the donator doping (in m^-3) in the specified cell. More...
 
double get_doping_n (facet_type const &facet) const
 
std::vector< double > const & doping_n () const
 
void set_doping_p (double value, cell_type const &c)
 Sets the acceptor doping (in m^-3) in the specified cell. More...
 
void set_doping_p (double value, segment_type const &d)
 Sets the acceptor doping (in m^-3) in the specified segment. More...
 
void set_doping_p (double value, segment_id_type const &seg_id)
 Sets the donator doping (in m^-3) in the specified segment. More...
 
void set_doping_p (double value)
 Sets the acceptor doping (in m^-3) in the whole device. More...
 
double get_doping_p (cell_type const &c) const
 Returns the donator doping (in m^-3) in the specified cell. More...
 
double get_doping_p (facet_type const &facet) const
 
std::vector< double > const & doping_p () const
 
double get_doping (cell_type const &c, carrier_type_id ctype) const
 
void set_material (long material_id, cell_type const &elem)
 Sets the material ID on a cell. More...
 
template<typename MaterialType >
void set_material (MaterialType, cell_type const &elem)
 Sets the material type using the structs defined in viennashe::materials on a cell. More...
 
void set_material (long material_id, segment_type const &seg)
 Sets the material ID on a segment. More...
 
void set_material (long material_id, segment_id_type id)
 Sets the material ID on a segment. More...
 
template<typename MaterialType >
void set_material (MaterialType, segment_type const &seg)
 Sets the material type using the structs defined in viennashe::materials on a segment. More...
 
void set_material (long material_id)
 Sets a uniform material ID on the whole device. More...
 
template<typename MaterialType >
void set_material (MaterialType)
 Sets a uniform material type using the structs defined in viennashe::materials on the whole device. More...
 
long get_material (cell_type const &elem) const
 Returns the material id of the provided cell. More...
 
std::vector< material_id_type > const & material () const
 
void set_contact_potential (double pot, cell_type const &c)
 Sets the contact potential at a cell. More...
 
void set_contact_potential (double pot, segment_type const &seg)
 Sets a contact potential for a whole segment. More...
 
double get_contact_potential (cell_type const &c) const
 Returns the contact potential at a given cell (this is the externally applied voltage not considering any built-in potential) More...
 
bool has_contact_potential (cell_type const &c) const
 Returns true if a contact potential has been set for the respective vertex. More...
 
bool has_contact_potential (facet_type const &) const
 
void add_trap_level (trap_level_type trap, cell_type const &cell)
 Adds a trap (density, energy) to a cell of the device. More...
 
void add_trap_level (trap_level_type trap, segment_type const &seg)
 Adds a trap (density, energy) to a segment of the device. More...
 
void add_trap_level (trap_level_type trap)
 Adds a trap (density, energy) to the whole device. More...
 
trap_level_container_type const & get_trap_levels (cell_type const &cell) const
 Returns all the trap levels defined for the provided cell. More...
 
void clear_traps ()
 Removes all traps from the device. More...
 
void set_fixed_charge (cell_type const &c, double charge)
 Sets a fixed charge at a cell. More...
 
double get_fixed_charge (cell_type const &c) const
 Gives the fixed charge set at a certain cell. More...
 
- Protected Types inherited from viennashe::detail::device_base< MeshT >
typedef viennagrid::result_of::segmentation< MeshT >::type segmentation_type
 
typedef viennagrid::result_of::vertex< MeshT >::type vertex_type
 
typedef viennagrid::result_of::point< MeshT >::type point_type
 
typedef viennagrid::result_of::const_cell_handle< MeshT >::type const_cell_handle_type
 
- Protected Member Functions inherited from viennashe::detail::device_base< MeshT >
void set_lattice_temp_impl (double value, cell_type const &c)
 
template<typename MeshOrSegmentT >
void set_lattice_temp_impl (double value, MeshOrSegmentT const &meshseg)
 
void set_doping_n_impl (double value, cell_type const &c)
 
void set_doping_p_impl (double value, cell_type const &c)
 
template<typename MeshOrSegmentT >
void set_doping_n_impl (double value, MeshOrSegmentT const &meshseg)
 
template<typename MeshOrSegmentT >
void set_doping_p_impl (double value, MeshOrSegmentT const &meshseg)
 
template<typename MeshOrSegmentT >
void set_material_on_complex (long material_id, MeshOrSegmentT const &meshseg)
 
template<typename MeshOrSegmentT >
void add_trap_level_on_complex (trap_level_type trap, MeshOrSegmentT const &meshseg)
 
- Protected Attributes inherited from viennashe::detail::device_base< MeshT >
MeshT mesh_
 
segmentation_type seg_
 
std::vector< double > cell_doping_n_
 
std::vector< double > cell_doping_p_
 
std::vector< double > cell_temperature_
 
std::vector< bool > cell_contact_potential_mask_
 
std::vector< double > cell_contact_potential_
 
std::vector< material_id_typecell_material_
 
std::vector< trap_level_container_typecell_traps_
 
std::vector< double > cell_fixed_charges_
 

Detailed Description

template<typename MeshT, bool edges_and_cells_different>
class viennashe::device< MeshT, edges_and_cells_different >

Defines the physical properties of a device, e.g. doping. This is the implementation for 2d and higher dimensions.

Definition at line 817 of file device.hpp.


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