20#ifndef B2HEAT_MATERIAL_H_
21#define B2HEAT_MATERIAL_H_
23#include "model/b2element.H"
24#include "utils/b2linear_algebra.H"
38 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
39 double& laminate_begin,
double& laminate_end) {
47 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation,
48 const int layer_id,
double& layer_begin,
double& layer_end) {
53 enum LinearType { yes, linear_on_sub_domain, nonlinear };
64 virtual LinearType
linear(
const int layer_id = -1)
const = 0;
74 virtual bool isotropic(
const int layer_id = -1)
const = 0;
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,
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,
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;
214 virtual double get_thickness(
216 const b2linalg::Vector<double, b2linalg::Vdense_constref> nodes_interpolation)
const = 0;
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,
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,
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;
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 b2object.H:340
Definition b2solver.H:168
Contains the base classes for implementing Finite Elements.
Definition b2boundary_condition.H:32