#template: partials/card_index.html …
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
: TheFE_Element
objects represent theElements
in theDomain
or they are introduced to add stiffness and/or load to the system of equations in order to enforce the constraints.
The
FE_Element
s andDOF_Group
s are important to the design because:They remove from the
Node
andElement
objects the need to worry about the mapping between degrees-of-freedoms and equation numbers.They also remove from the
Node
andElement
class interfaces methods for forming tangent and residual vectors, that are used to form the system of equations.The subclasses of
FE_Element
andDOF_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.