1#ifndef LIBVIENNASHE_VIENNASHE_ALL_HPP
2#define LIBVIENNASHE_VIENNASHE_ALL_HPP
23 #pragma warning(disable:4503)
54#include "viennagrid/mesh/mesh.hpp"
55#include "viennagrid/config/default_configs.hpp"
56#include "viennagrid/io/netgen_reader.hpp"
57#include "viennagrid/io/vtk_reader.hpp"
58#include "viennagrid/io/vtk_writer.hpp"
59#include "viennagrid/algorithm/centroid.hpp"
62#ifndef __FUNCTION_NAME__
64 #define __FUNCTION_NAME__ __FUNCTION__
66 #define __FUNCTION_NAME__ __func__
72#define CHECK_ARGUMENT_FOR_NULL(arg, pos, name) if((arg) == NULL) \
74 viennashe::log::error() << "ERROR: " << __FUNCTION_NAME__ \
75 << "(): " << (name) << " must not be NULL!" << std::endl; \
79#define CHECK_ARGUMENT(mycheck, pos, msg) if(mycheck) \
81 viennashe::log::error() << "ERROR: " << __FUNCTION_NAME__ \
82 << "(): " << (msg) << "!" << std::endl; \
101 template <
typename ElementT >
107 template <
typename ElementT >
111 return this->values_[elem.id().get()];
116 template <
typename ElementT >
117 double at(ElementT
const & elem)
const
Maps a C-array to an element based accessor. Uses element.id() as an index to the C-array.
double at(ElementT const &elem) const
double get_value(ElementT const &elem) const
double operator()(ElementT const &elem) const
array_to_accessor(double *vals)
The main SHE configuration class. To be adjusted by the user for his/her needs.
Defines the physical properties of a device, e.g. doping. This is the implementation for 2d and highe...
Exception for the case that an invalid value (depends on the method called) is encountered.
Class for self-consistent SHE simulations.
The SHE configuration class is defined here.
Contains the definition of a device class independent of the actual macroscopic model to be solved.
Computes the electric field from a potential.
Computes the electric flux density from a potential.
Contains forward declarations and definition of small classes that must be defined at an early stage.
Contains the basic models interface.
The internal C++ namespace of the library.
Provides a number of fundamental constants. All constants in SI units.
Computes the current density (both Jn and Jp) after using a drift diffusion solution.
Convenience header, which includes all postprocessing quantities available.
Provides a VTK writer for the computed distribution function. Outputs the (x, H)-space.
Implements the SHE simulator classes (both self-consistent and non-self-consistent).
The mesh types supported by libviennashe.
Internal C++ to C wrapper for the device. Has typedefs and destructor.
viennashe::device< viennagrid::quadrilateral_2d_mesh > devq2d_type
devq2d_type * device_quad_2d
devt2d_type * device_tri_2d
devh3d_type * device_hex_3d
viennashe::device< viennagrid::hexahedral_3d_mesh > devh3d_type
viennashe::device< viennagrid::triangular_2d_mesh > devt2d_type
devt3d_type * device_tet_3d
viennashe::device< viennagrid::line_1d_mesh > dev1d_type
viennashe::device< viennagrid::tetrahedral_3d_mesh > devt3d_type
Internal C++ to C wrapper for the simulator. Has typedefs and destructor.
viennagrid::line_1d_mesh mesh1d_type
viennashe::device< meshq2d_type > devq2d_type
viennashe::simulator< dev1d_type > sim1d_type
viennashe::simulator< devq2d_type > simq2d_type
viennashe::simulator< devh3d_type > simh3d_type
viennashe::simulator< devt3d_type > simt3d_type
viennashe::device< mesh1d_type > dev1d_type
~viennashe_simulator_impl()
viennashe::device< mesht2d_type > devt2d_type
viennashe::simulator< devt2d_type > simt2d_type
viennagrid::hexahedral_3d_mesh meshh3d_type
viennagrid::triangular_2d_mesh mesht2d_type
viennagrid::quadrilateral_2d_mesh meshq2d_type
viennashe::device< meshh3d_type > devh3d_type
viennagrid::tetrahedral_3d_mesh mesht3d_type
viennashe_simulator_impl(int s, viennashe::config *c)
viennashe::device< mesht3d_type > devt3d_type
Simple routines for reading a vector from file, or writing a vector to file.