PLaSK library

Loading...
Searching...
No Matches
Classes | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType > Struct Template Reference

Solver performing calculations in 2D Cartesian or Cylindrical space using finite element method. More...

`#include <solvers/electrical/ddm2d/ddm2d.hpp>`

Inheritance diagram for plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >:
[legend]
Collaboration diagram for plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >:
[legend]

## Public Member Functions
double | compute (unsigned loops=1)
| Run drift_diffusion calculations.
double | findEnergyLevels ()
| Find energy levels - TEST.
bool | checkWell (std::string _carrier)
| Check if the carriers are confined.
double | integrateCurrent (size_t vindex, bool onlyactive=false)
| Integrate vertical total current at certain level.
double | getTotalCurrent (size_t nact=0)
| Integrate vertical total current flowing vertically through active region.
void | loadConfiguration (XMLReader &source, Manager &manager) override
| Compute total electrostatic energy stored in the structure.
| DriftDiffusionModel2DSolver (const std::string &name="")
std::string | getClassName () const override
| Get name of solver.
| ~DriftDiffusionModel2DSolver ()
double | integrateCurrent (size_t vindex, bool onlyactive)
double | integrateCurrent (size_t vindex, bool onlyactive)
std::string | getClassName () const
| Get name of solver.
std::string | getClassName () const
| Get name of solver.
Public Member Functions inherited from plask::FemSolverWithMesh< Geometry2DType, RectangularMesh< 2 > >
| FemSolverWithMesh (const std::string &name="")
bool | parseFemConfiguration (XMLReader &reader, Manager &manager)
FemMatrix * | getMatrix ()
FemMatrix * | getMatrix ()
Public Member Functions inherited from plask::SolverWithMesh< SpaceT, MeshT >
| SolverWithMesh (const std::string &name="")
| ~SolverWithMesh ()
void | loadConfiguration (XMLReader &source, Manager &manager) override
| Load configuration from given `source`.
void | parseStandardConfiguration (XMLReader &source, Manager &manager, const std::string &expected_msg="solver configuration element")
virtual void | onMeshChange (const typename MeshT::Event &PLASK_UNUSED(evt))
| This method is called just after the mesh has been changed.
void | onGeometryChange (const Geometry::Event &PLASK_UNUSED(evt)) override
| This method is called when the geometry is changed.
MeshT & | meshRef () const
| Get current module mesh.
shared_ptr< MeshT > | getMesh () const
| Get current solver mesh.
void | setMesh (const shared_ptr< MeshT > &mesh)
| Set new mesh for the solver.
void | setMesh (shared_ptr< MeshGeneratorD< MeshT::DIM > > generator)
| Set new mesh got from generator.
Public Member Functions inherited from plask::SolverOver< SpaceT >
| SolverOver (const std::string &name="")
| ~SolverOver ()
void | parseStandardConfiguration (XMLReader &source, Manager &manager, const std::string &expected_msg="solver configuration element")
shared_ptr< SpaceT > | getGeometry () const
| Get current solver geometry space.
void | setGeometry (const shared_ptr< SpaceT > &geometry)
| Set new geometry for the solver.
Public Member Functions inherited from plask::Solver
bool | initCalculation ()
| This should be called on beginning of each calculation method to ensure that solver will be initialized.
| Solver (const std::string &name="")
| Construct uninitialized solver.
virtual | ~Solver ()
| Virtual destructor (for subclassing). Do nothing.
void | parseStandardConfiguration (XMLReader &source, Manager &manager, const std::string &expected_msg="solver configuration element")
| Load standard configuration (geometry, mesh) tags from `source`.
bool | isInitialized ()
| Check if solver is already initialized.
void | invalidate ()
| This method should be and is called if something important was changed: calculation space, mesh, etc.
std::string | getId () const
| Get solver id.
std::string | getName () const
virtual std::string | getClassDescription () const
| Get a description of this solver.
template<typename ArgT = double, typename ValT = double>
DataLog< ArgT, ValT > | dataLog (const std::string &chart_name, const std::string &axis_arg_name, const std::string &axis_val_name)
template<typename ArgT = double, typename ValT = double>
DataLog< ArgT, ValT > | dataLog (const std::string &axis_arg_name, const std::string &axis_val_name)
template<typename ... Args>
void | writelog (LogLevel level, std::string msg, Args &&... params) const
| Log a message for this solver.

## Public Attributes
double | maxerr
| bands have to be up-shifted - we want only positive values of energy levels; unit: eV
BoundaryConditions< RectangularMesh< 2 >::Boundary, double > | voltage_boundary
| Boundary condition.
ProviderFor< Potential, Geometry2DType >::Delegate | outPotential
ProviderFor< FermiLevels, Geometry2DType >::Delegate | outFermiLevels
ProviderFor< BandEdges, Geometry2DType >::Delegate | outBandEdges
ProviderFor< CurrentDensity, Geometry2DType >::Delegate | outCurrentDensityForElectrons
ProviderFor< CurrentDensity, Geometry2DType >::Delegate | outCurrentDensityForHoles
ProviderFor< CarriersConcentration, Geometry2DType >::Delegate | outCarriersConcentration
ProviderFor< Heat, Geometry2DType >::Delegate | outHeat
ReceiverFor< Temperature, Geometry2DType > | inTemperature
bool | mRsrh
| SRH recombination is taken into account.
bool | mRrad
| radiative recombination is taken into account
bool | mRaug
| Auger recombination is taken into account.
bool | mPol
| polarization (GaN is the substrate)
bool | mFullIon
| dopant ionization = 100%
double | mSchottkyP
| Schottky barrier for p-type contact (eV)
double | mSchottkyN
| Schottky barrier for n-type contact (eV)
double | maxerrPsiI
| Maximum estimated error for initial potential during all iterations (useful for single calculations managed by external python script)
double | maxerrPsi0
| Maximum estimated error for potential at U = 0 V during all iterations (useful for single calculations managed by external python script)
double | maxerrPsi
| Maximum estimated error for potential during all iterations (useful for single calculations managed by external python script)
double | maxerrFn
| Maximum estimated error for quasi-Fermi energy level for electrons during all iterations (useful for single calculations managed by external python script)
double | maxerrFp
| Maximum estimated error for quasi-Fermi energy level for holes during all iterations (useful for single calculations managed by external python script)
size_t | loopsPsiI
| Loops limit for initial potential.
size_t | loopsPsi0
| Loops limit for potential at U = 0 V.
size_t | loopsPsi
| Loops limit for potential.
size_t | loopsFn
| Loops limit for quasi-Fermi energy level for electrons.
size_t | loopsFp
| Loops limit for quasi-Fermi energy level for holes.
Public Attributes inherited from plask::FemSolverWithMesh< Geometry2DType, RectangularMesh< 2 > >
FemMatrixAlgorithm | algorithm
| Factorization algorithm to use.
IterativeMatrixParams | iter_params
| Parameters of iterative solver.

## Protected Member Functions
void | onInitialize () override
| Initialize the solver.
void | onInvalidate () override
| Invalidate the data.
size_t | getActiveRegionMeshIndex (size_t actnum) const
| Get info on active region.
void | onMeshChange (const typename RectangularMesh< 2 >::Event &evt) override
void | onGeometryChange (const Geometry::Event &evt) override
| This method is called when the geometry is changed.
void | computePsiI ()
| Calculate initial potential for all elements.
size_t | isActive (const Vec< 2 > &point) const
| Return `true` if the specified point is at junction.
size_t | isActive (const RectangularMesh< 2 >::Element &element) const
| Return `true` if the specified element is a junction.
const LazyData< double > | getPotentials (shared_ptr< const MeshD< 2 > > dest_mesh, InterpolationMethod method) const
const LazyData< double > | getFermiLevels (FermiLevels::EnumType what, shared_ptr< const MeshD< 2 > > dest_mesh, InterpolationMethod method) const
const LazyData< double > | getBandEdges (BandEdges::EnumType what, shared_ptr< const MeshD< 2 > > dest_mesh, InterpolationMethod method)
const LazyData< double > | getHeatDensities (shared_ptr< const MeshD< 2 > > dest_mesh, InterpolationMethod method)
const LazyData< Vec< 2 > > | getCurrentDensitiesForElectrons (shared_ptr< const MeshD< 2 > > dest_mesh, InterpolationMethod method)
const LazyData< Vec< 2 > > | getCurrentDensitiesForHoles (shared_ptr< const MeshD< 2 > > dest_mesh, InterpolationMethod method)
const LazyData< double > | getCarriersConcentration (CarriersConcentration::EnumType what, shared_ptr< const MeshD< 2 > > dest_mesh, InterpolationMethod method)
Protected Member Functions inherited from plask::SolverOver< SpaceT >
template<typename Boundary , typename ConditionT >
void | readBoundaryConditions (Manager &manager, XMLReader &reader, BoundaryConditions< Boundary, ConditionT > &dest)
| Read boundary conditions using information about the geometry of this solver.

## Protected Attributes
std::size_t | size
| Number of columns in the main matrix.
double | mTx
| ambient temperature (K)
double | mEx
| energy (eV)
double | mNx
| maximal doping concentration (1/cm^3)
double | mEpsRx
| maximal dielectric constant (-)
double | mXx
| sometimes denoted as LD (um)
double | mMix
| maximal mobility (cm^2/Vs)
double | mRx
| recombination parameter (1/(cm^3*s))
double | mJx
| current density parameter (kA/cm2)
double | mAx
| radiative recombination coefficient (1/s)
double | mBx
| radiative recombination coefficient (cm^3/s)
double | mCx
| Auger recombination coefficient (cm^6/s)
double | mPx
| polarization (C/m^2)
double | dU
| default voltage step (V)
double | maxDelPsi0
| maximal correction for initial potential calculations (V)
double | maxDelPsi
| maximal correction for potential calculations (V)
double | maxDelFn
| maximal correction for quasi-Fermi levels for electrons calculations (eV)
double | maxDelFp
| maximal correction for quasi-Fermi levels for holes calculations (eV)
Stat | stat
| carriers statistics
ContType | conttype
| type of contacts (ohmic/Schottky)
DataVector< double > | dveN
| Cached electron concentrations (size: elements)
DataVector< double > | dveP
| Cached hole concentrations (size: elements)
DataVector< double > | dvePsi
| Computed potentials (size: elements)
DataVector< double > | dveFnEta
| Computed exponents of quasi-Fermi levels for electrons (size: elements)
DataVector< double > | dveFpKsi
| Computed exponents of quasi-Fermi levels for holes (size: elements)
DataVector< double > | dvnPsi0
| Computed potential for U=0V (size: nodes)
DataVector< double > | dvnPsi
| Computed potentials (size: nodes)
DataVector< double > | dvnFnEta
| Computed exponents of quasi-Fermi levels for electrons (size: nodes)
DataVector< double > | dvnFpKsi
| Computed exponents of quasi-Fermi levels for holes (size: nodes)
DataVector< Vec< 2, double > > | currentsN
| Computed current densities for electrons.
DataVector< Vec< 2, double > > | currentsP
| Computed current densities for holes.
DataVector< double > | heats
| Computed and cached heat source densities.
bool | needPsi0
| Flag indicating if we need to compute initial potential;.
double | T0
| Temperature used for compiting level estimates.
bool | strained
| Consider strain in QW?
Protected Attributes inherited from plask::SolverWithMesh< SpaceT, MeshT >
shared_ptr< MeshT > | mesh
| Mesh over which the calculations are performed.
boost::signals2::connection | mesh_signal_connection
| Connection of mesh to onMeshChange method, see http://www.boost.org/doc/libs/1_55_0/doc/html/signals2/tutorial.html#idp204830936.
Protected Attributes inherited from plask::SolverOver< SpaceT >
shared_ptr< SpaceT > | geometry
| Space in which the calculations are performed.
Protected Attributes inherited from plask::Solver
bool | initialized
| `true` only if solver is initialized

## Additional Inherited Members
Public Types inherited from plask::SolverWithMesh< SpaceT, MeshT >
typedef MeshT | MeshType
| Type of the mesh for this solver.
Public Types inherited from plask::SolverOver< SpaceT >
typedef SpaceT | SpaceType
| of the space for this solver

## Detailed Description

template<typename Geometry2DType>
struct plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >

Solver performing calculations in 2D Cartesian or Cylindrical space using finite element method.

Definition at line 54 of file ddm2d.hpp.

## Constructor & Destructor Documentation

## ◆ DriftDiffusionModel2DSolver()

template<typename Geometry2DType >

plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::DriftDiffusionModel2DSolver | ( | const std::string & | name = `""` | ) |

Definition at line 51 of file ddm2d.cpp.

## ◆ ~DriftDiffusionModel2DSolver()

template<typename Geometry2DType >

plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::~DriftDiffusionModel2DSolver | ( |  | ) |

Definition at line 162 of file ddm2d.cpp.

## Member Function Documentation

## ◆ checkWell()

template<typename Geometry2DType >

bool plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::checkWell | ( | std::string | _carrier | ) |

Check if the carriers are confined.

Returns
  true when carriers are confined

electrons

ne+2 because cladding elements also

filling CBel vector /// TODO

finding min. and max. for CB

max. CB at boundary

TODO

Definition at line 1095 of file ddm2d.cpp.

## ◆ compute()

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::compute | ( | unsigned | loops = `1` | ) |

Run drift_diffusion calculations.

Returns
  max correction of potential against the last call

Definition at line 1151 of file ddm2d.cpp.

## ◆ computePsiI()

template<typename Geometry2DType >

void plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::computePsiI | ( |  | ) |
| protected

Calculate initial potential for all elements.

Definition at line 764 of file ddm2d.cpp.

## ◆ findEnergyLevels()

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::findEnergyLevels | ( |  | ) |

Find energy levels - TEST.

Returns
  nothing important

hb*hb/(2m), unit: eV*nm*nm, 10^9 is introduced to change m into nm

bands have to be up-shifted - we want only positive values of energy levels; unit: (eV)

TODO

true when electrons (el) are confined

true when heavy holes (hh) are confined

true when light holes (lh) are confined

1/(dz*dz), unit: (1/nm^2)

1/(dz), unit: (1/nm)

the order of the small matrix for central-node for CB

the order of the matrix for CB

N - Hc size

setting Hc = zeros

nn - number of nodes

centre of the left element

centre of the right element

left/central/right 1x1 local matrix

11

Re - real part., Im - imag part.

no energy levels for electrons

lev_el - vector with energy levels for electrons

n_lev_el - number of energy levels of electrons

we have to find out if this level corresponds to el

"1" in both cases because only el are considered here

sorting electron energy levels

Definition at line 950 of file ddm2d.cpp.

## ◆ getActiveRegionMeshIndex()

template<typename Geometry2DType >

size_t plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::getActiveRegionMeshIndex | ( | size_t | actnum | ) | const
| protected

Get info on active region.

Definition at line 167 of file ddm2d.cpp.

## ◆ getBandEdges()

template<typename Geometry2DType >

const LazyData< double > plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::getBandEdges | ( | BandEdges::EnumType | what,
|  | shared_ptr< const MeshD< 2 > > | dest_mesh,
|  | InterpolationMethod | method
| ) |  |
| protected

Definition at line 1453 of file ddm2d.cpp.

## ◆ getCarriersConcentration()

template<typename Geometry2DType >

const LazyData< double > plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::getCarriersConcentration | ( | CarriersConcentration::EnumType | what,
|  | shared_ptr< const MeshD< 2 > > | dest_mesh,
|  | InterpolationMethod | method
| ) |  |
| protected

Definition at line 1561 of file ddm2d.cpp.

## ◆ getClassName() [1/3]

std::string plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DCartesian >::getClassName | ( |  | ) | const
| virtual

Get name of solver.

Returns
  name of this solver

Implements plask::Solver.

Definition at line 2196 of file ddm2d.cpp.

## ◆ getClassName() [2/3]

std::string plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DCylindrical >::getClassName | ( |  | ) | const
| virtual

Get name of solver.

Returns
  name of this solver

Implements plask::Solver.

Definition at line 2197 of file ddm2d.cpp.

## ◆ getClassName() [3/3]

template<typename Geometry2DType >

std::string plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::getClassName | ( |  | ) | const
| override virtual

Get name of solver.

Returns
  name of this solver

Implements plask::Solver.

## ◆ getCurrentDensitiesForElectrons()

template<typename Geometry2DType >

const LazyData< Vec< 2 > > plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::getCurrentDensitiesForElectrons | ( | shared_ptr< const MeshD< 2 > > | dest_mesh,
|  | InterpolationMethod | method
| ) |  |
| protected

Definition at line 1529 of file ddm2d.cpp.

## ◆ getCurrentDensitiesForHoles()

template<typename Geometry2DType >

const LazyData< Vec< 2 > > plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::getCurrentDensitiesForHoles | ( | shared_ptr< const MeshD< 2 > > | dest_mesh,
|  | InterpolationMethod | method
| ) |  |
| protected

Definition at line 1545 of file ddm2d.cpp.

## ◆ getFermiLevels()

template<typename Geometry2DType >

const LazyData< double > plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::getFermiLevels | ( | FermiLevels::EnumType | what,
|  | shared_ptr< const MeshD< 2 > > | dest_mesh,
|  | InterpolationMethod | method
| ) |  | const
| protected

Definition at line 1419 of file ddm2d.cpp.

## ◆ getHeatDensities()

template<typename Geometry2DType >

const LazyData< double > plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::getHeatDensities | ( | shared_ptr< const MeshD< 2 > > | dest_mesh,
|  | InterpolationMethod | method
| ) |  |
| protected

Definition at line 1624 of file ddm2d.cpp.

## ◆ getPotentials()

template<typename Geometry2DType >

const LazyData< double > plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::getPotentials | ( | shared_ptr< const MeshD< 2 > > | dest_mesh,
|  | InterpolationMethod | method
| ) |  | const
| protected

Definition at line 1409 of file ddm2d.cpp.

## ◆ getTotalCurrent()

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::getTotalCurrent | ( | size_t | nact = `0` | ) |

Integrate vertical total current flowing vertically through active region.

Parameters

  nact | number of the active region

Returns
  computed total current

Definition at line 1401 of file ddm2d.cpp.

## ◆ integrateCurrent() [1/3]

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DCartesian >::integrateCurrent | ( | size_t | vindex,
|  | bool | onlyactive
| ) |  |

Definition at line 1369 of file ddm2d.cpp.

## ◆ integrateCurrent() [2/3]

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DCylindrical >::integrateCurrent | ( | size_t | vindex,
|  | bool | onlyactive
| ) |  |

Definition at line 1384 of file ddm2d.cpp.

## ◆ integrateCurrent() [3/3]

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::integrateCurrent | ( | size_t | vindex,
|  | bool | onlyactive = `false`
| ) |  |

Integrate vertical total current at certain level.

Parameters

  vindex | vertical index of the element mesh to perform integration at
  onlyactive | if true only current in the active region is considered

Returns
  computed total current

## ◆ isActive() [1/2]

template<typename Geometry2DType >

size_t plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::isActive | ( | const RectangularMesh< 2 >::Element & | element | ) | const
| inline protected

Return `true` if the specified element is a junction.

Definition at line 160 of file ddm2d.hpp.

## ◆ isActive() [2/2]

template<typename Geometry2DType >

size_t plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::isActive | ( | const Vec< 2 > & | point | ) | const
| inline protected

Return `true` if the specified point is at junction.

Parameters

  point | point to test

Returns
  number of active region + 1 (0 for none)

Definition at line 134 of file ddm2d.hpp.

## ◆ loadConfiguration()

template<typename Geometry2DType >

void plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::loadConfiguration | ( | XMLReader & | source,
|  | Manager & | manager
| ) |  |
| override virtual

Compute total electrostatic energy stored in the structure.

Returns
  total electrostatic energy [J] Estimate structure capacitance.
  static structure capacitance [pF] Compute total heat generated by the structure in unit time
  total generated heat (mW) Return the maximum estimated error.

Reimplemented from plask::Solver.

Definition at line 112 of file ddm2d.cpp.

## ◆ onGeometryChange()

template<typename Geometry2DType >

void plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::onGeometryChange | ( | const Geometry::Event & |  | ) |
| inline override protected virtual

This method is called when the geometry is changed.

It just calls invalidate(); but subclasses can customize it.

Parameters

  evt | information about geometry changes

Reimplemented from plask::SolverOver< SpaceT >.

Definition at line 121 of file ddm2d.hpp.

## ◆ onInitialize()

template<typename Geometry2DType >

void plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::onInitialize | ( |  | ) |
| override protected virtual

Initialize the solver.

Reimplemented from plask::Solver.

Definition at line 217 of file ddm2d.cpp.

## ◆ onInvalidate()

template<typename Geometry2DType >

void plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::onInvalidate | ( |  | ) |
| override protected virtual

Invalidate the data.

Reimplemented from plask::Solver.

Definition at line 243 of file ddm2d.cpp.

## ◆ onMeshChange()

template<typename Geometry2DType >

void plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::onMeshChange | ( | const typename RectangularMesh< 2 >::Event & | evt | ) |
| inline override protected

Definition at line 117 of file ddm2d.hpp.

## Member Data Documentation

## ◆ conttype

template<typename Geometry2DType >

ContType plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::conttype
| protected

type of contacts (ohmic/Schottky)

Definition at line 82 of file ddm2d.hpp.

## ◆ currentsN

template<typename Geometry2DType >

DataVector<Vec<2, double> > plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::currentsN
| protected

Computed current densities for electrons.

Definition at line 98 of file ddm2d.hpp.

## ◆ currentsP

template<typename Geometry2DType >

DataVector<Vec<2, double> > plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::currentsP
| protected

Computed current densities for holes.

Definition at line 99 of file ddm2d.hpp.

## ◆ dU

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::dU
| protected

default voltage step (V)

Definition at line 75 of file ddm2d.hpp.

## ◆ dveFnEta

template<typename Geometry2DType >

DataVector<double> plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::dveFnEta
| protected

Computed exponents of quasi-Fermi levels for electrons (size: elements)

Definition at line 91 of file ddm2d.hpp.

## ◆ dveFpKsi

template<typename Geometry2DType >

DataVector<double> plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::dveFpKsi
| protected

Computed exponents of quasi-Fermi levels for holes (size: elements)

Definition at line 92 of file ddm2d.hpp.

## ◆ dveN

template<typename Geometry2DType >

DataVector<double> plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::dveN
| protected

Cached electron concentrations (size: elements)

Definition at line 88 of file ddm2d.hpp.

## ◆ dveP

template<typename Geometry2DType >

DataVector<double> plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::dveP
| protected

Cached hole concentrations (size: elements)

Definition at line 89 of file ddm2d.hpp.

## ◆ dvePsi

template<typename Geometry2DType >

DataVector<double> plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::dvePsi
| protected

Computed potentials (size: elements)

Definition at line 90 of file ddm2d.hpp.

## ◆ dvnFnEta

template<typename Geometry2DType >

DataVector<double> plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::dvnFnEta
| protected

Computed exponents of quasi-Fermi levels for electrons (size: nodes)

Definition at line 96 of file ddm2d.hpp.

## ◆ dvnFpKsi

template<typename Geometry2DType >

DataVector<double> plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::dvnFpKsi
| protected

Computed exponents of quasi-Fermi levels for holes (size: nodes)

Definition at line 97 of file ddm2d.hpp.

## ◆ dvnPsi

template<typename Geometry2DType >

DataVector<double> plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::dvnPsi
| protected

Computed potentials (size: nodes)

Definition at line 95 of file ddm2d.hpp.

## ◆ dvnPsi0

template<typename Geometry2DType >

DataVector<double> plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::dvnPsi0
| protected

Computed potential for U=0V (size: nodes)

Definition at line 94 of file ddm2d.hpp.

## ◆ heats

template<typename Geometry2DType >

DataVector<double> plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::heats
| protected

Computed and cached heat source densities.

Definition at line 100 of file ddm2d.hpp.

## ◆ inTemperature

template<typename Geometry2DType >

ReceiverFor<Temperature, Geometry2DType> plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::inTemperature

Definition at line 392 of file ddm2d.hpp.

## ◆ loopsFn

template<typename Geometry2DType >

size_t plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::loopsFn

Loops limit for quasi-Fermi energy level for electrons.

Definition at line 416 of file ddm2d.hpp.

## ◆ loopsFp

template<typename Geometry2DType >

size_t plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::loopsFp

Loops limit for quasi-Fermi energy level for holes.

Definition at line 417 of file ddm2d.hpp.

## ◆ loopsPsi

template<typename Geometry2DType >

size_t plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::loopsPsi

Loops limit for potential.

Definition at line 415 of file ddm2d.hpp.

## ◆ loopsPsi0

template<typename Geometry2DType >

size_t plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::loopsPsi0

Loops limit for potential at U = 0 V.

Definition at line 414 of file ddm2d.hpp.

## ◆ loopsPsiI

template<typename Geometry2DType >

size_t plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::loopsPsiI

Loops limit for initial potential.

Definition at line 413 of file ddm2d.hpp.

## ◆ mAx

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mAx
| protected

radiative recombination coefficient (1/s)

Definition at line 69 of file ddm2d.hpp.

## ◆ maxDelFn

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::maxDelFn
| protected

maximal correction for quasi-Fermi levels for electrons calculations (eV)

Definition at line 78 of file ddm2d.hpp.

## ◆ maxDelFp

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::maxDelFp
| protected

maximal correction for quasi-Fermi levels for holes calculations (eV)

Definition at line 79 of file ddm2d.hpp.

## ◆ maxDelPsi

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::maxDelPsi
| protected

maximal correction for potential calculations (V)

Definition at line 77 of file ddm2d.hpp.

## ◆ maxDelPsi0

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::maxDelPsi0
| protected

maximal correction for initial potential calculations (V)

Definition at line 76 of file ddm2d.hpp.

## ◆ maxerr

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::maxerr

bands have to be up-shifted - we want only positive values of energy levels; unit: eV

Maximum relative current density correction accepted as convergence

Definition at line 371 of file ddm2d.hpp.

## ◆ maxerrFn

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::maxerrFn

Maximum estimated error for quasi-Fermi energy level for electrons during all iterations (useful for single calculations managed by external python script)

Definition at line 409 of file ddm2d.hpp.

## ◆ maxerrFp

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::maxerrFp

Maximum estimated error for quasi-Fermi energy level for holes during all iterations (useful for single calculations managed by external python script)

Definition at line 411 of file ddm2d.hpp.

## ◆ maxerrPsi

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::maxerrPsi

Maximum estimated error for potential during all iterations (useful for single calculations managed by external python script)

Definition at line 407 of file ddm2d.hpp.

## ◆ maxerrPsi0

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::maxerrPsi0

Maximum estimated error for potential at U = 0 V during all iterations (useful for single calculations managed by external python script)

Definition at line 405 of file ddm2d.hpp.

## ◆ maxerrPsiI

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::maxerrPsiI

Maximum estimated error for initial potential during all iterations (useful for single calculations managed by external python script)

Definition at line 403 of file ddm2d.hpp.

## ◆ mBx

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mBx
| protected

radiative recombination coefficient (cm^3/s)

Definition at line 70 of file ddm2d.hpp.

## ◆ mCx

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mCx
| protected

Auger recombination coefficient (cm^6/s)

Definition at line 71 of file ddm2d.hpp.

## ◆ mEpsRx

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mEpsRx
| protected

maximal dielectric constant (-)

Definition at line 62 of file ddm2d.hpp.

## ◆ mEx

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mEx
| protected

energy (eV)

Definition at line 60 of file ddm2d.hpp.

## ◆ mFullIon

template<typename Geometry2DType >

bool plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mFullIon

dopant ionization = 100%

Definition at line 398 of file ddm2d.hpp.

## ◆ mJx

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mJx
| protected

current density parameter (kA/cm2)

Definition at line 67 of file ddm2d.hpp.

## ◆ mMix

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mMix
| protected

maximal mobility (cm^2/Vs)

Definition at line 65 of file ddm2d.hpp.

## ◆ mNx

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mNx
| protected

maximal doping concentration (1/cm^3)

Definition at line 61 of file ddm2d.hpp.

## ◆ mPol

template<typename Geometry2DType >

bool plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mPol

polarization (GaN is the substrate)

Definition at line 397 of file ddm2d.hpp.

## ◆ mPx

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mPx
| protected

polarization (C/m^2)

Definition at line 73 of file ddm2d.hpp.

## ◆ mRaug

template<typename Geometry2DType >

bool plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mRaug

Auger recombination is taken into account.

Definition at line 396 of file ddm2d.hpp.

## ◆ mRrad

template<typename Geometry2DType >

bool plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mRrad

radiative recombination is taken into account

Definition at line 395 of file ddm2d.hpp.

## ◆ mRsrh

template<typename Geometry2DType >

bool plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mRsrh

SRH recombination is taken into account.

Definition at line 394 of file ddm2d.hpp.

## ◆ mRx

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mRx
| protected

recombination parameter (1/(cm^3*s))

Definition at line 66 of file ddm2d.hpp.

## ◆ mSchottkyN

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mSchottkyN

Schottky barrier for n-type contact (eV)

Definition at line 401 of file ddm2d.hpp.

## ◆ mSchottkyP

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mSchottkyP

Schottky barrier for p-type contact (eV)

Definition at line 400 of file ddm2d.hpp.

## ◆ mTx

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mTx
| protected

ambient temperature (K)

Definition at line 59 of file ddm2d.hpp.

## ◆ mXx

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::mXx
| protected

sometimes denoted as LD (um)

Definition at line 63 of file ddm2d.hpp.

## ◆ needPsi0

template<typename Geometry2DType >

bool plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::needPsi0
| protected

Flag indicating if we need to compute initial potential;.

Definition at line 102 of file ddm2d.hpp.

## ◆ outBandEdges

template<typename Geometry2DType >

ProviderFor<BandEdges,Geometry2DType>::Delegate plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::outBandEdges

Definition at line 380 of file ddm2d.hpp.

## ◆ outCarriersConcentration

template<typename Geometry2DType >

ProviderFor<CarriersConcentration,Geometry2DType>::Delegate plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::outCarriersConcentration

Definition at line 386 of file ddm2d.hpp.

## ◆ outCurrentDensityForElectrons

template<typename Geometry2DType >

ProviderFor<CurrentDensity,Geometry2DType>::Delegate plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::outCurrentDensityForElectrons

Definition at line 382 of file ddm2d.hpp.

## ◆ outCurrentDensityForHoles

template<typename Geometry2DType >

ProviderFor<CurrentDensity,Geometry2DType>::Delegate plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::outCurrentDensityForHoles

Definition at line 384 of file ddm2d.hpp.

## ◆ outFermiLevels

template<typename Geometry2DType >

ProviderFor<FermiLevels,Geometry2DType>::Delegate plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::outFermiLevels

Definition at line 378 of file ddm2d.hpp.

## ◆ outHeat

template<typename Geometry2DType >

ProviderFor<Heat,Geometry2DType>::Delegate plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::outHeat

Definition at line 388 of file ddm2d.hpp.

## ◆ outPotential

template<typename Geometry2DType >

ProviderFor<Potential,Geometry2DType>::Delegate plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::outPotential

Definition at line 376 of file ddm2d.hpp.

## ◆ size

template<typename Geometry2DType >

std::size_t plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::size
| protected

Number of columns in the main matrix.

Definition at line 56 of file ddm2d.hpp.

## ◆ stat

template<typename Geometry2DType >

Stat plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::stat
| protected

carriers statistics

Definition at line 81 of file ddm2d.hpp.

## ◆ strained

template<typename Geometry2DType >

bool plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::strained
| protected

Consider strain in QW?

Definition at line 106 of file ddm2d.hpp.

## ◆ T0

template<typename Geometry2DType >

double plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::T0
| protected

Temperature used for compiting level estimates.

Definition at line 104 of file ddm2d.hpp.

## ◆ voltage_boundary

template<typename Geometry2DType >

BoundaryConditions<RectangularMesh<2>::Boundary, double> plask::electrical::drift_diffusion::DriftDiffusionModel2DSolver< Geometry2DType >::voltage_boundary

Boundary condition.

Definition at line 374 of file ddm2d.hpp.

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

- solvers/electrical/ddm2d/ddm2d.hpp
- solvers/electrical/ddm2d/ddm2d.cpp