b2api
B2000++ API Reference Manual, VERSION 4.6
 
Loading...
Searching...
No Matches
b2heat_material.H
1//------------------------------------------------------------------------
2// b2heat_material.H --
3//
4//
5// written by Mathias Doreille
6// Neda Ebrahimi Pour <neda.ebrahimipour@dlr.de>
7//
8// (c) 2004-2016 SMR Engineering & Development SA
9// 2502 Bienne, Switzerland
10//
11// (c) 2023 Deutsches Zentrum für Luft- und Raumfahrt (DLR) e.V.
12// Linder Höhe, 51147 Köln
13//
14// All Rights Reserved. Proprietary source code. The contents of
15// this file may not be disclosed to third parties, copied or
16// duplicated in any form, in whole or in part, without the prior
17// written permission of SMR.
18//------------------------------------------------------------------------
19
20#ifndef B2HEAT_MATERIAL_H_
21#define B2HEAT_MATERIAL_H_
22
23#include "model/b2element.H"
24#include "utils/b2linear_algebra.H"
25
26namespace b2000 {
27
30class HeatMaterial : virtual public ElementProperty {
31public:
33 virtual int number_of_layer() const { return 1; }
34
37 virtual void laminate(
38 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
39 double& laminate_begin, double& laminate_end) {
40 laminate_begin = -1;
41 laminate_end = 1;
42 }
43
46 virtual void layer(
47 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
48 const int layer_id, double& layer_begin, double& layer_end) {
49 layer_begin = -1;
50 layer_end = 1;
51 }
52
53 enum LinearType { yes, linear_on_sub_domain, nonlinear };
54
64 virtual LinearType linear(const int layer_id = -1) const = 0;
65
74 virtual bool isotropic(const int layer_id = -1) const = 0;
75
77 static type_t type;
78};
79
82public:
155 Model* model, const Element* element, const double coordinates[3],
156 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
157 const double element_coordinate[3], const int layer_id, const double covariant_base[3][3],
158 const double temperature, const double temperature_dot, const double grad_temperature[3],
159 const double time, const double linear, double heat_conduction[3],
160 double d_heat_conduction_d_temperature[3], double d_heat_conduction_d_grad_temperature[6],
161 double& heat_capacity, double& d_heat_capacity_d_temperature,
162 double& d_heat_capacity_d_temperature_dot, GradientContainer* gradient_container,
163 SolverHints* solver_hints) = 0;
164
198 Model* model, const Element* element, const double coordinates[3],
199 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
200 const double element_coordinate[], const double temperature, const double time,
201 const bool linear, double& heat, double& d_heat_d_temperature,
202 GradientContainer* gradient_container, SolverHints* solver_hints) = 0;
203
204 virtual bool get_radiation_properties(
205 Model* model, const Element* element, const double coordinates[3],
206 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
207 const double element_coordinate[], const double temperature, double& heat_radiation_unit,
208 double& receptivity) = 0;
209};
210
213public:
214 virtual double get_thickness(
215 const Element* element,
216 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation) const = 0;
217
218 virtual void get_conduction_and_capacity_heat(
219 Model* model, const Element* element, const double coordinates[3],
220 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
221 const double element_coordinate[2], const int layer_id, const double covariant_base[2][2],
222 const double temperature, const double temperature_dot, const double grad_temperature[2],
223 const double time, const double linear, double heat_conduction[2],
224 double d_heat_conduction_d_temperature[2], double d_heat_conduction_d_grad_temperature[3],
225 double& heat_capacity, double& d_heat_capacity_d_temperature,
226 double& d_heat_capacity_d_temperature_dot, GradientContainer* gradient_container,
227 SolverHints* solver_hints) = 0;
228
229 virtual void get_radiation_and_convection_heat(
230 Model* model, const Element* element, const double coordinates[3],
231 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
232 const double element_coordinate[], const double temperature, const double time,
233 const bool linear, double& heat, double& d_heat_d_temperature,
234 GradientContainer* gradient_container, SolverHints* solver_hints) = 0;
235
236 virtual bool get_radiation_properties(
237 Model* model, const Element* element, const double coordinates[3],
238 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
239 const double element_coordinate[], const double temperature, double& heat_radiation_unit,
240 double& receptivity) = 0;
241};
242
243} // namespace b2000
244
245#endif // B2HEAT_MATERIAL_H_
Definition b2element.H:71
Defines the complete interface for Element instances (C++ representations of Finite Elements).
Definition b2element.H:156
Definition b2solution.H:54
Definition b2heat_material.H:212
Definition b2heat_material.H:81
virtual void get_conduction_and_capacity_heat(Model *model, const Element *element, const double coordinates[3], const b2linalg::Vector< double, b2linalg::Vdense_constref > nodes_interpolation, const double element_coordinate[3], const int layer_id, const double covariant_base[3][3], const double temperature, const double temperature_dot, const double grad_temperature[3], const double time, const double linear, double heat_conduction[3], double d_heat_conduction_d_temperature[3], double d_heat_conduction_d_grad_temperature[6], double &heat_capacity, double &d_heat_capacity_d_temperature, double &d_heat_capacity_d_temperature_dot, GradientContainer *gradient_container, SolverHints *solver_hints)=0
virtual void get_radiation_and_convection_heat(Model *model, const Element *element, const double coordinates[3], const b2linalg::Vector< double, b2linalg::Vdense_constref > nodes_interpolation, const double element_coordinate[], const double temperature, const double time, const bool linear, double &heat, double &d_heat_d_temperature, GradientContainer *gradient_container, SolverHints *solver_hints)=0
Definition b2heat_material.H:30
virtual int number_of_layer() const
Definition b2heat_material.H:33
virtual LinearType linear(const int layer_id=-1) const =0
virtual void laminate(const b2linalg::Vector< double, b2linalg::Vdense_constref > nodes_interpolation, double &laminate_begin, double &laminate_end)
Definition b2heat_material.H:37
virtual bool isotropic(const int layer_id=-1) const =0
virtual void layer(const b2linalg::Vector< double, b2linalg::Vdense_constref > nodes_interpolation, const int layer_id, double &layer_begin, double &layer_end)
Definition b2heat_material.H:46
Definition b2model.H:69
Definition b2object.H:340
Definition b2solver.H:168
Contains the base classes for implementing Finite Elements.
Definition b2boundary_condition.H:32