PLaSK library
|
Solver performing calculations in 2D Cartesian or Cylindrical space using finite element method. More...
#include <solvers/thermal/static/therm3d.hpp>
Classes | |
struct | ThermalConductivityData |
Public Member Functions | |
double | compute (int loops=1) |
Run temperature calculations. | |
void | loadConfiguration (XMLReader &source, Manager &manager) override |
Load configuration from given source . | |
ThermalFem3DSolver (const std::string &name="") | |
std::string | getClassName () const override |
Get name of solver. | |
~ThermalFem3DSolver () | |
double | getErr () const |
Get max absolute correction for temperature. | |
FemMatrixAlgorithm | getAlgorithm () const |
void | setAlgorithm (FemMatrixAlgorithm alg) |
Set algorithm. | |
Public Member Functions inherited from plask::FemSolverWithMaskedMesh< Geometry3D, RectangularMesh< 3 > > | |
FemSolverWithMaskedMesh (const std::string &name="") | |
EmptyElementsHandling | getEmptyElements () const |
Are we using full mesh? | |
void | setEmptyElements (EmptyElementsHandling val) |
Set whether we should use full mesh. | |
bool | parseFemConfiguration (XMLReader &reader, Manager &manager) |
void | setupMaskedMesh () |
FemMatrix * | getMatrix () |
FemMatrix * | getMatrix () |
Public Member Functions inherited from plask::FemSolverWithMesh< SpaceT, MeshT > | |
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 | 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. | |
Protected Attributes | |
int | loopno |
Number of completed loops. | |
double | maxT |
Maximum temperature recorded. | |
double | toterr |
Maximum estimated error during all iterations (useful for single calculations managed by external python script) | |
DataVector< double > | temperatures |
Computed temperatures. | |
DataVector< double > | thickness |
Thicknesses of the layers. | |
DataVector< Vec< 3, double > > | fluxes |
Computed (only when needed) heat fluxes on our own mesh. | |
Protected Attributes inherited from plask::FemSolverWithMaskedMesh< Geometry3D, RectangularMesh< 3 > > | |
plask::shared_ptr< RectangularMaskedMesh< MeshT::DIM > > | maskedMesh |
EmptyElementsHandling | empty_elements |
Should we use full mesh? | |
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 27 of file therm3d.hpp.
plask::thermal::tstatic::ThermalFem3DSolver::ThermalFem3DSolver | ( | const std::string & | name = "" | ) |
Definition at line 20 of file therm3d.cpp.
plask::thermal::tstatic::ThermalFem3DSolver::~ThermalFem3DSolver | ( | ) |
Definition at line 36 of file therm3d.cpp.
|
protected |
Apply boundary conditions of the first kind.
Run temperature calculations.
loops | maximum number of loops to run |
Definition at line 281 of file therm3d.cpp.
|
inline |
Definition at line 114 of file therm3d.hpp.
|
inlineoverridevirtual |
Get name of solver.
Implements plask::Solver.
Definition at line 106 of file therm3d.hpp.
|
inline |
Get max absolute correction for temperature.
Definition at line 111 of file therm3d.hpp.
|
protected |
Definition at line 398 of file therm3d.cpp.
|
protected |
Definition at line 387 of file therm3d.cpp.
|
protected |
Definition at line 438 of file therm3d.cpp.
|
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::SolverWithMesh< SpaceT, MeshT >.
Definition at line 40 of file therm3d.cpp.
|
protected |
Setup matrix.
|
overrideprotectedvirtual |
Initialize the solver.
Reimplemented from plask::FemSolverWithMaskedMesh< Geometry3D, RectangularMesh< 3 > >.
Definition at line 71 of file therm3d.cpp.
|
overrideprotectedvirtual |
|
protected |
Create 3D-vector with calculated heat fluxes.
Definition at line 342 of file therm3d.cpp.
void plask::thermal::tstatic::ThermalFem3DSolver::setAlgorithm | ( | FemMatrixAlgorithm | alg | ) |
|
protected |
Set stiffness matrix and load vector.
[out] | A | matrix to fill-in |
[out] | B | load vector |
btemperature | boundary conditions: constant temperature | |
bheatflux | boundary conditions: constant heat flux | |
bconvection | boundary conditions: convention | |
bradiation | boundary conditions: radiation |
Definition at line 170 of file therm3d.cpp.
BoundaryConditions<RectangularMesh<3>::Boundary,Convection> plask::thermal::tstatic::ThermalFem3DSolver::convection_boundary |
Boundary condition of convection.
Definition at line 84 of file therm3d.hpp.
|
protected |
Computed (only when needed) heat fluxes on our own mesh.
Definition at line 39 of file therm3d.hpp.
BoundaryConditions<RectangularMesh<3>::Boundary,double> plask::thermal::tstatic::ThermalFem3DSolver::heatflux_boundary |
Boundary condition of constant heat flux [W/m^2].
Definition at line 83 of file therm3d.hpp.
ReceiverFor<Heat,Geometry3D> plask::thermal::tstatic::ThermalFem3DSolver::inHeat |
Definition at line 93 of file therm3d.hpp.
double plask::thermal::tstatic::ThermalFem3DSolver::inittemp |
Initial temperature.
Definition at line 78 of file therm3d.hpp.
|
protected |
Number of completed loops.
Definition at line 31 of file therm3d.hpp.
double plask::thermal::tstatic::ThermalFem3DSolver::maxerr |
Maximum temperature correction accepted as convergence.
Definition at line 79 of file therm3d.hpp.
|
protected |
Maximum temperature recorded.
Definition at line 32 of file therm3d.hpp.
ProviderFor<HeatFlux,Geometry3D>::Delegate plask::thermal::tstatic::ThermalFem3DSolver::outHeatFlux |
Definition at line 89 of file therm3d.hpp.
ProviderFor<Temperature,Geometry3D>::Delegate plask::thermal::tstatic::ThermalFem3DSolver::outTemperature |
Definition at line 87 of file therm3d.hpp.
ProviderFor<ThermalConductivity,Geometry3D>::Delegate plask::thermal::tstatic::ThermalFem3DSolver::outThermalConductivity |
Definition at line 91 of file therm3d.hpp.
BoundaryConditions<RectangularMesh<3>::Boundary,Radiation> plask::thermal::tstatic::ThermalFem3DSolver::radiation_boundary |
Boundary condition of radiation.
Definition at line 85 of file therm3d.hpp.
BoundaryConditions<RectangularMesh<3>::Boundary,double> plask::thermal::tstatic::ThermalFem3DSolver::temperature_boundary |
Boundary condition of constant temperature (K)
Definition at line 82 of file therm3d.hpp.
|
protected |
Computed temperatures.
Definition at line 35 of file therm3d.hpp.
|
protected |
Thicknesses of the layers.
Definition at line 37 of file therm3d.hpp.
|
protected |
Maximum estimated error during all iterations (useful for single calculations managed by external python script)
Definition at line 33 of file therm3d.hpp.