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

Contains forward declarations and definition of small classes that must be defined at an early stage. More...

#include <stdexcept>
#include <ostream>
#include <cstddef>
#include <string>
#include <map>
#include "viennashe/version.hpp"
#include "viennagrid/forwards.hpp"

Go to the source code of this file.

Classes

struct  viennashe::detail::is_1d_mesh< MeshT, CellTag >
 Metafunction for the determination of whether a mesh is 1d. More...
 
struct  viennashe::detail::is_1d_mesh< MeshT, viennagrid::simplex_tag< 1 > >
 Metafunction for the determination of whether a mesh is 1d. Specialization for 1d. More...
 
struct  viennashe::detail::is_1d_mesh< MeshT, viennagrid::hypercube_tag< 1 > >
 Metafunction for the determination of whether a mesh is 1d. Specialization for 1d. More...
 
struct  viennashe::error_indicator< T >
 A helper class to raise compile time errors. More...
 
struct  viennashe::box_volume_key
 Internal key for storing the box volume associated with an edge or a vertex. More...
 
struct  viennashe::edge_interface_area_key
 Internal key for storing the interface area of a box associated with an edge. More...
 
class  viennashe::solvers::dense_linear_solver_tag
 Internal tag used for the specification of a dense linear solver (Gauss, single-threaded) More...
 
class  viennashe::solvers::serial_linear_solver_tag
 Internal tag used for the specification of a single-threaded linear solver. More...
 
class  viennashe::solvers::parallel_linear_solver_tag
 Internal tag used for the specification of a CPU-based multi-threaded linear solver. More...
 
class  viennashe::solvers::petsc_linear_solver_tag
 Internal tag used for the specification of a CPU-based PETSC solver. More...
 
class  viennashe::solvers::petsc_amgx_solver_tag
 
class  viennashe::solvers::gpu_parallel_linear_solver_tag
 Internal tag used for the specification of a GPU-accelerated linear solver. 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.
 
namespace  viennashe::math
 Namespace for all math specific code

 
namespace  viennashe::solvers
 Namespace containing a variety of different linear solvers.
 

Typedefs

typedef std::map< std::string, std::pair< std::size_t, std::size_t > > viennashe::map_info_type
 Information on the number of unknowns per quantity. More...
 
typedef std::vector< double > viennashe::energy_vector_type
 Type for storing the discrete energies. More...
 
typedef std::vector< long > viennashe::she_index_vector_type
 Type for storing the unknown indices at each point in the (x, H)-space. More...
 

Enumerations

enum  viennashe::equation_id {
  viennashe::EQUATION_INVALID = 0 , viennashe::EQUATION_POISSON_DD , viennashe::EQUATION_CONTINUITY , viennashe::EQUATION_SHE ,
  viennashe::EQUATION_DENSITY_GRADIENT , viennashe::EQUATION_POISSON_HEAT
}
 An enumeration of all equation types ViennaSHE supports. More...
 
enum  viennashe::boundary_type_id {
  viennashe::BOUNDARY_NONE = 0 , viennashe::BOUNDARY_DIRICHLET , viennashe::BOUNDARY_NEUMANN , viennashe::BOUNDARY_ROBIN ,
  viennashe::BOUNDARY_GENERATION_RECOMBINATION
}
 An enumeration of all boundary conditions ViennaSHE supports. More...
 
enum  viennashe::material_category_id {
  viennashe::MATERIAL_CONDUCTOR_ID , viennashe::MATERIAL_NO_CONDUCTOR_ID , viennashe::MATERIAL_SEMICONDUCTOR_ID , viennashe::MATERIAL_NO_SEMICONDUCTOR_ID ,
  viennashe::MATERIAL_INSULATOR_ID , viennashe::MATERIAL_NO_INSULATOR_ID
}
 
enum  viennashe::she_discretization_type_id { viennashe::SHE_DISCRETIZATION_EVEN_ODD_ORDER_DF , viennashe::SHE_DISCRETIZATION_EVEN_ODD_ORDER_GENERALIZED_DF }
 
enum  viennashe::she_scaling_type_id { viennashe::SHE_SCALING_KINETIC_ENERGY , viennashe::SHE_SCALING_TOTAL_ENERGY }
 
enum  viennashe::math::harmonics_iteration_type { viennashe::math::ALL_HARMONICS_ITERATION_ID = 0 , viennashe::math::EVEN_HARMONICS_ITERATION_ID , viennashe::math::ODD_HARMONICS_ITERATION_ID }
 An enumeration of spherical harmonics types (all, even, odd) ViennaSHE supports. More...
 
enum  viennashe::carrier_type_id { viennashe::INVALID_TYPE = 0 , viennashe::ELECTRON_TYPE_ID , viennashe::HOLE_TYPE_ID }
 Enumeration type for selecting the carrier type. More...
 
enum  viennashe::doping_type_id { viennashe::INVALID_DOPING_TYPE = 0 , viennashe::DONATOR_DOPING_TYPE_ID , viennashe::ACCEPTOR_DOPING_TYPE_ID }
 Enumeration type for selecting the doping type. More...
 

Detailed Description

Contains forward declarations and definition of small classes that must be defined at an early stage.

Definition in file forwards.h.