1#ifndef VIENNASHE_PHONON_JOULE_HEATING_HPP
2#define VIENNASHE_PHONON_JOULE_HEATING_HPP
35 template <
typename CurrentDensityAccessorType,
typename ElectricFieldAccessorType>
39 ElectricFieldAccessorType
const & e )
40 : efield(e), jfield(j) { }
42 template <
typename ElementType >
45 std::vector<double> j = jfield(el);
46 std::vector<double> e = efield(el);
48 for (std::size_t i = 0; i < e.size(); ++i)
52 return std::fabs(val);
56 ElectricFieldAccessorType
const & efield;
57 CurrentDensityAccessorType
const & jfield;
67 template <
typename CurrentDensityAccessorType,
68 typename ElectricFieldAccessorType,
71 ElectricFieldAccessorType
const & efield,
72 CellType
const & cell)
75 return joule_pd(cell);
80 template <
typename DeviceType,
typename QuantitiesListType>
83 typedef typename DeviceType::mesh_type MeshType;
86 typedef typename viennagrid::result_of::cell<MeshType>::type
cell_type;
87 typedef typename QuantitiesListType::unknown_quantity_type
quantity_type;
95 QuantitiesListType
const & quantities,
97 : device_(d), conf_(conf),
143 DeviceType
const & device_;
The main SHE configuration class. To be adjusted by the user for his/her needs.
equation_id get_electron_equation() const
equation_id get_hole_equation() const
An accessor to the current density on vertices and edges (drift diffusion only!)
Power density accessor. Used to get the power density in the assembly of the heat diffusion equation.
viennashe::models::result_of::mobility_type< DeviceType >::type mobility_type
QuantitiesListType::unknown_quantity_type quantity_type
viennagrid::result_of::cell< MeshType >::type cell_type
value_type operator()(cell_type const &cell) const
Returns the power density depending on the equations for electrons and holes (supports SHE and DD equ...
QuantitiesListType::unknown_she_quantity_type she_quantity_type
power_density_accessor(DeviceType const &d, QuantitiesListType const &quantities, viennashe::config const &conf)
The main mobility model. Contains submodels for lattice, impurity, field and surface scattering relat...
Computes the electric field from a potential.
Contains forward declarations and definition of small classes that must be defined at an early stage.
double apply_joule_heating(CurrentDensityAccessorType const &jfield, ElectricFieldAccessorType const &efield, CellType const &cell)
Auxilary function to joule_heating. Does the same as the joule_heating functor.
viennashe::models::dd::mobility< DeviceType > create_constant_mobility_model(DeviceType const &device, double mu)
Returns a mobility model, which always yields the same mobility.
std::string hole_density()
std::string electron_distribution_function()
std::string hole_distribution_function()
std::string electron_density()
The main ViennaSHE namespace. All functionality resides inside this namespace.
Computes the current density (both Jn and Jp) after using a drift diffusion solution.
Provides an accessor for the current density.
Defines a generic simulator quantity for use within the solvers of ViennaSHE.
Calculates the Joule Heating (in Watt per Second)
double operator()(ElementType const &el) const
joule_heating(CurrentDensityAccessorType const &j, ElectricFieldAccessorType const &e)