ViennaSHE 1.3.0
Free open-source semiconductor device simulator using spherical harmonics expansions techniques.
viennashe::she::detail Namespace Reference

Classes

class  carrier_density_wrapper_by_reference
 An accessor for the carrier density in the device by reference
More...
 
class  current_on_facet_by_ref_calculator
 
class  energy_integrator_for_box
 
class  value_holder_functor
 A simple functor to hold a single value. Operator() should not take any arguments. More...
 

Functions

template<typename PotentialAccessorType , typename ConfigType , typename TagType >
std::vector< long > get_potential_indices (PotentialAccessorType const &potential_index, viennagrid::element< TagType, ConfigType > const &elem)
 
template<typename PotentialAccessorType , typename ConfigType >
std::vector< long > get_potential_indices (PotentialAccessorType const &potential_index, viennagrid::element< viennagrid::vertex_tag, ConfigType > const &elem)
 
template<typename T >
bool is_odd_assembly (T const &, T const &)
 
template<typename T , typename U >
bool is_odd_assembly (T const &, U const &)
 
template<typename MeshT , typename CellT >
double cell_connection_length (MeshT const &, CellT const &, CellT const &)
 Static dispatcher for computing the connection between two cells adjacent to a facet. Argument is not a facet, so return an arbitrary value. More...
 
template<typename MeshT , typename FacetT , typename CellT >
double cell_connection_length (MeshT const &mesh, FacetT const &facet, CellT const &)
 Static dispatcher for computing the connection between two cells adjacent to a facet. More...
 
template<typename DeviceType >
bool has_contact_potential (DeviceType const &device, typename viennagrid::result_of::cell< typename DeviceType::mesh_type >::type const &c)
 
template<typename DeviceType , typename ElementType >
bool has_contact_potential (DeviceType const &, ElementType const &)
 
template<typename ElementType , typename QuantityPotential , typename QuantityPotentialOld >
double potential_difference_to_old_timestep (ElementType const &elem, QuantityPotential const &new_potential, QuantityPotentialOld const &old_potential)
 Obtain the potential difference from an edge. More...
 
template<typename ConfigType , typename QuantityPotential , typename QuantityPotentialOld >
double potential_difference_to_old_timestep (viennagrid::element< viennagrid::vertex_tag, ConfigType > const &elem, QuantityPotential const &new_potential, QuantityPotentialOld const &old_potential)
 Obtain the potential difference from a vertex. More...
 
template<typename DeviceType , typename TimeStepQuantitiesT , typename SHEQuantity , typename MatrixType , typename VectorType , typename CouplingMatrixType >
void assemble_traps_coupling_on_cell (DeviceType const &device, TimeStepQuantitiesT const &quantities, SHEQuantity const &quan, viennashe::config const &conf, typename DeviceType::cell_type const &el, std::size_t index_H, MatrixType &matrix, VectorType &rhs, CouplingMatrixType const &diagonal_coupling_matrix, CouplingMatrixType const &coupling_matrix_00)
 Assembles the coupling of the distribution function with the trap occupancy for a cell (even-order f_lm) More...
 
template<typename DeviceType , typename TimeStepQuantitiesT , typename SHEQuantity , typename MatrixType , typename VectorType , typename CouplingMatrixType >
void assemble_traps_coupling_on_facet (DeviceType const &device, TimeStepQuantitiesT const &quantities, SHEQuantity const &quan, viennashe::config const &conf, typename DeviceType::facet_type const &el, std::size_t index_H, MatrixType &matrix, VectorType &rhs, CouplingMatrixType const &diagonal_coupling_matrix, CouplingMatrixType const &coupling_matrix_00)
 Assembles the coupling of the distribution function with the trap occupancy for either a facet (odd-order f_lm) More...
 
template<typename UnknownSHEType , typename ElementType >
std::size_t find_best_H (UnknownSHEType const &she_quantity, ElementType const &el, double kin_energy, std::size_t index_H_guess)
 Returns the best total energy in order to match the supplied kinetic energy. More...
 
template<typename FullMatrixType , typename VectorType >
void combine_lines (FullMatrixType &system_matrix, VectorType &rhs, std::size_t line1, std::size_t line_to_add, std::size_t column_to_zero)
 
template<typename DeviceType , typename VertexT , typename EdgeT >
void distribute_expansion_orders_impl (DeviceType const &device, viennashe::she::unknown_she_quantity< VertexT, EdgeT > &quan, viennashe::config const &conf)
 Assigns the various expansion orders to the device. This is the implementation. More...
 
template<typename ElementType , typename VertexT , typename EdgeT >
void transfer_to_new_H_space_on_element (ElementType const &el, std::size_t index_H, she::unknown_she_quantity< VertexT, EdgeT > const &old_quan, she::unknown_she_quantity< VertexT, EdgeT > &new_quan)
 
template<typename ElementType , typename VertexT , typename EdgeT >
void normalize_on_new_H_space (ElementType const &el, she::unknown_she_quantity< VertexT, EdgeT > &quan, double scaling_factor)
 

Function Documentation

◆ assemble_traps_coupling_on_cell()

template<typename DeviceType , typename TimeStepQuantitiesT , typename SHEQuantity , typename MatrixType , typename VectorType , typename CouplingMatrixType >
void viennashe::she::detail::assemble_traps_coupling_on_cell ( DeviceType const &  device,
TimeStepQuantitiesT const &  quantities,
SHEQuantity const &  quan,
viennashe::config const &  conf,
typename DeviceType::cell_type const &  el,
std::size_t  index_H,
MatrixType &  matrix,
VectorType &  rhs,
CouplingMatrixType const &  diagonal_coupling_matrix,
CouplingMatrixType const &  coupling_matrix_00 
)

Assembles the coupling of the distribution function with the trap occupancy for a cell (even-order f_lm)

Definition at line 69 of file assemble_traps.hpp.

◆ assemble_traps_coupling_on_facet()

template<typename DeviceType , typename TimeStepQuantitiesT , typename SHEQuantity , typename MatrixType , typename VectorType , typename CouplingMatrixType >
void viennashe::she::detail::assemble_traps_coupling_on_facet ( DeviceType const &  device,
TimeStepQuantitiesT const &  quantities,
SHEQuantity const &  quan,
viennashe::config const &  conf,
typename DeviceType::facet_type const &  el,
std::size_t  index_H,
MatrixType &  matrix,
VectorType &  rhs,
CouplingMatrixType const &  diagonal_coupling_matrix,
CouplingMatrixType const &  coupling_matrix_00 
)

Assembles the coupling of the distribution function with the trap occupancy for either a facet (odd-order f_lm)

Definition at line 166 of file assemble_traps.hpp.

◆ cell_connection_length() [1/2]

template<typename MeshT , typename CellT >
double viennashe::she::detail::cell_connection_length ( MeshT const &  ,
CellT const &  ,
CellT const &   
)

Static dispatcher for computing the connection between two cells adjacent to a facet. Argument is not a facet, so return an arbitrary value.

Template Parameters
CellTArbitrary cell, only used for the static dispatch.

Definition at line 98 of file assemble_common.hpp.

◆ cell_connection_length() [2/2]

template<typename MeshT , typename FacetT , typename CellT >
double viennashe::she::detail::cell_connection_length ( MeshT const &  mesh,
FacetT const &  facet,
CellT const &   
)

Static dispatcher for computing the connection between two cells adjacent to a facet.

Template Parameters
CellTArbitrary cell, only used for the static dispatch.

Definition at line 109 of file assemble_common.hpp.

◆ combine_lines()

template<typename FullMatrixType , typename VectorType >
void viennashe::she::detail::combine_lines ( FullMatrixType &  system_matrix,
VectorType &  rhs,
std::size_t  line1,
std::size_t  line_to_add,
std::size_t  column_to_zero 
)

Definition at line 40 of file eliminate.hpp.

◆ distribute_expansion_orders_impl()

template<typename DeviceType , typename VertexT , typename EdgeT >
void viennashe::she::detail::distribute_expansion_orders_impl ( DeviceType const &  device,
viennashe::she::unknown_she_quantity< VertexT, EdgeT > &  quan,
viennashe::config const &  conf 
)

Assigns the various expansion orders to the device. This is the implementation.

Parameters
deviceThe device (includes a ViennaGrid mesh) on which simulation is carried out
quanThe unkown SHE quantities on edges and vertices
confThe simulator configuration

Definition at line 262 of file expansion_order.hpp.

◆ find_best_H()

template<typename UnknownSHEType , typename ElementType >
std::size_t viennashe::she::detail::find_best_H ( UnknownSHEType const &  she_quantity,
ElementType const &  el,
double  kin_energy,
std::size_t  index_H_guess 
)

Returns the best total energy in order to match the supplied kinetic energy.

Definition at line 46 of file df_wrappers.hpp.

◆ get_potential_indices() [1/2]

template<typename PotentialAccessorType , typename ConfigType , typename TagType >
std::vector< long > viennashe::she::detail::get_potential_indices ( PotentialAccessorType const &  potential_index,
viennagrid::element< TagType, ConfigType > const &  elem 
)

Definition at line 57 of file assemble_common.hpp.

◆ get_potential_indices() [2/2]

template<typename PotentialAccessorType , typename ConfigType >
std::vector< long > viennashe::she::detail::get_potential_indices ( PotentialAccessorType const &  potential_index,
viennagrid::element< viennagrid::vertex_tag, ConfigType > const &  elem 
)

Definition at line 71 of file assemble_common.hpp.

◆ has_contact_potential() [1/2]

template<typename DeviceType , typename ElementType >
bool viennashe::she::detail::has_contact_potential ( DeviceType const &  ,
ElementType const &   
)

Definition at line 136 of file assemble_common.hpp.

◆ has_contact_potential() [2/2]

template<typename DeviceType >
bool viennashe::she::detail::has_contact_potential ( DeviceType const &  device,
typename viennagrid::result_of::cell< typename DeviceType::mesh_type >::type const &  c 
)

Definition at line 130 of file assemble_common.hpp.

◆ is_odd_assembly() [1/2]

template<typename T >
bool viennashe::she::detail::is_odd_assembly ( T const &  ,
T const &   
)

Definition at line 82 of file assemble_common.hpp.

◆ is_odd_assembly() [2/2]

template<typename T , typename U >
bool viennashe::she::detail::is_odd_assembly ( T const &  ,
U const &   
)

Definition at line 88 of file assemble_common.hpp.

◆ normalize_on_new_H_space()

template<typename ElementType , typename VertexT , typename EdgeT >
void viennashe::she::detail::normalize_on_new_H_space ( ElementType const &  el,
she::unknown_she_quantity< VertexT, EdgeT > &  quan,
double  scaling_factor 
)

Definition at line 95 of file transfer_to_new_h_space.hpp.

◆ potential_difference_to_old_timestep() [1/2]

template<typename ElementType , typename QuantityPotential , typename QuantityPotentialOld >
double viennashe::she::detail::potential_difference_to_old_timestep ( ElementType const &  elem,
QuantityPotential const &  new_potential,
QuantityPotentialOld const &  old_potential 
)

Obtain the potential difference from an edge.

Definition at line 33 of file assemble_timederivative.hpp.

◆ potential_difference_to_old_timestep() [2/2]

template<typename ConfigType , typename QuantityPotential , typename QuantityPotentialOld >
double viennashe::she::detail::potential_difference_to_old_timestep ( viennagrid::element< viennagrid::vertex_tag, ConfigType > const &  elem,
QuantityPotential const &  new_potential,
QuantityPotentialOld const &  old_potential 
)

Obtain the potential difference from a vertex.

Definition at line 43 of file assemble_timederivative.hpp.

◆ transfer_to_new_H_space_on_element()

template<typename ElementType , typename VertexT , typename EdgeT >
void viennashe::she::detail::transfer_to_new_H_space_on_element ( ElementType const &  el,
std::size_t  index_H,
she::unknown_she_quantity< VertexT, EdgeT > const &  old_quan,
she::unknown_she_quantity< VertexT, EdgeT > &  new_quan 
)

Definition at line 60 of file transfer_to_new_h_space.hpp.