PLaSK library
|
Gain solver using Fermi Golden Rule. More...
#include <solvers/gain/wasiak/ferminew.hpp>
Classes | |
struct | ActiveRegionData |
Structure containing information about each active region. More... | |
struct | ActiveRegionInfo |
Active region information with optional modified structure. More... | |
Public Member Functions | |
FermiNewGainSolver (const std::string &name="") | |
virtual | ~FermiNewGainSolver () |
virtual std::string | getClassName () const |
Get name of solver. | |
virtual void | loadConfiguration (plask::XMLReader &reader, plask::Manager &manager) |
Load configuration from given source . | |
shared_ptr< GeometryType > | getModGeometry () const |
Get modified geometry. | |
void | setModGeometry (const shared_ptr< GeometryType > &geometry) |
Set new modified geometry for the solver. | |
void | disconnectModGeometry () |
void | findEnergyLevels (Levels &levels, const ActiveRegionInfo ®ion, double T) |
void | buildStructure (double T, const ActiveRegionData ®ion, std::unique_ptr< kubly::struktura > &bandsEc, std::unique_ptr< kubly::struktura > &bandsEvhh, std::unique_ptr< kubly::struktura > &bandsEvlh) |
kubly::struktura * | buildEc (double T, const ActiveRegionData ®ion) |
kubly::struktura * | buildEvhh (double T, const ActiveRegionData ®ion) |
kubly::struktura * | buildEvlh (double T, const ActiveRegionData ®ion) |
void | showEnergyLevels (std::string str, const std::unique_ptr< kubly::struktura > &structure, double nQW) |
kubly::wzmocnienie | getGainModule (double wavelength, double T, double n, const ActiveRegionInfo ®ion, const Levels &levels) |
void | prepareLevels (kubly::wzmocnienie &gmodule, const ActiveRegionInfo ®ion) |
virtual void | onInitialize () |
Initialize the solver. | |
virtual void | onInvalidate () |
Invalidate the gain. | |
void | onModGeometryChange (const Geometry::Event &) |
otify that modified geometry was chaged | |
void | onInputChange (ReceiverBase &, ReceiverBase::ChangeReason) |
Notify that gain was chaged. | |
std::list< ActiveRegionData > | detectActiveRegions (const shared_ptr< GeometryType > &geometry) |
Detect active regions. | |
void | prepareActiveRegionsInfo () |
Detect active regions and store their info in the regions field. | |
const LazyData< Tensor2< double > > | getGain (Gain::EnumType what, const shared_ptr< const MeshD< 2 > > &dst_mesh, double wavelength, InterpolationMethod interp=INTERPOLATION_DEFAULT) |
Method computing the gain on the mesh (called by gain provider) | |
const LazyData< Tensor2< double > > | getLuminescence (const shared_ptr< const MeshD< 2 > > &dst_mesh, double wavelength, InterpolationMethod interp=INTERPOLATION_DEFAULT) |
bool | getStrains () const |
void | setStrains (bool value) |
shared_ptr< Material > | getSubstrate () const |
Get substrate material. | |
void | setSubstrate (shared_ptr< Material > material) |
Set substrate material. | |
bool | getAdjustWidths () const |
void | setAdjustWidths (bool value) |
bool | getBuildStructOnce () const |
void | setBuildStructOnce (bool value) |
double | getRoughness () const |
void | setRoughness (double value) |
double | getLifeTime () const |
void | setLifeTime (double value) |
double | getMatrixElem () const |
void | setMatrixElem (double value) |
double | getCondQWShift () const |
void | setCondQWShift (double value) |
double | getValeQWShift () const |
void | setValeQWShift (double value) |
double | getTref () const |
void | setTref (double value) |
GainSpectrum< GeometryType > | getGainSpectrum (const Vec< 2 > &point) |
Reg gain spectrum object for future use;. | |
LuminescenceSpectrum< GeometryType > | getLuminescenceSpectrum (const Vec< 2 > &point) |
Reg luminescence spectrum object for future use;. | |
std::string | getClassName () const |
Get name of solver. | |
std::string | getClassName () const |
Get name of solver. | |
Public Member Functions inherited from plask::SolverWithMesh< GeometryType, MeshAxis > | |
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. | |
MeshAxis & | meshRef () const |
Get current module mesh. | |
shared_ptr< MeshAxis > | getMesh () const |
Get current solver mesh. | |
void | setMesh (const shared_ptr< MeshAxis > &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") |
virtual void | onGeometryChange (const Geometry::Event &) |
This method is called when the geometry is changed. | |
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 | |
shared_ptr< GeometryType > | geometry_mod |
Modified geometry for broadening calculation. | |
shared_ptr< Material > | substrateMaterial |
Substrate material. | |
bool | explicitSubstrate = false |
Is substrate explicitly defined? | |
std::vector< ActiveRegionInfo > | regions |
ReceiverFor< Temperature, GeometryType > | inTemperature |
Receiver for temperature. | |
ReceiverFor< CarriersConcentration, GeometryType > | inCarriersConcentration |
Receiver for carriers concentration in the active region. | |
ProviderFor< Gain, GeometryType >::Delegate | outGain |
Provider for gain distribution. | |
ProviderFor< Luminescence, GeometryType >::Delegate | outLuminescence |
Provider for luminescence distribution. | |
std::vector< Levels > | region_levels |
double | condQWshift |
additional conduction band shift for qw (eV) | |
double | valeQWshift |
additional valence band shift for qw (eV) | |
double | QWwidthMod |
qw width modifier (-) | |
double | roughness |
roughness (-) | |
double | lifetime |
lifetime [ps] | |
double | matrixElem |
optical matrix element [m0*eV] | |
double | differenceQuotient |
difference quotient of dG_dn derivative | |
double | Tref |
reference temperature (K) | |
bool | strains |
Consider strain in QWs and barriers? | |
bool | adjust_widths |
Adjust widths of the QWs? | |
bool | build_struct_once |
Build active-region structure only once? | |
Additional Inherited Members | |
Public Types inherited from plask::SolverWithMesh< GeometryType, MeshAxis > | |
typedef MeshAxis | MeshType |
Type of the mesh for this solver. | |
Public Types inherited from plask::SolverOver< SpaceT > | |
typedef SpaceT | SpaceType |
of the space for this solver | |
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 inherited from plask::SolverWithMesh< GeometryType, MeshAxis > | |
shared_ptr< MeshAxis > | 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 | |
Gain solver using Fermi Golden Rule.
Definition at line 45 of file ferminew.hpp.
plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::FermiNewGainSolver | ( | const std::string & | name = "" | ) |
Definition at line 28 of file ferminew.cpp.
|
virtual |
Definition at line 48 of file ferminew.cpp.
kubly::struktura * plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::buildEc | ( | double | T, |
const ActiveRegionData & | region | ||
) |
Definition at line 452 of file ferminew.cpp.
kubly::struktura * plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::buildEvhh | ( | double | T, |
const ActiveRegionData & | region | ||
) |
Definition at line 496 of file ferminew.cpp.
kubly::struktura * plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::buildEvlh | ( | double | T, |
const ActiveRegionData & | region | ||
) |
Definition at line 540 of file ferminew.cpp.
void plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::buildStructure | ( | double | T, |
const ActiveRegionData & | region, | ||
std::unique_ptr< kubly::struktura > & | bandsEc, | ||
std::unique_ptr< kubly::struktura > & | bandsEvhh, | ||
std::unique_ptr< kubly::struktura > & | bandsEvlh | ||
) |
Definition at line 407 of file ferminew.cpp.
std::list< typename FermiNewGainSolver< GeometryType >::ActiveRegionData > plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::detectActiveRegions | ( | const shared_ptr< GeometryType > & | geometry | ) |
Detect active regions.
Definition at line 160 of file ferminew.cpp.
|
inline |
Definition at line 206 of file ferminew.hpp.
void plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::findEnergyLevels | ( | Levels & | levels, |
const ActiveRegionInfo & | region, | ||
double | T | ||
) |
Definition at line 372 of file ferminew.cpp.
|
inline |
Definition at line 314 of file ferminew.hpp.
|
inline |
Definition at line 322 of file ferminew.hpp.
|
virtual |
Get name of solver.
Implements plask::Solver.
Definition at line 1031 of file ferminew.cpp.
|
virtual |
Get name of solver.
Implements plask::Solver.
Definition at line 1032 of file ferminew.cpp.
|
virtual |
|
inline |
Definition at line 354 of file ferminew.hpp.
const LazyData< Tensor2< double > > plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::getGain | ( | Gain::EnumType | what, |
const shared_ptr< const MeshD< 2 > > & | dst_mesh, | ||
double | wavelength, | ||
InterpolationMethod | interp = INTERPOLATION_DEFAULT |
||
) |
Method computing the gain on the mesh (called by gain provider)
dst_mesh | destination mesh |
wavelength | wavelength to compute gain for |
interp | interpolation method |
Definition at line 908 of file ferminew.cpp.
kubly::wzmocnienie plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::getGainModule | ( | double | wavelength, |
double | T, | ||
double | n, | ||
const ActiveRegionInfo & | region, | ||
const Levels & | levels | ||
) |
Definition at line 609 of file ferminew.cpp.
GainSpectrum< GeometryType > plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::getGainSpectrum | ( | const Vec< 2 > & | point | ) |
Reg gain spectrum object for future use;.
Definition at line 1020 of file ferminew.cpp.
|
inline |
Definition at line 338 of file ferminew.hpp.
const LazyData< Tensor2< double > > plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::getLuminescence | ( | const shared_ptr< const MeshD< 2 > > & | dst_mesh, |
double | wavelength, | ||
InterpolationMethod | interp = INTERPOLATION_DEFAULT |
||
) |
Definition at line 928 of file ferminew.cpp.
LuminescenceSpectrum< GeometryType > plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::getLuminescenceSpectrum | ( | const Vec< 2 > & | point | ) |
Reg luminescence spectrum object for future use;.
Definition at line 1026 of file ferminew.cpp.
|
inline |
Definition at line 346 of file ferminew.hpp.
|
inline |
Get modified geometry.
Definition at line 190 of file ferminew.hpp.
|
inline |
Definition at line 330 of file ferminew.hpp.
|
inline |
Definition at line 296 of file ferminew.hpp.
|
inline |
Get substrate material.
Definition at line 305 of file ferminew.hpp.
|
inline |
Definition at line 370 of file ferminew.hpp.
|
inline |
Definition at line 362 of file ferminew.hpp.
|
virtual |
Load configuration from given source
.
XML reader (source
) point to opening of this
solver tag and after return from this method should point to this solver closing tag.
source | source of configuration |
manager | manager from which information about geometry, meshes, materials, and so on can be get if needed |
Reimplemented from plask::Solver.
Definition at line 54 of file ferminew.cpp.
|
virtual |
Initialize the solver.
Reimplemented from plask::Solver.
Definition at line 134 of file ferminew.cpp.
|
inline |
Notify that gain was chaged.
Definition at line 259 of file ferminew.hpp.
|
virtual |
|
inline |
otify that modified geometry was chaged
Definition at line 256 of file ferminew.hpp.
void plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::prepareActiveRegionsInfo | ( | ) |
Detect active regions and store their info in the regions
field.
Store information about them in the regions
field.
Definition at line 356 of file ferminew.cpp.
|
inline |
Definition at line 247 of file ferminew.hpp.
|
inline |
Definition at line 315 of file ferminew.hpp.
|
inline |
Definition at line 323 of file ferminew.hpp.
|
inline |
Definition at line 355 of file ferminew.hpp.
|
inline |
Definition at line 339 of file ferminew.hpp.
|
inline |
Definition at line 347 of file ferminew.hpp.
|
inline |
Set new modified geometry for the solver.
geometry | new modified geometry space |
Definition at line 196 of file ferminew.hpp.
|
inline |
Definition at line 331 of file ferminew.hpp.
|
inline |
Definition at line 297 of file ferminew.hpp.
|
inline |
Set substrate material.
Definition at line 307 of file ferminew.hpp.
|
inline |
Definition at line 371 of file ferminew.hpp.
|
inline |
Definition at line 363 of file ferminew.hpp.
void plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::showEnergyLevels | ( | std::string | str, |
const std::unique_ptr< kubly::struktura > & | structure, | ||
double | nQW | ||
) |
Definition at line 585 of file ferminew.cpp.
Definition at line 206 of file ferminew.hpp.
Definition at line 206 of file ferminew.hpp.
Definition at line 206 of file ferminew.hpp.
Definition at line 206 of file ferminew.hpp.
|
friend |
Definition at line 217 of file ferminew.hpp.
|
friend |
Definition at line 206 of file ferminew.hpp.
|
friend |
Definition at line 217 of file ferminew.hpp.
|
friend |
Definition at line 221 of file ferminew.hpp.
bool plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::adjust_widths |
Adjust widths of the QWs?
Definition at line 292 of file ferminew.hpp.
bool plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::build_struct_once |
Build active-region structure only once?
Definition at line 293 of file ferminew.hpp.
double plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::condQWshift |
additional conduction band shift for qw (eV)
Definition at line 223 of file ferminew.hpp.
double plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::differenceQuotient |
difference quotient of dG_dn derivative
Definition at line 229 of file ferminew.hpp.
bool plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::explicitSubstrate = false |
Is substrate explicitly defined?
List of active regions
Definition at line 164 of file ferminew.hpp.
shared_ptr<GeometryType> plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::geometry_mod |
Modified geometry for broadening calculation.
Definition at line 161 of file ferminew.hpp.
ReceiverFor<CarriersConcentration, GeometryType> plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::inCarriersConcentration |
Receiver for carriers concentration in the active region.
Definition at line 173 of file ferminew.hpp.
ReceiverFor<Temperature, GeometryType> plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::inTemperature |
Receiver for temperature.
Definition at line 170 of file ferminew.hpp.
double plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::lifetime |
lifetime [ps]
Definition at line 227 of file ferminew.hpp.
double plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::matrixElem |
optical matrix element [m0*eV]
Definition at line 228 of file ferminew.hpp.
ProviderFor<Gain,GeometryType>::Delegate plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::outGain |
Provider for gain distribution.
Definition at line 176 of file ferminew.hpp.
ProviderFor<Luminescence,GeometryType>::Delegate plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::outLuminescence |
Provider for luminescence distribution.
Definition at line 179 of file ferminew.hpp.
double plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::QWwidthMod |
qw width modifier (-)
Definition at line 225 of file ferminew.hpp.
std::vector<Levels> plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::region_levels |
Definition at line 217 of file ferminew.hpp.
std::vector<ActiveRegionInfo> plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::regions |
Definition at line 167 of file ferminew.hpp.
double plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::roughness |
roughness (-)
Definition at line 226 of file ferminew.hpp.
bool plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::strains |
Consider strain in QWs and barriers?
Definition at line 291 of file ferminew.hpp.
shared_ptr<Material> plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::substrateMaterial |
Substrate material.
Definition at line 163 of file ferminew.hpp.
double plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::Tref |
reference temperature (K)
Definition at line 230 of file ferminew.hpp.
double plask::solvers::FermiNew::FermiNewGainSolver< GeometryType >::valeQWshift |
additional valence band shift for qw (eV)
Definition at line 224 of file ferminew.hpp.