Analysis Classes
To facilitate code re-use and to provide for a design which is both
flexible and extensible, object-oriented design principles can be
applied to the analysis algorithm. This is first done by identifying
the main tasks performed in a finite element analysis, abstracting
them into separate classes, and then specifying the interface for
these classes. It is important that the interfaces specified allow the
classes to work together to perform the analysis and allow new classes
to be introduced without the need to change existing classes.
In this design an Analysis object is an aggregation of objects
of the following types:
- SolnAlgorithm: The solution algorithm object is responsible for
orchestrating the steps performed in the analysis.
- AnalysisModel: The AnalysisModel object is a container class for
storing and providing access to the following types of objects:
- DOF_Group: The DOF_Group objects represent the
degrees-of-freedom at the Nodes or new degrees-of-freedom
introduced into the analysis to enforce the constraints.
- FE_Element: The FE_Element objects represent the
Elements in the Domain or they are introduced to add stiffness
and/or load to the system of equations in order to enforce the
constraints.
The FE_Elements and DOF_Groups are important to the
design because: - They remove from the Node and Element objects the
need to worry about the mapping between degrees-of-freedoms and
equation numbers.
- They also remove from the Node and Element class
interfaces methods for forming tangent and residual vectors, that are
used to form the system of equations.
- The subclasses of FE_Element and DOF_Group are
responsible for
handling the constraints. This removes from the rest of the objects
the analysis aggregation the need to deal with the constraints.
- Integrator: The Integrator object is responsible for
defining the contributions of the FE_Elements and
DOF_Groups to the system of equations and for updating the response
quantities at the DOF_Groups with the appropriate values given
the solution to the system of equations.
- ConstraintHandler: The ConstraintHandler object is
responsible for handling the constraints. It does this by creating
FE_Elements and DOF_Groups of the correct type.
- DOF_Numberer: The DOF_Numberer object is
responsible for mapping equation numbers in the system of equations to
the degrees-of-freedom in the DOF_Groups.
|