ViennaSHE 1.3.0
Free open-source semiconductor device simulator using spherical harmonics expansions techniques.
simulator.hpp File Reference

Implements the SHE simulator classes (both self-consistent and non-self-consistent). More...

Go to the source code of this file.

Classes

class  viennashe::simulator< DeviceType >
 Class for self-consistent SHE simulations. More...
 

Namespaces

namespace  viennashe
 The main ViennaSHE namespace. All functionality resides inside this namespace.
 
namespace  viennashe::detail
 Namespace for implementation details. Typically not of interest for the library user.
 

Functions

template<typename DeviceT , typename QuantityT >
void viennashe::detail::set_unknown_for_material (DeviceT const &device, QuantityT &quan, materials::checker const &material_check)
 Sets the unknown masks per material. More...
 
template<typename DeviceT , typename QuantityT >
void viennashe::detail::set_she_unknown (DeviceT const &device, QuantityT &quan)
 
template<typename DeviceT , typename QuantityT , typename BoundaryValueAccessorT >
void viennashe::detail::set_boundary_for_material (DeviceT const &device, QuantityT &quan, materials::checker const &material_check, BoundaryValueAccessorT boundary_value_accessor, boundary_type_id bnd_id)
 Sets the boundary condition (type and value) per vertex depending on the material. More...
 
template<typename DeviceT , typename CellT , typename FacetT >
void viennashe::detail::set_boundary_for_material (DeviceT const &device, viennashe::she::unknown_she_quantity< CellT, FacetT > &quan, materials::checker const &material_check, boundary_type_id bnd_id)
 Sets the boundary condition type per material on vertices. Does not set the boundary value. More...
 
template<typename DeviceT , typename QuantityT , typename BoundaryValueAccessorT >
void viennashe::detail::set_initial_guess (DeviceT const &device, QuantityT &quan, BoundaryValueAccessorT const &initial_guess_accessor)
 Sets the initial guess per quantity and device. More...
 
template<typename DeviceT , typename UnknownQuantityListT >
void viennashe::transfer_quantity_to_device (DeviceT &device, UnknownQuantityListT const &quantities, viennashe::config const &conf)
 
template<typename UnknownQuantityT , typename VectorType >
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. More...
 
template<typename DeviceT , typename CellT , typename FacetT >
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). More...
 
template<typename DeviceT , typename TimeStepQuantitiesT , typename VectorT >
double viennashe::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 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! More...
 
template<typename DeviceT , typename TimeStepQuantitiesT , typename VectorType >
void viennashe::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 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. More...
 
template<typename DeviceT , typename VertexT , typename VectorType >
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. More...
 
template<typename DeviceT , typename VertexT , typename VectorType >
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. More...
 

Detailed Description

Implements the SHE simulator classes (both self-consistent and non-self-consistent).

Definition in file simulator.hpp.