Software Blog

CoMModO Post-Processing: Automated, AI-based Analysis of Finite Element Simulation Results as a Further Revolutionary Solution from ANDATA

by Niklas Stalanich

Based on the developments in the field of failure prediction with CoMModO, ANDATA is introducing a further, new, radical innovation in the successful application of Artificial Intelligence (AI): AI-based, automated structural analysis in the post-processing of Finite Element simulations and its integration into Simulation Data Management Systems. This blog describes the basic motivations and ideas behind it.

Introduction and Context

Under the brand name CoMModO (Complex Material Modeling Operations), ANDATA began the usage of Artificial Neural Networks in Finite Element simulation (FE simulation) for failure prediction as early as 2006. Based on the award-winning research project CoMModO at the time, four interconnected solution packages were defined for this purpose, which are available from ANDATA in the form of engineering services together with the associated tools:

In recent years, another topic has emerged from the 4th item, which significantly expands the first 4 solution packages and will be available as an independent solution with specific tools under the name CoMModO-PostProcessing or CoMModO-PP for selected customers and development partners from this year on:

  • AI-based post-processing and automated analysis of FE simulation results

Starting Point

The Finite Element Method (FEM) is the most important and essential method for constructive development and validation of lightweight design in vehicle development, aerospace and in general for complex structural-mechanical challenges.

In automotive development, for example, FEM is integrated, industrialized and immanently integrated in series development processes throughout virtual product development. This broad use is supported by so-called Simulation Data Management Systems (SDMS), which allow extensive automation in modeling (pre-processing), simulation (processing) and evaluation of simulation results (post-processing). With regard to post-processing, according to the current state of the art, fixed evaluation scripts are usually executed and the evaluated result values are stored in the databases and reports of the SDMS.

Despite the increasing complexity of the simulation models, an in-depth analysis of individual simulations takes place less and less often. Such requires the dedicated extraction of the simulations from the SDMS and the manual evaluation by special experts. Normally, these require years of training and experience and are therefore increasingly difficult to acquire. In addition, the daily project work usually leaves little time for the intensive in-depth analysis of the results. Consequently, this makes it increasingly difficult to build up specific in-depth expertise. Further the risk is increasing that such knowledge is eroding due to the extensive automation by the SDMS. As consequence the quality of the analysis also sometimes suffers considerably, especially if critical results and issues are not captured by the standard evaluations of the SDMS.

A few years ago, we started to develop support in that matter for one of our innovative premium customers by setting up an automated expert system and integrating it into the SDMS. In the first application, anomalies and faults in time series results were automatically detected and thus an automated, comprehensive plausibility and quality assurance of the simulation results in the SDMS was realized. That kind of quality assurance can also be extended in an equivalent way easily for result-dependent, adaptive post-processing with dynamic, intelligent reports instead of static, fixed result reports.


In the past year, an additional milestone in virtual product development has been achieved by ANDATA: in the above-described, automated, flexible Finite Element simulation data evaluation, not only time series and scalar result values can now be processed, but complete 3D structures including their change over time and the evaluation of result variables such as stress tensors, displacement fields, etc. This enables the possibility that the spatial/temporal results of FE simulations are becoming fully accessible for the evaluation of pattern recognition methods, machine learning-based classification and prediction methods or any arbitrary statistical evaluation. For example, you can use deep learning algorithms or other neural networks to detect and understand structural responses, buckling, loss of stability, geometric shapes/responses in any state of the simulation or more complex event triggered chains of effect with contacts and combined component damage!

Technical Solution

Technically, CoMModO-PostProcessing (CoMModO-PP) is based on MATLAB respectively is a MATLAB-based API toolbox for comprehensive, automated analysis of FE simulations. Specifically, the CoMModO PP toolbox is an extension of ANDATA's Signal Structure Toolbox, which forms the mathematical core of Stipulator and Expectator. In addition to time series and scalar, constant attributes, the signal structures are extended by a data model for highly interconnected, geometric, spatial structures with variable properties over time.

The core of CoMModO-PP is an extensive and constantly growing function library that can be used to prepare, process and evaluate additional signal data and attributes in a user-friendly manner, processing complex geometric models and the data referenced on them (for example such as FE simulations).

Because CoMModO-PP builds on the Signal Structure Toolbox, it is seamlessly integrated into Stipulator and Expectator. Thus, the results from any set of individual simulations can also be managed and easily processed for the training of machine learning procedures.

For specific evaluations, however, these can also be integrated by us as stand-alone scripts or executables for seamless and independent integration in the respective simulation data management, without the need for Stipulator or Expectator in the evaluation.


The following functionalities are available at the current level and are constantly being expanded and improved:

Function groups Functionality
Selection of model parts, subsets, and Finite Element entities (nodes, elements, partitions, groups, material,... )
  • model-specific selections
    • by entity attributs (e.g. ID, element typ, material typ, component name, ...)
  • result specific selectionen
    • by certain values and value ranges of FE input and results data
  • topological selections
    • neighborhood entities
    • geometrically near entities
    • boundaries and edges
    • coordinates
    • geometric regions
    • projections
Detection of structures
  • boundary detection
  • tracking the motion and orientation of the selecion
  • detection of connected regions (e.g. for component detection)
  • evaluating the envelope of the selection
    • box (oriented or with fixed axes)
    • cylinder (oriented or with fixed axes)
    • sphere
    • convex envelope
  • manipulation of envelope
    • shift, rotate, scale, offset
  • evalutation of rigid body motion (translation and rotation) from displacements
  • detection of out-most nodes within a direction
  • evaluation of normal and center
Feature extraction for Machine Learning
  • conversion of FE values to other entities by accumulation and statistic methods (e.g. FE results of nodes being cummulated to element values)
  • various statistics
    • over entities of selections
    • over entities of a certain size
    • over the neighbors of an entity
    • over the time
  • distance calculations
Evaluation of FE values from model attributs and other FE values
  • calculations of lengths, areas, volumina, masses of entities, envelopes
  • magnitude, differences and numerical derivatives
  • arithmetic operations of FE values
Display and plotting of values
  • full model and selected subsets
  • fringe plots and scalar values
  • deformed and undeformed
  • opaque or (partially) transparent
  • at arbitrary time steps by interpolation and deformation figures and FE values
  • highlightening of selections
  • cursor for the identifications of node IDs
Basis formats
  • .A4DB (and hereby all formats, which Animator4 can read and convert)
  • .STL
Supporting formats (for the integration of solver specific (meta-)data)
  • LS-Dyna input .K (partially)
  • customer specific formats (on request)
Integration of further (meta-)data
  • for each entity arbitrary data can be added and organized
  • definition of custom groups/partition (inclusion of custom labels)
  • access to arbitrary data
Treatment of complex FEM sub models (under consideration of customer specific modeling conventions)
  • ties with master/slave
  • spots welds
  • combined element and node groups
  • hierarchical groups
Expectator functionalities
  • application of complex, criteria based evaluation
  • application of general, multivariate statistics and pattern recognition methods on simulation results (e.g. statistics of component failures)
  • generation of automated, result-dependent, adaptive reports
  • results integration in A4DB
  • display of models and results in (interactive) MATLAB figures
  • generation of adaptive HTML reports
  • export of results for the display in Animator
    • by scripts, session files
    • by enrichment of A4DB files
  • custom formats for direct integration in the SDMS
Support functions
  • edit of FE entities (removal, adding)
  • manipulation of FE geometries (shift, rotation, scaling)
  • transformation of coordinate systems
  • converting in triangulations to interface MATLAB's triangulation algorithms
  • various conversions in graphs to interface MATLAB's triangulation algorithms
  • numerous referenced access functions
  • generation of custom entities
  • identification of interlacing geometries


Exemplary Application

In the following, the functionality is illustrated by a simple, certain example.

The FE simulation "NEON MODEL (NCAC V02)" is from George Washington University's National Crash Analysis Center (NCAC) and depicts a frontal crash of a 1996 Plymoth neon against a rigid wall. The model is freely available here from the NHTSA.

Within this FE simulation, we want to automatically evaluate the edge of highly deformed components for high stresses at the time of the largest deformation. To make matters worse, the group labeling integrated in the FE model is inappropriate because these are segmented too fine or too coarse in different sections.

Loading Finite Element Results Data

Before we can start processing the FE result data, we need to load it into the signal structure. The read-in function ssloadFEMData() allows selective reading of FE data. This makes it possible to read only the necessary parts of a model for processing in order to save compute and memory resources.

ssloadFEMData(signalstructure, {'path', 'demo_vehicle.a4db', 'loadGeometry', true, 'loadDisplacements', true, 'results', {'v. Mises (Shell/Solid)}'})

Component Detection

In the first step, we want to recognize the related components in the given model. For this purpose, the model is checked for continuous areas. Using the ssdetectcomponents() function, related elements can be collected in multiple groups under the entity 'myDetectedComponents'. This grouping entity and its groups are reused in the following functions. In the example model, 309 different components were detected.

ssdetectcomponents(signalstructure, {'name', 'myDetectedComponents'})


Evaluation of Component Deformation

Next, we want to define a measure for the deformations by each detected part, which is based on the relative total displacement. To calculate our deformation measure, we want to calculate displacements relative to the movement of the vehicle from the absolute displacements of this FE simulation (elimination of the rigid body motion). In order to track the motion of the car, it is useful to track a component, which is not deformed in this simulation.

We therefore take the rear panel because it is furthest away from the crash barrier. With ssselectnodeattop() we can identify a node that is at the outermost of the model in a defined direction.

ssselectnodeattop(signalstructure, {'name', 'selHeck', 'orientation', [-1,0,0]})

The corresponding component can be selected by means of ssconvertselection(). An alternative would be to identify a component that is as unformed as possible via various, aggregated FE sizes.

ssconvertselection(signalstructure, {'name', 'selHeck', 'select', 'selHeck', 'entity', 'myDetectedComponents'})

Consequently, we want to track the movement of the rear panel over time. The time-dependent location and orientation of a selection can be tracked with sstrackmovement().

sstrackmovement(signalstructure, {'name', 'trackHeck', 'select', 'selHeck', 'outputMode', 'xyzrpy'})

The absolute displacements from the FE simulation can be related to the determined translative and rotary movement of the rear panel by sscalcrelativedisplacements(). The result is relative shifts to the movement of the vehicle.

sscalcrelativedisplacements(signalstructure, {'name', {'Urel_x', 'Urel_y', 'Urel_z'}, 'select', 'selRoof', 'meth', 'xyz'}, {'trackHeck_x', 'trackHeck_y', 'trackHeck_z', 'trackHeck_roll', 'trackHeck_pitch', 'trackHeck_yaw'})

We want to form a deformation measure from the relative displacements. For this purpose, the relative total displacement "Urel" is calculated by sscalcmagnitude(). In the illustration of the relative total displacement below, we see that ranges that deviate from the motion of the vehile have higher values compared to the absolute total shift.

sscalcmagnitude(signalstructure, {'name', 'U'}, {'Ux', 'Uy', 'Uz'}) sscalcmagnitude(signalstructure, {'name', 'Urel'}, {'Urel_x', 'Urel_y', 'Urel_z'})


Now we want to evaluate the deformation of components. Though the relative total displacement obtained is a node size. With ssaggregatebypart() you can calculate different statistics of different values statistically for components. In our case, we have chosen the maximum relative total shift to the respective component as the statistical comparison values for the deformation measures.

ssaggregatebypart(signalstructure, {'name', 'Urel_max_comp', 'partKey', 'myDetectedComponents', 'meth', 'max'}, {'Urel'})


Critical Stresses at Component Boundaries

In order to be able to detect strongly deformed components, first threshold values must be specified for the dedection, when a component is considered to be strongly deformed. In order to calibrate such values, it is recommended to set up a corresponding data mining (e.g. by Stipulator, Expectator, Brainer). Alternatively such values can be defined manually by according expert knowledge.

In this example, we want to use a manually defined threshold for simplification. Components with at least 90% of the maximum deformation should be classified as strongly deformed. The adaptive threshold can be calculated by sssetattr() from the standard signal processing within Stipulator. Parts having larger deformations than the defined threshold value are selected using the function ssselectbyvalue(). Two strongly deformed components were detected here.

sssetattr(signalstructure, {'myLowerBound', '0.9 * max(max(<1>))'}, {'Urel'})

ssselectbyvalue(signalstructure, {'name', 'selHighDeformedComps', 'value', {$myLowerBound$, inf}}, {'Urel_max_comp'})

Our goal is to identify critical stresses at the edge of the strongly deformed components. The edge of the detected components is obtained by the function ssselectcontour().

ssselectcontour(signalstructure, {'name', 'selBorder', 'select', 'selHighDeformedComps'})

A contour is described by nodes. However, stresses are an element property. Therefore, we first want to determine the edge elements from the contour. For this we can use the conversion function ssconvertselection() again.

ssconvertselection(signalstructure, {'name', 'selBorder', 'select', 'selBorder', 'type', 'Elements'})

Finally, we select the elements with critical stresses again with ssselectbyvalue. Since we are only interested in the elements at the edge, we can determine the common elements from the relevant selections by means of quantity operations.

ssselectbyvalue(signalstructure, {'name', 'selHighStressEls', 'value', {critStressThresh, inf}}, {'Stress'})

ssintersectselections(signalstructure, {'name', 'selHighStressBorderEls', 'select', {'selBorder', 'selHighStressEls'}})

The result is an automatically calculated selection with elements that have critical stress at the edge of strongly deformed parts.

The sequence of the above functions from the extended Signal Structure Toolbox of CoMModO-PP can be used as a standalone script or as signal processing in the Stipulator and Expectator with all the associated functionalities and capabilities of these tools.

Strengths and Advantages

The above functionalities result in significant advantages of the CoMModO-PP toolbox over fixed post-process scripts and traditional post-processing procedures:

  • Accessibility of the content in the models and results: While in traditional post-processing, administrative parameters such as the IDs, numbers, and names of elements and groups are usually used, the mechanical and structural properties of the entities and parts can now be accessed and used for results dependent selection. This results in easier access to various FEM problems and the possibility of a more natural formulation of different criteria.
  • Flexibility in the FEM data processing: The functionalities and criteria can be combined in any way and thus form a post-processing API, which is available as dedicated signal processing in Stipulator/Expectator. This gives a user the opportunity to quickly and easily try out ideas for the evaluation of FEM data without having to rely on long turn-around times in the SDMS.
  • Management of processing and criteria: In the Stipulator, FEM data processing can be flexibly created, edited and managed. The same applies to criteria in Expectator, where criteria can also be adapted and recalibrated by (self-)learning and auto-adaptive approaches. The development of a learned/trained criteria database in principle results in a comprehensive expert system, which materializes expert knowledge and thus allows the automation more complex expert's analyses.
  • Further data analysis: The preparation of the FEM data for accessibility to ANDATA's data mining tools allows a machine understanding of the structural mechanisms of action and correlations and thus the identification of causality chains.
  • Uniformity and multi-disciplinarity: CoMModO-PP is solver-independent and therefore disposable for all types of FEM simulations. In addition, the core of CoMModO-PP is successfully used in other geometrical disciplines. This can be used to exploit significant synergies in multidisciplinary problems and ensure the sustainability of developments.
  • MATLAB's analysis power: In the application example, simple threshold criteria were used to illustrate the basic idea. However, by using MATLAB as a base, much more sophisticated mathematics is available. For example, the selection of the components can be carried out via arbitrary AI approaches, for example by classifying the damaged components according to the damage picture using deep learning methods.

Application Examples

The functionalities and advantages described here unfold to a number of innovative applications and new possibilities in the post-processing of FEM simulations:

  • Automated plausibilization of simulation data and quality assurance within the SDMS.
  • Integrated data mining on structural, spatial, and component properties in the SDMS.
  • Automated, smart, sel-adaptive post-processing within the SDMS.
  • Accelerated in-depth analysis for experts by novel possibilities of results preparation, e.g. through the automated identification and preparation of events (e.B. rebounds, contacts, penetrations, damages, etc.).
  • Labeling entities and structures by events and mechanical, geometrical, temporal/spatial properties.
  • Basis for automated analysis chain of effects and development of an expert system from and in the SDMS.
  • Application of virtual sensors retrospectively, even if no dedicated sensors and specific evaluation variables have been defined in the pre-processing.


CoMModO-PP offers a novel framework and toolbox for a completely new form of post-processing in Finite Element simulation. This provides the fundaments for the broad, comprehensive, and generic introduction of Artificial Intelligence in FEM analysis.

On the one hand, this gives experts the opportunity for even more in-depth investigations and the identification of the mechanisms of actions in complex structural responses. On the other hand, expert evaluations can also be better automated, so that the quality of the analyses and reports in simulation data management is lifted to new regions.

Contacts and Further Information

If you are interested, contact or the other well-known ANDATA contacts. Then we can also present and show the possibilities of CoMModO-PP directly.


MATLAB is a registered trademark of Mathworks.
Animator is a product of GNS.
LS-Dyna is the Finite Element software of LSTC.

Go back


Add a comment

Please calculate 1 plus 8.