v0.14.0
ThermalElement.hpp
Go to the documentation of this file.
1 /** \file ThermalElement.hpp
2  \ingroup mofem_thermal_elem
3 
4  \brief Operators and data structures for thermal analysis
5 
6  Implementation of thermal element for unsteady and steady case.
7  Radiation and convection blocks implemented by Xuan Meng
8 
9 */
10 
11 
12 
13 #ifndef __THERMAL_ELEMENT_HPP
14 #define __THERMAL_ELEMENT_HPP
15 
16 /** \brief structure grouping operators and data used for thermal problems
17  * \ingroup mofem_thermal_elem
18  *
19  * In order to assemble matrices and right hand vectors, the loops over
20  * elements, entities within the element and finally loop over integration
21  * points are executed.
22  *
23  * Following implementation separate those three types of loops and to each
24  * loop attach operator.
25  *
26  */
28 
29  /// \brief definition of volume element
33 
34  /** \brief it is used to calculate nb. of Gauss integration points
35  *
36  * for more details pleas look
37  * Reference:
38  *
39  * Albert Nijenhuis, Herbert Wilf,
40  * Combinatorial Algorithms for Computers and Calculators,
41  * Second Edition,
42  * Academic Press, 1978,
43  * ISBN: 0-12-519260-6,
44  * LC: QA164.N54.
45  *
46  * More details about algorithm
47  * http://people.sc.fsu.edu/~jburkardt/cpp_src/gm_rule/gm_rule.html
48  **/
49  int getRule(int order) { return 2 * (order - 1); };
50  };
51  MyVolumeFE feRhs; ///< cauclate right hand side for tetrahedral elements
52  MyVolumeFE &getLoopFeRhs() { return feRhs; } ///< get rhs volume element
53  MyVolumeFE feLhs; //< calculate left hand side for tetrahedral elements
54  MyVolumeFE &getLoopFeLhs() { return feLhs; } ///< get lhs volume element
55 
56  /** \brief define surface element
57  *
58  * This element is used to integrate heat fluxes; convection and radiation
59  */
63  int getRule(int order) { return 2 * order; };
64  };
65 
66  MyTriFE feFlux; //< heat flux element
67  MyTriFE &getLoopFeFlux() { return feFlux; } //< get heat flux element
68 
69  MyTriFE feConvectionRhs; //< convection element
72  return feConvectionRhs;
73  } //< get convection element
75 
76  MyTriFE feRadiationRhs; //< radiation element
79  return feRadiationRhs;
80  } //< get radiation element
82 
85  : feRhs(m_field), feLhs(m_field), feFlux(m_field),
86  feConvectionRhs(m_field), feConvectionLhs(m_field),
87  feRadiationRhs(m_field), feRadiationLhs(m_field), mField(m_field) {}
88 
89  /** \brief data for calculation heat conductivity and heat capacity elements
90  * \ingroup mofem_thermal_elem
91  */
92  struct BlockData {
93  // double cOnductivity;
94  MatrixDouble cOnductivity_mat; // This is (3x3) conductivity matrix
95  double cApacity; // rou * c_p == material density multiple heat capacity
96  double initTemp; ///< initial temperature
97  Range tEts; ///< contains elements in block set
98  };
99  std::map<int, BlockData>
100  setOfBlocks; ///< maps block set id with appropriate BlockData
101 
102  /** \brief data for calculation heat flux
103  * \ingroup mofem_thermal_elem
104  */
105  struct FluxData {
106  HeatFluxCubitBcData dAta; ///< for more details look to BCMultiIndices.hpp
107  ///< to see details of HeatFluxCubitBcData
108  Range tRis; ///< surface triangles where hate flux is applied
109  };
110  std::map<int, FluxData>
111  setOfFluxes; ///< maps side set id with appropriate FluxData
112 
113  /** \brief data for convection
114  * \ingroup mofem_thermal_elem
115  */
116  struct ConvectionData {
117  double cOnvection; /*The summation of Convection coefficients*/
118  double tEmperature; /*Ambient temperature of the area contains the black
119  body */
120  Range tRis; ///< those will be on body skin, except this with contact with
121  ///< other body where temperature is applied
122  };
123  std::map<int, ConvectionData>
124  setOfConvection; //< maps block set id with appropriate data
125 
126  /** \brief data for radiation
127  * \ingroup mofem_thermal_elem
128  */
129  struct RadiationData {
130  double sIgma; /* The Stefan-Boltzmann constant*/
131  double eMissivity; /* The surface emissivity coefficients range = [0,1] */
132  // double aBsorption; /* The surface absorption coefficients */
133  double aMbienttEmp; /* The incident radiant heat flow per unit surface area;
134  or the ambient temperature of space*/
135  Range tRis; ///< those will be on body skin, except this with contact with
136  ///< other body where temperature is applied
137  };
138  std::map<int, RadiationData>
139  setOfRadiation; //< maps block set id with appropriate data
140 
141  /** \brief common data used by volume elements
142  * \ingroup mofem_thermal_elem
143  */
144  struct CommonData {
148  inline ublas::matrix_row<MatrixDouble> getGradAtGaussPts(const int gg) {
149  return ublas::matrix_row<MatrixDouble>(gradAtGaussPts, gg);
150  }
151  };
153 
154  /// \brief operator to calculate temperature gradient at Gauss points
157 
159  OpGetGradAtGaussPts(const std::string field_name, CommonData &common_data)
160  : MoFEM::VolumeElementForcesAndSourcesCore::UserDataOperator(
162  commonData(common_data) {}
163 
164  /** \brief operator calculating temperature gradients
165  *
166  * temperature gradient is calculated multiplying derivatives of shape
167  * functions by degrees of freedom.
168  */
169  MoFEMErrorCode doWork(int side, EntityType type,
171  };
172 
173  /** \brief operator to calculate temperature and rate of temperature at Gauss
174  * points \ingroup mofem_thermal_elem
175  */
176  template <typename OP>
178 
180  OpGetFieldAtGaussPts(const std::string field_name,
181  VectorDouble &field_at_gauss_pts)
183  fieldAtGaussPts(field_at_gauss_pts) {}
184 
185  /** \brief operator calculating temperature and rate of temperature
186  *
187  * temperature temperature or rate of temperature is calculated multiplying
188  * shape functions by degrees of freedom
189  */
190  MoFEMErrorCode doWork(int side, EntityType type,
193  try {
194 
195  if (data.getFieldData().size() == 0)
197  int nb_dofs = data.getFieldData().size();
198  int nb_gauss_pts = data.getN().size1();
199 
200  // initialize
201  fieldAtGaussPts.resize(nb_gauss_pts);
202  if (type == MBVERTEX) {
203  // loop over shape functions on entities always start from
204  // vertices, so if nodal shape functions are processed, vector of
205  // field values is zero at initialization
206  std::fill(fieldAtGaussPts.begin(), fieldAtGaussPts.end(), 0);
207  }
208 
209  for (int gg = 0; gg < nb_gauss_pts; gg++) {
210  fieldAtGaussPts[gg] +=
211  inner_prod(data.getN(gg, nb_dofs), data.getFieldData());
212  }
213 
214  } catch (const std::exception &ex) {
215  std::ostringstream ss;
216  ss << "throw in method: " << ex.what() << std::endl;
217  SETERRQ(PETSC_COMM_SELF, MOFEM_STD_EXCEPTION_THROW, ss.str().c_str());
218  }
219 
221  }
222  };
223 
224  /** \brief operator to calculate temperature at Gauss pts
225  * \ingroup mofem_thermal_elem
226  */
228  : public OpGetFieldAtGaussPts<MoFEM::VolumeElementForcesAndSourcesCore> {
230  CommonData &common_data)
231  : OpGetFieldAtGaussPts<MoFEM::VolumeElementForcesAndSourcesCore>(
232  field_name, common_data.temperatureAtGaussPts) {}
233  };
234 
235  /** \brief operator to calculate temperature at Gauss pts
236  * \ingroup mofem_thermal_elem
237  */
239  : public OpGetFieldAtGaussPts<MoFEM::FaceElementForcesAndSourcesCore> {
241  CommonData &common_data)
243  field_name, common_data.temperatureAtGaussPts) {}
244  };
245 
246  /** \brief operator to calculate temperature rate at Gauss pts
247  * \ingroup mofem_thermal_elem
248  */
250  : public OpGetFieldAtGaussPts<MoFEM::VolumeElementForcesAndSourcesCore> {
252  CommonData &common_data)
253  : OpGetFieldAtGaussPts<MoFEM::VolumeElementForcesAndSourcesCore>(
254  field_name, common_data.temperatureRateAtGaussPts) {}
255  };
256 
257  /** \biref operator to calculate right hand side of heat conductivity terms
258  * \ingroup mofem_thermal_elem
259  */
262 
265  bool useTsF;
266  OpThermalRhs(const std::string field_name, BlockData &data,
267  CommonData &common_data)
268  : MoFEM::VolumeElementForcesAndSourcesCore::UserDataOperator(
270  dAta(data), commonData(common_data), useTsF(true) {}
271 
273  OpThermalRhs(const std::string field_name, Vec _F, BlockData &data,
274  CommonData &common_data)
275  : MoFEM::VolumeElementForcesAndSourcesCore::UserDataOperator(
277  dAta(data), commonData(common_data), useTsF(false), F(_F) {}
278 
280 
281  /** \brief calculate thermal conductivity matrix
282  *
283  * F = int diffN^T k gard_T dOmega^2
284  *
285  */
286  MoFEMErrorCode doWork(int side, EntityType type,
288  };
289 
290  /** \biref operator to calculate left hand side of heat conductivity terms
291  * \ingroup mofem_thermal_elem
292  */
295 
298  bool useTsB;
299  OpThermalLhs(const std::string field_name, BlockData &data,
300  CommonData &common_data)
301  : MoFEM::VolumeElementForcesAndSourcesCore::UserDataOperator(
303  dAta(data), commonData(common_data), useTsB(true) {}
304 
305  Mat A;
306  OpThermalLhs(const std::string field_name, Mat _A, BlockData &data,
307  CommonData &common_data)
308  : MoFEM::VolumeElementForcesAndSourcesCore::UserDataOperator(
310  dAta(data), commonData(common_data), useTsB(false), A(_A) {}
311 
313 
314  /** \brief calculate thermal conductivity matrix
315  *
316  * K = int diffN^T k diffN^T dOmega^2
317  *
318  */
319  MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type,
320  EntityType col_type,
321  EntitiesFieldData::EntData &row_data,
322  EntitiesFieldData::EntData &col_data);
323  };
324 
325  /** \brief operator to calculate right hand side of heat capacity terms
326  * \ingroup mofem_thermal_elem
327  */
330 
333  OpHeatCapacityRhs(const std::string field_name, BlockData &data,
334  CommonData &common_data)
335  : MoFEM::VolumeElementForcesAndSourcesCore::UserDataOperator(
337  dAta(data), commonData(common_data) {}
338 
340 
341  /** \brief calculate thermal conductivity matrix
342  *
343  * F = int N^T c (dT/dt) dOmega^2
344  *
345  */
346  MoFEMErrorCode doWork(int side, EntityType type,
348  };
349 
350  /** \brief operator to calculate left hand side of heat capacity terms
351  * \ingroup mofem_thermal_elem
352  */
355 
358  OpHeatCapacityLhs(const std::string field_name, BlockData &data,
359  CommonData &common_data)
360  : MoFEM::VolumeElementForcesAndSourcesCore::UserDataOperator(
362  dAta(data), commonData(common_data) {}
363 
365 
366  /** \brief calculate heat capacity matrix
367  *
368  * M = int N^T c N dOmega^2
369  *
370  */
371  MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type,
372  EntityType col_type,
373  EntitiesFieldData::EntData &row_data,
374  EntitiesFieldData::EntData &col_data);
375  };
376 
377  /** \brief operator for calculate heat flux and assemble to right hand side
378  * \ingroup mofem_thermal_elem
379  */
380  struct OpHeatFlux
382 
385  bool useTsF;
386  OpHeatFlux(const std::string field_name, FluxData &data,
387  bool ho_geometry = false)
390  dAta(data), hoGeometry(ho_geometry), useTsF(true) {}
391 
393  OpHeatFlux(const std::string field_name, Vec _F, FluxData &data,
394  bool ho_geometry = false)
397  dAta(data), hoGeometry(ho_geometry), useTsF(false), F(_F) {}
398 
400 
401  /** \brief calculate heat flux
402  *
403  * F = int_S N^T * flux dS
404  *
405  */
406  MoFEMErrorCode doWork(int side, EntityType type,
408  };
409 
410  /**
411  * operator to calculate radiation therms on body surface and assemble to lhs
412  * of equations for the jocabian Matrix of Picard Linearization \ingroup
413  * mofem_thermal_elem
414  */
417  CommonData
418  &commonData; // get the temperature or temperature Rate from CommonData
421  bool useTsB;
422 
423  OpRadiationLhs(const std::string field_name, RadiationData &data,
424  CommonData &common_data, bool ho_geometry = false)
427  commonData(common_data), dAta(data), hoGeometry(ho_geometry),
428  useTsB(true) {}
429 
430  Mat A;
431  OpRadiationLhs(const std::string field_name, Mat _A, RadiationData &data,
432  CommonData &common_data, bool ho_geometry = false)
435  commonData(common_data), dAta(data), hoGeometry(ho_geometry),
436  useTsB(false), A(_A) {}
437 
439 
440  /** \brief calculate thermal radiation term in the lhs of equations(Tangent
441  * Matrix) for transient Thermal Problem
442  *
443  * K = intS 4* N^T* sIgma* eMissivity* N* T^3 dS (Reference _ see Finite
444  * Element Simulation of Heat Transfer by jean-Michel Bergheau)
445  */
446  MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type,
447  EntityType col_type,
448  EntitiesFieldData::EntData &row_data,
449  EntitiesFieldData::EntData &col_data);
450  };
451 
452  /** \brief operator to calculate radiation therms on body surface and assemble
453  * to rhs of transient equations(Residual Vector) \ingroup mofem_thermal_elem
454  */
457 
458  CommonData
459  &commonData; // get the temperature or temperature Rate from CommonData
462  bool useTsF;
463  OpRadiationRhs(const std::string field_name, RadiationData &data,
464  CommonData &common_data, bool ho_geometry = false)
467  commonData(common_data), dAta(data), hoGeometry(ho_geometry),
468  useTsF(true) {}
469 
471  OpRadiationRhs(const std::string field_name, Vec _F, RadiationData &data,
472  CommonData &common_data, bool ho_geometry = false)
475  commonData(common_data), dAta(data), hoGeometry(ho_geometry),
476  useTsF(false), F(_F) {}
477 
479 
480  /** \brief calculate Transient Radiation condition on the right hand side
481  *residual
482  *
483  * R=int_S N^T * sIgma * eMissivity * (Ta^4 -Ts^4) dS
484  **/
485  MoFEMErrorCode doWork(int side, EntityType type,
487  };
488 
489  /** \brief operator to calculate convection therms on body surface and
490  * assemble to rhs of equations \ingroup mofem_thermal_elem
491  */
494 
495  CommonData
496  &commonData; // get the temperature or temperature Rate from CommonData
499  bool useTsF;
500  OpConvectionRhs(const std::string field_name, ConvectionData &data,
501  CommonData &common_data, bool ho_geometry = false)
504  commonData(common_data), dAta(data), hoGeometry(ho_geometry),
505  useTsF(true) {}
506 
508  OpConvectionRhs(const std::string field_name, Vec _F, ConvectionData &data,
509  CommonData &common_data, bool ho_geometry = false)
512  commonData(common_data), dAta(data), hoGeometry(ho_geometry),
513  useTsF(false), F(_F) {}
514 
516 
517  /** brief calculate Convection condition on the right hand side
518  * R=int_S N^T*alpha*N_f dS **/
519 
520  MoFEMErrorCode doWork(int side, EntityType type,
522  };
523 
524  /// \biref operator to calculate convection therms on body surface and
525  /// assemble to lhs of equations
528 
531  bool useTsB;
532 
533  OpConvectionLhs(const std::string field_name, ConvectionData &data,
534  bool ho_geometry = false)
537  dAta(data), hoGeometry(ho_geometry), useTsB(true) {}
538 
539  Mat A;
540  OpConvectionLhs(const std::string field_name, Mat _A, ConvectionData &data,
541  bool ho_geometry = false)
544  dAta(data), hoGeometry(ho_geometry), useTsB(false), A(_A) {}
545 
547  /** \brief calculate thermal convection term in the lhs of equations
548  *
549  * K = intS N^T alpha N dS
550  */
551  MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type,
552  EntityType col_type,
553  EntitiesFieldData::EntData &row_data,
554  EntitiesFieldData::EntData &col_data);
555  };
556 
557  /** \brief this calass is to control time stepping
558  * \ingroup mofem_thermal_elem
559  *
560  * It is used to save data for temperature rate vector to MoFEM field.
561  */
562  struct UpdateAndControl : public FEMethod {
563 
565  const std::string tempName;
566  const std::string rateName;
567 
568  UpdateAndControl(MoFEM::Interface &m_field, const std::string temp_name,
569  const std::string rate_name)
570  : mField(m_field), tempName(temp_name), rateName(rate_name) {}
571 
574  };
575 
576  /** \brief TS monitore it records temperature at time steps
577  * \ingroup mofem_thermal_elem
578  */
579  struct TimeSeriesMonitor : public FEMethod {
580 
582  const std::string seriesName;
583  const std::string tempName;
585 
586  using Ele = ForcesAndSourcesCore;
587  using VolEle = VolumeElementForcesAndSourcesCore;
590 
591  boost::shared_ptr<SetPtsData> dataFieldEval;
592  boost::shared_ptr<VectorDouble> tempPtr;
593 
594  std::vector<std::array<double, 3>> evalPoints;
595 
596  TimeSeriesMonitor(MoFEM::Interface &m_field, const std::string series_name,
597  const std::string temp_name,
598  std::vector<std::array<double, 3>> eval_points = {})
599  : mField(m_field), seriesName(series_name), tempName(temp_name),
600  evalPoints(eval_points),
601  dataFieldEval(m_field.getInterface<FieldEvaluatorInterface>()
602  ->getData<VolEle>()) {
603  mask.set();
604 
605  if (!evalPoints.empty()) {
606  ierr = m_field.getInterface<FieldEvaluatorInterface>()->buildTree3D(
607  dataFieldEval, "THERMAL_FE");
608  CHKERRABORT(PETSC_COMM_WORLD, ierr);
609 
610  auto no_rule = [](int, int, int) { return -1; };
611 
612  tempPtr = boost::make_shared<VectorDouble>();
613 
614  boost::shared_ptr<Ele> vol_ele(dataFieldEval->feMethodPtr.lock());
615  vol_ele->getRuleHook = no_rule;
616 
617  vol_ele->getOpPtrVector().push_back(
618  new OpCalculateScalarFieldValues("TEMP", tempPtr));
619  }
620  }
621 
623  };
624 
625  /** \brief add thermal element on tets
626  * \ingroup mofem_thermal_elem
627  *
628  * It get data from block set and define element in moab
629  *w
630  * \param field name
631  * \param name of mesh nodal positions (if not defined nodal coordinates are
632  *used)
633  */
635  const std::string field_name,
636  const std::string mesh_nodals_positions = "MESH_NODE_POSITIONS");
637 
638  /** \brief add heat flux element
639  * \ingroup mofem_thermal_elem
640  *
641  * It get data from heat flux set and define element in moab. Alternatively
642  * uses block set with name including substring HEAT_FLUX.
643  *
644  * \param field name
645  * \param name of mesh nodal positions (if not defined nodal coordinates are
646  * used)
647  */
649  const std::string field_name,
650  const std::string mesh_nodals_positions = "MESH_NODE_POSITIONS");
651 
652  /** \brief add convection element
653  * \ingroup mofem_thermal_elem
654  *
655  * It get data from convection set and define element in moab. Alternatively
656  * uses block set with name including substring CONVECTION.
657  *
658  * \param field name
659  * \param name of mesh nodal positions (if not defined nodal coordinates are
660  * used)
661  */
663  const std::string field_name,
664  const std::string mesh_nodals_positions = "MESH_NODE_POSITIONS");
665 
666  /** \brief add Non-linear Radiation element
667  * \ingroup mofem_thermal_elem
668  *
669  * It get data from Radiation set and define element in moab. Alternatively
670  * uses block set with name including substring RADIATION.
671  *
672  * \param field name
673  * \param name of mesh nodal positions (if not defined nodal coordinates are
674  * used)
675  */
677  const std::string field_name,
678  const std::string mesh_nodals_positions = "MESH_NODE_POSITIONS");
679 
680  /** \brief this function is used in case of stationary problem to set elements
681  * for rhs \ingroup mofem_thermal_elem
682  */
684 
685  /** \brief this function is used in case of stationary heat conductivity
686  * problem for lhs \ingroup mofem_thermal_elem
687  */
689 
690  /** \brief this function is used in case of stationary problem for heat flux
691  * terms \ingroup mofem_thermal_elem
692  */
694  string field_name, Vec &F,
695  const std::string mesh_nodals_positions = "MESH_NODE_POSITIONS");
696 
697  /* \brief linear Steady convection terms in lhs
698  */
700  string field_name, Vec &F,
701  const std::string mesh_nodals_positions = "MESH_NODE_POSITIONS");
702 
703  /* \brief linear Steady convection terms in rhs
704  */
706  string field_name, Mat A,
707  const std::string mesh_nodals_positions = "MESH_NODE_POSITIONS");
708 
709  /** \brief set up operators for unsteady heat flux; convection; radiation
710  * problem \ingroup mofem_thermal_elem
711  */
713  string field_name, string rate_name,
714  const std::string mesh_nodals_positions = "MESH_NODE_POSITIONS");
715 
716  /** \brief set up operators for unsteady heat flux; convection; radiation
717  * problem \ingroup mofem_thermal_elem
718  */
720  TsCtx &ts_ctx, string field_name, string rate_name,
721  const std::string mesh_nodals_positions = "MESH_NODE_POSITIONS");
722 };
723 
724 #endif //__THERMAL_ELEMENT_HPP
725 
726 /**
727  * \defgroup mofem_thermal_elem Thermal element
728  * \ingroup user_modules
729  **/
MoFEMFunctionReturnHot
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:460
MoFEM::UnknownInterface::getInterface
MoFEMErrorCode getInterface(IFACE *&iface) const
Get interface reference to pointer of interface.
Definition: UnknownInterface.hpp:93
ThermalElement::OpGetTetTemperatureAtGaussPts::OpGetTetTemperatureAtGaussPts
OpGetTetTemperatureAtGaussPts(const std::string field_name, CommonData &common_data)
Definition: ThermalElement.hpp:229
ThermalElement::OpRadiationRhs::OpRadiationRhs
OpRadiationRhs(const std::string field_name, RadiationData &data, CommonData &common_data, bool ho_geometry=false)
Definition: ThermalElement.hpp:463
ThermalElement::ConvectionData::tRis
Range tRis
Definition: ThermalElement.hpp:120
ThermalElement::FluxData
data for calculation heat flux
Definition: ThermalElement.hpp:105
MoFEM::VolumeElementForcesAndSourcesCore::VolumeElementForcesAndSourcesCore
VolumeElementForcesAndSourcesCore(Interface &m_field, const EntityType type=MBTET)
Definition: VolumeElementForcesAndSourcesCore.cpp:9
ThermalElement::OpRadiationRhs::dAta
RadiationData & dAta
Definition: ThermalElement.hpp:460
ThermalElement::OpHeatCapacityRhs::dAta
BlockData & dAta
Definition: ThermalElement.hpp:331
ThermalElement::getLoopFeRadiationLhs
MyTriFE & getLoopFeRadiationLhs()
Definition: ThermalElement.hpp:81
ThermalElement::TimeSeriesMonitor::Ele
ForcesAndSourcesCore Ele
Definition: ThermalElement.hpp:586
ThermalElement::BlockData::cApacity
double cApacity
Definition: ThermalElement.hpp:95
ThermalElement::OpConvectionLhs::K
MatrixDouble K
Definition: ThermalElement.hpp:546
ThermalElement::OpHeatCapacityRhs
operator to calculate right hand side of heat capacity terms
Definition: ThermalElement.hpp:328
ThermalElement::OpConvectionRhs::F
Vec F
Definition: ThermalElement.hpp:507
ThermalElement::OpRadiationLhs
Definition: ThermalElement.hpp:415
ThermalElement::TimeSeriesMonitor::mField
MoFEM::Interface & mField
Definition: ThermalElement.hpp:581
ThermalElement::OpRadiationRhs
operator to calculate radiation therms on body surface and assemble to rhs of transient equations(Res...
Definition: ThermalElement.hpp:455
MOFEM_STD_EXCEPTION_THROW
@ MOFEM_STD_EXCEPTION_THROW
Definition: definitions.h:39
ThermalElement::setOfBlocks
std::map< int, BlockData > setOfBlocks
maps block set id with appropriate BlockData
Definition: ThermalElement.hpp:100
ThermalElement::setOfConvection
std::map< int, ConvectionData > setOfConvection
Definition: ThermalElement.hpp:124
ThermalElement::OpRadiationRhs::F
Vec F
Definition: ThermalElement.hpp:470
ThermalElement::OpHeatCapacityRhs::doWork
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
calculate thermal conductivity matrix
Definition: ThermalElement.cpp:120
ThermalElement::OpRadiationRhs::hoGeometry
bool hoGeometry
Definition: ThermalElement.hpp:461
ThermalElement::OpHeatCapacityRhs::commonData
CommonData & commonData
Definition: ThermalElement.hpp:332
ThermalElement::RadiationData::sIgma
double sIgma
Definition: ThermalElement.hpp:130
ThermalElement::OpConvectionRhs::Nf
VectorDouble Nf
Definition: ThermalElement.hpp:515
ThermalElement::OpConvectionLhs::dAta
ConvectionData & dAta
Definition: ThermalElement.hpp:529
ThermalElement::OpThermalRhs::OpThermalRhs
OpThermalRhs(const std::string field_name, BlockData &data, CommonData &common_data)
Definition: ThermalElement.hpp:266
ThermalElement::getLoopFeRadiationRhs
MyTriFE & getLoopFeRadiationRhs()
Definition: ThermalElement.hpp:78
ThermalElement::TimeSeriesMonitor::evalPoints
std::vector< std::array< double, 3 > > evalPoints
Definition: ThermalElement.hpp:594
ThermalElement::UpdateAndControl::mField
MoFEM::Interface & mField
Definition: ThermalElement.hpp:564
ThermalElement::OpConvectionLhs::useTsB
bool useTsB
Definition: ThermalElement.hpp:531
_F
#define _F(n)
Definition: quad.c:25
ThermalElement::OpConvectionLhs::transK
MatrixDouble transK
Definition: ThermalElement.hpp:546
ThermalElement::addThermalElements
MoFEMErrorCode addThermalElements(const std::string field_name, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS")
add thermal element on tets
Definition: ThermalElement.cpp:527
MoFEM::Exceptions::MoFEMErrorCode
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Definition: Exceptions.hpp:56
ThermalElement::OpHeatFlux::hoGeometry
bool hoGeometry
Definition: ThermalElement.hpp:384
ThermalElement::OpConvectionLhs::A
Mat A
Definition: ThermalElement.hpp:539
ThermalElement::UpdateAndControl::preProcess
MoFEMErrorCode preProcess()
Definition: ThermalElement.cpp:441
MoFEM::Types::MatrixDouble
UBlasMatrix< double > MatrixDouble
Definition: Types.hpp:77
ThermalElement::addThermalConvectionElement
MoFEMErrorCode addThermalConvectionElement(const std::string field_name, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS")
add convection element
Definition: ThermalElement.cpp:621
ThermalElement::OpThermalLhs::doWork
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
calculate thermal conductivity matrix
Definition: ThermalElement.cpp:74
ThermalElement::BlockData::cOnductivity_mat
MatrixDouble cOnductivity_mat
Definition: ThermalElement.hpp:94
ThermalElement::OpThermalLhs::useTsB
bool useTsB
Definition: ThermalElement.hpp:298
ThermalElement::RadiationData::eMissivity
double eMissivity
Definition: ThermalElement.hpp:131
ThermalElement::OpThermalRhs::dAta
BlockData & dAta
Definition: ThermalElement.hpp:263
ThermalElement::OpHeatFlux
operator for calculate heat flux and assemble to right hand side
Definition: ThermalElement.hpp:380
ThermalElement::OpConvectionLhs::hoGeometry
bool hoGeometry
Definition: ThermalElement.hpp:530
ThermalElement::OpThermalLhs::OpThermalLhs
OpThermalLhs(const std::string field_name, Mat _A, BlockData &data, CommonData &common_data)
Definition: ThermalElement.hpp:306
ThermalElement::TimeSeriesMonitor::tempPtr
boost::shared_ptr< VectorDouble > tempPtr
Definition: ThermalElement.hpp:592
ThermalElement::TimeSeriesMonitor::TimeSeriesMonitor
TimeSeriesMonitor(MoFEM::Interface &m_field, const std::string series_name, const std::string temp_name, std::vector< std::array< double, 3 >> eval_points={})
Definition: ThermalElement.hpp:596
ThermalElement::OpGetGradAtGaussPts::commonData
CommonData & commonData
Definition: ThermalElement.hpp:158
ThermalElement::CommonData::getGradAtGaussPts
ublas::matrix_row< MatrixDouble > getGradAtGaussPts(const int gg)
Definition: ThermalElement.hpp:148
A
constexpr AssemblyType A
Definition: operators_tests.cpp:30
ThermalElement::feRhs
MyVolumeFE feRhs
cauclate right hand side for tetrahedral elements
Definition: ThermalElement.hpp:51
ThermalElement::OpConvectionRhs::OpConvectionRhs
OpConvectionRhs(const std::string field_name, Vec _F, ConvectionData &data, CommonData &common_data, bool ho_geometry=false)
Definition: ThermalElement.hpp:508
ThermalElement::OpConvectionLhs::doWork
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
calculate thermal convection term in the lhs of equations
Definition: ThermalElement.cpp:391
ThermalElement::OpGetGradAtGaussPts::OpGetGradAtGaussPts
OpGetGradAtGaussPts(const std::string field_name, CommonData &common_data)
Definition: ThermalElement.hpp:159
ThermalElement::OpRadiationLhs::commonData
CommonData & commonData
Definition: ThermalElement.hpp:418
ThermalElement::OpConvectionRhs::dAta
ConvectionData & dAta
Definition: ThermalElement.hpp:497
ThermalElement::OpGetGradAtGaussPts
operator to calculate temperature gradient at Gauss points
Definition: ThermalElement.hpp:155
ThermalElement::OpConvectionLhs
Definition: ThermalElement.hpp:526
ThermalElement::OpThermalLhs::commonData
CommonData & commonData
Definition: ThermalElement.hpp:297
ts_ctx
MoFEM::TsCtx * ts_ctx
Definition: level_set.cpp:1932
MoFEM::ForcesAndSourcesCore::UserDataOperator::OPROWCOL
@ OPROWCOL
operator doWork is executed on FE rows &columns
Definition: ForcesAndSourcesCore.hpp:569
ThermalElement::TimeSeriesMonitor::mask
BitRefLevel mask
Definition: ThermalElement.hpp:584
ThermalElement::feRadiationLhs
MyTriFE feRadiationLhs
Definition: ThermalElement.hpp:77
order
constexpr int order
Definition: dg_projection.cpp:18
ThermalElement::OpGetTetRateAtGaussPts::OpGetTetRateAtGaussPts
OpGetTetRateAtGaussPts(const std::string field_name, CommonData &common_data)
Definition: ThermalElement.hpp:251
MoFEM::DeprecatedCoreInterface
Deprecated interface functions.
Definition: DeprecatedCoreInterface.hpp:16
ThermalElement::MyVolumeFE::MyVolumeFE
MyVolumeFE(MoFEM::Interface &m_field)
Definition: ThermalElement.hpp:31
ThermalElement::getLoopFeFlux
MyTriFE & getLoopFeFlux()
Definition: ThermalElement.hpp:67
ThermalElement::TimeSeriesMonitor::SetPtsData
FieldEvaluatorInterface::SetPtsData SetPtsData
Definition: ThermalElement.hpp:589
ThermalElement::TimeSeriesMonitor::seriesName
const std::string seriesName
Definition: ThermalElement.hpp:582
ThermalElement::OpThermalLhs::dAta
BlockData & dAta
Definition: ThermalElement.hpp:296
ThermalElement::OpConvectionLhs::OpConvectionLhs
OpConvectionLhs(const std::string field_name, Mat _A, ConvectionData &data, bool ho_geometry=false)
Definition: ThermalElement.hpp:540
ThermalElement::OpThermalLhs::OpThermalLhs
OpThermalLhs(const std::string field_name, BlockData &data, CommonData &common_data)
Definition: ThermalElement.hpp:299
ThermalElement::getLoopFeConvectionLhs
MyTriFE & getLoopFeConvectionLhs()
Definition: ThermalElement.hpp:74
FEMethod
ThermalElement::OpHeatFlux::F
Vec F
Definition: ThermalElement.hpp:392
ThermalElement::OpThermalLhs::transK
MatrixDouble transK
Definition: ThermalElement.hpp:312
ThermalElement::OpThermalRhs::commonData
CommonData & commonData
Definition: ThermalElement.hpp:264
ThermalElement::OpGetFieldAtGaussPts::doWork
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
operator calculating temperature and rate of temperature
Definition: ThermalElement.hpp:190
ThermalElement::OpThermalLhs::K
MatrixDouble K
Definition: ThermalElement.hpp:312
ThermalElement::commonData
CommonData commonData
Definition: ThermalElement.hpp:152
ThermalElement::TimeSeriesMonitor::VolEle
VolumeElementForcesAndSourcesCore VolEle
Definition: ThermalElement.hpp:587
ThermalElement::RadiationData::aMbienttEmp
double aMbienttEmp
Definition: ThermalElement.hpp:133
ThermalElement::setThermalFluxFiniteElementRhsOperators
MoFEMErrorCode setThermalFluxFiniteElementRhsOperators(string field_name, Vec &F, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS")
this function is used in case of stationary problem for heat flux terms
Definition: ThermalElement.cpp:724
MoFEM
implementation of Data Operators for Forces and Sources
Definition: Common.hpp:10
ThermalElement::BlockData
data for calculation heat conductivity and heat capacity elements
Definition: ThermalElement.hpp:92
ThermalElement::MyTriFE::MyTriFE
MyTriFE(MoFEM::Interface &m_field)
Definition: ThermalElement.hpp:61
ThermalElement::TimeSeriesMonitor::dataFieldEval
boost::shared_ptr< SetPtsData > dataFieldEval
Definition: ThermalElement.hpp:591
ThermalElement::OpThermalRhs::useTsF
bool useTsF
Definition: ThermalElement.hpp:265
MoFEM::ForcesAndSourcesCore::UserDataOperator
Definition: ForcesAndSourcesCore.hpp:549
MoFEM::FaceElementForcesAndSourcesCore::UserDataOperator
default operator for TRI element
Definition: FaceElementForcesAndSourcesCore.hpp:94
ThermalElement::OpRadiationRhs::OpRadiationRhs
OpRadiationRhs(const std::string field_name, Vec _F, RadiationData &data, CommonData &common_data, bool ho_geometry=false)
Definition: ThermalElement.hpp:471
ThermalElement::OpRadiationLhs::OpRadiationLhs
OpRadiationLhs(const std::string field_name, RadiationData &data, CommonData &common_data, bool ho_geometry=false)
Definition: ThermalElement.hpp:423
ThermalElement::OpHeatCapacityLhs::commonData
CommonData & commonData
Definition: ThermalElement.hpp:357
convert.type
type
Definition: convert.py:64
ThermalElement::OpHeatFlux::OpHeatFlux
OpHeatFlux(const std::string field_name, Vec _F, FluxData &data, bool ho_geometry=false)
Definition: ThermalElement.hpp:393
ThermalElement::OpThermalRhs
Definition: ThermalElement.hpp:260
ThermalElement::OpGetFieldAtGaussPts::OpGetFieldAtGaussPts
OpGetFieldAtGaussPts(const std::string field_name, VectorDouble &field_at_gauss_pts)
Definition: ThermalElement.hpp:180
ThermalElement::CommonData
common data used by volume elements
Definition: ThermalElement.hpp:144
ThermalElement::OpThermalLhs
Definition: ThermalElement.hpp:293
ThermalElement::OpHeatCapacityRhs::Nf
VectorDouble Nf
Definition: ThermalElement.hpp:339
ThermalElement::ConvectionData::tEmperature
double tEmperature
Definition: ThermalElement.hpp:118
ThermalElement::MyVolumeFE
definition of volume element
Definition: ThermalElement.hpp:30
ThermalElement::OpConvectionRhs
operator to calculate convection therms on body surface and assemble to rhs of equations
Definition: ThermalElement.hpp:492
ThermalElement::OpConvectionRhs::doWork
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
Definition: ThermalElement.cpp:345
ThermalElement::setTimeSteppingProblem
MoFEMErrorCode setTimeSteppingProblem(string field_name, string rate_name, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS")
set up operators for unsteady heat flux; convection; radiation problem
Definition: ThermalElement.cpp:774
ThermalElement::OpRadiationLhs::doWork
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
calculate thermal radiation term in the lhs of equations(Tangent Matrix) for transient Thermal Proble...
Definition: ThermalElement.cpp:240
ThermalElement::OpHeatCapacityLhs::dAta
BlockData & dAta
Definition: ThermalElement.hpp:356
ThermalElement::MyTriFE
define surface element
Definition: ThermalElement.hpp:60
ThermalElement::ConvectionData::cOnvection
double cOnvection
Definition: ThermalElement.hpp:117
ThermalElement::OpThermalRhs::doWork
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
calculate thermal conductivity matrix
Definition: ThermalElement.cpp:38
ThermalElement::mField
MoFEM::Interface & mField
Definition: ThermalElement.hpp:83
SetPtsData
FieldEvaluatorInterface::SetPtsData SetPtsData
Definition: dynamic_first_order_con_law.cpp:37
ThermalElement::OpConvectionRhs::commonData
CommonData & commonData
Definition: ThermalElement.hpp:496
ThermalElement::OpHeatCapacityRhs::OpHeatCapacityRhs
OpHeatCapacityRhs(const std::string field_name, BlockData &data, CommonData &common_data)
Definition: ThermalElement.hpp:333
ThermalElement::OpConvectionRhs::OpConvectionRhs
OpConvectionRhs(const std::string field_name, ConvectionData &data, CommonData &common_data, bool ho_geometry=false)
Definition: ThermalElement.hpp:500
ThermalElement::OpGetTriTemperatureAtGaussPts::OpGetTriTemperatureAtGaussPts
OpGetTriTemperatureAtGaussPts(const std::string field_name, CommonData &common_data)
Definition: ThermalElement.hpp:240
ThermalElement::OpRadiationLhs::transN
MatrixDouble transN
Definition: ThermalElement.hpp:438
MoFEM::FaceElementForcesAndSourcesCore
Face finite element.
Definition: FaceElementForcesAndSourcesCore.hpp:23
ThermalElement::getLoopFeConvectionRhs
MyTriFE & getLoopFeConvectionRhs()
Definition: ThermalElement.hpp:71
ThermalElement::addThermalFluxElement
MoFEMErrorCode addThermalFluxElement(const std::string field_name, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS")
add heat flux element
Definition: ThermalElement.cpp:574
ThermalElement::OpGetTetRateAtGaussPts
operator to calculate temperature rate at Gauss pts
Definition: ThermalElement.hpp:249
ThermalElement::setThermalFiniteElementRhsOperators
MoFEMErrorCode setThermalFiniteElementRhsOperators(string field_name, Vec &F)
this function is used in case of stationary problem to set elements for rhs
Definition: ThermalElement.cpp:699
ThermalElement::feFlux
MyTriFE feFlux
Definition: ThermalElement.hpp:66
ThermalElement::BlockData::tEts
Range tEts
contains elements in block set
Definition: ThermalElement.hpp:97
ThermalElement::OpHeatFlux::Nf
VectorDouble Nf
Definition: ThermalElement.hpp:399
ThermalElement::feConvectionLhs
MyTriFE feConvectionLhs
Definition: ThermalElement.hpp:70
ThermalElement::OpGetFieldAtGaussPts::fieldAtGaussPts
VectorDouble & fieldAtGaussPts
Definition: ThermalElement.hpp:179
ThermalElement::OpRadiationLhs::hoGeometry
bool hoGeometry
Definition: ThermalElement.hpp:420
MoFEM::VolumeElementForcesAndSourcesCore
Volume finite element base.
Definition: VolumeElementForcesAndSourcesCore.hpp:26
ThermalElement::OpConvectionLhs::OpConvectionLhs
OpConvectionLhs(const std::string field_name, ConvectionData &data, bool ho_geometry=false)
Definition: ThermalElement.hpp:533
ThermalElement::ThermalElement
ThermalElement(MoFEM::Interface &m_field)
Definition: ThermalElement.hpp:84
ThermalElement::OpGetGradAtGaussPts::doWork
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
operator calculating temperature gradients
Definition: ThermalElement.cpp:13
ThermalElement::TimeSeriesMonitor
TS monitore it records temperature at time steps.
Definition: ThermalElement.hpp:579
MoFEM::VolumeElementForcesAndSourcesCore::UserDataOperator
Definition: VolumeElementForcesAndSourcesCore.hpp:108
FaceElementForcesAndSourcesCore
EntData
EntitiesFieldData::EntData EntData
Definition: child_and_parent.cpp:37
field_name
constexpr auto field_name
Definition: poisson_2d_homogeneous.cpp:13
ThermalElement::MyTriFE::getRule
int getRule(int order)
Definition: ThermalElement.hpp:63
ThermalElement::OpHeatFlux::OpHeatFlux
OpHeatFlux(const std::string field_name, FluxData &data, bool ho_geometry=false)
Definition: ThermalElement.hpp:386
ThermalElement::OpRadiationLhs::useTsB
bool useTsB
Definition: ThermalElement.hpp:421
ThermalElement::setOfFluxes
std::map< int, FluxData > setOfFluxes
maps side set id with appropriate FluxData
Definition: ThermalElement.hpp:111
ThermalElement::OpHeatFlux::useTsF
bool useTsF
Definition: ThermalElement.hpp:385
ThermalElement::feLhs
MyVolumeFE feLhs
Definition: ThermalElement.hpp:53
ThermalElement::UpdateAndControl::tempName
const std::string tempName
Definition: ThermalElement.hpp:565
ThermalElement::UpdateAndControl
this calass is to control time stepping
Definition: ThermalElement.hpp:562
ThermalElement::CommonData::temperatureAtGaussPts
VectorDouble temperatureAtGaussPts
Definition: ThermalElement.hpp:145
ThermalElement::RadiationData::tRis
Range tRis
Definition: ThermalElement.hpp:135
Range
ThermalElement::TimeSeriesMonitor::postProcess
MoFEMErrorCode postProcess()
Definition: ThermalElement.cpp:454
ThermalElement::OpHeatCapacityLhs::M
MatrixDouble M
Definition: ThermalElement.hpp:364
ThermalElement::OpGetTetTemperatureAtGaussPts
operator to calculate temperature at Gauss pts
Definition: ThermalElement.hpp:227
ThermalElement::BlockData::initTemp
double initTemp
initial temperature
Definition: ThermalElement.hpp:96
ThermalElement
structure grouping operators and data used for thermal problems
Definition: ThermalElement.hpp:27
ThermalElement::setOfRadiation
std::map< int, RadiationData > setOfRadiation
Definition: ThermalElement.hpp:139
ThermalElement::OpGetFieldAtGaussPts
operator to calculate temperature and rate of temperature at Gauss points
Definition: ThermalElement.hpp:177
ThermalElement::feRadiationRhs
MyTriFE feRadiationRhs
Definition: ThermalElement.hpp:76
ThermalElement::FluxData::tRis
Range tRis
surface triangles where hate flux is applied
Definition: ThermalElement.hpp:108
ThermalElement::OpRadiationRhs::useTsF
bool useTsF
Definition: ThermalElement.hpp:462
ThermalElement::setThermalConvectionFiniteElementLhsOperators
MoFEMErrorCode setThermalConvectionFiniteElementLhsOperators(string field_name, Mat A, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS")
Definition: ThermalElement.cpp:758
UserDataOperator
ForcesAndSourcesCore::UserDataOperator UserDataOperator
Definition: HookeElement.hpp:75
ThermalElement::OpRadiationLhs::OpRadiationLhs
OpRadiationLhs(const std::string field_name, Mat _A, RadiationData &data, CommonData &common_data, bool ho_geometry=false)
Definition: ThermalElement.hpp:431
ThermalElement::OpThermalRhs::OpThermalRhs
OpThermalRhs(const std::string field_name, Vec _F, BlockData &data, CommonData &common_data)
Definition: ThermalElement.hpp:273
ThermalElement::CommonData::temperatureRateAtGaussPts
VectorDouble temperatureRateAtGaussPts
Definition: ThermalElement.hpp:146
ThermalElement::OpRadiationLhs::N
MatrixDouble N
Definition: ThermalElement.hpp:438
ThermalElement::MyVolumeFE::getRule
int getRule(int order)
it is used to calculate nb. of Gauss integration points
Definition: ThermalElement.hpp:49
ThermalElement::OpHeatFlux::dAta
FluxData & dAta
Definition: ThermalElement.hpp:383
MoFEM::Exceptions::ierr
static MoFEMErrorCodeGeneric< PetscErrorCode > ierr
Definition: Exceptions.hpp:76
ThermalElement::OpThermalRhs::Nf
VectorDouble Nf
Definition: ThermalElement.hpp:279
ThermalElement::addThermalRadiationElement
MoFEMErrorCode addThermalRadiationElement(const std::string field_name, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS")
add Non-linear Radiation element
Definition: ThermalElement.cpp:659
ThermalElement::OpGetTriTemperatureAtGaussPts
operator to calculate temperature at Gauss pts
Definition: ThermalElement.hpp:238
EigenMatrix::Vec
const FTensor::Tensor2< T, Dim, Dim > Vec
Definition: MatrixFunction.hpp:66
ThermalElement::OpHeatCapacityLhs::transM
MatrixDouble transM
Definition: ThermalElement.hpp:364
ThermalElement::OpRadiationRhs::doWork
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
calculate Transient Radiation condition on the right hand side residual
Definition: ThermalElement.cpp:294
ThermalElement::UpdateAndControl::rateName
const std::string rateName
Definition: ThermalElement.hpp:566
ThermalElement::OpRadiationRhs::Nf
VectorDouble Nf
Definition: ThermalElement.hpp:478
MoFEM::Types::VectorDouble
UBlasVector< double > VectorDouble
Definition: Types.hpp:68
ThermalElement::OpRadiationRhs::commonData
CommonData & commonData
Definition: ThermalElement.hpp:459
ThermalElement::ConvectionData
data for convection
Definition: ThermalElement.hpp:116
ThermalElement::OpThermalLhs::A
Mat A
Definition: ThermalElement.hpp:305
ThermalElement::OpConvectionRhs::hoGeometry
bool hoGeometry
Definition: ThermalElement.hpp:498
ThermalElement::OpThermalRhs::F
Vec F
Definition: ThermalElement.hpp:272
ThermalElement::OpRadiationLhs::dAta
RadiationData & dAta
Definition: ThermalElement.hpp:419
MoFEM::Types::BitRefLevel
std::bitset< BITREFLEVEL_SIZE > BitRefLevel
Bit structure attached to each entity identifying to what mesh entity is attached.
Definition: Types.hpp:40
ThermalElement::TimeSeriesMonitor::tempName
const std::string tempName
Definition: ThermalElement.hpp:583
ThermalElement::UpdateAndControl::postProcess
MoFEMErrorCode postProcess()
Definition: ThermalElement.cpp:449
ThermalElement::setThermalConvectionFiniteElementRhsOperators
MoFEMErrorCode setThermalConvectionFiniteElementRhsOperators(string field_name, Vec &F, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS")
Definition: ThermalElement.cpp:740
MoFEMFunctionBeginHot
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:453
ThermalElement::CommonData::gradAtGaussPts
MatrixDouble gradAtGaussPts
Definition: ThermalElement.hpp:147
ThermalElement::setThermalFiniteElementLhsOperators
MoFEMErrorCode setThermalFiniteElementLhsOperators(string field_name, Mat A)
this function is used in case of stationary heat conductivity problem for lhs
Definition: ThermalElement.cpp:713
ThermalElement::OpConvectionRhs::useTsF
bool useTsF
Definition: ThermalElement.hpp:499
ThermalElement::OpHeatFlux::doWork
MoFEMErrorCode doWork(int side, EntityType type, EntitiesFieldData::EntData &data)
calculate heat flux
Definition: ThermalElement.cpp:197
ThermalElement::OpHeatCapacityLhs::doWork
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, EntitiesFieldData::EntData &row_data, EntitiesFieldData::EntData &col_data)
calculate heat capacity matrix
Definition: ThermalElement.cpp:151
ThermalElement::UpdateAndControl::UpdateAndControl
UpdateAndControl(MoFEM::Interface &m_field, const std::string temp_name, const std::string rate_name)
Definition: ThermalElement.hpp:568
OP
convert.int
int
Definition: convert.py:64
ThermalElement::FluxData::dAta
HeatFluxCubitBcData dAta
Definition: ThermalElement.hpp:106
ThermalElement::RadiationData
data for radiation
Definition: ThermalElement.hpp:129
ThermalElement::OpHeatCapacityLhs::OpHeatCapacityLhs
OpHeatCapacityLhs(const std::string field_name, BlockData &data, CommonData &common_data)
Definition: ThermalElement.hpp:358
ThermalElement::feConvectionRhs
MyTriFE feConvectionRhs
Definition: ThermalElement.hpp:69
F
@ F
Definition: free_surface.cpp:394
MoFEM::ForcesAndSourcesCore::UserDataOperator::OPROW
@ OPROW
operator doWork function is executed on FE rows
Definition: ForcesAndSourcesCore.hpp:567
ThermalElement::OpRadiationLhs::A
Mat A
Definition: ThermalElement.hpp:430
ThermalElement::OpHeatCapacityLhs
operator to calculate left hand side of heat capacity terms
Definition: ThermalElement.hpp:353