Core Modules
AMfe has a very modular structure. There are seven core modules which are needed for
nonlinear finite element simulations:
Each module undertakes a specific task in the progress of finite element
analyzes. Fig. 4 shows how the core modules’ main classes
interact with each other.
The Mechanical System module is the head of all modules.
It provides the amfe.mechanical_system.MechanicalSystem
class
which keeps most tasks needed to do a finite element analysis
in a short and very easy to learn API. The class’ attributes have pointers
to instances of classes from other modules like Mesh, Assembly or Boundary.
These relations are represented by the arrows in Fig. 4.
Thus, it puts all together in a handy interface.
The main tasks of each module can be summarized as follows:
- Mesh: The mesh module provides a Mesh class which handles everything
regarding the geometry and mesh topology.
It gives access to node coordinates and element topology.
It also provides import-functions for several mesh formats like gmsh or Ansys.
Furthermore several meshes can be connected by mesh tying techniques.
- Assembly: The assembly module provides an Assembly class which provides
methods for assembly. These methods are usually called in every timestep of
the simulation when new internal and external force vectors and tangent
stiffness matrices are needed for time integration and the newton solvers.
The class knows the mapping between local and global degrees of freedom and
also has a pointer to a mesh-class and thus knows how the elements have
to be assembled.
- Element: The Element module provides an Element class with all methods
needed to return element properties such as the nonlinear internal element
force vector which is needed for assembling. Each element-type that is
implemented in AMfe inherits from this base Element class. This structure
makes it very easy to implement new elements as only a new subclass has to be
generated where only the calculation of element forces etc. have to be
implemented.
- Material: The Material module provides Material classes for different
materials. Like in the Element module, there exists a basis Material class
where all different material classes for different consitutive laws
inherit from. Ínstances of element class have a pointer to an instance of a
material class which makes it very easy to map elements to materials.
- Boundary: The Boundary class helps to define Dirichlet boundary
conditions.
- Mechanical System: As already mentioned, the Mechanical System module
provides a MechanicalSystem-class that keeps all together and provides a
very easy API for all tasks needed in a finite element analysis.
- Solver: The solver module provides numerical solver for different
analyses. For example it provides time integrators, eigensolvers and linear
solvers.
Model Order Reduction
A main application for AMfe is model order reduction of nonlinear mechanical
systems. AMfe provides many tools for model order reduction. Therefore a
subpackage hyper_red was created.
Todo
Explain hyper_red modules and Mechanical System MOR-classes