This class is the base class for all FE elements. It is also the
abstract class, declaring some services, which have to be implemented
by the derived classes. The main purpose of this class is to serve the
basic common services, which are common to all finite elements (like
storing the references to element's material model, nodes and applied
loadings, assembling location array, storing
from/to context file, etc.). The Element class does neither declare nor
implement any method related to specific analysis. These services are to be declared
and possibly implemented by derived classes.3 These derived classes
(direct children of Element class) are therefore assumed to be base
classes for particular analysis or problem type, represented by
corresponding engng model. They typically
declare the general services required for a specific analysis purpose
- like evaluation of stiffness or mass matrices for structural
analysis, or evaluation of capacity and conductivity matrices for heat
transfer analysis. Usually they also provide general implementation of
these services.
The Element is derived from a FEMComponent. It inherits
the FEMComponent's ability to keep its number and reference
to the domain, it belongs to, its error and warning
reporting services, methods for field extraction functions from object
record (used when element reads its description from input database).
Also the FEMComponent declares several abstract services. The most
important are initializeFrom for object
initialization from a given record, saveContext and
restoreContext methods for storing and restoring object state
to/from a stream, and giveInterface service for requesting
an object interface.
The attributes declared at the Element class include the
variables used to keep its list of nodes and sides, its material
and cross section number, lists of applied body and boundary loads,
list of integration rules and array storing its code numbers
(see OOFEM library reference manualfor details).
The following important services are declared at the element level:
- services for component management - include services for
requesting element's geometrical characteristics
(giveDofManager, giveNode,
giveNumberOfDofManagers,
giveNumberOfNodes), material (giveMaterial), cross
section (giveCrossSection).
- services related to code numbers management:
giveLocationArray - returns the element location array. This
location array is obtained by appending code-numbers of element
nodes (according to the node numbering), followed by code numbers of
element sides. The ordering of DOFs for the particular node/side is
specified using a node/side DOF mask, which is obtained using
giveNodeDofIDMask or giveSideDofIDMask services.
Please note, that this local DOF ordering must be taken into account when assembling various local characteristic
vectors and matrices. Once the element location array is assembled,
it is cached and reused to avoid time consuming assembly.
Some engineering models
may support dynamic changes of the static system (generally, of boundary conditions) during analysis,
then these models use invalidateLocationArray function to invalidate location array
after finishing time step, to force new equation numbering.
computeNumberOfDofs - computes or simply returns total
number of element's local DOFs. Must be implemented by particular
element. The giveDofManDofIDMask service return
DOF mask for corresponding dof manager (node or side). This mask defines the DOFs which are used by element
at the given node/side. The mask influences the code number ordering
for the particular node. Code numbers are
ordered according to the node order and DOFs belonging to the particular node are ordered
according to this mask. If element requests DOFs using a node mask
which are not in the node
then error is generated. This masking allows node to be shared by different elements with
different DOFs in the same node/side. Element's local code numbers are
extracted from the node/side using
this mask. These services must be implemented (overloaded) by
particular element implementations.
- services for requesting the so-called characteristic
components. (giveCharacteristicMatrix and
giveCharacteristicVector).
The component requested is identified by parameter of type
``CharType'' (see cltypes.h). These are general methods for obtaining various element
contributions to the global problem. These member functions have to
be overloaded by derived analysis-specific
classes in order to invoke the proper method according to the type of
requested component.
- services related to the solution step update and termination.
These services are used to update the internal variables at
element's integration points prior to reached state
(updateYourself and updateInternalState).
Similar service for the internal state initialization is also declared
(see initializeYourself) and re-initialization to previous
equilibrium state (see initForNewStep).
- services for accessing local element's unknowns from corresponding DOFs.
These include methods for requesting local element vector of unknowns
(computeVectorOf) and local element vector of prescribed
unknowns (computeVectorOfPrescribed).
- Services for handling transformations between element local coordinate
system and coordinate system used in nodes (possibly different from
global coordinate system).
- miscellaneous services. Their detailed description can be found in
OOFEM library reference manual(see also ``element.h'' (declaration) and
``element.C'' (implementation) files).
Borek Patzak
2018-01-02