The DofManager class is the base class for all dof
managers. Dof manager is an abstraction for object possessing degrees
of freedom (DOFs). Dof managers (respectively derived clases,
representing nodes or sides) are usually shared by several elements
and are maintained by corresponding domain. The elements keep the
logical reference to corresponding dof managers (they store their
numbers, not the physical links).
The base class declares the variable storing total number of DOFs,
the dofArray representing the list of DOFs managed by dof
manager, and loadArray list for storing the applied
loadings references.
The DofManager declares (and implements some of them)
following services
- DOF management methods. The methods for requesting the total number of
DOFs (giveNumberOfDofs), requesting particular DOFs
(giveDof), assembling location array of code numbers
(giveLocationArray and giveCompleteLocationArray),
methods for DOF selection based on their physical meaning
(giveDofArray and findDofWithDofId), and services
for requesting unknowns related to dof manager DOFs
(giveUnknownVector and givePrescribedUnknownVector).
- Transformation functions.
The governing equations can be assembled not only in global coordinate system, but
also in user-defined local coordinate system of each dof
manager. Following methods introduce necessary transformation methods,
allowing DOFs to be expressed in their own local c.s. or to be
dependent on other dofs on other dofManager (to implement
slave or rigid arm nodes etc.).
The methods for computing transformation matrices from global c.s to
receiver's defined coordinate system are declared
(computeDofTransformation and
computeLoadTransformation).
The requiresTransformation indicates whether dofManager requires the transformation from global c.s. to
dof manager specific coordinate system.
- Load management functions. The two methods are provided for handling
applied loading - the service for computing the load vector of
receiver in given time (computeLoadVectorAt) and service
providing the list of applied loads (giveLoadArray).
- Context related services for storing/restoring the receiver state to
context (saveContext and restoreContext services)
are implemented.
- Instanciating service initializeFrom.
- Miscelaneous services for receiver printing, identification, etc.
In the OOFEMlib the common specialized dof managers are
defined and implemented. Those currently provided are:
- Node class. Class implementing node in finite element mesh.
Node manages its positon in space, and if specified, its
local coordinate system in node. If local coordinate system is defined, all
equilibrium equations are assembled in this system and therefore all DOFs and
applied boundary and initial conditions apply in this local coordinate system.
By default, global coordinate system is assumed in each node.
- RigidArmNode class.
Class implementing node connected to other node (master) using rigid arm in finite element mesh.
Rigid arm node supports not only slave dofs mapped to master
but also some dofs can be primary doofs. The masterDofMask
attribute is introduced allowing to
distinguish between primary and mapped (slave) dofs.
The primary DOFs can have their own boundary and initial conditions.
The introduction of rigid arm connected nodes allows to avoid wery stiff elements used
for modelling the rigid-arm connection. The rigid arm node maps its dofs to master dofs
using simple transformations (small rotations are assumed). Therefore, the contribution
to rigid arm node are localized directly to master related equations.
The rigid arm node slave (mapped dofs can not have its own boundary or initial conditions,
they are determined completely from master dof conditions.
The local coordinate system in slave is not supported in current implementation, the global lcs applies.
On the other hand, rigid arm node can be loaded independently of master.
The transformation for DOFs and load is not ortogonal - the inverse transformation can
not be constructed by transposition. Because of time consuming inversion, methods
can generally compute both transformations for dofs as well as loads.
- ElementSide class - representing finite element side possesing
some DOFs.
Borek Patzak
2018-01-02