Dimension-independent assembling routines for the Drift-diffusion model using a Newton scheme or Gummel scheme for self-consistency. More...
#include <iostream>
#include <fstream>
#include <vector>
#include "viennagrid/mesh/mesh.hpp"
#include "viennagrid/mesh/coboundary_iteration.hpp"
#include "viennagrid/algorithm/volume.hpp"
#include "viennashe/forwards.h"
#include "viennashe/device.hpp"
#include "viennashe/math/bernoulli.hpp"
#include "viennashe/math/linalg_util.hpp"
#include "viennashe/materials/all.hpp"
#include "viennashe/physics/constants.hpp"
#include "viennashe/physics/physics.hpp"
#include "viennashe/util/checks.hpp"
#include "viennashe/util/misc.hpp"
#include "viennashe/util/filter.hpp"
#include "viennashe/util/dual_box_flux.hpp"
#include "viennashe/log/log.hpp"
#include "viennashe/log_keys.h"
#include "viennashe/scharfetter_gummel.hpp"
#include "viennashe/accessors.hpp"
#include "viennashe/she/timestep_quantities.hpp"
#include "viennashe/she/assemble_all.hpp"
#include "viennashe/phonon/joule_heating.hpp"
Go to the source code of this file.
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 CellType , typename SpatialUnknownT , typename SHEUnknownT , typename MatrixType > | |
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. More... | |
template<typename DeviceType , typename CellType , typename SpatialUnknownT , typename SHEUnknownT > | |
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. More... | |
template<typename DeviceType , typename MatrixType , typename VectorType > | |
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. More... | |
template<typename DeviceType , typename MatrixType , typename VectorType > | |
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) |
double | viennashe::detail::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 MatrixType , typename VectorType > | |
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. More... | |
template<typename DeviceType , typename MatrixType , typename VectorType > | |
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) More... | |
template<typename DeviceType , typename TimeStepQuantitiesT , typename VertexT , typename MatrixType , typename VectorType > | |
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'. More... | |
Dimension-independent assembling routines for the Drift-diffusion model using a Newton scheme or Gummel scheme for self-consistency.
Definition in file assemble.hpp.