1#ifndef VIENNASHE_IO_ADD_TO_WRITER_HPP
2#define VIENNASHE_IO_ADD_TO_WRITER_HPP
45 template <
typename AccessorT,
typename ValueT =
typename AccessorT::value_type >
54 template <
typename ElementT >
62 template <
typename ElementT >
70 template <
typename ElementT >
89 template <
typename MacroscopicQuantityAccessor,
typename WriterType>
99 writer.add_scalar_data_on_cells(wrap, name);
109 template <
typename MacroscopicQuantityAccessor,
typename WriterType>
113 std::vector<double> * dummy = 0)
118 writer.add_vector_data_on_cells(wrap, name);
128 template <
typename MacroscopicQuantityAccessor,
typename WriterType>
130 WriterType & writer, std::string name)
132 typename MacroscopicQuantityAccessor::value_type * dummy = 0;
143 template <
typename PotentialAccessor,
146 WriterType & writer, std::string name)
177 template <
typename DeviceType,
178 typename SHEQuantity,
182 SHEQuantity
const & quan,
201 template <
typename DeviceType,
202 typename PotentialQuantityType,
203 typename CarrierQuantityType,
204 typename MobilityModel,
208 CarrierQuantityType
const & carrier,
210 MobilityModel
const & mobility_model,
215 CarrierQuantityType, MobilityModel> current_density_type;
216 current_density_type Jfield(
device, ctype,
potential, carrier, mobility_model);
228 template <
typename SHEQuantity,
231 SHEQuantity
const & quan,
The main SHE configuration class. To be adjusted by the user for his/her needs.
An accessor to the current density on vertices and edges (drift diffusion only!)
Defines the physical properties of a device, e.g. doping. This is the implementation for 2d and highe...
A wrapper for the accessor in viennashe, in order for them to be suitable for viennagrid.
value_type const & at(ElementT const &el) const
viennagrid_accessor_wrapper(viennagrid_accessor_wrapper const &o)
value_type const * find(ElementT const &el) const
value_type const & operator()(ElementT const &el) const
viennagrid_accessor_wrapper(AccessorT acc)
An accessor for the average carrier energy at each point inside the device.
Accessor class providing the carrier velocity inside the device.
Computes the electric field from a potential.
Contains forward declarations and definition of small classes that must be defined at an early stage.
void add_macroscopic_quantity_to_writer_impl(MacroscopicQuantityAccessor const &quantity, WriterType &writer, std::string name, double *dummy=0)
Implementation of the quantity addition to a writer for single valued quantities.
void add_kinetic_carrier_energy_to_writer(viennashe::config const &conf, SHEQuantity const &quan, WriterType &writer, std::string name)
Free function to add the average carrier energy to a writer.
void add_macroscopic_quantity_to_writer(MacroscopicQuantityAccessor const &quantity, WriterType &writer, std::string name)
Adds a quantity to a writer.
void add_current_density_to_writer(DeviceType const &device, viennashe::config const &conf, SHEQuantity const &quan, WriterType &writer, std::string name)
Special free function to add the current density - calculated from a solution of the BTE - to a write...
void add_potential_to_writer(PotentialAccessor const &pot, WriterType &writer, std::string name)
Special free function to add the potential to a writer.
The main ViennaSHE namespace. All functionality resides inside this namespace.
carrier_type_id
Enumeration type for selecting the carrier type.
Computes the current density (both Jn and Jp) after using a drift diffusion solution.
Convenience header, which includes all postprocessing quantities available.