ThermoFemPhysics
The GeMA Thermo FEM Physics Plugin
Loading...
Searching...
No Matches
GmpThermoFemPhysics Class Referenceabstract

Basic class for the standard heat physics plugin object. More...

#include <gmpThermoFemPhysics.h>

Inheritance diagram for GmpThermoFemPhysics:
Collaboration diagram for GmpThermoFemPhysics:

Public Types

enum  PhysicsAttributeIds { ISOPARAMETRIC_ID , HAS_ELEMENT_GENERATION_ID , HF_MODE_ID , HF_DIRECT_ID }
 IDs for physics attributes. More...
 
enum  StateVarIds { T_ID }
 IDs fo physics state vars. More...
 
enum  NodeAttributeIds { Q_NA_ID }
 IDs for physics node attributes. More...
 
enum  GaussAttributeIds { Q_GA_ID }
 IDs for physics Gauss attributes. More...
 
enum  ElementPropertyIds {
  K_ID , THICKNESS_ID , G_ID , RHO_ID ,
  CP_ID , NUM_PROPER_IDS
}
 IDs for physics element properties. More...
 
enum  BoundaryConditionIds { FIXED_T_BC_ID , FIXED_HF_BC_ID , CONVECTIVE_BC_ID , POINT_GENERATION_BC_ID }
 IDs for accepted boundary condition types. More...
 
enum  BoundaryConditionValueIds {
  BC_T_ID , BC_Q_ID , BC_QDIR_ID , BC_H_ID ,
  BC_TA_ID , BC_G_ID , BC_POS_ID
}
 IDs for property values from accepted boundary condition types. More...
 
- Public Types inherited from GmpFemPhysicsCommon
enum  DiscSetRequiredMode
 
enum  DerivedResultsRecoveryMode
 
typedef TList< Attribute > AttributeList
 
typedef TList< Value > ValueList
 
- Public Types inherited from GmpFemPhysics
enum  FemResultType
 
enum  FemSupportedParallelMethods
 

Public Member Functions

 GmpThermoFemPhysics (const char *pluginType, GmSimulationData *simulation, QString id, QString description, const GmLogCategory &logger)
 Constructor. Will be called by the plugin loading code.
 
virtual ~GmpThermoFemPhysics ()
 Destructor.
 
virtual const char * pluginName () const
 
virtual const char * pluginType () const
 
virtual const QVariantMap * physicsMetaDataMap ()
 Returns a pointer to the single Thermo Physics attribute map, built when the function is called for the first time.
 
virtual bool beforeElementStiffnessLoop (const GmpFemMatrixSet &elemMatrices, const GmpFemVectorSet &elemVectors)
 
virtual FemResultType fillElementData (const GmElement *e, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors)
 Fills the element stiffness matrix elemK for element 'e' taking into account only the conductivityy contribution. Other boundary condition contributions will be delayed until calls to fillElementDataForBc(). If internal heat generation is enabled, also calculates and fills elemF with the internal heat generation contribution to the load vector.
 
virtual FemResultType fillElementDataForBc (const GmElement *e, const GmBoundaryCondition *bc, int bcIndex, int bcListIndex, int border, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors)
 Fills the element stiffness matrix elemK and/or the force vector elemF for element 'e', taking into account convective heat transfer, fixed heat flux and/or point generation boundary conditions, as indicated by the bc parameter.
 
virtual bool fixedNodalDofsBc (QVector< int > &nodes, QVector< int > &dof, QVector< double > &values, bool *constantValues) const
 See comments on base class. Fills vectors with prescribed node temperatures.
 
virtual bool calcDerivedResults (bool nonLinearSolver)
 Calc heat flux on nodes and/or Gauss points.
 
virtual bool supportsStateDumping ()
 Tell the world that the temperature physics supports state dumping.
 
void fillConductivityMatrix (GmMatrix &K, const GmElement *e, const GmVector *ip, int ipIndex)
 Fills the conductivity matrix _kMat evaluating accessor at the integration point ip of element e (ncoord can be NULL if accessors do not accept user functions), taking in consideration that the accessor might return scalars or vectors.
 
- Public Member Functions inherited from GmpFemPhysicsCommon
 GmpFemPhysicsCommon (GmSimulationData *simulation, QString id, QString description, const GmpFemPhysicsCommonMaterialFactory *matFactory, const GmLogCategory &logger)
 
void printParameters (const GmLogCategory &logger)
 
const QVariantattribute (int id) const
 
GmValueAccessornodeAc () const
 
int nodeDim () const
 
bool isoParametric () const
 
int svCount () const
 
GmValueAccessorsvAc (int id) const
 
int baseDof (int id) const
 
GmCellAccessorpropertyAc (int id) const
 
bool constantProperty (int id) const
 
GmValueAccessornodeAttrAc (int id) const
 
GmCellAccessorcellAttrAc (int id) const
 
GmGaussAccessorgaussAttrAc (int id) const
 
const GmBoundaryConditionboundaryCondition (int id) const
 
const GmContactBoundaryConditioncontactCondition (int id) const
 
GmBoundaryConditionAccessorbcAc (int id) const
 
GmContactBoundaryConditionAccessorcontactAc (int id) const
 
bool constantBc (int id) const
 
bool constantContactBc (int id) const
 
const QVector< const GmBoundaryCondition * > & calcBoundaryConditions () const
 
GmValueAccessorloadAc (int loadId) const
 
GmDiscontinuityAccessordiscontinuityAc (int discId) const
 
GmSegmentCell2DIntersectionCoordAccessordiscontinuity2dIntersectionCoordAc () const
 
GmValueAccessorcloneSvAcWithDifferentUnit (int id, QString unitSystemName, QString defUnit) const
 
GmCellAccessorclonePropertyAcWithDifferentUnit (int id, QString unitSystemName, QString defUnit) const
 
GmValueAccessorcloneNodeAttrAcWithDifferentUnit (int id, QString unitSystemName, QString defUnit) const
 
GmCellAccessorcloneCellAttrAcWithDifferentUnit (int id, QString unitSystemName, QString defUnit) const
 
GmGaussAccessorcloneGaussAttrAcWithDifferentUnit (int id, QString unitSystemName, QString defUnit) const
 
const GmpFemPhysicsCommonMaterialmaterial (const GmElement *e) const
 
const QVector< GmpFemPhysicsCommonMaterial * > & materialList () const
 
bool calcDerivedResult (int recoveryMode, GmValueAccessor *nodeAc, GmGaussAccessor *gaussAc, int resultId=-1)
 
void fillElementNodeValues (const GmValueAccessor *ac, const GmElement *e, GmVector &v, int nv=-1) const
 
bool fillMissingNodeValues (GmValueAccessor *ac)
 
bool fillScalarFixedNodalBcLists (int bcId, int propertyId, int dofId, QVector< int > &nodes, QVector< int > &dof, QVector< double > &values, bool *constantValues) const
 
bool fillVectorFixedNodalBcLists (int bcId, int propertyId, int dofId, bool ignoreZeroValues, bool ignoreDefValues, QVector< int > &nodes, QVector< int > &dof, QVector< double > &values, bool *constantValues) const
 
bool fillMultiScalarFixedNodalBcLists (int bcId, const QVector< int > &propertyIds, int dofId, bool ignoreZeroValues, bool ignoreDefValues, QVector< int > &nodes, QVector< int > &dof, QVector< double > &values, bool *constantValues) const
 
virtual bool checkLoadedData ()
 
void addMaterialTranslation (const char *modelName, const char *physicsName, int modelIndex, bool defaultMaterial)
 
GmpFemPhysicsCommonMaterialmaterial (QString modelName) const
 
- Public Member Functions inherited from GmpFemPhysics
 GmpFemPhysics (GmSimulationData *simulation, QString id, QString description, const GmLogCategory &logger)
 
GmElementMeshmesh () const
 
const GmCellGroupSetmeshGroupSet () const
 
int numSupportedExternalLoads () const
 
const GmCellGroupSetexternalLoadGroupSet (int loadId) const
 
const QMap< QString, const GmBoundaryCondition * > & boundaryConditions () const
 
GmDiscontinuitySetdiscontinuitySet () const
 
virtual bool checkPhysicsDependencies (const QVector< GmpFemPhysics * > &physicsList, int index)
 
virtual bool dofByElement (bool *fixed=NULL, bool *addOnly=NULL, bool *trackChanges=NULL) const
 
virtual const GmElementDofdofMapping (const GmElement *e) const
 
virtual void afterElementStiffnessLoop ()
 
virtual bool fixedNodalForcesBc (QVector< int > &nodes, QVector< int > &dof, QVector< double > &values) const
 
virtual FemResultType fillContactData (const GmContactBoundaryCondition *cbc, int bcIndex1, int bcIndex2, GmMatrixDof &dofMap, GmpFemMatrixSet &matrixSet, GmpFemVectorSet &vecSet)
 
virtual FemResultType fillElementDataForLoads (const GmElement *e, int loadId, GmpFemVectorSet &elemVectors)
 
virtual bool addStateItemsToGroup (GmStateDump *state, bool fixedHint, int groupId)
 
virtual bool fillStateControlMapData (QVariantMap *map)
 
virtual bool stateControlMapDataLoaded (QVariantMap *map)
 
virtual bool stateAboutToBeSaved (GmStateDump *state)
 
virtual bool stateSaved (GmStateDump *state)
 
virtual bool stateAboutToBeLoaded (GmStateDump *state)
 
virtual bool stateLoaded (GmStateDump *state)
 
virtual QList< int > changedElements () const
 
virtual void clearChangedElements ()
 
const GmIntegrationRuleelementIntegrationRule (GmCellType type) const
 
const GmBorderIntegrationRuleborderIntegrationRule (GmCellType type, int borderIndex) const
 
const GmBorderIntegrationRulefaceIntegrationRule (GmCellType type, int faceIndex) const
 
const GmBorderIntegrationRuleedgeIntegrationRule (GmCellType type) const
 
int integrationRuleSet () const
 
bool setIntegrationRuleSet (int ruleSet)
 
virtual bool loadPrivateData (LuaTable &table)
 

Protected Member Functions

virtual void calcElementDerivedResultAtPoints (const GmElement *e, int resultId, const GmMatrix &evalPoints, bool evalAtIp, GmMatrix &result)
 The virtual function used by calcDerivedResults() to effectivelly calculate the heat flux at the given evaluation points.
 
virtual bool isAxisymmetric ()
 Returns TRUE only for axisymmetric models.
 
virtual double axisymmetricFactor (const GmElement *e, const GmMatrix &X, const GmVector &N) const =0
 Returns the factor that should be applied when using axis symetric elements. 1.0 for other etypes.
 
- Protected Member Functions inherited from GmpFemPhysicsCommon
virtual bool supportsCellType (GmCellType type) const
 
virtual bool supportsParallel (FemSupportedParallelMethods methodType) const
 
virtual const GmElementDofdofMapping (GmCellType type) const
 
virtual Unit dofUnit (int dof) const
 
virtual Unit timeUnit () const
 
virtual GmVector timeSim () const
 
virtual const QList< QPair< int, GmValueAccessor * > > & dofForceAttributes () const
 
virtual const QStringListsupportedBcTypes () const
 
virtual const QStringListsupportedContactBcTypes () const
 
virtual bool bcAffectsCalc (const GmBoundaryCondition *bc) const
 
virtual const QStringListsupportedExternalLoads () const
 
virtual bool checkAndLoadPrivateData (LuaTable &table)
 
virtual bool checkMeshDimension (int ndim)
 
virtual bool checkAndLoadDofMapping (LuaTable &table)
 
virtual bool checkAndLoadPropertyAccessors (LuaTable &table)
 
virtual bool checkAndLoadAttributeAccessors (LuaTable &nodeTable, LuaTable &cellTable, LuaTable &gaussTable)
 
virtual bool checkAndLoadExternalLoadAccessors (LuaTable &loadsTable)
 
virtual bool checkAndLoadBcAccessors ()
 
virtual bool checkAndLoadContactBcAccessors ()
 
virtual bool checkAndLoadDiscontinuitySetAccessors (LuaTable &table)
 
QString accessorNameList (const QVector< T * > list) const
 
bool checkAndLoadPropertyAccessorsAux (LuaTable &table, const QList< Value > &defList, QVector< GmCellAccessor * > &accessors, QVector< bool > &constants)
 
bool checkAndLoadBcAccessorsAux (QString attrName, QString msgPrefix, QMap< QString, const T * > &bcMap, QVector< const T * > &boundaryConditions, QVector< Ac * > &bcAccessors, QVector< bool > &constantBcValues, QStringList &boundaryConditionTypes, QVector< const T * > *calcBoundaryConditions, Ac *(GmPhysics::*acGetFn)(const T *, QString, QString, Unit, bool, int, int, int, bool, bool))
 
bool checkAndLoadNodeAttributeAccessors (LuaTable &table, const QList< Value > &naList, QVector< GmValueAccessor * > &accessors, GmpFemPhysicsCommonMaterial *m=NULL)
 
bool checkAndLoadCellAttributeAccessors (LuaTable &table, const QList< Value > &caList, QVector< GmCellAccessor * > &accessors, GmpFemPhysicsCommonMaterial *m=NULL)
 
bool checkAndLoadGaussAttributeAccessors (LuaTable &table, const QList< Value > &gaList, QVector< GmGaussAccessor * > &accessors, GmpFemPhysicsCommonMaterial *m=NULL)
 
bool checkAndLoadSavedGaussAttributes (const QList< int > &attrIdList, QString prefix, int numGaussAttributes, QVector< int > &savedIdList)
 
bool createMaterials (LuaTable &table)
 
bool loadAttributes (LuaTable &table)
 
void loadUnitSystemData (LuaTable &table)
 
QString getUnit (QString id, QString defUnit) const
 
bool loadAdditionalPrivateData (LuaTable &table, GmpFemPhysicsData &elemData)
 
bool loadNodeData (LuaTable &table, GmpFemPhysicsData &elemData)
 
bool loadElementData (LuaTable &table, GmpFemPhysicsData &elemData)
 
bool loadNeuralNetworkData (LuaTable &table, const char *name, GmpFemNeuralNetwork *netData)
 
- Protected Member Functions inherited from GmpFemPhysics
GmGaussAccessorgaussAttributeAccessor (GmElementMesh *mesh, QString stdAttributeName, QString msgDescription, LuaTable &table, Unit desiredUnit, bool required, int type=-1, int nlin=-1, int ncol=-1, int history=-1, bool canBeFunction=true, bool create=false, QString createFormat="", int createHistory=-1, bool ignoreWarnings=false)
 
virtual GmGaussAccessorcreateGaussAttributeAccessor (GmElementMesh *mesh, QString id, int snum, bool locked, Unit desiredUnit, const GmLogCategory &logger) const
 

Private Attributes

const char * _pluginType
 The plugin type name.
 
bool _hasElementGeneration
 Should we enable heat sources on elements (does not affect point generation sources)?
 

Additional Inherited Members

- Static Public Member Functions inherited from GmpFemPhysicsCommon
static T listFromVariant (const QVariant &v)
 
static void fillMatrixFromPropertyAc (GmCellAccessor *ac, const GmElement *e, const GmVector *coord, int ip, GmMatrix &K)
 
- Public Attributes inherited from GmpFemPhysicsCommon
 DS_IGNORED
 
 DS_REQUIRED
 
 DS_OPTIONAL
 
 RECOVER_AT_GAUSS
 
 RECOVER_AT_NODES
 
 DIRECT_NODE_EVAL
 
 ADD_RESULTS
 
 IP_ONLY
 
 GAUSS_FILLED
 
- Public Attributes inherited from GmpFemPhysics
 FEM_RESULT_OK
 
 FEM_ERROR_FI
 
 FEM_ERROR
 
 FEM_PARALLEL_FILL_ELEMENT_DATA
 
 FEM_PARALLEL_FILL_ELEMENT_DATA_BC
 
 FEM_PARALLEL_FILL_ELEMENT_DATA_EXT_LOADS
 
 FEM_PARALLEL_FILL_CONTACT_DATA
 
- Protected Attributes inherited from GmpFemPhysicsCommon
GmElementDof_dofMap [GM_NUM_CELL_TYPES]
 
unsigned int _parallelMethods
 
- Protected Attributes inherited from GmpFemPhysics
GmElementMesh_mesh
 
const GmCellGroupSet_gs
 
int _intRuleSet
 
GmDiscontinuitySet_discSet
 
QMap< QString, const GmBoundaryCondition * > _bcMap
 
QMap< QString, const GmContactBoundaryCondition * > _cbcMap
 
QVector< const GmCellGroupSet * > _externalLoadGroupSets
 

Detailed Description

Basic class for the standard heat physics plugin object.

Member Enumeration Documentation

◆ BoundaryConditionIds

IDs for accepted boundary condition types.

Enumerator
FIXED_T_BC_ID 

Id for fixed temperature boundary condition.

FIXED_HF_BC_ID 

Id for fixed heat flux boundary condition.

CONVECTIVE_BC_ID 

Id for convective boundary condition.

POINT_GENERATION_BC_ID 

Id for point generation boundary condition.

◆ BoundaryConditionValueIds

IDs for property values from accepted boundary condition types.

Enumerator
BC_T_ID 

Nodal temperature for fixed temperature boundary condition.

BC_Q_ID 

Heat flux for fixed heat flux boundary condition.

BC_QDIR_ID 

Heat flux direction for fixed heat flux boundary condition.

BC_H_ID 

Heat transfer coefficient for convective boundary condition.

BC_TA_ID 

Ambient temperature for convective boundary condition.

BC_G_ID 

Point generation rate for point generation boundary condition.

BC_POS_ID 

Point position for point generation boundary condition.

◆ ElementPropertyIds

IDs for physics element properties.

Enumerator
K_ID 

Id for retrieving the conductivity tensor accessor.

THICKNESS_ID 

Id for retrieving the plane width accessor.

G_ID 

Id for retrieving the generation rate accessor.

RHO_ID 

Id for retrieving the density accessor (transient analysis)

CP_ID 

Id for retrieving the specific heat at constant pressure accessor (transient analysis)

NUM_PROPER_IDS 

The number of property ids above.

◆ GaussAttributeIds

IDs for physics Gauss attributes.

Enumerator
Q_GA_ID 

Base Id for Gauss attribute used to store the calculated Heat Flux.

◆ NodeAttributeIds

IDs for physics node attributes.

Enumerator
Q_NA_ID 

Base Id for node attribute used to store the calculated Heat Flux.

◆ PhysicsAttributeIds

IDs for physics attributes.

Enumerator
ISOPARAMETRIC_ID 

Id for retrieving the isoParametric physics attribute.

HAS_ELEMENT_GENERATION_ID 

Id for retrieving the enableGeneration physics attribute.

HF_MODE_ID 

Id for retrieving the heatFluxMode physics attribute.

HF_DIRECT_ID 

Id for retrieving the directNodeEvaluation physics attribute.

◆ StateVarIds

IDs fo physics state vars.

Enumerator
T_ID 

Id for retrieving the acessor to the temperature state var.

Member Function Documentation

◆ beforeElementStiffnessLoop()

bool GmpThermoFemPhysics::beforeElementStiffnessLoop ( const GmpFemMatrixSet & elemMatrices,
const GmpFemVectorSet & elemVectors )
virtual

Reimplemented from GmpFemPhysics.

◆ calcDerivedResults()

bool GmpThermoFemPhysics::calcDerivedResults ( bool nonLinearSolver)
virtual

Calc heat flux on nodes and/or Gauss points.

Reimplemented from GmpFemPhysics.

Reimplemented in GmpThermoInterface.

◆ calcElementDerivedResultAtPoints()

void GmpThermoFemPhysics::calcElementDerivedResultAtPoints ( const GmElement * e,
int resultId,
const GmMatrix & evalPoints,
bool evalAtIp,
GmMatrix & result )
protectedvirtual

The virtual function used by calcDerivedResults() to effectivelly calculate the heat flux at the given evaluation points.

See the base class for a parameter description.

The heat flux value is given by qx = -k dT/dx. The vector with partial temperature derivatives can be calculated as B.T.

Reimplemented from GmpFemPhysicsCommon.

◆ fillElementData()

GmpFemPhysics::FemResultType GmpThermoFemPhysics::fillElementData ( const GmElement * e,
GmpFemMatrixSet & elemMatrices,
GmpFemVectorSet & elemVectors )
virtual

Fills the element stiffness matrix elemK for element 'e' taking into account only the conductivityy contribution. Other boundary condition contributions will be delayed until calls to fillElementDataForBc(). If internal heat generation is enabled, also calculates and fills elemF with the internal heat generation contribution to the load vector.

Reference: "Fundamentals of the Finite Element Method for Heat and Fluid Flow", Lewis et al, section 3.4.1, equations 3.260 and 3.261

If requested in the matrix set, the function can also fill a heat capacity matrix used in transiente analysis (see chapter 6, equation 6.21 on th eprevious book reference).

Implements GmpFemPhysics.

Reimplemented in GmpThermoInterface.

◆ fillElementDataForBc()

GmpFemPhysics::FemResultType GmpThermoFemPhysics::fillElementDataForBc ( const GmElement * e,
const GmBoundaryCondition * bc,
int bcIndex,
int bcListIndex,
int border,
GmpFemMatrixSet & elemMatrices,
GmpFemVectorSet & elemVectors )
virtual

Fills the element stiffness matrix elemK and/or the force vector elemF for element 'e', taking into account convective heat transfer, fixed heat flux and/or point generation boundary conditions, as indicated by the bc parameter.

Reference: "Fundamentals of the Finite Element Method for Heat and Fluid Flow", Lewis et al, section 3.4.1, equations 3.260 and 3.261

Reimplemented from GmpFemPhysics.

◆ fixedNodalDofsBc()

bool GmpThermoFemPhysics::fixedNodalDofsBc ( QVector< int > & nodes,
QVector< int > & dof,
QVector< double > & values,
bool * constantValues ) const
virtual

See comments on base class. Fills vectors with prescribed node temperatures.

Reimplemented from GmpFemPhysics.

◆ physicsMetaDataMap()

const QVariantMap * GmpThermoFemPhysics::physicsMetaDataMap ( )
virtual

Returns a pointer to the single Thermo Physics attribute map, built when the function is called for the first time.

Implements GmpFemPhysicsCommon.

Reimplemented in GmpThermoInterface.

◆ supportsStateDumping()

virtual bool GmpThermoFemPhysics::supportsStateDumping ( )
inlinevirtual

Tell the world that the temperature physics supports state dumping.

  There is no need to save any additional state, so the additional 
  stateXXX() methods are not needed.

Reimplemented from GmpFemPhysics.


The documentation for this class was generated from the following files: