|
PLaSK library
|
Solver performing calculations in 2D Cartesian or Cylindrical space using finite element method. More...
#include <solvers/electrical/diffusion/diffusion3d.hpp>
Classes | |
| struct | ConcentrationDataImpl |
Public Member Functions | |
| std::string | getClassName () const override |
| Get name of solver. | |
| double | compute (unsigned loops, bool shb, size_t act) |
| Run calculations for specified active region. | |
| double | compute (unsigned loops=0, bool shb=false) |
| Run calculations for all active regions. | |
| void | loadConfiguration (XMLReader &source, Manager &manager) override |
Load configuration from given source. | |
| void | parseConfiguration (XMLReader &source, Manager &manager) |
| Diffusion3DSolver (const std::string &name="") | |
| ~Diffusion3DSolver () | |
| size_t | activeRegionsCount () const |
| double | get_burning_integral_for_mode (size_t mode) const |
| double | get_burning_integral () const |
Public Member Functions inherited from plask::FemSolverWithMesh< Geometry3D, RectangularMesh< 3 > > | |
| 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") |
| 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 | |
| double | maxerr |
| Maximum relative current density correction accepted as convergence. | |
| BoundaryConditions< RectangularMesh< 2 >::Boundary, double > | voltage_boundary |
| Boundary condition. | |
| ReceiverFor< CurrentDensity, Geometry3D > | inCurrentDensity |
| ReceiverFor< Temperature, Geometry3D > | inTemperature |
| ReceiverFor< Gain, Geometry3D > | inGain |
| ReceiverFor< ModeWavelength > | inWavelength |
| ReceiverFor< ModeLightE, Geometry3D > | inLightE |
| ProviderFor< CarriersConcentration, Geometry3D >::Delegate | outCarriersConcentration |
Public Attributes inherited from plask::FemSolverWithMesh< Geometry3D, RectangularMesh< 3 > > | |
| FemMatrixAlgorithm | algorithm |
| Factorization algorithm to use. | |
| IterativeMatrixParams | iter_params |
| Parameters of iterative solver. | |
Protected Member Functions | |
| void | setLocalMatrix (FemMatrix &K, DataVector< double > &F, const ElementParams3D e, const double A, const double B, const double C, const double D, const double *U, const double *J) |
| Make local stiffness matrix and load vector. | |
| void | addLocalBurningMatrix (FemMatrix &K, DataVector< double > &F, const ElementParams3D e, const Tensor2< double > G, const Tensor2< double > dG, const double Ug, const Tensor2< double > *P) |
| Add local stiffness matrix and load vector for SHB. | |
| template<typename T > | |
| T | integrateBilinear (const double Lx, const double Ly, const T *P) |
| Integrate bilinearly changing function over an element. | |
| void | onInitialize () override |
| Initialize the solver. | |
| void | onInvalidate () override |
| Invalidate the data. | |
| void | setupActiveRegions () |
| Get info on active region. | |
| const LazyData< double > | getConcentration (CarriersConcentration::EnumType what, shared_ptr< const MeshD< 3 > > dest_mesh, InterpolationMethod interpolation=INTERPOLATION_DEFAULT) const |
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 | |
| int | loopno |
| Data for active region. | |
| double | toterr |
| Maximum estimated error during all iterations. | |
| std::map< size_t, ActiveRegion3D > | active |
| Active regions information. | |
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 | |
Solver performing calculations in 2D Cartesian or Cylindrical space using finite element method.
Definition at line 141 of file diffusion3d.hpp.
| plask::electrical::diffusion::Diffusion3DSolver::Diffusion3DSolver | ( | const std::string & | name = "" | ) |
Definition at line 25 of file diffusion3d.cpp.
| plask::electrical::diffusion::Diffusion3DSolver::~Diffusion3DSolver | ( | ) |
Definition at line 51 of file diffusion3d.cpp.
|
inline |
Definition at line 255 of file diffusion3d.hpp.
|
inlineprotected |
Add local stiffness matrix and load vector for SHB.
Definition at line 200 of file diffusion3d.cpp.
| double plask::electrical::diffusion::Diffusion3DSolver::compute | ( | unsigned | loops, |
| bool | shb, | ||
| size_t | act | ||
| ) |
Run calculations for specified active region.
| loops | maximum number of loops to run |
| act | active region number to calculate |
| shb | true if spatial hole burning should be taken into account |
Definition at line 206 of file diffusion3d.cpp.
|
inline |
Run calculations for all active regions.
| loops | maximum number of loops to run |
| shb | true if spatial hole burning should be taken into account |
Definition at line 240 of file diffusion3d.hpp.
| double plask::electrical::diffusion::Diffusion3DSolver::get_burning_integral | ( | ) | const |
Definition at line 399 of file diffusion3d.cpp.
| double plask::electrical::diffusion::Diffusion3DSolver::get_burning_integral_for_mode | ( | size_t | mode | ) | const |
Definition at line 386 of file diffusion3d.cpp.
|
inlineoverridevirtual |
Get name of solver.
Implements plask::Solver.
Definition at line 223 of file diffusion3d.hpp.
|
protected |
Definition at line 495 of file diffusion3d.cpp.
|
inlineprotected |
Integrate bilinearly changing function over an element.
Definition at line 180 of file diffusion3d.hpp.
|
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.
| 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 34 of file diffusion3d.cpp.
|
overrideprotectedvirtual |
Initialize the solver.
Reimplemented from plask::Solver.
Definition at line 180 of file diffusion3d.cpp.
|
overrideprotectedvirtual |
Invalidate the data.
Reimplemented from plask::Solver.
Definition at line 192 of file diffusion3d.cpp.
| void plask::electrical::diffusion::Diffusion3DSolver::parseConfiguration | ( | XMLReader & | source, |
| Manager & | manager | ||
| ) |
Definition at line 38 of file diffusion3d.cpp.
|
inlineprotected |
Make local stiffness matrix and load vector.
Definition at line 195 of file diffusion3d.cpp.
|
protected |
Get info on active region.
Definition at line 89 of file diffusion3d.cpp.
|
protected |
Active regions information.
Definition at line 157 of file diffusion3d.hpp.
| ReceiverFor<CurrentDensity, Geometry3D> plask::electrical::diffusion::Diffusion3DSolver::inCurrentDensity |
Definition at line 211 of file diffusion3d.hpp.
| ReceiverFor<Gain, Geometry3D> plask::electrical::diffusion::Diffusion3DSolver::inGain |
Definition at line 215 of file diffusion3d.hpp.
| ReceiverFor<ModeLightE, Geometry3D> plask::electrical::diffusion::Diffusion3DSolver::inLightE |
Definition at line 219 of file diffusion3d.hpp.
| ReceiverFor<Temperature, Geometry3D> plask::electrical::diffusion::Diffusion3DSolver::inTemperature |
Definition at line 213 of file diffusion3d.hpp.
| ReceiverFor<ModeWavelength> plask::electrical::diffusion::Diffusion3DSolver::inWavelength |
Definition at line 217 of file diffusion3d.hpp.
|
protected |
| double plask::electrical::diffusion::Diffusion3DSolver::maxerr |
Maximum relative current density correction accepted as convergence.
Definition at line 206 of file diffusion3d.hpp.
| ProviderFor<CarriersConcentration,Geometry3D>::Delegate plask::electrical::diffusion::Diffusion3DSolver::outCarriersConcentration |
Definition at line 221 of file diffusion3d.hpp.
|
protected |
Maximum estimated error during all iterations.
Definition at line 145 of file diffusion3d.hpp.
| BoundaryConditions<RectangularMesh<2>::Boundary, double> plask::electrical::diffusion::Diffusion3DSolver::voltage_boundary |
Boundary condition.
Definition at line 209 of file diffusion3d.hpp.