PLaSK library

Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Types | Protected Member Functions | Friends | List of all members
plask::gain::freecarrier::FreeCarrierGainSolver3D Struct Reference

Gain solver using Fermi Golden Rule. More...

`#include <solvers/gain/freecarrier/freecarrier3d.hpp>`

Inheritance diagram for plask::gain::freecarrier::FreeCarrierGainSolver3D:
[legend]
Collaboration diagram for plask::gain::freecarrier::FreeCarrierGainSolver3D:
[legend]

## Classes
struct | ComputedData
struct | DataBase
| Base for lazy data implementation. More...
struct | DgdnData
struct | EnergyLevelsData
struct | GainData

## Public Member Functions
| FreeCarrierGainSolver3D (const std::string &name="")
std::string | getClassName () const override
| Get name of solver.
Public Member Functions inherited from plask::gain::freecarrier::FreeCarrierGainSolver< SolverOver< Geometry3D > >
| FreeCarrierGainSolver (const std::string &name="")
virtual | ~FreeCarrierGainSolver ()
void | loadConfiguration (plask::XMLReader &reader, plask::Manager &manager) override
double | getN (double F, double T, const ActiveRegionParams &params) const
| Compute concentration for electron quasi-Fermi level.
double | getP (double F, double T, const ActiveRegionParams &params) const
| Compute concentration for hole quasi-Fermi level.
double | detEl (double E, const ActiveRegionParams &params, size_t well=0)
double | detHh (double E, const ActiveRegionParams &params, size_t well=0)
double | detLh (double E, const ActiveRegionParams &params, size_t well=0)
shared_ptr< Material > | getSubstrate () const
| Get substrate material.
void | setSubstrate (shared_ptr< Material > material)
| Set substrate material.
void | findFermiLevels (double &Fc, double &Fv, double n, double T, const ActiveRegionParams &params) const
| Compute quasi-Fermi levels for given concentration and temperature.
Tensor2< double > | getGain0 (double hw, double Fc, double Fv, double T, double nr, const ActiveRegionParams &params) const
| Find gain before convolution.
Tensor2< double > | getGain (double hw, double Fc, double Fv, double T, double nr, const ActiveRegionParams &params) const
| Find gain after convolution.
double | getT0 () const
void | setT0 (double T)
double | getLifeTime () const
void | setLifeTime (double iLifeTime)
double | getMatrixElem () const
void | setMatrixElem (double iMatrixElem)
bool | getStrained () const
void | setStrained (bool value)
shared_ptr< GainSpectrum< SolverOver< Geometry3D > > > | getGainSpectrum (const Vec< DIM > &point)
Public Member Functions inherited from plask::SolverOver< Geometry3D >
| SolverOver (const std::string &name="")
| ~SolverOver ()
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 | onGeometryChange (const Geometry::Event &)
| This method is called when the geometry is changed.
shared_ptr< Geometry3D > | getGeometry () const
| Get current solver geometry space.
void | setGeometry (const shared_ptr< Geometry3D > &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.

## Protected Types
typedef DataBase< Tensor2< double > > | DataBaseTensor2
typedef DataBase< std::vector< double > > | DataBaseVector

## Protected Member Functions
void | detectActiveRegions () override
| Detect active regions.
const LazyData< Tensor2< double > > | getGainData (Gain::EnumType what, const shared_ptr< const MeshD< 3 > > &dst_mesh, double wavelength, InterpolationMethod interp=INTERPOLATION_DEFAULT) override
const LazyData< std::vector< double > > | getEnergyLevels (EnergyLevels::EnumType which, const shared_ptr< const MeshD< 3 > > &dst_mesh, InterpolationMethod interp=INTERPOLATION_DEFAULT) override
Protected Member Functions inherited from plask::gain::freecarrier::FreeCarrierGainSolver< SolverOver< Geometry3D > >
double | level (WhichLevel which, double E, const ActiveRegionParams &params, size_t start, size_t stop) const
| Compute determinant for energy levels.
double | level (WhichLevel which, double E, const ActiveRegionParams &params) const
double | level (WhichLevel which, double E, const ActiveRegionParams &params, size_t well) const
void | estimateWellLevels (WhichLevel which, ActiveRegionParams &params, size_t qw) const
| Find levels estimates.
void | estimateAboveLevels (WhichLevel which, ActiveRegionParams &params) const
| Find levels estimates.
std::pair< double, double > | fermi_bracket_and_solve (F f, double guess, double step, boost::uintmax_t &max_iter) const
| Walk the energy to bracket the Fermi level.
void | estimateLevels ()
| Estimate energy levels.
void | onInitialize () override
| Initialize the solver.
void | onInvalidate () override
| Invalidate the gain.
void | onInputChange (ReceiverBase &, ReceiverBase::ChangeReason)
| Notify that gain was changed.
virtual const LazyData< Tensor2< double > > | getGainData (Gain::EnumType what, const shared_ptr< const MeshD< DIM > > &dst_mesh, double wavelength, InterpolationMethod interp=INTERPOLATION_DEFAULT)=0
| Compute the gain on the mesh.
virtual const LazyData< std::vector< double > > | getEnergyLevels (EnergyLevels::EnumType which, const shared_ptr< const MeshD< DIM > > &dst_mesh, InterpolationMethod interp=INTERPOLATION_DEFAULT)=0
| Compute the energy levels.
Protected Member Functions inherited from plask::SolverOver< Geometry3D >
void | readBoundaryConditions (Manager &manager, XMLReader &reader, BoundaryConditions< Boundary, ConditionT > &dest)
| Read boundary conditions using information about the geometry of this solver.

## Friends
struct | ActiveRegionMesh

## Additional Inherited Members
Public Types inherited from plask::gain::freecarrier::FreeCarrierGainSolver< SolverOver< Geometry3D > >
enum | WhichLevel
| Which level to compute. More...
enum |
typedef BaseT::SpaceType | GeometryType
typedef GainSpectrum< SolverOver< Geometry3D > > | GainSpectrumType
Public Types inherited from plask::SolverOver< Geometry3D >
typedef Geometry3D | SpaceType
| of the space for this solver
Public Attributes inherited from plask::gain::freecarrier::FreeCarrierGainSolver< SolverOver< Geometry3D > >
std::vector< ActiveRegionInfo > | regions
| List of active regions.
ReceiverFor< Temperature, GeometryType > | inTemperature
| Receiver for temperature.
ReceiverFor< CarriersConcentration, GeometryType > | inCarriersConcentration
| Receiver for carriers concentration in the active region.
ReceiverFor< BandEdges, GeometryType > | inBandEdges
| Receiver for band edges.
ReceiverFor< FermiLevels, GeometryType > | inFermiLevels
| Receiver for quasi Fermi levels.
ProviderFor< Gain, GeometryType >::Delegate | outGain
| Provider for gain distribution.
ProviderFor< EnergyLevels, GeometryType >::Delegate | outEnergyLevels
| Provider for energy levels.
std::vector< ActiveRegionParams > | params0
| Reference active region params.
bool | quick_levels
| Are levels computed quickly based on estimates.
Protected Attributes inherited from plask::gain::freecarrier::FreeCarrierGainSolver< SolverOver< Geometry3D > >
shared_ptr< Material > | substrateMaterial
| Substrate material.
bool | explicitSubstrate
| Is substrate material explicitly set?
double | lifetime
| Stimulated emission lifetime [ps].
double | matrixelem
| Optical matrix element [m0*eV].
double | T0
| Temperature used for compiting level estimates.
double | levelsep
| Minimum separation between distinct levels.
bool | strained
| Consider strain in QW?
Protected Attributes inherited from plask::SolverOver< Geometry3D >
shared_ptr< Geometry3D > | geometry
| Space in which the calculations are performed.
Protected Attributes inherited from plask::Solver
bool | initialized
| `true` only if solver is initialized

## Detailed Description

Gain solver using Fermi Golden Rule.

Definition at line 24 of file freecarrier3d.hpp.

## Member Typedef Documentation

## ◆ DataBaseTensor2

typedef DataBase<Tensor2<double> > plask::gain::freecarrier::FreeCarrierGainSolver3D::DataBaseTensor2
| protected

Definition at line 63 of file freecarrier3d.hpp.

## ◆ DataBaseVector

typedef DataBase<std::vector<double> > plask::gain::freecarrier::FreeCarrierGainSolver3D::DataBaseVector
| protected

Definition at line 64 of file freecarrier3d.hpp.

## Constructor & Destructor Documentation

## ◆ FreeCarrierGainSolver3D()

plask::gain::freecarrier::FreeCarrierGainSolver3D::FreeCarrierGainSolver3D | ( | const std::string & | name = `""` | ) |

Definition at line 22 of file freecarrier3d.cpp.

## Member Function Documentation

## ◆ detectActiveRegions()

void plask::gain::freecarrier::FreeCarrierGainSolver3D::detectActiveRegions | ( |  | ) |
| override protected virtual

Detect active regions.

Store information about them in the `regions` field.

Implements plask::gain::freecarrier::FreeCarrierGainSolver< SolverOver< Geometry3D > >.

Definition at line 24 of file freecarrier3d.cpp.

## ◆ getClassName()

std::string plask::gain::freecarrier::FreeCarrierGainSolver3D::getClassName | ( |  | ) | const
| override virtual

Get name of solver.

Returns
  name of this solver

Implements plask::Solver.

Definition at line 452 of file freecarrier3d.cpp.

## ◆ getEnergyLevels()

const LazyData< std::vector< double > > plask::gain::freecarrier::FreeCarrierGainSolver3D::getEnergyLevels | ( | EnergyLevels::EnumType | which,
|  | const shared_ptr< const MeshD< 3 > > & | dst_mesh,
|  | InterpolationMethod | interp = `INTERPOLATION_DEFAULT`
| ) |  |
| override protected

Definition at line 444 of file freecarrier3d.cpp.

## ◆ getGainData()

const LazyData< Tensor2< double > > plask::gain::freecarrier::FreeCarrierGainSolver3D::getGainData | ( | Gain::EnumType | what,
|  | const shared_ptr< const MeshD< 3 > > & | dst_mesh,
|  | double | wavelength,
|  | InterpolationMethod | interp = `INTERPOLATION_DEFAULT`
| ) |  |
| override protected

Definition at line 387 of file freecarrier3d.cpp.

## Friends And Related Symbol Documentation

## ◆ ActiveRegionMesh

friend struct ActiveRegionMesh
| friend

Definition at line 66 of file freecarrier3d.hpp.

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

- solvers/gain/freecarrier/freecarrier3d.hpp
- solvers/gain/freecarrier/freecarrier3d.cpp