PLaSK library

Loading...
Searching...
No Matches
Classes | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
plask::thermal::tstatic::ThermalFem3DSolver Struct Reference

Solver performing calculations in 2D Cartesian or Cylindrical space using finite element method. More...

`#include <solvers/thermal/static/therm3d.hpp>`

Inheritance diagram for plask::thermal::tstatic::ThermalFem3DSolver:
[legend]
Collaboration diagram for plask::thermal::tstatic::ThermalFem3DSolver:
[legend]

## 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.

## Public Attributes
double | inittemp
| Initial temperature.
double | maxerr
| Maximum temperature correction accepted as convergence.
BoundaryConditions< RectangularMesh< 3 >::Boundary, double > | temperature_boundary
| Boundary condition of constant temperature (K)
BoundaryConditions< RectangularMesh< 3 >::Boundary, double > | heatflux_boundary
| Boundary condition of constant heat flux [W/m^2].
BoundaryConditions< RectangularMesh< 3 >::Boundary, Convection > | convection_boundary
| Boundary condition of convection.
BoundaryConditions< RectangularMesh< 3 >::Boundary, Radiation > | radiation_boundary
| Boundary condition of radiation.
ProviderFor< Temperature, Geometry3D >::Delegate | outTemperature
ProviderFor< HeatFlux, Geometry3D >::Delegate | outHeatFlux
ProviderFor< ThermalConductivity, Geometry3D >::Delegate | outThermalConductivity
ReceiverFor< Heat, Geometry3D > | inHeat
Public Attributes inherited from plask::FemSolverWithMesh< SpaceT, MeshT >
FemMatrixAlgorithm | algorithm = ALGORITHM_CHOLESKY
| Factorization algorithm to use.
IterativeMatrixParams | iter_params
| Parameters of iterative solver.

## Protected Member Functions
void | setMatrix (FemMatrix &A, DataVector< double > &B, const BoundaryConditionsWithMesh< RectangularMesh< 3 >::Boundary, double > &btemperature, const BoundaryConditionsWithMesh< RectangularMesh< 3 >::Boundary, double > &bheatflux, const BoundaryConditionsWithMesh< RectangularMesh< 3 >::Boundary, Convection > &bconvection, const BoundaryConditionsWithMesh< RectangularMesh< 3 >::Boundary, Radiation > &bradiation)
| Set stiffness matrix and load vector.
template<typename MatrixT >
void | applyBC (MatrixT &A, DataVector< double > &B, const BoundaryConditionsWithMesh< RectangularMesh< 3 >::Boundary, double > &btemperature)
| Apply boundary conditions of the first kind.
template<typename MatrixT >
MatrixT | makeMatrix ()
| Setup matrix.
void | saveHeatFluxes ()
| Create 3D-vector with calculated heat fluxes.
void | onInitialize () override
| Initialize the solver.
void | onInvalidate () override
| Invalidate the data.
const LazyData< double > | getTemperatures (const shared_ptr< const MeshD< 3 > > &dst_mesh, InterpolationMethod method) const
const LazyData< Vec< 3 > > | getHeatFluxes (const shared_ptr< const MeshD< 3 > > &dst_mesh, InterpolationMethod method)
const LazyData< Tensor2< double > > | getThermalConductivity (const shared_ptr< const MeshD< 3 > > &dst_mesh, InterpolationMethod method)
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
| 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

## Detailed Description

Solver performing calculations in 2D Cartesian or Cylindrical space using finite element method.

Definition at line 27 of file therm3d.hpp.

## Constructor & Destructor Documentation

## ◆ ThermalFem3DSolver()

plask::thermal::tstatic::ThermalFem3DSolver::ThermalFem3DSolver | ( | const std::string & | name = `""` | ) |

Definition at line 20 of file therm3d.cpp.

## ◆ ~ThermalFem3DSolver()

plask::thermal::tstatic::ThermalFem3DSolver::~ThermalFem3DSolver | ( |  | ) |

Definition at line 36 of file therm3d.cpp.

## Member Function Documentation

## ◆ applyBC()

template<typename MatrixT >

void plask::thermal::tstatic::ThermalFem3DSolver::applyBC | ( | MatrixT & | A,
|  | DataVector< double > & | B,
|  | const BoundaryConditionsWithMesh< RectangularMesh< 3 >::Boundary, double > & | btemperature
| ) |  |
| protected

Apply boundary conditions of the first kind.

## ◆ compute()

double plask::thermal::tstatic::ThermalFem3DSolver::compute | ( | int | loops = `1` | ) |

Run temperature calculations.

Parameters

  loops | maximum number of loops to run

Returns
  max correction of temperature against the last call

Definition at line 281 of file therm3d.cpp.

## ◆ getAlgorithm()

FemMatrixAlgorithm plask::thermal::tstatic::ThermalFem3DSolver::getAlgorithm | ( |  | ) | const
| inline

Returns
  current algorithm

Definition at line 114 of file therm3d.hpp.

## ◆ getClassName()

std::string plask::thermal::tstatic::ThermalFem3DSolver::getClassName | ( |  | ) | const
| inline override virtual

Get name of solver.

Returns
  name of this solver

Implements plask::Solver.

Definition at line 106 of file therm3d.hpp.

## ◆ getErr()

double plask::thermal::tstatic::ThermalFem3DSolver::getErr | ( |  | ) | const
| inline

Get max absolute correction for temperature.

Definition at line 111 of file therm3d.hpp.

## ◆ getHeatFluxes()

const LazyData< Vec< 3 > > plask::thermal::tstatic::ThermalFem3DSolver::getHeatFluxes | ( | const shared_ptr< const MeshD< 3 > > & | dst_mesh,
|  | InterpolationMethod | method
| ) |  |
| protected

Definition at line 398 of file therm3d.cpp.

## ◆ getTemperatures()

const LazyData< double > plask::thermal::tstatic::ThermalFem3DSolver::getTemperatures | ( | const shared_ptr< const MeshD< 3 > > & | dst_mesh,
|  | InterpolationMethod | method
| ) |  | const
| protected

Definition at line 387 of file therm3d.cpp.

## ◆ getThermalConductivity()

const LazyData< Tensor2< double > > plask::thermal::tstatic::ThermalFem3DSolver::getThermalConductivity | ( | const shared_ptr< const MeshD< 3 > > & | dst_mesh,
|  | InterpolationMethod | method
| ) |  |
| protected

Definition at line 438 of file therm3d.cpp.

## ◆ loadConfiguration()

void plask::thermal::tstatic::ThermalFem3DSolver::loadConfiguration | ( | XMLReader & | source,
|  | Manager & | manager
| ) |  |
| override 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.

Parameters

  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.

## ◆ makeMatrix()

template<typename MatrixT >

MatrixT plask::thermal::tstatic::ThermalFem3DSolver::makeMatrix | ( |  | ) |
| protected

Setup matrix.

## ◆ onInitialize()

void plask::thermal::tstatic::ThermalFem3DSolver::onInitialize | ( |  | ) |
| override protected virtual

Initialize the solver.

Reimplemented from plask::FemSolverWithMaskedMesh< Geometry3D, RectangularMesh< 3 > >.

Definition at line 71 of file therm3d.cpp.

## ◆ onInvalidate()

void plask::thermal::tstatic::ThermalFem3DSolver::onInvalidate | ( |  | ) |
| override protected virtual

Invalidate the data.

Reimplemented from plask::Solver.

Definition at line 118 of file therm3d.cpp.

## ◆ saveHeatFluxes()

void plask::thermal::tstatic::ThermalFem3DSolver::saveHeatFluxes | ( |  | ) |
| protected

Create 3D-vector with calculated heat fluxes.

Definition at line 342 of file therm3d.cpp.

## ◆ setAlgorithm()

void plask::thermal::tstatic::ThermalFem3DSolver::setAlgorithm | ( | FemMatrixAlgorithm | alg | ) |

Set algorithm.

Parameters

  alg | new algorithm

Definition at line 124 of file therm3d.cpp.

## ◆ setMatrix()

void plask::thermal::tstatic::ThermalFem3DSolver::setMatrix | ( | FemMatrix & | A,
|  | DataVector< double > & | B,
|  | const BoundaryConditionsWithMesh< RectangularMesh< 3 >::Boundary, double > & | btemperature,
|  | const BoundaryConditionsWithMesh< RectangularMesh< 3 >::Boundary, double > & | bheatflux,
|  | const BoundaryConditionsWithMesh< RectangularMesh< 3 >::Boundary, Convection > & | bconvection,
|  | const BoundaryConditionsWithMesh< RectangularMesh< 3 >::Boundary, Radiation > & | bradiation
| ) |  |
| protected

Set stiffness matrix and load vector.

Parameters

  [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.

## Member Data Documentation

## ◆ convection_boundary

BoundaryConditions<RectangularMesh<3>::Boundary,Convection> plask::thermal::tstatic::ThermalFem3DSolver::convection_boundary

Boundary condition of convection.

Definition at line 84 of file therm3d.hpp.

## ◆ fluxes

DataVector<Vec<3,double> > plask::thermal::tstatic::ThermalFem3DSolver::fluxes
| protected

Computed (only when needed) heat fluxes on our own mesh.

Definition at line 39 of file therm3d.hpp.

## ◆ heatflux_boundary

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.

## ◆ inHeat

ReceiverFor<Heat,Geometry3D> plask::thermal::tstatic::ThermalFem3DSolver::inHeat

Definition at line 93 of file therm3d.hpp.

## ◆ inittemp

double plask::thermal::tstatic::ThermalFem3DSolver::inittemp

Initial temperature.

Definition at line 78 of file therm3d.hpp.

## ◆ loopno

int plask::thermal::tstatic::ThermalFem3DSolver::loopno
| protected

Number of completed loops.

Definition at line 31 of file therm3d.hpp.

## ◆ maxerr

double plask::thermal::tstatic::ThermalFem3DSolver::maxerr

Maximum temperature correction accepted as convergence.

Definition at line 79 of file therm3d.hpp.

## ◆ maxT

double plask::thermal::tstatic::ThermalFem3DSolver::maxT
| protected

Maximum temperature recorded.

Definition at line 32 of file therm3d.hpp.

## ◆ outHeatFlux

ProviderFor<HeatFlux,Geometry3D>::Delegate plask::thermal::tstatic::ThermalFem3DSolver::outHeatFlux

Definition at line 89 of file therm3d.hpp.

## ◆ outTemperature

ProviderFor<Temperature,Geometry3D>::Delegate plask::thermal::tstatic::ThermalFem3DSolver::outTemperature

Definition at line 87 of file therm3d.hpp.

## ◆ outThermalConductivity

ProviderFor<ThermalConductivity,Geometry3D>::Delegate plask::thermal::tstatic::ThermalFem3DSolver::outThermalConductivity

Definition at line 91 of file therm3d.hpp.

## ◆ radiation_boundary

BoundaryConditions<RectangularMesh<3>::Boundary,Radiation> plask::thermal::tstatic::ThermalFem3DSolver::radiation_boundary

Boundary condition of radiation.

Definition at line 85 of file therm3d.hpp.

## ◆ temperature_boundary

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.

## ◆ temperatures

DataVector<double> plask::thermal::tstatic::ThermalFem3DSolver::temperatures
| protected

Computed temperatures.

Definition at line 35 of file therm3d.hpp.

## ◆ thickness

DataVector<double> plask::thermal::tstatic::ThermalFem3DSolver::thickness
| protected

Thicknesses of the layers.

Definition at line 37 of file therm3d.hpp.

## ◆ toterr

double plask::thermal::tstatic::ThermalFem3DSolver::toterr
| protected

Maximum estimated error during all iterations (useful for single calculations managed by external python script)

Definition at line 33 of file therm3d.hpp.

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

- solvers/thermal/static/therm3d.hpp
- solvers/thermal/static/therm3d.cpp