PLaSK library
Loading...
Searching...
No Matches
plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DType > Class Template Reference

#include <solvers/electrical/olddiffusion/diffusion1d.hpp>

Inheritance diagram for plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DType >:
[legend]
Collaboration diagram for plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DType >:
[legend]

Classes

struct  ConcentrationDataImpl
 

Public Types

enum  FemMethod { FEM_LINEAR , FEM_PARABOLIC }
 
enum  ComputationType { COMPUTATION_INITIAL , COMPUTATION_THRESHOLD , COMPUTATION_OVERTHRESHOLD }
 
- Public Types inherited from plask::SolverWithMesh< Geometry2DType, RegularMesh1D >
typedef RegularMesh1D MeshType
 Type of the mesh for this solver.
 
- Public Types inherited from plask::SolverOver< SpaceT >
typedef SpaceT SpaceType
 of the space for this solver
 

Public Member Functions

 DiffusionFem2DSolver (const std::string &name="")
 
virtual ~DiffusionFem2DSolver ()
 
std::string getClassName () const override
 Get name of solver.
 
void loadConfiguration (XMLReader &, Manager &) override
 Load configuration from given source.
 
void compute (ComputationType type)
 
void compute_initial ()
 
void compute_threshold ()
 
void compute_overthreshold ()
 
shared_ptr< MeshAxiscurrent_mesh_ptr ()
 
RegularAxiscurrent_mesh ()
 
double burning_integral (void)
 
std::string getClassName () const
 Get name of solver.
 
std::string getClassName () const
 Get name of solver.
 
- Public Member Functions inherited from plask::SolverWithMesh< Geometry2DType, RegularMesh1D >
 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.
 
RegularMesh1DmeshRef () const
 Get current module mesh.
 
shared_ptr< RegularMesh1DgetMesh () const
 Get current solver mesh.
 
void setMesh (const shared_ptr< RegularMesh1D > &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< SpaceTgetGeometry () 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, ValTdataLog (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, ValTdataLog (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

ReceiverFor< CurrentDensity, Geometry2DTypeinCurrentDensity
 
ReceiverFor< Temperature, Geometry2DTypeinTemperature
 
ReceiverFor< Gain, Geometry2DTypeinGain
 
ReceiverFor< ModeWavelengthinWavelength
 
ReceiverFor< ModeLightE, Geometry2DTypeinLightE
 
ProviderFor< CarriersConcentration, Geometry2DType >::Delegate outCarriersConcentration
 
InterpolationMethod interpolation_method
 Selected interpolation method.
 
double relative_accuracy
 Relative accuracy.
 
int max_mesh_changes
 Maximum number of mesh refinemenst.
 
int max_iterations
 Maximum number of diffusion iterations for sigle mesh size.
 
FemMethod fem_method
 Finite element method (linear or parabolic)
 
double minor_concentration
 
bool do_initial
 Should we start from initial computations.
 
std::vector< doublemodesP
 

Protected Member Functions

double jacobian (double r)
 
void createMatrices (DataVector< double > A_matrix, DataVector< double > B_vector)
 
double K (int i)
 
double E (int i)
 
double F (int i)
 
double leftSide (std::size_t i)
 
double rightSide (std::size_t i)
 
double nSecondDeriv (std::size_t i)
 
bool MatrixFEM ()
 
void determineQwWidth ()
 
std::vector< Box2DdetectQuantumWells ()
 
double getZQWCoordinate ()
 
std::vector< doublegetZQWCoordinates ()
 
DataVector< const Tensor2< double > > averageLi (LazyData< Vec< 3, dcomplex > > initLi, const RectangularMesh< 2 > &mesh_Li)
 
void onInitialize () override
 Initialize the solver.
 
void onInvalidate () override
 This method is called by invalidate() to reset stored values.
 
const LazyData< doublegetConcentration (CarriersConcentration::EnumType what, shared_ptr< const MeshD< 2 > > dest_mesh, InterpolationMethod interpolation=INTERPOLATION_DEFAULT) const
 Provide concentration from inside to the provider (outConcentration).
 
void createMatrices (DataVector< double > A_matrix, DataVector< double > B_vector)
 
void createMatrices (DataVector< double > A_matrix, DataVector< double > B_vector)
 
double jacobian (double)
 
double jacobian (double r)
 
- 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

shared_ptr< RectangularMesh< 2 > > mesh2
 Computational mesh.
 
shared_ptr< MaterialQW_material
 
double z
 
bool initial_computation
 
bool threshold_computation
 
bool overthreshold_computation
 
double global_QW_width
 
int iterations
 
std::vector< Box2Ddetected_QW
 
LazyData< Vec< 2 > > j_on_the_mesh
 
LazyData< doubleT_on_the_mesh
 
DataVector< doublePM
 
DataVector< doubleoverthreshold_dgdn
 
DataVector< doublen_previous
 
DataVector< doublen_present
 
- Protected Attributes inherited from plask::SolverWithMesh< Geometry2DType, RegularMesh1D >
shared_ptr< RegularMesh1Dmesh
 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< SpaceTgeometry
 Space in which the calculations are performed.
 
- Protected Attributes inherited from plask::Solver
bool initialized
 true only if solver is initialized
 

Static Protected Attributes

static constexpr double hk = phys::h_J/plask::PI
 

Detailed Description

template<typename Geometry2DType>
class plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DType >

Definition at line 19 of file diffusion1d.hpp.

Member Enumeration Documentation

◆ ComputationType

Enumerator
COMPUTATION_INITIAL 
COMPUTATION_THRESHOLD 
COMPUTATION_OVERTHRESHOLD 

Definition at line 27 of file diffusion1d.hpp.

◆ FemMethod

Enumerator
FEM_LINEAR 
FEM_PARABOLIC 

Definition at line 22 of file diffusion1d.hpp.

Constructor & Destructor Documentation

◆ DiffusionFem2DSolver()

plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DType >::DiffusionFem2DSolver ( const std::string &  name = "")
inline

Definition at line 47 of file diffusion1d.hpp.

◆ ~DiffusionFem2DSolver()

Member Function Documentation

◆ averageLi()

Definition at line 861 of file diffusion1d.cpp.

◆ burning_integral()

◆ compute()

◆ compute_initial()

◆ compute_overthreshold()

Definition at line 73 of file diffusion1d.cpp.

◆ compute_threshold()

Definition at line 69 of file diffusion1d.cpp.

◆ createMatrices() [1/3]

void plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DCartesian >::createMatrices ( DataVector< double A_matrix,
DataVector< double B_vector 
)
protected

Definition at line 401 of file diffusion1d.cpp.

◆ createMatrices() [2/3]

Definition at line 496 of file diffusion1d.cpp.

◆ createMatrices() [3/3]

void plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DType >::createMatrices ( DataVector< double A_matrix,
DataVector< double B_vector 
)
protected

◆ current_mesh()

◆ current_mesh_ptr()

Definition at line 77 of file diffusion1d.hpp.

◆ detectQuantumWells()

std::vector< Box2D > plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DType >::detectQuantumWells ( )
protected

Definition at line 754 of file diffusion1d.cpp.

◆ determineQwWidth()

Definition at line 852 of file diffusion1d.cpp.

◆ E()

◆ F()

◆ getClassName() [1/3]

std::string plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DCartesian >::getClassName ( ) const
virtual

Get name of solver.

Returns
name of this solver

Implements plask::Solver.

Definition at line 878 of file diffusion1d.cpp.

◆ getClassName() [2/3]

std::string plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DCylindrical >::getClassName ( ) const
virtual

Get name of solver.

Returns
name of this solver

Implements plask::Solver.

Definition at line 879 of file diffusion1d.cpp.

◆ getClassName() [3/3]

std::string plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DType >::getClassName ( ) const
overridevirtual

Get name of solver.

Returns
name of this solver

Implements plask::Solver.

◆ getConcentration()

const LazyData< double > plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DType >::getConcentration ( CarriersConcentration::EnumType  what,
shared_ptr< const MeshD< 2 > >  dest_mesh,
InterpolationMethod  interpolation = INTERPOLATION_DEFAULT 
) const
protected

Provide concentration from inside to the provider (outConcentration).

Definition at line 623 of file diffusion1d.cpp.

◆ getZQWCoordinate()

Definition at line 825 of file diffusion1d.cpp.

◆ getZQWCoordinates()

std::vector< double > plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DType >::getZQWCoordinates ( )
protected

Definition at line 841 of file diffusion1d.cpp.

◆ jacobian() [1/3]

◆ jacobian() [2/3]

Definition at line 173 of file diffusion1d.hpp.

◆ jacobian() [3/3]

Definition at line 168 of file diffusion1d.hpp.

◆ K()

◆ leftSide()

Definition at line 724 of file diffusion1d.cpp.

◆ loadConfiguration()

void plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DType >::loadConfiguration ( XMLReader source,
Manager manager 
)
overridevirtual

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.

Parameters
sourcesource of configuration
managermanager from which information about geometry, meshes, materials, and so on can be get if needed

Reimplemented from plask::Solver.

Definition at line 36 of file diffusion1d.cpp.

◆ MatrixFEM()

< Computational Light intensity mesh

Definition at line 178 of file diffusion1d.cpp.

◆ nSecondDeriv()

double plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DType >::nSecondDeriv ( std::size_t  i)
protected

Definition at line 672 of file diffusion1d.cpp.

◆ onInitialize()

void plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DType >::onInitialize ( )
overrideprotectedvirtual

Initialize the solver.

Default implementation just does nothing, however it is a good idea to overwrite it in subclasses and put initialization code in it.

Reimplemented from plask::Solver.

Definition at line 77 of file diffusion1d.cpp.

◆ onInvalidate()

void plask::electrical::diffusion1d::DiffusionFem2DSolver< Geometry2DType >::onInvalidate ( )
overrideprotectedvirtual

This method is called by invalidate() to reset stored values.

Default implementation does nothing.

See also
invalidate()

Reimplemented from plask::Solver.

Definition at line 102 of file diffusion1d.cpp.

◆ rightSide()

Definition at line 750 of file diffusion1d.cpp.

Member Data Documentation

◆ detected_QW

Definition at line 110 of file diffusion1d.hpp.

◆ do_initial

Should we start from initial computations.

Definition at line 47 of file diffusion1d.hpp.

◆ fem_method

Finite element method (linear or parabolic)

Definition at line 45 of file diffusion1d.hpp.

◆ global_QW_width

Definition at line 105 of file diffusion1d.hpp.

◆ hk

◆ inCurrentDensity

◆ inGain

◆ initial_computation

Definition at line 101 of file diffusion1d.hpp.

◆ inLightE

◆ inTemperature

◆ interpolation_method

Selected interpolation method.

Definition at line 41 of file diffusion1d.hpp.

◆ inWavelength

◆ iterations

◆ j_on_the_mesh

Definition at line 112 of file diffusion1d.hpp.

◆ max_iterations

Maximum number of diffusion iterations for sigle mesh size.

Definition at line 44 of file diffusion1d.hpp.

◆ max_mesh_changes

Maximum number of mesh refinemenst.

Definition at line 43 of file diffusion1d.hpp.

◆ mesh2

Computational mesh.

Definition at line 93 of file diffusion1d.hpp.

◆ minor_concentration

◆ modesP

◆ n_present

◆ n_previous

◆ outCarriersConcentration

◆ overthreshold_computation

Definition at line 103 of file diffusion1d.hpp.

◆ overthreshold_dgdn

Definition at line 116 of file diffusion1d.hpp.

◆ PM

◆ QW_material

Definition at line 97 of file diffusion1d.hpp.

◆ relative_accuracy

Relative accuracy.

Definition at line 42 of file diffusion1d.hpp.

◆ T_on_the_mesh

◆ threshold_computation

Definition at line 102 of file diffusion1d.hpp.

◆ z


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