PLaSK library
Loading...
Searching...
No Matches
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 ()
 
FemMatrixgetMatrix ()
 
FemMatrixgetMatrix ()
 
- Public Member Functions inherited from plask::FemSolverWithMesh< SpaceT, MeshT >
 FemSolverWithMesh (const std::string &name="")
 
bool parseFemConfiguration (XMLReader &reader, Manager &manager)
 
FemMatrixgetMatrix ()
 
FemMatrixgetMatrix ()
 
- 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.
 
MeshTmeshRef () const
 Get current module mesh.
 
shared_ptr< MeshTgetMesh () 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< 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

double inittemp
 Initial temperature.
 
double maxerr
 Maximum temperature correction accepted as convergence.
 
BoundaryConditions< RectangularMesh< 3 >::Boundary, doubletemperature_boundary
 Boundary condition of constant temperature (K)
 
BoundaryConditions< RectangularMesh< 3 >::Boundary, doubleheatflux_boundary
 Boundary condition of constant heat flux [W/m^2].
 
BoundaryConditions< RectangularMesh< 3 >::Boundary, Convectionconvection_boundary
 Boundary condition of convection.
 
BoundaryConditions< RectangularMesh< 3 >::Boundary, Radiationradiation_boundary
 Boundary condition of radiation.
 
ProviderFor< Temperature, Geometry3D >::Delegate outTemperature
 
ProviderFor< HeatFlux, Geometry3D >::Delegate outHeatFlux
 
ProviderFor< ThermalConductivity, Geometry3D >::Delegate outThermalConductivity
 
ReceiverFor< Heat, Geometry3DinHeat
 
- 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< doublegetTemperatures (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< doubletemperatures
 Computed temperatures.
 
DataVector< doublethickness
 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< MeshTmesh
 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
 

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
loopsmaximum 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
inlineoverridevirtual

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 
)
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::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 ( )
overrideprotectedvirtual

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 ( )
overrideprotectedvirtual

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
algnew 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]Amatrix to fill-in
[out]Bload vector
btemperatureboundary conditions: constant temperature
bheatfluxboundary conditions: constant heat flux
bconvectionboundary conditions: convention
bradiationboundary 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: