FEDEM Solver  R8.0
Source code of the dynamics solver
The FEDEM Dynamics Solver
Author
Knut Morten Okstad
Date
12 Jul 2024

Introduction

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 lower-level 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 co-rotated 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.

Source code organization

The main bulk of the code is organized in a set for Fortran90 modules. The top-level 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 quasi-static 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 top-level 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.