The main ViennaSHE namespace. All functionality resides inside this namespace. More...
Namespaces | |
namespace | detail |
Namespace for implementation details. Typically not of interest for the library user. | |
namespace | hde |
The namespace for the heat diffusion equation. | |
namespace | io |
Namespace for all (file-)IO specific code | |
namespace | log |
Namespace holding the logging facility. | |
namespace | materials |
Namespace containing a small materials library. | |
namespace | math |
Namespace for all math specific code | |
namespace | models |
Namespace containing everything models related. | |
namespace | physics |
Namespace for physics models used within ViennaSHE. | |
namespace | quantity |
Holds a function per quantity, which returns the name of the respective quantity as std::string. | |
namespace | she |
namespace | solvers |
Namespace containing a variety of different linear solvers. | |
namespace | testing |
namespace | util |
A collection of utilities used within ViennaSHE. | |
Classes | |
class | assembly_not_implemented_exception |
Exception thrown in the case that an equation assembler cannot be found. More... | |
class | boundary_potential_accessor |
Accessor for obtaining the Dirichlet boundary condition for the Poisson equation in the device (contact-potential plus built-in potential) More... | |
struct | box_volume_key |
Internal key for storing the box volume associated with an edge or a vertex. More... | |
class | built_in_potential_accessor |
Accessor for retrieving the built-in potential in the device. More... | |
class | carrier_type_not_supported_exception |
Exception thrown in the case that any code does not support the given carrier type. More... | |
class | config |
The main SHE configuration class. To be adjusted by the user for his/her needs. More... | |
class | const_quantity |
Common representation of any quantity associated with objects of a certain type. More... | |
class | constant_accessor |
An accessor which returns a constant value independent of the object passed. More... | |
struct | contact_carrier_density_accessor |
Returns the carrier density at contacts modelled as thermal baths (used by DD and SHE) More... | |
class | contact_potential_accessor |
Accessor for obtaining the contact potential in the device. More... | |
class | current_density_wrapper |
An accessor to the current density on vertices and edges (drift diffusion only!) More... | |
class | device |
Defines the physical properties of a device, e.g. doping. This is the implementation for 2d and higher dimensions. More... | |
class | diffusivity_accessor |
Accessor to get the diffusivity. Used in the assembly of the heat diffusion equation. More... | |
struct | dispersion_relation_ids |
Provides IDs for the dispersion relations. More... | |
class | doping_accessor |
Accessor for returning the doping (donator/acceptor doping is defined in the CTOR) More... | |
class | doping_setter |
Convenience functor for setting the doping across the device. More... | |
struct | edge_interface_area_key |
Internal key for storing the interface area of a box associated with an edge. More... | |
struct | electric_field_wrapper |
An accessor to the electric field on vertices and edges. Potential requiered. More... | |
struct | electric_flux_wrapper |
An electric flux accessor. Provides the electric flux along edges and on vertices given the electrostatic potential. More... | |
struct | enable_if |
Simple enable-if variant that uses the SFINAE pattern. More... | |
struct | enable_if< false, T > |
struct | error_indicator |
A helper class to raise compile time errors. More... | |
class | fixed_charge_accessor |
Accessor for fixed charges. More... | |
class | invalid_boundary_condition_exception |
Exception for the case that a segment or a segment that does not belong to a mesh is encountered. More... | |
class | invalid_cell_exception |
Exception for the case that an invalid cell is encountered. More... | |
class | invalid_doping_in_device_exception |
Exception for the case that an invalid doping is encountered. More... | |
class | invalid_lattice_temperature_in_device_exception |
Exception for the case that an invalid lattice temperature is encountered. More... | |
class | invalid_segment_exception |
Exception for the case that a segment or a segment that does not belong to a mesh is encountered. More... | |
class | invalid_trap_density_exception |
Exception for the case that an invalid lattice temperature is encountered. More... | |
class | invalid_trap_energy_exception |
Exception for the case that an invalid lattice temperature is encountered. More... | |
class | invalid_value_exception |
Exception for the case that an invalid value (depends on the method called) is encountered. More... | |
class | lattice_temperature_accessor |
Returns the lattice temperature on the device. More... | |
struct | log_simulator |
Configuration class for logging the SHE simulator. More... | |
class | non_const_quantity |
class | permittivity_accessor |
Accessor for obtaining the permittivity in the device. More... | |
class | quantity_not_found_exception |
Exception in case a (requested) quantity cannot be found. More... | |
struct | robin_boundary_coefficients |
class | scharfetter_gummel |
Dispatcher for Scharfetter-Gummel discretization of electron and hold fluxes. More... | |
class | scharfetter_gummel_dVi |
Generic dispatcher for partial derivatives of the Scharfetter-Gummel discretization of electron and hold fluxes. More... | |
class | scharfetter_gummel_dVj |
Generic dispatcher for Scharfetter-Gummel discretization of electron and hold fluxes. More... | |
class | she_boundary_conditions_config |
The boundary condition configuration for SHE More... | |
class | simulator |
Class for self-consistent SHE simulations. More... | |
class | solver_failed_exception |
Exception thrown in the case that an equation solver failed. More... | |
class | thermal_potential_accessor |
Returns the thermal potential in the device. More... | |
class | trap_level |
Describes a SRH trap. More... | |
class | unavailable_feature_exception |
Exception for the case that a requested feature is not available (due to configuration or due to not having an implementation yet) More... | |
class | unknown_quantity |
Typedefs | |
typedef std::map< std::string, std::pair< std::size_t, std::size_t > > | map_info_type |
Information on the number of unknowns per quantity. More... | |
typedef std::vector< double > | energy_vector_type |
Type for storing the discrete energies. More... | |
typedef std::vector< long > | she_index_vector_type |
Type for storing the unknown indices at each point in the (x, H)-space. More... | |
Functions | |
template<typename DeviceType , typename MatrixType , typename VectorType > | |
void | assemble_poisson (DeviceType const &device, viennashe::she::timestep_quantities< DeviceType > const &quantities, viennashe::config const &conf, MatrixType &A, VectorType &b) |
Assembles the potential block (i.e. the linear equations obtained from the discretization of the Poisson equation) in the Jacobian matrix. More... | |
template<typename DeviceType , typename MatrixType , typename VectorType > | |
void | assemble_dd (DeviceType const &device, viennashe::she::timestep_quantities< DeviceType > const &quantities, viennashe::config const &conf, carrier_type_id ctype, MatrixType &A, VectorType &b) |
template<typename DeviceType , typename MatrixType , typename VectorType > | |
void | assemble_density_gradient (DeviceType const &device, viennashe::she::timestep_quantities< DeviceType > const &quantities, viennashe::config const &conf, carrier_type_id ctype, MatrixType &A, VectorType &b) |
Assembles the density gradient equation set for the given carrier type. More... | |
template<typename DeviceType , typename MatrixType , typename VectorType > | |
void | assemble_heat (DeviceType const &device, viennashe::she::timestep_quantities< DeviceType > const &quantities, viennashe::config const &conf, MatrixType &A, VectorType &b) |
Assembles the heat diffusion equation (HDE) More... | |
template<typename DeviceType , typename TimeStepQuantitiesT , typename VertexT , typename MatrixType , typename VectorType > | |
void | assemble (DeviceType const &device, TimeStepQuantitiesT &quantities, viennashe::config const &conf, viennashe::unknown_quantity< VertexT > const &quan, MatrixType &A, VectorType &b) |
Assemble a spatial quantity, where the equation is deduced from 'quan'. More... | |
template<typename DeviceType , typename VertexT > | |
long | create_mapping (DeviceType const &device, viennashe::unknown_quantity< VertexT > &quantity, long start_index=0) |
Maps unkown indices in the system matrix to the given unknown spatial quantity. More... | |
template<typename DeviceType , typename SHEQuantity > | |
long | create_even_mapping (DeviceType const &device, SHEQuantity &quan, viennashe::config const &conf, long unknown_offset=0) |
Distributes SHE unknown indices (dofs) over the device. More... | |
template<typename DeviceType , typename SHEQuantity > | |
long | create_odd_mapping (DeviceType const &device, SHEQuantity &quan, viennashe::config const &conf, long unknown_offset=0) |
Distributes SHE unknown indices (dofs) over the device. More... | |
template<typename DeviceT > | |
map_info_type | create_mapping (DeviceT const &device, viennashe::she::timestep_quantities< DeviceT > &quantities, viennashe::config const &conf) |
Creates an unkown mapping for spatial quantities. More... | |
template<typename DeviceType , typename PotentialQuantityType , typename CarrierQuantityType , typename MobilityModel , typename ContainerType > | |
void | write_current_density_to_container (DeviceType const &device, PotentialQuantityType const &potential, CarrierQuantityType const &carrier, viennashe::carrier_type_id ctype, MobilityModel const &mobility_model, ContainerType &container) |
Convenience function for writing the electric field to a container. More... | |
template<typename DeviceT , typename CurrentDensityT > | |
void | check_current_conservation (DeviceT const &device, CurrentDensityT const ¤t_on_facet) |
Checks current conservation for SHE. Writes information using log::info(). More... | |
template<typename DeviceType , typename PotentialQuantityType , typename CarrierQuantityType , typename MobilityModel > | |
void | check_current_conservation (DeviceType const &device, viennashe::carrier_type_id ctype, PotentialQuantityType const &potential, CarrierQuantityType const &carrier, MobilityModel const &mobility_model) |
template<typename DeviceType , typename PotentialAccessor , typename ContainerType > | |
void | write_electric_field_to_container (DeviceType const &device, PotentialAccessor const &potential, ContainerType &container) |
Convenience function for writing the electric field to a container. More... | |
template<typename DeviceType , typename PotentialAccessor , typename ContainerType > | |
void | write_potential_to_container (DeviceType const &device, PotentialAccessor const &pot, ContainerType &container) |
Writes the provided potential to the container provided. More... | |
template<typename DeviceT , typename CurrentAccessorT , typename SegmentT > | |
double | get_terminal_current (DeviceT const &device, CurrentAccessorT const ¤t_accessor, SegmentT const &semiconductor, SegmentT const &terminal) |
Returns the terminal current for a number of given vertices. Considers carrier flux and displacement currents. More... | |
template<typename DeviceT , typename T1 , typename T2 , typename SegmentT > | |
double | get_terminal_current (DeviceT const &device, viennashe::config const &conf, viennashe::she::unknown_she_quantity< T1, T2 > const &quan, SegmentT const &semiconductor, SegmentT const &terminal) |
Returns the the terminal current for a given contact segment. Considers carrier flux and displacement currents. More... | |
template<typename DeviceType , typename PotentialAccessor , typename AccessorTypeCarrier , typename MobilityModel , typename SegmentType > | |
double | get_terminal_current (DeviceType const &device, viennashe::carrier_type_id ctype, PotentialAccessor const &potential, AccessorTypeCarrier const &carrier, MobilityModel const &mobility_model, SegmentType const &semi, SegmentType const &conductor) |
Returns the current (drift diffusion) from a semiconductor into a conductor segment. More... | |
template<typename DeviceType , typename MacroscopicQuantityAccessor , typename ContainerType > | |
void | write_macroscopic_quantity_to_container (DeviceType const &device, MacroscopicQuantityAccessor const &quantity, ContainerType &quantity_container) |
Writes the provided macroscopic quantity to the container provided. More... | |
template<typename DeviceT , typename UnknownQuantityListT > | |
void | transfer_quantity_to_device (DeviceT &device, UnknownQuantityListT const &quantities, viennashe::config const &conf) |
template<typename UnknownQuantityT , typename VectorType > | |
double | get_relative_update_norm (UnknownQuantityT const &spatial_quan, VectorType const &x) |
Returns the relative update norm (L_2 ; realtive to the current value). Except for the potential. More... | |
template<typename DeviceT , typename CellT , typename FacetT > | |
double | get_relative_update_norm (DeviceT const &device, viennashe::she::unknown_she_quantity< CellT, FacetT > const &quan, viennashe::unknown_quantity< CellT > const &spatial_quan, viennashe::config const &conf) |
Returns the relative update norm for SHE based carrier concentrations (L_2 norm). More... | |
template<typename DeviceT , typename TimeStepQuantitiesT , typename VectorT > | |
double | get_potential_update_norm_newton (DeviceT const &device, TimeStepQuantitiesT const &unknown_quantities, VectorT const &x) |
Potential update calculator for Newton. More... | |
template<typename DeviceT , typename UnknownQuantityT , typename VectorT > | |
double | get_total_update_norm_newton (DeviceT const &device, UnknownQuantityT const &unknown_quantities_, VectorT const &x) |
Total update calculator for Newton. Needs to be called before update_quantities! More... | |
template<typename DeviceT , typename TimeStepQuantitiesT , typename VectorType > | |
void | update_quantities (DeviceT const &device, viennashe::config const &conf, TimeStepQuantitiesT &unknown_quantities, VectorType const &x) |
Updater for Newton. More... | |
template<typename DeviceT , typename CellT , typename FacetT , typename VectorType > | |
void | update_quantity (DeviceT const &device, viennashe::she::unknown_she_quantity< CellT, FacetT > &quan, viennashe::unknown_quantity< CellT > &spatial_quan, viennashe::config const &conf, VectorType const &x, bool force_no_damping=false) |
Updater for SHE quantities when using Gummel iteration. More... | |
template<typename DeviceT , typename VertexT , typename VectorType > | |
void | update_quantity (DeviceT const &device, viennashe::unknown_quantity< VertexT > &unknown_quantity, double alpha, VectorType const &x) |
Updater for spatial unknowns (i.e. defined in x-space) when using Gummel iteration. More... | |
template<typename DeviceT , typename VertexT , typename VectorType > | |
void | update_quantity (DeviceT const &device, viennashe::unknown_quantity< VertexT > &unknown_quantity, viennashe::config const &conf, VectorType const &x, bool force_no_damping=false) |
Updater for spatial unknowns (i.e. defined in x-space) when using Gummel iteration. More... | |
template<typename DeviceType > | |
void | setup_doping_on_vertices (DeviceType &device, viennashe::carrier_type_id ctype) |
Sets up donator or acceptor doping on vertices. If doping is provided on cells, it is interpolated accordingly. More... | |
template<typename DeviceType > | |
void | setup_doping_on_vertices (DeviceType &device) |
Sets up donator and acceptor doping on vertices. If doping is provided on cells, it is interpolated accordingly. More... | |
std::ostream & | operator<< (std::ostream &os, viennashe::trap_level const &rhs) |
Convenience function for outputting a trap level. More... | |
std::size_t | major_version () |
Returns the current ViennaSHE major version as std::size_t More... | |
std::size_t | minor_version () |
Returns the current ViennaSHE minor version as std::size_t More... | |
std::size_t | revision_number () |
Returns the current ViennaSHE revision number as std::size_t More... | |
bool | calibrated () |
Specifies whether the simulator is calibrated for some particular purpose. More... | |
std::string | version () |
Returns the current ViennaSHE version string More... | |
std::string | preamble () |
Prints the ViennaSHE preamble (header). Used in all the examples as well as the standalone-application. More... | |
The main ViennaSHE namespace. All functionality resides inside this namespace.
typedef std::vector<double> viennashe::energy_vector_type |
Type for storing the discrete energies.
Definition at line 178 of file forwards.h.
typedef std::map<std::string, std::pair<std::size_t, std::size_t> > viennashe::map_info_type |
Information on the number of unknowns per quantity.
First member of pair denotes the number of unknowns defined on vertices Second member of pair denotes the number of unknowns defined on edges
Definition at line 109 of file forwards.h.
typedef std::vector<long> viennashe::she_index_vector_type |
Type for storing the unknown indices at each point in the (x, H)-space.
Definition at line 181 of file forwards.h.
An enumeration of all boundary conditions ViennaSHE supports.
Enumerator | |
---|---|
BOUNDARY_NONE | |
BOUNDARY_DIRICHLET | |
BOUNDARY_NEUMANN | |
BOUNDARY_ROBIN | |
BOUNDARY_GENERATION_RECOMBINATION |
Definition at line 124 of file forwards.h.
Enumeration type for selecting the carrier type.
Enumerator | |
---|---|
INVALID_TYPE | |
ELECTRON_TYPE_ID | |
HOLE_TYPE_ID |
Definition at line 184 of file forwards.h.
Enumeration type for selecting the doping type.
Enumerator | |
---|---|
INVALID_DOPING_TYPE | |
DONATOR_DOPING_TYPE_ID | |
ACCEPTOR_DOPING_TYPE_ID |
Definition at line 192 of file forwards.h.
An enumeration of all equation types ViennaSHE supports.
Enumerator | |
---|---|
EQUATION_INVALID | |
EQUATION_POISSON_DD | |
EQUATION_CONTINUITY | |
EQUATION_SHE | |
EQUATION_DENSITY_GRADIENT | |
EQUATION_POISSON_HEAT |
Definition at line 113 of file forwards.h.
Enumerator | |
---|---|
MATERIAL_CONDUCTOR_ID | |
MATERIAL_NO_CONDUCTOR_ID | |
MATERIAL_SEMICONDUCTOR_ID | |
MATERIAL_NO_SEMICONDUCTOR_ID | |
MATERIAL_INSULATOR_ID | |
MATERIAL_NO_INSULATOR_ID |
Definition at line 133 of file forwards.h.
Enumerator | |
---|---|
SHE_DISCRETIZATION_EVEN_ODD_ORDER_DF | |
SHE_DISCRETIZATION_EVEN_ODD_ORDER_GENERALIZED_DF |
Definition at line 143 of file forwards.h.
Enumerator | |
---|---|
SHE_SCALING_KINETIC_ENERGY | |
SHE_SCALING_TOTAL_ENERGY |
Definition at line 149 of file forwards.h.
void viennashe::assemble | ( | DeviceType const & | device, |
TimeStepQuantitiesT & | quantities, | ||
viennashe::config const & | conf, | ||
viennashe::unknown_quantity< VertexT > const & | quan, | ||
MatrixType & | A, | ||
VectorType & | b | ||
) |
Assemble a spatial quantity, where the equation is deduced from 'quan'.
device | The device ... |
quantities | A list of required and known quantities |
conf | The simulator configuration |
quan | The unkown quantity |
A | The system matrix |
b | The right hand side |
Throws | an assembly_not_implemented_exception if no assembly routine for quan can be found. |
Definition at line 830 of file assemble.hpp.
void viennashe::assemble_dd | ( | DeviceType const & | device, |
viennashe::she::timestep_quantities< DeviceType > const & | quantities, | ||
viennashe::config const & | conf, | ||
carrier_type_id | ctype, | ||
MatrixType & | A, | ||
VectorType & | b | ||
) |
Assembles the Drift Diffusion (DD) equation set (div J = +-q R) for the given carrier type
device | The device |
quantities | The unkown quantities |
conf | The simulator configuration |
ctype | The carrier type (normally electrons or holes) |
A | The system matrix |
b | The right hand side (RHS) |
Definition at line 353 of file assemble.hpp.
void viennashe::assemble_density_gradient | ( | DeviceType const & | device, |
viennashe::she::timestep_quantities< DeviceType > const & | quantities, | ||
viennashe::config const & | conf, | ||
carrier_type_id | ctype, | ||
MatrixType & | A, | ||
VectorType & | b | ||
) |
Assembles the density gradient equation set for the given carrier type.
device | The device |
quantities | The unkown quantities and required known ones |
conf | The simulator configruation |
ctype | The carrier type for which to assemble |
A | The system matrix |
b | The right hand side (RHS) |
Definition at line 559 of file assemble.hpp.
void viennashe::assemble_heat | ( | DeviceType const & | device, |
viennashe::she::timestep_quantities< DeviceType > const & | quantities, | ||
viennashe::config const & | conf, | ||
MatrixType & | A, | ||
VectorType & | b | ||
) |
Assembles the heat diffusion equation (HDE)
device | The device |
quantities | The unknown (lattice temperature) and required known quantities |
conf | The simulator configuration |
A | The system matrix |
b | The right hand side |
Definition at line 705 of file assemble.hpp.
void viennashe::assemble_poisson | ( | DeviceType const & | device, |
viennashe::she::timestep_quantities< DeviceType > const & | quantities, | ||
viennashe::config const & | conf, | ||
MatrixType & | A, | ||
VectorType & | b | ||
) |
Assembles the potential block (i.e. the linear equations obtained from the discretization of the Poisson equation) in the Jacobian matrix.
Note that this routine is used both for a Newton method and for a Gummel/Picard-iteration method for the solution of the nonlinear system of drift-diffusion equations.
DeviceType | The ViennaSHE device type |
MatrixType | The matrix type |
VectorType | The vector type |
device | The device to be simulated |
quantities | Quantity descriptors and accessors |
conf | The simulator configuration |
A | The system matrix |
b | The right hand side |
Definition at line 165 of file assemble.hpp.
|
inline |
Specifies whether the simulator is calibrated for some particular purpose.
Note that a simulator requires calibration in order to yield predictive results!
Definition at line 50 of file version.hpp.
void viennashe::check_current_conservation | ( | DeviceT const & | device, |
CurrentDensityT const & | current_on_facet | ||
) |
Checks current conservation for SHE. Writes information using log::info().
device | The device |
current_on_facet | A function object returning the normal components of the current on each facet |
Definition at line 255 of file current_density.hpp.
void viennashe::check_current_conservation | ( | DeviceType const & | device, |
viennashe::carrier_type_id | ctype, | ||
PotentialQuantityType const & | potential, | ||
CarrierQuantityType const & | carrier, | ||
MobilityModel const & | mobility_model | ||
) |
Definition at line 323 of file current_density.hpp.
long viennashe::create_even_mapping | ( | DeviceType const & | device, |
SHEQuantity & | quan, | ||
viennashe::config const & | conf, | ||
long | unknown_offset = 0 |
||
) |
Distributes SHE unknown indices (dofs) over the device.
device | The device (including a ViennaGrid mesh) on which simulation is carried out |
quan | The quantity for which to create the mapping |
conf | The simulator configuration |
unknown_offset | The first index to be assigned (allows for offsets); Nonzero value if e.g. the potential is also considered within Newton iteration |
Definition at line 204 of file mapping.hpp.
map_info_type viennashe::create_mapping | ( | DeviceT const & | device, |
viennashe::she::timestep_quantities< DeviceT > & | quantities, | ||
viennashe::config const & | conf | ||
) |
Creates an unkown mapping for spatial quantities.
device | The device on which the quantities are defined |
quantities | A list of quantities |
conf | The simulator configuration |
Definition at line 338 of file mapping.hpp.
long viennashe::create_mapping | ( | DeviceType const & | device, |
viennashe::unknown_quantity< VertexT > & | quantity, | ||
long | start_index = 0 |
||
) |
Maps unkown indices in the system matrix to the given unknown spatial quantity.
device | The device on which the quantity is defined |
quantity | The unkown quantity |
start_index | The index offset, usefull if you have more than one unkown quantity |
Definition at line 53 of file mapping.hpp.
long viennashe::create_odd_mapping | ( | DeviceType const & | device, |
SHEQuantity & | quan, | ||
viennashe::config const & | conf, | ||
long | unknown_offset = 0 |
||
) |
Distributes SHE unknown indices (dofs) over the device.
device | The device (including a ViennaGrid mesh) on which simulation is carried out |
quan | The quantity for which to create the mapping |
conf | The simulator configuration |
unknown_offset | The first index to be assigned (allows for offsets) |
Definition at line 284 of file mapping.hpp.
double viennashe::get_potential_update_norm_newton | ( | DeviceT const & | device, |
TimeStepQuantitiesT const & | unknown_quantities, | ||
VectorT const & | x | ||
) |
Potential update calculator for Newton.
device | The device |
unknown_quantities | The unkown quantity to be processed |
x | The update vector for all quantities |
Definition at line 331 of file simulator.hpp.
double viennashe::get_relative_update_norm | ( | DeviceT const & | device, |
viennashe::she::unknown_she_quantity< CellT, FacetT > const & | quan, | ||
viennashe::unknown_quantity< CellT > const & | spatial_quan, | ||
viennashe::config const & | conf | ||
) |
Returns the relative update norm for SHE based carrier concentrations (L_2 norm).
device | The device |
quan | The unknown SHE quantity |
spatial_quan | The spatial quantity to update (e.g. n or p) |
conf | The simulator configuration |
Definition at line 286 of file simulator.hpp.
double viennashe::get_relative_update_norm | ( | UnknownQuantityT const & | spatial_quan, |
VectorType const & | x | ||
) |
Returns the relative update norm (L_2 ; realtive to the current value). Except for the potential.
spatial_quan | The spatial quantity |
x | The solution vector |
Definition at line 257 of file simulator.hpp.
double viennashe::get_terminal_current | ( | DeviceT const & | device, |
CurrentAccessorT const & | current_accessor, | ||
SegmentT const & | semiconductor, | ||
SegmentT const & | terminal | ||
) |
Returns the terminal current for a number of given vertices. Considers carrier flux and displacement currents.
device | The device |
current_accessor | An accessor for the carrier current density |
terminal | The terminal segment from which the current should be extracted |
semiconductor | The semiconductor segment to which the current is flowing |
Definition at line 48 of file terminal_current.hpp.
double viennashe::get_terminal_current | ( | DeviceT const & | device, |
viennashe::config const & | conf, | ||
viennashe::she::unknown_she_quantity< T1, T2 > const & | quan, | ||
SegmentT const & | semiconductor, | ||
SegmentT const & | terminal | ||
) |
Returns the the terminal current for a given contact segment. Considers carrier flux and displacement currents.
device | The device |
conf | The simulator configuration |
quan | The quantity from which the current should be extracted (here: electron or hole distribution function) |
terminal | The terminal segment from which the current should be extracted |
semiconductor | The semiconductor segment to which the current is flowing |
Definition at line 117 of file terminal_current.hpp.
double viennashe::get_terminal_current | ( | DeviceType const & | device, |
viennashe::carrier_type_id | ctype, | ||
PotentialAccessor const & | potential, | ||
AccessorTypeCarrier const & | carrier, | ||
MobilityModel const & | mobility_model, | ||
SegmentType const & | semi, | ||
SegmentType const & | conductor | ||
) |
Returns the current (drift diffusion) from a semiconductor into a conductor segment.
device | The device |
ctype | Electron current or hole current |
potential | An accessor to the elec. potential |
carrier | An accessor to the carrier density (must match with ctype!) |
mobility_model | The mobility model (just an accessor to the mobility) |
semi | The semiconductor segment |
conductor | The conductor segment adjacent to the semiconductor |
Definition at line 147 of file terminal_current.hpp.
double viennashe::get_total_update_norm_newton | ( | DeviceT const & | device, |
UnknownQuantityT const & | unknown_quantities_, | ||
VectorT const & | x | ||
) |
Total update calculator for Newton. Needs to be called before update_quantities!
device | The device |
unknown_quantities_ | The unkown quantity to be processed |
x | The update to the quantity |
Definition at line 374 of file simulator.hpp.
|
inline |
Returns the current ViennaSHE major version as std::size_t
Definition at line 29 of file version.hpp.
|
inline |
Returns the current ViennaSHE minor version as std::size_t
Definition at line 35 of file version.hpp.
|
inline |
Convenience function for outputting a trap level.
Definition at line 91 of file trap_level.hpp.
|
inline |
Prints the ViennaSHE preamble (header). Used in all the examples as well as the standalone-application.
Definition at line 63 of file version.hpp.
|
inline |
Returns the current ViennaSHE revision number as std::size_t
Definition at line 41 of file version.hpp.
void viennashe::setup_doping_on_vertices | ( | DeviceType & | device | ) |
Sets up donator and acceptor doping on vertices. If doping is provided on cells, it is interpolated accordingly.
DeviceType | The device type (cf. device.hpp) |
device | A non-const reference to the device |
Definition at line 206 of file simulator_setup.hpp.
void viennashe::setup_doping_on_vertices | ( | DeviceType & | device, |
viennashe::carrier_type_id | ctype | ||
) |
Sets up donator or acceptor doping on vertices. If doping is provided on cells, it is interpolated accordingly.
DeviceType | The device type (cf. device.hpp) |
device | A non-const reference to the device |
ctype | The carrier type identifier (cf. forwards.h) |
Definition at line 169 of file simulator_setup.hpp.
void viennashe::transfer_quantity_to_device | ( | DeviceT & | device, |
UnknownQuantityListT const & | quantities, | ||
viennashe::config const & | conf | ||
) |
Definition at line 223 of file simulator.hpp.
void viennashe::update_quantities | ( | DeviceT const & | device, |
viennashe::config const & | conf, | ||
TimeStepQuantitiesT & | unknown_quantities, | ||
VectorType const & | x | ||
) |
Updater for Newton.
device | The device |
conf | The simulator configuration (cf. config.hpp) |
unknown_quantities | The unkown quantity to be updated |
x | The vector containing the updates to the quantity |
Definition at line 395 of file simulator.hpp.
void viennashe::update_quantity | ( | DeviceT const & | device, |
viennashe::she::unknown_she_quantity< CellT, FacetT > & | quan, | ||
viennashe::unknown_quantity< CellT > & | spatial_quan, | ||
viennashe::config const & | conf, | ||
VectorType const & | x, | ||
bool | force_no_damping = false |
||
) |
Updater for SHE quantities when using Gummel iteration.
device | The device |
quan | The SHE unkown quantity to be updated |
spatial_quan | The spatial, eg. n or p or potential, unkown quantity |
conf | The simulator configuration (cf. config.hpp) |
x | The update to the SHE quantity |
force_no_damping | If true no damping will be applied, that is d = 1.0 |
Definition at line 524 of file simulator.hpp.
void viennashe::update_quantity | ( | DeviceT const & | device, |
viennashe::unknown_quantity< VertexT > & | unknown_quantity, | ||
double | alpha, | ||
VectorType const & | x | ||
) |
Updater for spatial unknowns (i.e. defined in x-space) when using Gummel iteration.
device | The device |
unknown_quantity | The unkown quantity to be updated |
alpha | The damping, bounded by (0;1] |
x | The update to the quantity |
Definition at line 607 of file simulator.hpp.
void viennashe::update_quantity | ( | DeviceT const & | device, |
viennashe::unknown_quantity< VertexT > & | unknown_quantity, | ||
viennashe::config const & | conf, | ||
VectorType const & | x, | ||
bool | force_no_damping = false |
||
) |
Updater for spatial unknowns (i.e. defined in x-space) when using Gummel iteration.
device | The device |
unknown_quantity | The unkown quantity to be updated |
conf | The simulator configuration (cf. config.hpp) |
x | The update to the quantity |
force_no_damping | If true no damping will be applied, that is d = 1.0 |
Definition at line 660 of file simulator.hpp.
|
inline |
Returns the current ViennaSHE version string
Definition at line 53 of file version.hpp.
void viennashe::write_current_density_to_container | ( | DeviceType const & | device, |
PotentialQuantityType const & | potential, | ||
CarrierQuantityType const & | carrier, | ||
viennashe::carrier_type_id | ctype, | ||
MobilityModel const & | mobility_model, | ||
ContainerType & | container | ||
) |
Convenience function for writing the electric field to a container.
device | The device (includes a ViennaGrid mesh) on which simulation is carried out |
potential | An accessor to the electrostatic potential |
carrier | The carrier quantity (n or p) |
ctype | The carrier type identifier |
mobility_model | The mobility model functor |
container | A reference to the container, which is going to be filled with values, ie. std::vector |
Definition at line 236 of file current_density.hpp.
void viennashe::write_electric_field_to_container | ( | DeviceType const & | device, |
PotentialAccessor const & | potential, | ||
ContainerType & | container | ||
) |
Convenience function for writing the electric field to a container.
device | The device (includes a ViennaGrid mesh) on which simulation is carried out |
potential | A quantity accessor to the potential |
container | The container to be filled with values |
ContainerType | A container type, for example: std::vector or std::deque |
Definition at line 162 of file electric_field.hpp.
void viennashe::write_macroscopic_quantity_to_container | ( | DeviceType const & | device, |
MacroscopicQuantityAccessor const & | quantity, | ||
ContainerType & | quantity_container | ||
) |
Writes the provided macroscopic quantity to the container provided.
device | The device (includes a ViennaGrid mesh) on which simulation is carried out |
quantity | An accessor for the macroscopic quantity |
quantity_container | The container to be filled with values |
ContainerType | A container type, for example: std::vector or std::deque |
Definition at line 46 of file macroscopic.hpp.
void viennashe::write_potential_to_container | ( | DeviceType const & | device, |
PotentialAccessor const & | pot, | ||
ContainerType & | container | ||
) |
Writes the provided potential to the container provided.
device | The device (includes a ViennaGrid mesh) on which simulation is carried out |
pot | An accessor for the potential |
container | The container to be filled with values |
ContainerType | A container type, for example: std::vector or std::deque |
Definition at line 40 of file potential.hpp.