ViennaSHE 1.3.0
Free open-source semiconductor device simulator using spherical harmonics expansions techniques.
viennashe::simulator< DeviceType > Class Template Reference

Class for self-consistent SHE simulations. More...

#include <simulator.hpp>

Public Types

typedef DeviceType device_type
 
typedef viennashe::she::timestep_quantities< DeviceType > SHETimeStepQuantitiesT
 
typedef SHETimeStepQuantitiesT::she_df_type she_df_type
 
typedef SHETimeStepQuantitiesT::edf_type edf_type
 
typedef SHETimeStepQuantitiesT::generalized_edf_type generalized_edf_type
 
typedef SHETimeStepQuantitiesT::UnknownSHEQuantityType she_quantity_type
 
typedef unknown_quantity< CellType > UnknownQuantityType
 
typedef UnknownQuantityType unknown_quantity_type
 
typedef const_quantity< CellType > ResultQuantityType
 
typedef ResultQuantityType potential_type
 
typedef ResultQuantityType electron_density_type
 
typedef ResultQuantityType hole_density_type
 

Public Member Functions

 simulator (DeviceType &device, viennashe::config const &conf=viennashe::config())
 Constructs the self-consistent simulator object. More...
 
template<typename QuantityAccessorT >
void set_initial_guess (std::string quan_name, QuantityAccessorT const &quan_acc)
 Transfers the inital guess for the given quantity. More...
 
void run ()
 Launches the solver. Uses the built-in potential as initial guess for the potential and the doping concentration as the initial guess for carriers. More...
 
SHETimeStepQuantitiesT const & quantities () const
 Returns the controller object. Const version. More...
 
SHETimeStepQuantitiesTquantities ()
 Returns the controller object. Non-const version. More...
 
she_df_type she_df (carrier_type_id ctype) const
 Returns a wrapper for the distribution function for electrons and holes (whatever is computed by the simulator), which can be evaluated in the vertices and edges of the mesh. More...
 
edf_type edf (carrier_type_id ctype) const
 Returns a wrapper for the evaluation of the energy distribution function (i.e. the isotropic part of f) More...
 
generalized_edf_type generalized_edf (carrier_type_id ctype) const
 Returns a wrapper for the evaluation of the generalized energy distribution function (f * Z, with density of states Z) More...
 
potential_type potential () const
 Returns a wrapper for the potential, which can be evaluated in every vertex of the mesh. More...
 
electron_density_type electron_density () const
 Returns a wrapper for the electron density, which can be evaluated in every vertex of the mesh. More...
 
hole_density_type hole_density () const
 Returns a wrapper for the hole density, which can be evaluated in every vertex of the mesh
More...
 
SHETimeStepQuantitiesT const & quantity_history (std::size_t index) const
 Returns a wrapper for the trap occupancy, which can be evaluated in every vertex of the mesh. More...
 
std::size_t quantity_history_size () const
 
void advance_in_time ()
 Cycles the quantities. Moves (copy) the current quantities to the history and empties the current quantities. Does not increment time.
More...
 
ResultQuantityType dg_pot_n () const
 
ResultQuantityType dg_pot_p () const
 
viennashe::config const & config () const
 Returns the config object used by the simulator controller. More...
 
viennashe::configconfig ()
 
DeviceType const & device () const
 
DeviceType & device ()
 

Detailed Description

template<typename DeviceType>
class viennashe::simulator< DeviceType >

Class for self-consistent SHE simulations.

Template Parameters
DeviceTypeType of the device the simulator is operating on

Definition at line 674 of file simulator.hpp.

Member Typedef Documentation

◆ device_type

template<typename DeviceType >
typedef DeviceType viennashe::simulator< DeviceType >::device_type

Definition at line 693 of file simulator.hpp.

◆ edf_type

template<typename DeviceType >
typedef SHETimeStepQuantitiesT::edf_type viennashe::simulator< DeviceType >::edf_type

Definition at line 698 of file simulator.hpp.

◆ electron_density_type

template<typename DeviceType >
typedef ResultQuantityType viennashe::simulator< DeviceType >::electron_density_type

Definition at line 709 of file simulator.hpp.

◆ generalized_edf_type

template<typename DeviceType >
typedef SHETimeStepQuantitiesT::generalized_edf_type viennashe::simulator< DeviceType >::generalized_edf_type

Definition at line 699 of file simulator.hpp.

◆ hole_density_type

template<typename DeviceType >
typedef ResultQuantityType viennashe::simulator< DeviceType >::hole_density_type

Definition at line 710 of file simulator.hpp.

◆ potential_type

template<typename DeviceType >
typedef ResultQuantityType viennashe::simulator< DeviceType >::potential_type

Definition at line 708 of file simulator.hpp.

◆ ResultQuantityType

template<typename DeviceType >
typedef const_quantity<CellType> viennashe::simulator< DeviceType >::ResultQuantityType

Definition at line 706 of file simulator.hpp.

◆ she_df_type

template<typename DeviceType >
typedef SHETimeStepQuantitiesT::she_df_type viennashe::simulator< DeviceType >::she_df_type

Definition at line 697 of file simulator.hpp.

◆ she_quantity_type

template<typename DeviceType >
typedef SHETimeStepQuantitiesT::UnknownSHEQuantityType viennashe::simulator< DeviceType >::she_quantity_type

Definition at line 701 of file simulator.hpp.

◆ SHETimeStepQuantitiesT

template<typename DeviceType >
typedef viennashe::she::timestep_quantities<DeviceType> viennashe::simulator< DeviceType >::SHETimeStepQuantitiesT

Definition at line 695 of file simulator.hpp.

◆ unknown_quantity_type

template<typename DeviceType >
typedef UnknownQuantityType viennashe::simulator< DeviceType >::unknown_quantity_type

Definition at line 704 of file simulator.hpp.

◆ UnknownQuantityType

template<typename DeviceType >
typedef unknown_quantity<CellType> viennashe::simulator< DeviceType >::UnknownQuantityType

Definition at line 703 of file simulator.hpp.

Constructor & Destructor Documentation

◆ simulator()

template<typename DeviceType >
viennashe::simulator< DeviceType >::simulator ( DeviceType &  device,
viennashe::config const &  conf = viennashe::config() 
)
inline

Constructs the self-consistent simulator object.

Parameters
deviceThe device
confA SHE configuation object

Definition at line 718 of file simulator.hpp.

Member Function Documentation

◆ advance_in_time()

template<typename DeviceType >
void viennashe::simulator< DeviceType >::advance_in_time ( )
inline

Cycles the quantities. Moves (copy) the current quantities to the history and empties the current quantities. Does not increment time.

Definition at line 1199 of file simulator.hpp.

◆ config() [1/2]

template<typename DeviceType >
viennashe::config & viennashe::simulator< DeviceType >::config ( )
inline

Definition at line 1211 of file simulator.hpp.

◆ config() [2/2]

template<typename DeviceType >
viennashe::config const & viennashe::simulator< DeviceType >::config ( ) const
inline

Returns the config object used by the simulator controller.

Definition at line 1210 of file simulator.hpp.

◆ device() [1/2]

template<typename DeviceType >
DeviceType & viennashe::simulator< DeviceType >::device ( )
inline

Definition at line 1214 of file simulator.hpp.

◆ device() [2/2]

template<typename DeviceType >
DeviceType const & viennashe::simulator< DeviceType >::device ( ) const
inline

Definition at line 1213 of file simulator.hpp.

◆ dg_pot_n()

template<typename DeviceType >
ResultQuantityType viennashe::simulator< DeviceType >::dg_pot_n ( ) const
inline

Definition at line 1206 of file simulator.hpp.

◆ dg_pot_p()

template<typename DeviceType >
ResultQuantityType viennashe::simulator< DeviceType >::dg_pot_p ( ) const
inline

Definition at line 1207 of file simulator.hpp.

◆ edf()

template<typename DeviceType >
edf_type viennashe::simulator< DeviceType >::edf ( carrier_type_id  ctype) const
inline

Returns a wrapper for the evaluation of the energy distribution function (i.e. the isotropic part of f)

Definition at line 1152 of file simulator.hpp.

◆ electron_density()

template<typename DeviceType >
electron_density_type viennashe::simulator< DeviceType >::electron_density ( ) const
inline

Returns a wrapper for the electron density, which can be evaluated in every vertex of the mesh.

Definition at line 1173 of file simulator.hpp.

◆ generalized_edf()

template<typename DeviceType >
generalized_edf_type viennashe::simulator< DeviceType >::generalized_edf ( carrier_type_id  ctype) const
inline

Returns a wrapper for the evaluation of the generalized energy distribution function (f * Z, with density of states Z)

Definition at line 1158 of file simulator.hpp.

◆ hole_density()

template<typename DeviceType >
hole_density_type viennashe::simulator< DeviceType >::hole_density ( ) const
inline

Returns a wrapper for the hole density, which can be evaluated in every vertex of the mesh

Definition at line 1179 of file simulator.hpp.

◆ potential()

template<typename DeviceType >
potential_type viennashe::simulator< DeviceType >::potential ( ) const
inline

Returns a wrapper for the potential, which can be evaluated in every vertex of the mesh.

A simulation must have been carried out already, otherwise a quantity_not_yet_available_exception is thrown.

Definition at line 1167 of file simulator.hpp.

◆ quantities() [1/2]

template<typename DeviceType >
SHETimeStepQuantitiesT & viennashe::simulator< DeviceType >::quantities ( )
inline

Returns the controller object. Non-const version.

Definition at line 1142 of file simulator.hpp.

◆ quantities() [2/2]

template<typename DeviceType >
SHETimeStepQuantitiesT const & viennashe::simulator< DeviceType >::quantities ( ) const
inline

Returns the controller object. Const version.

Definition at line 1139 of file simulator.hpp.

◆ quantity_history()

template<typename DeviceType >
SHETimeStepQuantitiesT const & viennashe::simulator< DeviceType >::quantity_history ( std::size_t  index) const
inline

Returns a wrapper for the trap occupancy, which can be evaluated in every vertex of the mesh.

Returns the state of the simulator at an earlier timestep.

Parameters
indexDistance from first time step. 0: first timestep, 1: next timestep, etc.

Definition at line 1194 of file simulator.hpp.

◆ quantity_history_size()

template<typename DeviceType >
std::size_t viennashe::simulator< DeviceType >::quantity_history_size ( ) const
inline

Definition at line 1196 of file simulator.hpp.

◆ run()

template<typename DeviceType >
void viennashe::simulator< DeviceType >::run ( )
inline

Launches the solver. Uses the built-in potential as initial guess for the potential and the doping concentration as the initial guess for carriers.

Definition at line 877 of file simulator.hpp.

◆ set_initial_guess()

template<typename DeviceType >
template<typename QuantityAccessorT >
void viennashe::simulator< DeviceType >::set_initial_guess ( std::string  quan_name,
QuantityAccessorT const &  quan_acc 
)
inline

Transfers the inital guess for the given quantity.

Parameters
quan_nameThe name of the quantity
quan_accAn accessor, which is given a ViennaGrid vertex and returns a value

Definition at line 866 of file simulator.hpp.

◆ she_df()

template<typename DeviceType >
she_df_type viennashe::simulator< DeviceType >::she_df ( carrier_type_id  ctype) const
inline

Returns a wrapper for the distribution function for electrons and holes (whatever is computed by the simulator), which can be evaluated in the vertices and edges of the mesh.

Definition at line 1146 of file simulator.hpp.


The documentation for this class was generated from the following files: