Finite Element Model
Overview
The Model class is designed to provide a convenient encapsulation of all objects which define an entire finite element model. This includes such information as element connectivity, node coordinates in Mesh, element and material properties in ElementProperty and MaterialProperty, load in LoadCase, restraint and initial condition cases in RestraintCase and InitialConditionCase, etc. It provides a single container for all other core objects required to describe a finite element model.
The functions associated with a Model object are the following.
- Set objects
setMesh()- Register the Mesh object.setUnits()- Register the Units objectsetGlobalProperties()- Register the GlobalProperty objectsetCoordinateSystems()- Register the HashTable container of CoordinateSystem objectssetRestraintCases()- Register the HashTable container of RestraintCase objectssetMultipointConstraintCases()- Register the HashTable container of MultipointConstraintCase objectssetLoadCases()- Register the HashTable container of LoadCase objectssetInitialConditionCases()- Register the HashTable container of InitialConditionCase objectssetMaterialProperties()- Register the HashTable container of MaterialProperty objectssetElementProperties()- Register the HashTable container of ElementProperty objectssetTableFunctions()- Register the HashTable container of TableFunction objectssetElementData()- Register the HashTable container of ElementData objectssetNodeSets()- Register the HashTable container of IdTranslator nodes setssetElementSets()- Register the HashTable container of IdTranslator elements setssetElementEntitySets()- Register the HashTable container of IdTranslator element entities setssetInteractionPairs()- Register the HashTable container of InteractionPair objectssetRigidBodies()- Register the HashTable container of RigidBody objectssetAnalyticSurfaces()- Register the HashTable container of AnalyticSurface objectssetSolutionPropertiesList()- Register the List container of SolutionProperty objectssetMeshInterface()- Register the MeshInterface object
- Get objects
getMesh()- Get the Mesh object.getUnits()- Get the Units objectgetGlobalProperties()- Get the GlobalProperty objectgetCoordinateSystems()- Get the HashTable container of CoordinateSystem objectsgetRestraintCases()- Get the HashTable container of RestraintCase objectsgetMultipointConstraintCases()- Get the HashTable container of MultipointConstraintCase objectsgetLoadCases()- Get the HashTable container of LoadCase objectsgetInitialConditionCases()- Get the HashTable container of InitialConditionCase objectsgetMaterialProperties()- Get the HashTable container of MaterialProperty objectsgetElementProperties()- Get the HashTable container of ElementProperty objectsgetTableFunctions()- Get the HashTable container of TableFunction objectsgetElementData()- Get the HashTable container of ElementData objectsgetNodeSets()- Get the HashTable container of IdTranslator nodes setsgetElementSets()- Get the HashTable container of IdTranslator elements setsgetElementEntitySets()- Get the HashTable container of IdTranslator element entities setsgetInteractionPairs()- Get the HashTable container of InteractionPair objectsgetRigidBodies()- Get the HashTable container of RigidBody objectsgetAnalyticSurfaces()- Get the HashTable container of AnalyticSurface objectsgetSolutionPropertiesList()- Get the List container of SolutionProperty objectsgetMeshInterface()- Get the MeshInterface objectgetElementThickness()- Query for element nodal thickness valuesgetElementOffset()- Query for element nodal offsets
- Define and query library type
setSourceType()- Set source library typegetSourceType()- Get source library type
- General functions
write()- Write the contents of the model object to an input filedeleteStorage()- Delete all objects set in the modelprint()- Print the object contentprintSummary()- Print a summary of the object contentgetErrorCode()- Get error code
Use setMesh() to register the Mesh and/or setMeshInterface()
to register MeshInterface
objects which define the element connectivity and associations and node
coordinates. If a Mesh object is registered and a
MeshInterface object is not registered, Model
will internally create and register a MeshInterface
object tied to the Mesh object. The Mesh
or MeshInterface object currently registered with the Model
object can be queried using getMesh() or getMeshInterface()
respectively.
The GlobalProperty object is used to define global properties.
The Units object is used to define the units for physical quantities.
Node sets, element sets, element edge and face sets are entered into series of IdTranslator objects.
A name associated with each set may be specified using the setName()
function. The node and element indices (not user Id) are entered into the IdTranslator objects.
The IdTranslator objects are, in turn, entered into HashTable
objects with a user defined integer key. If there is a useful integer
associated with the node or element set, this integer should be used as
the HashTable key otherwise use keys starting from one.
The HashTable objects of node set, element set, element edge and face set are registered in the
Model object using setNodeSets(), setElementSets()
and setElementEntitySets() respectively.
Element and material properties are entered into one or more ElementProperty
and MaterialProperty objects respectively. There should be an ElementProperty
object for each element property identifier and a MaterialProperty
object for each material property identifier. The ElementProperty
objects are then entered into a HashTable
object using the element property identifier as a key. The MaterialProperty
objects are also entered into a HashTable
object using the associated material property identifier as a key. The
two HashTable objects containing the ElementProperty
and MaterialProperty objects are then registered in the Model
object using setElementProperties() and setMaterialProperties().
Certain vector valued functions may be stored in one or more TableFunction
objects. These functions may represent relationships such as temperature
dependent material properties or load factor time functions. The TableFunction
objects are entered into a HashTable object in a manner similar to
ElementProperty and MaterialProperty
objects using an integer curve identifier as key. The HashTable
object containing the TableFunction objects is then registered in the
Model object using setTableFunctions().
Analytical surfaces may be stored in one or more AnalyticSurface
objects. There should be an AnalyticSurface
object for each analytical surface in the model. Each AnalyticSurface
object is stored into a HashTable with an integer key. This
HashTable, in turn, is stored in the Model
object using setAnalyticSurfaces().
Rigid bodies may be stored in one or more RigidBody objects. There
should be a RigidBody object for each rigid body in the model. Each
RigidBody object is stored into a HashTable with an integer key. This
HashTable, in turn, is stored in the Model object using
setRigidBodies().
Some element properties, such as shell thickness or offset vectors, may be specified on an element-by-element basis using ElementData objects. Each element property so defined is installed in a HashTable object using the property type as a key. Currently supported property types are as follows:
THICKNESS- Thickness.OFFSET- Nodal scalar offset.NORMAL- Normal vector.FIBER_BOTTOM- Location of shell bottom, usually for output.FIBER_TOP- Location of shell top, usually for output.ELEMENT_VECTOR- Element local system orientation vector.MATERIAL_VECTOR- Material local system orientation vector.END_A_VECTOR- End point A position or offset vector.END_B_VECTOR- End point B position or offset vector.OFFSET_VECTOR- Nodal offset vector.
To obtain the thickness at all nodes of a given element, use the function getElementThickness().
Similarly, to obtain the offset vectors at each node of a given element, use the function getElementOffset().
A similar technique is used for load, restraint and initial condition
cases. A LoadCase object is instanced for each load case and entered into a
HashTable object using the load case identifier as a key. A
RestraintCase object is instanced for each restraint case and entered into a
HashTable object using the restraint case identifier as a key. A
MultipointConstraintCase object is instanced for each multipoint constraint case and entered into
a HashTable object using the multipoint constraint case identifier as a key. An
InitialConditionCase object is instanced for each initial condition case and entered into a
HashTable object using the initial condition case identifier as a key. Register
these HashTable objects with the Model using
setLoadCases(), setRestraintCases(),
setMultipointConstraintCases() and setInitialConditionCases().
Contact pairs, or more generally interaction pairs, may be entered into sets of InteractionPair
objects. The InteractionPair objects are entered into a
HashTable object using an integer key. Register this
HashTable object with the Model
using setInteractionPairs().
The properties of solution steps are entered into a sequence of SolutionProperty
objects. The sequence of SolutionProperty objects is entered into a
List
object in the order in which the solution steps are to be performed. The
first solution step is given identifier 1 in the List
object, the second step identifier 2, etc. Register this List
object with the Model using setSolutionPropertiesList().
Any List object registered with the Model
object can be queried using getSolutionPropertiesList().
The function deleteStorage()
is provided as a convenient mechanism for deleting all objects set in
the Model object. This includes all HashTable objects set
and the objects they in turn contain, and all List
objects set using getSolutionPropertiesList() and the objects they in turn contain.
The write()
function is provided to write the contents of the model object to
industry standard file formats. An example of such a format is ABAQUS input file or NASTRAN
bulk data format:
Gap element property mapping
| Gap element | ABAQUS | NASTRAN |
|---|---|---|
INITIAL_GAP |
PGAP U0 |
|
PRELOAD_FORCE |
PGAP F0 |
|
COMPRESSION_STIFFNESS (> 0) |
*SURFACE BEHAVIOR, PRESSURE-OVERCLOSURE=TABULAR |
PGAP KA |
COMPRESSION_STIFFNESS (= 0) |
*SURFACE BEHAVIOR, PRESSURE-OVERCLOSURE=HARD |
|
TENSION_STIFFNESS |
PGAP KB |
|
TRANSVERSE_STIFFNESS |
PGAP KT |
|
STATIC_FRICTION_COEFFICIENT_Y_AXIS |
*FRICTION, ANISOTROPIC |
PGAP MU1 |
STATIC_FRICTION_COEFFICIENT_Z_AXIS (!= 0) |
PGAP MU2 (TMAX = -1.) |
|
STATIC_FRICTION_COEFFICIENT_Z_AXIS (!= 0) |
PGAP MU2 (TMAX = 0.) |
|
KINETIC_FRICTION_COEFFICIENT_Y_AXIS |
ignored | |
KINETIC_FRICTION_COEFFICIENT_Z_AXIS |
ignored | |
NO_SEPARATION |
*SURFACE BEHAVIOR, NO SEPARATION |
ignored |
NO_SLIP |
*FRICTION, ROUGH |
ignored |
If COMPRESSION_STIFFNESS > 0., then the INITIAL_GAP,
PRELOAD_FORCE and TENSION_STIFFNESS properties are
used to create a tabular pressure-overclosure definition under the *SURFACE BEHAVIOR keyword.
Note that the MASTER option does not exist for element
constraints.
Class Members Descriptions
The currently available Model enumerations and functions are described in detail in this section.
-
class
Model Finite Element Model.
Public Types
-
enum class
ElementDataType Model element data properties.
Values:
-
enumerator
THICKNESS Thickness.
-
enumerator
OFFSET Nodal scalar offset.
-
enumerator
NORMAL Normal vector.
-
enumerator
FIBER_BOTTOM Location of shell bottom, usually for output.
-
enumerator
FIBER_TOP Location of shell top, usually for output.
-
enumerator
ELEMENT_VECTOR Element local system orientation vector.
-
enumerator
MATERIAL_VECTOR Material local system orientation vector.
-
enumerator
END_A_VECTOR End point A position or offset vector.
-
enumerator
END_B_VECTOR End point B position or offset vector.
-
enumerator
OFFSET_VECTOR Nodal offset vector.
-
enumerator
Public Functions
-
ErrorCode
getErrorCode() Return the current
ErrorCodeof the Model object.Returns: ErrorCode- The current error code, orNONEif no error.
-
Status
setMesh(Mesh *mesh) Set a pointer to a Mesh attribute object. By default, all finite element topology, connectivity, node coordinate and node and element association queries are made through the Mesh attribute object. If the MeshInterface object is registered, it is used by the
write()function for basic finite model queries rather than the Mesh object.See Also
getMesh()Parameters: mesh – Pointer to the Mesh object to be registered. Returns: Status
-
Status
getMesh(MeshPtr &mesh) Get a pointer to a Mesh attribute object as an output argument.
See Also
setMesh()Parameters: mesh – The Mesh object registered. Returns: Status
-
Status
setUnits(Units *units) Set a pointer to a Units attribute object. The Units object is useful for defining the units of physical quantities.
See Also
getUnits()Parameters: units – Pointer to the Units object to be registered. Returns: Status
-
Status
getUnits(UnitsPtr &units) Get a pointer to a Units attribute object as an output argument.
See Also
setUnits()Parameters: units – The Units object registered. Returns: Status
-
Status
setGlobalProperties(GlobalProperty *properties) Set a pointer to a GlobalProperty attribute object.
See Also
getGlobalProperties()Parameters: properties – Pointer to the GlobalProperty object to be registered. Returns: Status
-
Status
getGlobalProperties(GlobalPropertyPtr &properties) Get a pointer to a GlobalProperty attribute object as an output argument.
See Also
setGlobalProperties()Parameters: properties – The GlobalProperty object registered. Returns: Status
-
Status
setCoordinateSystems(HashTable<CoordinateSystem> *coordinateSystems) Set a pointer to a HashTable container object. The hashtable object must contain all CoordinateSystem objects required to describe the model.
See Also
getCoordinateSystems()Parameters: coordinateSystems – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getCoordinateSystems(HashTablePtr<CoordinateSystem> &coordinateSystems) Get as an output argument a pointer to the HashTable container that stores all CoordinateSystem objects.
See Also
setCoordinateSystems()Parameters: coordinateSystems – The HashTable object registered. Returns: Status
-
Status
setRestraintCases(HashTable<RestraintCase> *restraintCases) Set a pointer to a HashTable container object. The hashtable object must contain all RestraintCase objects required to describe the model.
See Also
getRestraintCases()Parameters: restraintCases – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getRestraintCases(HashTablePtr<RestraintCase> &restraintCases) Get as an output argument a pointer to the HashTable container that stores all RestraintCase objects.
See Also
setRestraintCases()Parameters: restraintCases – The HashTable object registered. Returns: Status
-
Status
setMultipointConstraintCases(HashTable<MultipointConstraintCase> *multipointConstraintCases) Set a pointer to a HashTable container object. The hashtable object must contain all MultipointConstraintCase objects required to describe the model.
See Also
getMultipointConstraintCases()Parameters: multipointConstraintCases – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getMultipointConstraintCases(HashTablePtr<MultipointConstraintCase> &multipointConstraintCases) Get as an output argument a pointer to the HashTable container that stores all MultipointConstraintCase objects.
See Also
setMultipointConstraintCases()Parameters: multipointConstraintCases – The HashTable object registered. Returns: Status
-
Status
setLoadCases(HashTable<LoadCase> *loadCases) Set a pointer to a HashTable container object. The hashtable object must contain all LoadCase objects required to describe the model.
See Also
getLoadCases()Parameters: loadCases – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getLoadCases(HashTablePtr<LoadCase> &loadCases) Get as an output argument a pointer to the HashTable container that stores all LoadCase objects.
See Also
setLoadCases()Parameters: loadCases – The HashTable object registered. Returns: Status
-
Status
setInitialConditionCases(HashTable<InitialConditionCase> *initialConditionCases) Set a pointer to a HashTable container object. The hashtable object must contain all InitialConditionCase objects required to describe the model.
See Also
getInitialConditionCases()Parameters: initialConditionCases – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getInitialConditionCases(HashTablePtr<InitialConditionCase> &initialConditionCases) Get as an output argument a pointer to the HashTable container that stores all InitialConditionCase objects.
See Also
setInitialConditionCases()Parameters: initialConditionCases – The HashTable object registered. Returns: Status
-
Status
setMaterialProperties(HashTable<MaterialProperty> *materialProperties) Set a pointer to a HashTable container object. The hashtable object must contain all MaterialProperty objects required to describe the model.
See Also
getMaterialProperties()Parameters: materialProperties – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getMaterialProperties(HashTablePtr<MaterialProperty> &materialProperties) Get as an output argument a pointer to the HashTable container that stores all MaterialProperty objects.
See Also
setMaterialProperties()Parameters: materialProperties – The HashTable object registered. Returns: Status
-
Status
setElementProperties(HashTable<ElementProperty> *elementProperties) Set a pointer to a HashTable container object. The hashtable object must contain all ElementProperty objects required to describe the model.
See Also
getElementProperties()Parameters: elementProperties – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getElementProperties(HashTablePtr<ElementProperty> &elementProperties) Get as an output argument a pointer to the HashTable container that stores all ElementProperty objects.
See Also
setElementProperties()Parameters: elementProperties – The HashTable object registered. Returns: Status
-
Status
setTableFunctions(HashTable<TableFunction> *tableFunctions) Set a pointer to a HashTable container object. The hashtable object must contain all TableFunction objects required to describe the model.
See Also
getRestraintCases()Parameters: tableFunctions – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getTableFunctions(HashTablePtr<TableFunction> &tableFunctions) Get as an output argument a pointer to the HashTable container that stores all TableFunction objects.
See Also
setTableFunctions()Parameters: tableFunctions – The HashTable object registered. Returns: Status
-
Status
setElementData(HashTable<ElementData> *elementData) Set a pointer to a HashTable container object. The hashtable object must contain all ElementData objects required to describe the model. The list of element data types available are defined in:
ElementDataTypeSee Also
getElementData()Parameters: elementData – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getElementData(HashTablePtr<ElementData> &elementData) Get as an output argument a pointer to the HashTable container that stores all ElementData objects.
See Also
setElementData()Parameters: elementData – The HashTable object registered. Returns: Status
-
Status
setNodeSets(HashTable<IdTranslator> *nodeSets) Set a pointer to a HashTable container object. The hashtable object must contain all node set IdTranslator objects required to describe the model.
See Also
getNodeSets()Parameters: nodeSets – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getNodeSets(HashTablePtr<IdTranslator> &nodeSets) Get as an output argument a pointer to the HashTable container that stores all node set IdTranslator objects.
See Also
setNodeSets()Parameters: nodeSets – The HashTable object registered. Returns: Status
-
Status
setElementSets(HashTable<IdTranslator> *elementSets) Set a pointer to a HashTable container object. The hashtable object must contain all element set IdTranslator objects required to describe the model.
See Also
getElementSets()Parameters: elementSets – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getElementSets(HashTablePtr<IdTranslator> &elementSets) Get as an output argument a pointer to the HashTable container that stores all element set IdTranslator objects.
See Also
setElementSets()Parameters: elementSets – The HashTable object registered. Returns: Status
-
Status
setElementEntitySets(HashTable<IdTranslator> *elementEntitySets) Set a pointer to a HashTable container object. The hashtable object must contain all element entity set IdTranslator objects required to describe the model.
See Also
getElementEntitySets()Parameters: elementEntitySets – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getElementEntitySets(HashTablePtr<IdTranslator> &elementEntitySets) Get as an output argument a pointer to the HashTable container that stores all element entity set IdTranslator objects.
See Also
setElementEntitySets()Parameters: elementEntitySets – The HashTable object registered. Returns: Status
-
Status
setInteractionPairs(HashTable<InteractionPair> *interactionPairs) Set a pointer to a HashTable container object. The hashtable object must contain all InteractionPair objects required to describe the model.
See Also
getInteractionPairs()Parameters: InteractionPairs – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getInteractionPairs(HashTablePtr<InteractionPair> &interactionPairs) Get as an output argument a pointer to the HashTable container that stores all InteractionPair objects.
See Also
setInteractionPairs()Parameters: InteractionPairs – The HashTable object registered. Returns: Status
-
Status
setRigidBodies(HashTable<RigidBody> *rigidBodies) Set a pointer to a HashTable container object. The hashtable object must contain all RigidBody objects required to describe the model.
See Also
getRigidBodies()Parameters: rigidBodies – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getRigidBodies(HashTablePtr<RigidBody> &rigidBodies) Get as an output argument a pointer to the HashTable container that stores all RigidBody objects.
See Also
setRigidBodies()Parameters: rigidBodies – The HashTable object registered. Returns: Status
-
Status
setAnalyticSurfaces(HashTable<AnalyticSurface> *analyticSurfaces) Set a pointer to a HashTable container object. The hashtable object must contain all AnalyticSurface objects required to describe the model.
See Also
getAnalyticSurfaces()Parameters: analyticSurfaces – Pointer to the HashTable object to be registered. Returns: Status
-
Status
getAnalyticSurfaces(HashTablePtr<AnalyticSurface> &analyticSurfaces) Get as an output argument a pointer to the HashTable container that stores all AnalyticSurface objects.
See Also
setAnalyticSurfaces()Parameters: analyticSurfaces – The HashTable object registered. Returns: Status
-
Status
setSolutionPropertiesList(List<SolutionProperty> *propertyList) Set a pointer to a List object. The list object must contain all solution property SolutionProperty objects, with a positional index corresponding to the order in which the solution steps must be performed.
See Also
getSolutionPropertiesList()Parameters: propertyList – Pointer to the List object to be registered. Returns: Status
-
Status
getSolutionPropertiesList(ListPtr<SolutionProperty> &propertyList) Get as an output argument a pointer to a List object.
See Also
setSolutionPropertiesList()Parameters: propertyList – The List object registered. Returns: Status
-
Status
setMeshInterface(MeshInterface *functions) Set a pointer to the MeshInterface attribute object.
See Also
getMeshInterface()Parameters: functions – Pointer to the MeshInterface object to be registered. Returns: Status
-
Status
getMeshInterface(MeshInterfacePtr &functions) Get as an output argument a pointer to the MeshInterface attribute object.
See Also
setMeshInterface()Parameters: functions – The MeshInterface object registered. Returns: Status
-
Status
setSourceType(FileFormat libraryType) Set the data source library type.
Parameters: libraryType – FileFormatReturns: Status
-
Status
getSourceType(FileFormat *libraryType) Get the data source library type.
See Also
setSourceType().Parameters: libraryType – FileFormatReturns: Status
-
Status
write(FileFormat libraryType, const char *path) Write Model to industry standard file formats. If a MeshInterface object is set in Model using
setMesh()then it is used for basic finite element model queries rather than the Mesh object. As a general rule, only those objects registered in the Model object are written. For example, if only load cases are to be written then only the HashTable of LoadCase objects and a MeshInterface object should be set in Model.The model entities supported at any one time may vary. Please contact Tech Soft 3D for details.
- Errors
-
FILEis generated if the file can not be opened. -
NULLOBJECTis generated if a required object has not been set.
-
Parameters: - libraryType –
FileFormat - path – File path
Returns:
-
Status
deleteStorage() Delete all objects which have been “Set” in the Model object. This includes all attribute objects set using
setMesh(),setUnits(),setGlobalProperties()andsetMeshInterface(), all HashTable objects set usingsetCoordinateSystems(),setRestraintCases(),setMultipointConstraintCases(),setLoadCases(),setInitialConditionCases(),setMaterialProperties(),setElementProperties(),setTableFunctions(),setElementData(),setNodeSets(),setElementSets(),setElementEntitySets(),setInteractionPairs(),setRigidBodies()orsetAnalyticSurfaces()and all List objects set usingsetSolutionPropertiesList()and the objects they may in turn contain.
-
Status
getElementThickness(int id, double thickness[]) Get the thicknesses at all nodes of the element id. The thickness is computed by first testing for an ElementData object stored under the
THICKNESSkey in the HashTable set usingsetElementData(). If a non-zero thickness is not defined then aSHELLtype ElementProperty object is tested for thickness using the element property identifier. If no thickness are defined they are all returned as zero.Parameters: - id – Element index
- thickness – [out] Vector of element nodal thicknesses
Returns:
-
Status
getElementOffset(int id, double offset[]) Get the offsets at all nodes of the element id. The offset is computed by first testing for an ElementData object stored under the
OFFSETkey in the HashTable set usingsetElementData(). If a non-zero offset is not defined then aSHELLtype ElementProperty object is tested for offset using the element property identifier. If no offsets are defined they are all returned as zero.Parameters: - id – Element index
- offset – [out] Vector of element nodal offsets
Returns:
-
enum class