v0.9.1
Files | Classes | Functions
Thermal element
Collaboration diagram for Thermal element:

Files

file  ThermalElement.cpp
 
file  ThermalElement.hpp
 Operators and data structures for thermal analysis.
 
file  ThermalStressElement.hpp
 Implementation of thermal stresses element.
 
file  thermal_steady.cpp
 Example of steady thermal analysis.
 
file  thermal_unsteady.cpp
 Example of thermal unsteady analyze.
 

Classes

struct  MixTransport::MixTransportElement::BlockData
 data for evaluation of het conductivity and heat capacity elements More...
 
struct  ThermalElement
 structure grouping operators and data used for thermal problemsIn order to assemble matrices and right hand vectors, the loops over elements, entities within the element and finally loop over integration points are executed. More...
 
struct  ThermalElement::TimeSeriesMonitor
 TS monitore it records temperature at time steps. More...
 
struct  ThermalElement::UpdateAndControl
 this calass is to control time steppingIt is used to save data for temperature rate vector to MoFEM field. More...
 
struct  ThermalElement::OpConvectionLhs
 
struct  ThermalElement::OpConvectionRhs
 operator to calculate convection therms on body surface and assemble to rhs of equations More...
 
struct  ThermalElement::OpRadiationRhs
 operator to calculate radiation therms on body surface and assemble to rhs of transient equations(Residual Vector) More...
 
struct  ThermalElement::OpRadiationLhs
 
struct  ThermalElement::OpHeatFlux
 operator for calculate heat flux and assemble to right hand side More...
 
struct  ThermalElement::OpHeatCapacityLhs
 operator to calculate left hand side of heat capacity terms More...
 
struct  ThermalElement::OpHeatCapacityRhs
 operator to calculate right hand side of heat capacity terms More...
 
struct  ThermalElement::OpThermalLhs
 
struct  ThermalElement::OpThermalRhs
 
struct  ThermalElement::OpGetTetRateAtGaussPts
 operator to calculate temperature rate at Gauss pts More...
 
struct  ThermalElement::OpGetTriTemperatureAtGaussPts
 operator to calculate temperature at Gauss pts More...
 
struct  ThermalElement::OpGetTetTemperatureAtGaussPts
 operator to calculate temperature at Gauss pts More...
 
struct  ThermalElement::OpGetFieldAtGaussPts< OP >
 operator to calculate temperature and rate of temperature at Gauss points More...
 
struct  ThermalElement::OpGetGradAtGaussPts
 operator to calculate temperature gradient at Gauss points More...
 
struct  ThermalElement::CommonData
 common data used by volume elements More...
 
struct  ThermalElement::RadiationData
 data for radiation More...
 
struct  ThermalElement::ConvectionData
 data for convection More...
 
struct  ThermalElement::FluxData
 data for calculation heat flux More...
 
struct  ThermalElement::BlockData
 data for calculation heat conductivity and heat capacity elements More...
 
struct  ThermalElement::MyTriFE
 define surface element More...
 
struct  ThermalElement::MyVolumeFE
 definition of volume element More...
 
struct  ThermalStressElement
 Implentation of thermal stress element. More...
 
struct  ThermalStressElement::OpThermalStressRhs
 
struct  ThermalStressElement::OpGetTemperatureAtGaussPts
 
struct  ThermalStressElement::CommonData
 
struct  ThermalStressElement::BlockData
 
struct  ThermalStressElement::MyVolumeFE
 

Functions

MoFEMErrorCode ThermalElement::addThermalElements (const std::string field_name, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS")
 add thermal element on tetsIt get data from block set and define element in moab w More...
 
MoFEMErrorCode ThermalElement::addThermalFluxElement (const std::string field_name, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS")
 add heat flux elementIt get data from heat flux set and define element in moab. Alternatively uses block set with name HEAT_FLUX. More...
 
MoFEMErrorCode ThermalElement::addThermalConvectionElement (const std::string field_name, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS")
 add convection elementIt get data from convection set and define element in moab. Alternatively uses block set with name CONVECTION. More...
 
MoFEMErrorCode ThermalElement::addThermalRadiationElement (const std::string field_name, const std::string mesh_nodals_positions="MESH_NODE_POSITIONS")
 add Non-linear Radiation elementIt get data from Radiation set and define element in moab. Alternatively uses block set with name RADIATION. More...
 
MoFEMErrorCode ThermalElement::setThermalFiniteElementRhsOperators (string field_name, Vec &F)
 this function is used in case of stationary problem to set elements for rhs More...
 
MoFEMErrorCode ThermalElement::setThermalFiniteElementLhsOperators (string field_name, Mat A)
 this function is used in case of stationary heat conductivity problem for lhs More...
 
MoFEMErrorCode ThermalElement::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 More...
 
MoFEMErrorCode ThermalElement::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 More...
 
MoFEMErrorCode ThermalElement::setTimeSteppingProblem (TsCtx &ts_ctx, 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 More...
 

Detailed Description

Function Documentation

◆ addThermalConvectionElement()

MoFEMErrorCode ThermalElement::addThermalConvectionElement ( const std::string  field_name,
const std::string  mesh_nodals_positions = "MESH_NODE_POSITIONS" 
)

add convection elementIt get data from convection set and define element in moab. Alternatively uses block set with name CONVECTION.

Parameters
fieldname
nameof mesh nodal positions (if not defined nodal coordinates are used)

Definition at line 573 of file ThermalElement.cpp.

574  {
576 
577  CHKERR mField.add_finite_element("THERMAL_CONVECTION_FE", MF_ZERO);
578  CHKERR mField.modify_finite_element_add_field_row("THERMAL_CONVECTION_FE",
579  field_name);
580  CHKERR mField.modify_finite_element_add_field_col("THERMAL_CONVECTION_FE",
581  field_name);
582  CHKERR mField.modify_finite_element_add_field_data("THERMAL_CONVECTION_FE",
583  field_name);
584  if (mField.check_field(mesh_nodals_positions)) {
585  CHKERR mField.modify_finite_element_add_field_data("THERMAL_CONVECTION_FE",
586  mesh_nodals_positions);
587  }
588 
589  // this is alternative method for setting boundary conditions, to bypass bu
590  // in cubit file reader. not elegant, but good enough
592  if (it->getName().compare(0, 10, "CONVECTION") == 0) {
593 
594  std::vector<double> data;
595  CHKERR it->getAttributes(data);
596  if (data.size() != 2) {
597  SETERRQ(PETSC_COMM_SELF, 1, "Data inconsistency");
598  }
599  setOfConvection[it->getMeshsetId()].cOnvection = data[0];
600  setOfConvection[it->getMeshsetId()].tEmperature = data[1];
601  CHKERR mField.get_moab().get_entities_by_type(
602  it->meshset, MBTRI, setOfConvection[it->getMeshsetId()].tRis, true);
604  setOfConvection[it->getMeshsetId()].tRis, MBTRI,
605  "THERMAL_CONVECTION_FE");
606  }
607  }
608 
610 }
virtual MoFEMErrorCode modify_finite_element_add_field_col(const std::string &fe_name, const std::string &name_row)=0
set field col which finite element use
virtual MoFEMErrorCode add_ents_to_finite_element_by_type(const EntityHandle entities, const EntityType type, const std::string &name, const bool recursive=true)=0
add entities to finite element
virtual moab::Interface & get_moab()=0
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:506
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:513
std::map< int, ConvectionData > setOfConvection
MoFEM::Interface & mField
virtual MoFEMErrorCode add_finite_element(const std::string &fe_name, enum MoFEMTypes bh=MF_EXCL, int verb=DEFAULT_VERBOSITY)=0
add finite element
#define _IT_CUBITMESHSETS_BY_SET_TYPE_FOR_LOOP_(MESHSET_MANAGER, CUBITBCTYPE, IT)
Iterator that loops over a specific Cubit MeshSet having a particular BC meshset in a moFEM field.
#define CHKERR
Inline error check.
Definition: definitions.h:601
virtual MoFEMErrorCode modify_finite_element_add_field_data(const std::string &fe_name, const std::string &name_filed)=0
set finite element field data
virtual bool check_field(const std::string &name) const =0
check if field is in database
virtual MoFEMErrorCode modify_finite_element_add_field_row(const std::string &fe_name, const std::string &name_row)=0
set field row which finite element use

◆ addThermalElements()

MoFEMErrorCode ThermalElement::addThermalElements ( const std::string  field_name,
const std::string  mesh_nodals_positions = "MESH_NODE_POSITIONS" 
)

add thermal element on tetsIt get data from block set and define element in moab w

Parameters
fieldname
nameof mesh nodal positions (if not defined nodal coordinates are used)

Definition at line 479 of file ThermalElement.cpp.

480  {
482 
483  CHKERR mField.add_finite_element("THERMAL_FE", MF_ZERO);
484  CHKERR mField.modify_finite_element_add_field_row("THERMAL_FE", field_name);
485  CHKERR mField.modify_finite_element_add_field_col("THERMAL_FE", field_name);
486  CHKERR mField.modify_finite_element_add_field_data("THERMAL_FE", field_name);
487  if (mField.check_field(mesh_nodals_positions)) {
489  mesh_nodals_positions);
490  }
491 
492  // takes skin of block of entities
493  // Skinner skin(&mField.get_moab());
494  // loop over all blocksets and get data which name is FluidPressure
496  mField, BLOCKSET | MAT_THERMALSET, it)) {
497 
498  Mat_Thermal temp_data;
499  ierr = it->getAttributeDataStructure(temp_data);
500 
501  setOfBlocks[it->getMeshsetId()].cOnductivity_mat.resize(
502  3, 3); //(3X3) conductivity matrix
503  setOfBlocks[it->getMeshsetId()].cOnductivity_mat.clear();
504  setOfBlocks[it->getMeshsetId()].cOnductivity_mat(0, 0) =
505  temp_data.data.Conductivity;
506  setOfBlocks[it->getMeshsetId()].cOnductivity_mat(1, 1) =
507  temp_data.data.Conductivity;
508  setOfBlocks[it->getMeshsetId()].cOnductivity_mat(2, 2) =
509  temp_data.data.Conductivity;
510  // setOfBlocks[it->getMeshsetId()].cOnductivity =
511  // temp_data.data.Conductivity;
512  setOfBlocks[it->getMeshsetId()].cApacity = temp_data.data.HeatCapacity;
513  if (temp_data.data.User2 != 0) {
514  setOfBlocks[it->getMeshsetId()].initTemp = temp_data.data.User2;
515  }
516  CHKERR mField.get_moab().get_entities_by_type(
517  it->meshset, MBTET, setOfBlocks[it->getMeshsetId()].tEts, true);
519  setOfBlocks[it->getMeshsetId()].tEts, MBTET, "THERMAL_FE");
520  }
521 
523 }
virtual MoFEMErrorCode modify_finite_element_add_field_col(const std::string &fe_name, const std::string &name_row)=0
set field col which finite element use
virtual MoFEMErrorCode add_ents_to_finite_element_by_type(const EntityHandle entities, const EntityType type, const std::string &name, const bool recursive=true)=0
add entities to finite element
virtual moab::Interface & get_moab()=0
std::map< int, BlockData > setOfBlocks
maps block set id with appropriate BlockData
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:482
MoFEM::Interface & mField
Thermal material data structure.
#define _IT_CUBITMESHSETS_BY_BCDATA_TYPE_FOR_LOOP_(MESHSET_MANAGER, CUBITBCTYPE, IT)
Iterator that loops over a specific Cubit MeshSet in a moFEM field.
block name is "MAT_THERMAL"
Definition: definitions.h:229
virtual MoFEMErrorCode add_finite_element(const std::string &fe_name, enum MoFEMTypes bh=MF_EXCL, int verb=DEFAULT_VERBOSITY)=0
add finite element
#define CHKERR
Inline error check.
Definition: definitions.h:601
virtual MoFEMErrorCode modify_finite_element_add_field_data(const std::string &fe_name, const std::string &name_filed)=0
set finite element field data
virtual bool check_field(const std::string &name) const =0
check if field is in database
virtual MoFEMErrorCode modify_finite_element_add_field_row(const std::string &fe_name, const std::string &name_row)=0
set field row which finite element use
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:412

◆ addThermalFluxElement()

MoFEMErrorCode ThermalElement::addThermalFluxElement ( const std::string  field_name,
const std::string  mesh_nodals_positions = "MESH_NODE_POSITIONS" 
)

add heat flux elementIt get data from heat flux set and define element in moab. Alternatively uses block set with name HEAT_FLUX.

Parameters
fieldname
nameof mesh nodal positions (if not defined nodal coordinates are used)

Definition at line 526 of file ThermalElement.cpp.

527  {
529 
530  CHKERR mField.add_finite_element("THERMAL_FLUX_FE", MF_ZERO);
532  field_name);
534  field_name);
536  field_name);
537  if (mField.check_field(mesh_nodals_positions)) {
539  mesh_nodals_positions);
540  }
541 
543  it)) {
544  CHKERR it->getBcDataStructure(setOfFluxes[it->getMeshsetId()].dAta);
545  CHKERR mField.get_moab().get_entities_by_type(
546  it->meshset, MBTRI, setOfFluxes[it->getMeshsetId()].tRis, true);
548  setOfFluxes[it->getMeshsetId()].tRis, MBTRI, "THERMAL_FLUX_FE");
549  }
550 
551  // this is alternative method for setting boundary conditions, to bypass bu
552  // in cubit file reader. not elegant, but good enough
554  if (it->getName().compare(0, 9, "HEAT_FLUX") == 0) {
555  std::vector<double> data;
556  CHKERR it->getAttributes(data);
557  if (data.size() != 1) {
558  SETERRQ(PETSC_COMM_SELF, 1, "Data inconsistency");
559  }
560  strcpy(setOfFluxes[it->getMeshsetId()].dAta.data.name, "HeatFlu");
561  setOfFluxes[it->getMeshsetId()].dAta.data.flag1 = 1;
562  setOfFluxes[it->getMeshsetId()].dAta.data.value1 = data[0];
563  CHKERR mField.get_moab().get_entities_by_type(
564  it->meshset, MBTRI, setOfFluxes[it->getMeshsetId()].tRis, true);
566  setOfFluxes[it->getMeshsetId()].tRis, MBTRI, "THERMAL_FLUX_FE");
567  }
568  }
569 
571 }
std::map< int, FluxData > setOfFluxes
maps side set id with appropriate FluxData
virtual MoFEMErrorCode modify_finite_element_add_field_col(const std::string &fe_name, const std::string &name_row)=0
set field col which finite element use
virtual MoFEMErrorCode add_ents_to_finite_element_by_type(const EntityHandle entities, const EntityType type, const std::string &name, const bool recursive=true)=0
add entities to finite element
virtual moab::Interface & get_moab()=0
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:482
MoFEM::Interface & mField
#define _IT_CUBITMESHSETS_BY_BCDATA_TYPE_FOR_LOOP_(MESHSET_MANAGER, CUBITBCTYPE, IT)
Iterator that loops over a specific Cubit MeshSet in a moFEM field.
virtual MoFEMErrorCode add_finite_element(const std::string &fe_name, enum MoFEMTypes bh=MF_EXCL, int verb=DEFAULT_VERBOSITY)=0
add finite element
#define _IT_CUBITMESHSETS_BY_SET_TYPE_FOR_LOOP_(MESHSET_MANAGER, CUBITBCTYPE, IT)
Iterator that loops over a specific Cubit MeshSet having a particular BC meshset in a moFEM field.
#define CHKERR
Inline error check.
Definition: definitions.h:601
virtual MoFEMErrorCode modify_finite_element_add_field_data(const std::string &fe_name, const std::string &name_filed)=0
set finite element field data
virtual bool check_field(const std::string &name) const =0
check if field is in database
virtual MoFEMErrorCode modify_finite_element_add_field_row(const std::string &fe_name, const std::string &name_row)=0
set field row which finite element use
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:412

◆ addThermalRadiationElement()

MoFEMErrorCode ThermalElement::addThermalRadiationElement ( const std::string  field_name,
const std::string  mesh_nodals_positions = "MESH_NODE_POSITIONS" 
)

add Non-linear Radiation elementIt get data from Radiation set and define element in moab. Alternatively uses block set with name RADIATION.

Parameters
fieldname
nameof mesh nodal positions (if not defined nodal coordinates are used)

Definition at line 612 of file ThermalElement.cpp.

613  {
615 
616  CHKERR mField.add_finite_element("THERMAL_RADIATION_FE", MF_ZERO);
617  CHKERR mField.modify_finite_element_add_field_row("THERMAL_RADIATION_FE",
618  field_name);
619  CHKERR mField.modify_finite_element_add_field_col("THERMAL_RADIATION_FE",
620  field_name);
621  CHKERR mField.modify_finite_element_add_field_data("THERMAL_RADIATION_FE",
622  field_name);
623  if (mField.check_field(mesh_nodals_positions)) {
624  CHKERR mField.modify_finite_element_add_field_data("THERMAL_RADIATION_FE",
625  mesh_nodals_positions);
626  }
627 
628  // this is alternative method for setting boundary conditions, to bypass bu
629  // in cubit file reader. not elegant, but good enough
631  if (it->getName().compare(0, 9, "RADIATION") == 0) {
632  std::vector<double> data;
633  ierr = it->getAttributes(data);
634  if (data.size() != 3) {
635  SETERRQ(PETSC_COMM_SELF, 1, "Data inconsistency");
636  }
637  setOfRadiation[it->getMeshsetId()].sIgma = data[0];
638  setOfRadiation[it->getMeshsetId()].eMissivity = data[1];
639  setOfRadiation[it->getMeshsetId()].aMbienttEmp = data[2];
640  CHKERR mField.get_moab().get_entities_by_type(
641  it->meshset, MBTRI, setOfRadiation[it->getMeshsetId()].tRis, true);
643  setOfRadiation[it->getMeshsetId()].tRis, MBTRI,
644  "THERMAL_RADIATION_FE");
645  }
646  }
647 
649 }
virtual MoFEMErrorCode modify_finite_element_add_field_col(const std::string &fe_name, const std::string &name_row)=0
set field col which finite element use
virtual MoFEMErrorCode add_ents_to_finite_element_by_type(const EntityHandle entities, const EntityType type, const std::string &name, const bool recursive=true)=0
add entities to finite element
virtual moab::Interface & get_moab()=0
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:482
MoFEM::Interface & mField
std::map< int, RadiationData > setOfRadiation
virtual MoFEMErrorCode add_finite_element(const std::string &fe_name, enum MoFEMTypes bh=MF_EXCL, int verb=DEFAULT_VERBOSITY)=0
add finite element
#define _IT_CUBITMESHSETS_BY_SET_TYPE_FOR_LOOP_(MESHSET_MANAGER, CUBITBCTYPE, IT)
Iterator that loops over a specific Cubit MeshSet having a particular BC meshset in a moFEM field.
#define CHKERR
Inline error check.
Definition: definitions.h:601
virtual MoFEMErrorCode modify_finite_element_add_field_data(const std::string &fe_name, const std::string &name_filed)=0
set finite element field data
virtual bool check_field(const std::string &name) const =0
check if field is in database
virtual MoFEMErrorCode modify_finite_element_add_field_row(const std::string &fe_name, const std::string &name_row)=0
set field row which finite element use
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:412

◆ setThermalFiniteElementLhsOperators()

MoFEMErrorCode ThermalElement::setThermalFiniteElementLhsOperators ( string  field_name,
Mat  A 
)

this function is used in case of stationary heat conductivity problem for lhs

Definition at line 666 of file ThermalElement.cpp.

666  {
668  std::map<int, BlockData>::iterator sit = setOfBlocks.begin();
669  for (; sit != setOfBlocks.end(); sit++) {
670  // add finite elemen
671  feLhs.getOpPtrVector().push_back(
672  new OpThermalLhs(field_name, A, sit->second, commonData));
673  }
675 }
CommonData commonData
std::map< int, BlockData > setOfBlocks
maps block set id with appropriate BlockData
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:482
boost::ptr_vector< UserDataOperator > & getOpPtrVector()
Use to push back operator for row operator.
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:412
MyVolumeFE feLhs

◆ setThermalFiniteElementRhsOperators()

MoFEMErrorCode ThermalElement::setThermalFiniteElementRhsOperators ( string  field_name,
Vec &  F 
)

this function is used in case of stationary problem to set elements for rhs

Definition at line 652 of file ThermalElement.cpp.

652  {
654  std::map<int, BlockData>::iterator sit = setOfBlocks.begin();
655  feRhs.getOpPtrVector().push_back(
656  new OpGetGradAtGaussPts(field_name, commonData));
657  for (; sit != setOfBlocks.end(); sit++) {
658  // add finite element
659  feRhs.getOpPtrVector().push_back(
660  new OpThermalRhs(field_name, F, sit->second, commonData));
661  }
663 }
CommonData commonData
std::map< int, BlockData > setOfBlocks
maps block set id with appropriate BlockData
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:482
MyVolumeFE feRhs
cauclate right hand side for tetrahedral elements
boost::ptr_vector< UserDataOperator > & getOpPtrVector()
Use to push back operator for row operator.
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:412

◆ setThermalFluxFiniteElementRhsOperators()

MoFEMErrorCode ThermalElement::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 at line 677 of file ThermalElement.cpp.

678  {
680  bool hoGeometry = false;
681  if (mField.check_field(mesh_nodals_positions)) {
682  hoGeometry = true;
683  }
684  std::map<int, FluxData>::iterator sit = setOfFluxes.begin();
685  for (; sit != setOfFluxes.end(); sit++) {
686  // add finite element
687  feFlux.getOpPtrVector().push_back(
688  new OpHeatFlux(field_name, F, sit->second, hoGeometry));
689  }
691 }
std::map< int, FluxData > setOfFluxes
maps side set id with appropriate FluxData
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:482
MoFEM::Interface & mField
virtual bool check_field(const std::string &name) const =0
check if field is in database
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:412

◆ setTimeSteppingProblem() [1/2]

MoFEMErrorCode ThermalElement::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

◆ setTimeSteppingProblem() [2/2]

MoFEMErrorCode ThermalElement::setTimeSteppingProblem ( TsCtx &  ts_ctx,
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