Implements the SHE simulator classes (both self-consistent and non-self-consistent). More...
#include "viennashe/forwards.h"
#include "viennashe/device.hpp"
#include "viennashe/simulator_setup.hpp"
#include "viennashe/simulator_quantity.hpp"
#include "viennashe/assemble.hpp"
#include "viennashe/mapping.hpp"
#include "viennashe/log/log.hpp"
#include "viennashe/log_keys.h"
#include "viennashe/math/linalg_util.hpp"
#include "viennashe/she/assemble_all.hpp"
#include "viennashe/she/expansion_order.hpp"
#include "viennashe/she/eliminate.hpp"
#include "viennashe/she/scattering/all.hpp"
#include "viennashe/she/postproc/carrier_density.hpp"
#include "viennashe/she/setup_energies.hpp"
#include "viennashe/she/linear_solver.hpp"
#include "viennashe/she/timestep_quantities.hpp"
#include "viennashe/she/df_wrappers.hpp"
#include "viennashe/she/boundary_conditions.hpp"
#include "viennashe/she/exception.hpp"
#include "viennashe/she/transfer_to_new_h_space.hpp"
#include "viennashe/she/log_keys.h"
#include "viennashe/util/timer.hpp"
#include "viennashe/util/checks.hpp"
#include "viennashe/util/misc.hpp"
#include "viennashe/util/smooth_doping.hpp"
#include "viennashe/phonon/joule_heating.hpp"
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... | |
Implements the SHE simulator classes (both self-consistent and non-self-consistent).
Definition in file simulator.hpp.