FEDEM Solver
R8.0
Source code of the dynamics solver

This is the source code documentation of the FEDEM Dynamics Solver, which is generated by extracting comments from the source code itself. Most of the key modules, subroutines and functions are described here, but many of the lowerlevel items lack proper documentation. However, the current content should give a good overview over the code base for anyone that needs to dig into the code to perform changes, updates and maintenance.
The FEDEM Dynamics Solver is a general purpose finite element solver for elastic mechanisms. It solves the dynamics problem in the time domain using Newmark time integration and a corotated superelement formulation to handle geometric nonlinearities in its members. It can also handle nonlinear material behaviour in joints through discrete nonlinear springs and dampers.
Refer to the FEDEM Theory guide for more details on the formulation.
The main bulk of the code is organized in a set for Fortran90 modules. The toplevel module is solvermodule which contains data containers for the FE model and properties and the main driver subroutines. On the next level, the modules newmarkroutinesmodule and staticequilibriummodule contain driver subroutines for conducting the dynamic and quasistatic time domain simulation, respectively. Then there are several modules representing different types of mechanism objects that a complete simulation model consist of.
The solver code also has a C++ API which is defined in the file solverInterface.h and implemented in the file solverInterface.C This interface wraps the toplevel driver subroutines, and some utility routines for inspecting and modifying the solution state, such that they can be invoked by application programmers using C++, Python, etc.