Namespace for implementation details. Typically not of interest for the library user. More...
Classes | |
struct | current_density_on_facet |
An accessor to the current density (drift diffusion only!) on edges. More... | |
struct | density_gradient_config |
class | device_base |
Defines the physical properties of a device, e.g. doping. More... | |
struct | electric_field_on_facet |
An accessor to the electric field along a given edge. Electrostatic potential required. More... | |
struct | electric_flux_on_facet |
Simple accessor to get the electric flux density along an edge. More... | |
struct | is_1d_mesh |
Metafunction for the determination of whether a mesh is 1d. More... | |
struct | is_1d_mesh< MeshT, viennagrid::hypercube_tag< 1 > > |
Metafunction for the determination of whether a mesh is 1d. Specialization for 1d. More... | |
struct | is_1d_mesh< MeshT, viennagrid::simplex_tag< 1 > > |
Metafunction for the determination of whether a mesh is 1d. Specialization for 1d. More... | |
class | macroscopic_carrier_mask_filter |
Functions | |
template<typename DeviceType , typename CellType > | |
void | get_dopings_from_neighboring_semiconductor_cells (DeviceType const &device, CellType const &cell, double *doping_n_ret, double *doping_p_ret) |
Retrieves the averaged dopings from neighboring semiconductor cells. More... | |
template<typename CellType , typename SpatialUnknownT , typename SHEUnknownT , typename MatrixType > | |
void | assemble_poisson_carrier_coupling (viennashe::config const &conf, CellType const &cell, SpatialUnknownT const &np_density, SHEUnknownT const &f_np, MatrixType &A, std::size_t row_index, double box_volume) |
Assembles, per cell, the carrier concentration coupling on the RHS of Poisson's equation. More... | |
template<typename DeviceType , typename CellType , typename SpatialUnknownT , typename SHEUnknownT > | |
double | get_carrier_density_for_poisson (viennashe::config const &conf, CellType const &cell, SpatialUnknownT const &np_density, SHEUnknownT const &f_np) |
Returns the requested carrier concentration, calculated from a SHE or DD solution, for the RHS of Poisson's equation. More... | |
double | density_gradient_flux (double E, double pot_i, double gamma_i, double T_i, double pot_j, double gamma_j, double T_j) |
Returns the quantum correction potential flux between two points (Density Gradient) More... | |
template<typename DeviceType , typename CellType , typename SHEQuantity > | |
void | map_cell (DeviceType const &device, CellType const &cell, std::size_t index_H, SHEQuantity &quan, viennashe::config const &conf, long ¤t_index) |
Handles the mapping of a SHE unkown quantity on a single cell and H-space index. More... | |
template<typename DeviceType , typename SHEQuantity , typename FacetType > | |
void | map_facet (DeviceType const &device, SHEQuantity &quan, viennashe::config const &conf, FacetType const &facet, std::size_t index_H, long ¤t_index) |
Assigns an unknown index for odd SHE unknowns to a facet. Preconditions: More... | |
template<typename DeviceT , typename QuantityT > | |
void | 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 | set_she_unknown (DeviceT const &device, QuantityT &quan) |
template<typename DeviceT , typename QuantityT , typename BoundaryValueAccessorT > | |
void | 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 | 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 | set_initial_guess (DeviceT const &device, QuantityT &quan, BoundaryValueAccessorT const &initial_guess_accessor) |
Sets the initial guess per quantity and device. More... | |
template<typename ElementTagT , typename DeviceType , typename AccessorType , typename FilterType , typename CheckerType > | |
bool | check_quantity_on_ncell (DeviceType const &device, AccessorType const &accessor, FilterType const &filter, CheckerType const &checker) |
Ensures that a quantity is available on n-cells of a certain dimension. If this is not the case, the quantity is transferred (averaged/interpolated) from cells of other dimension. An exception is thrown if the fallback-transfer fails. More... | |
template<typename TagT , typename FallbackTagT , typename DeviceType , typename AccessorType , typename FilterType , typename CheckerType , typename FallbackAccessorType , typename FallbackSetterType , typename FallbackAveragerType , typename FallbackFilterType , typename FallbackCheckerType > | |
bool | setup_and_check_quantity_on_ncell_with_fallback (DeviceType &device, AccessorType const &accessor, FilterType const &filter, CheckerType const &checker, FallbackAccessorType const &fallback_accessor, FallbackSetterType &fallback_setter, FallbackAveragerType const &fallback_averager, FallbackFilterType const &fallback_filter, FallbackCheckerType const &fallback_checker) |
Ensures that a quantity is available on n-cells of a certain dimension. If this is not the case, the quantity is transferred (averaged/interpolated) from cells of other dimension. More... | |
invalid_doping_in_device_exception | get_invalid_doping_exception (viennashe::carrier_type_id ctype) |
Helper routine for creating the exception thrown if the donator doping is found to be invalid on the device. More... | |
template<typename DeviceT > | |
void | smooth_doping_at_contacts (DeviceT &d) |
Utility function for smoothing the doping next to contacts. More... | |
Namespace for implementation details. Typically not of interest for the library user.
void viennashe::detail::assemble_poisson_carrier_coupling | ( | viennashe::config const & | conf, |
CellType const & | cell, | ||
SpatialUnknownT const & | np_density, | ||
SHEUnknownT const & | f_np, | ||
MatrixType & | A, | ||
std::size_t | row_index, | ||
double | box_volume | ||
) |
Assembles, per cell, the carrier concentration coupling on the RHS of Poisson's equation.
conf | The simulator configuration |
cell | The cell on which to assemble |
np_density | The carrier density |
f_np | The SHE guess/solution |
A | The system matrix |
row_index | The row index associated with the potential unkown and the vertex |
box_volume | The volume of the current finite box associated with the vertex |
Definition at line 76 of file assemble.hpp.
bool viennashe::detail::check_quantity_on_ncell | ( | DeviceType const & | device, |
AccessorType const & | accessor, | ||
FilterType const & | filter, | ||
CheckerType const & | checker | ||
) |
Ensures that a quantity is available on n-cells of a certain dimension. If this is not the case, the quantity is transferred (averaged/interpolated) from cells of other dimension. An exception is thrown if the fallback-transfer fails.
dim | Topological dimension of the n-cell for which the quantity should be available |
DeviceType | Type of the device |
AccessorType | An accessor for the quantity for an n-cell |
CheckerType | Type of the checker functor, which checks for a valid range |
FilterType | A filter for the n-cells to actually consider |
Definition at line 65 of file simulator_setup.hpp.
|
inline |
Returns the quantum correction potential flux between two points (Density Gradient)
E | The band edge energy |
pot_i | Potential at the source |
gamma_i | Correction potential at the source |
T_i | Temperature (lattice) at the source |
pot_j | Potential at the sink |
gamma_j | Correction potential at the sink |
T_j | Temperature at the sink |
Definition at line 538 of file assemble.hpp.
double viennashe::detail::get_carrier_density_for_poisson | ( | viennashe::config const & | conf, |
CellType const & | cell, | ||
SpatialUnknownT const & | np_density, | ||
SHEUnknownT const & | f_np | ||
) |
Returns the requested carrier concentration, calculated from a SHE or DD solution, for the RHS of Poisson's equation.
conf | The simulator configuration |
cell | The vertex on which the concentration is requested |
np_density | The spatial unkown for n or p (dummy if not used) |
f_np | The SHE solution (dummy if not used) |
Definition at line 127 of file assemble.hpp.
void viennashe::detail::get_dopings_from_neighboring_semiconductor_cells | ( | DeviceType const & | device, |
CellType const & | cell, | ||
double * | doping_n_ret, | ||
double * | doping_p_ret | ||
) |
Retrieves the averaged dopings from neighboring semiconductor cells.
device | The device |
cell | A cell in the device |
doping_n_ret | Return by reference; The averaged donor doping |
doping_p_ret | Return by reference; The averaged acceptor doping |
Definition at line 51 of file accessors.hpp.
|
inline |
Helper routine for creating the exception thrown if the donator doping is found to be invalid on the device.
Definition at line 146 of file simulator_setup.hpp.
void viennashe::detail::map_cell | ( | DeviceType const & | device, |
CellType const & | cell, | ||
std::size_t | index_H, | ||
SHEQuantity & | quan, | ||
viennashe::config const & | conf, | ||
long & | current_index | ||
) |
Handles the mapping of a SHE unkown quantity on a single cell and H-space index.
device | The device ... |
cell | The Cell for which to do the mapping |
index_H | The H index to map |
quan | The quantity the mapping is for |
conf | The simulator configuration |
current_index | The current index |
Definition at line 97 of file mapping.hpp.
void viennashe::detail::map_facet | ( | DeviceType const & | device, |
SHEQuantity & | quan, | ||
viennashe::config const & | conf, | ||
FacetType const & | facet, | ||
std::size_t | index_H, | ||
long & | current_index | ||
) |
Assigns an unknown index for odd SHE unknowns to a facet. Preconditions:
Definition at line 141 of file mapping.hpp.
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.
device | The device for which to set boundary conditions |
quan | The unkown quantity for which to set boundary conditions |
material_check | A functor, which is given a ViennaGrid cell and returns true if there are boundary conditions to be set on the vertices of that cell |
boundary_value_accessor | An accessor, which returns the boundary value given a ViennaGrid vertex |
bnd_id | The id of the boundary type |
Definition at line 134 of file simulator.hpp.
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.
device | The device |
quan | The unkown quantity for which to set the boundary condition type |
material_check | A functor, which is given a ViennaGrid cell and returns true if there are boundary conditions to be set on the vertices of that cell |
bnd_id | The id of the boundary type |
Definition at line 171 of file simulator.hpp.
void viennashe::detail::set_initial_guess | ( | DeviceT const & | device, |
QuantityT & | quan, | ||
BoundaryValueAccessorT const & | initial_guess_accessor | ||
) |
Sets the initial guess per quantity and device.
device | The device |
quan | The unkown quantity for which the initial guess has to be set |
initial_guess_accessor | An accessor, which returns a value given a ViennaGrid vertex |
Definition at line 200 of file simulator.hpp.
void viennashe::detail::set_she_unknown | ( | DeviceT const & | device, |
QuantityT & | quan | ||
) |
Definition at line 94 of file simulator.hpp.
void viennashe::detail::set_unknown_for_material | ( | DeviceT const & | device, |
QuantityT & | quan, | ||
materials::checker const & | material_check | ||
) |
Sets the unknown masks per material.
device | The device for which to set the unkown masks |
quan | The unkown quantity for which to set the mask |
material_check | A functor, which takes a ViennaGrid cell and returns true if the mask has to be set on the given cell (does a material check) |
Definition at line 74 of file simulator.hpp.
bool viennashe::detail::setup_and_check_quantity_on_ncell_with_fallback | ( | DeviceType & | device, |
AccessorType const & | accessor, | ||
FilterType const & | filter, | ||
CheckerType const & | checker, | ||
FallbackAccessorType const & | fallback_accessor, | ||
FallbackSetterType & | fallback_setter, | ||
FallbackAveragerType const & | fallback_averager, | ||
FallbackFilterType const & | fallback_filter, | ||
FallbackCheckerType const & | fallback_checker | ||
) |
Ensures that a quantity is available on n-cells of a certain dimension. If this is not the case, the quantity is transferred (averaged/interpolated) from cells of other dimension.
TagT | Topological tag of the n-cell for which the quantity should be available |
FallbackTagT | Topological tag of the n-cells from which the data should be taken otherwise |
DeviceType | Type of the device |
AccessorType | An accessor for the quantity for an n-cell |
CheckerType | Type of the checker functor, which checks for a valid range |
FallbackAccessorType | Type of the accessor to be used if the quantity is not set up properly on the mesh |
FallbackSetterType | Type of the setter to be used if the quantity is not set up properly on the mesh |
FallbackAveragerType | Type of the averager to be used if the quantity is not set up properly on the mesh |
FallbackFilterType | Type of the filter to be used for grabbing data from fallback cells. Allows to exclude specific fallback cells |
FallbackCheckerType | Type of the checker to ensure that the quantity is set up correctly after the fallback |
Definition at line 115 of file simulator_setup.hpp.
void viennashe::detail::smooth_doping_at_contacts | ( | DeviceT & | d | ) |
Utility function for smoothing the doping next to contacts.
Otherwise, all types of funny (and not so funny) effects can happen, potentially making the simulation result complete bogus.
Definition at line 42 of file smooth_doping.hpp.