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

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...
 

Detailed Description

Dimension-independent assembling routines for the Drift-diffusion model using a Newton scheme or Gummel scheme for self-consistency.

Definition in file assemble.hpp.