Automation of Robustness Analyses (ARA) by the use of Dynamo, Revit & FEM-Design



Automated Robustness Analysis (ARA) regarding Analytical 3D Models

We (Mathias Jun Nielsen and Nicolai Engdal Nørgaard) have for our master’s thesis at the Technical University of Denmark developed a workflow, which potentially enables a fully Automated Robustness Analysis (denoted ARA).

The main disciplinary software was chosen to be Revit and FEM-Design, which exhibits syntactic interoperability through the import/export-functions (by the use of an XML based file format named “.struxml”) provided by the FEM-Design add-in for Revit. All data transfer between Revit and FEM-Design and data re-utilization was driven by Dynamo graphs.

In short, the workflow simulates (through an XML-based file format) all possible local failure scenarios for any given structural Revit model, after which the structural system in each of the scenarios are analysed by the use of FEM-Design, providing a list (CSV file format) with the (Eurocode based) found utility ratios of all the elements in each of the failure scenarios (beware of the large amount of data!). Finally, different elements (which have been individually removed to simulate all the different failure scenarios) are categorized depending on the number of remaining elements with a max. calculated utility ratio >100%. The elements assigned to the different categories are coloured red, orange, yellow, and transparent, depending on the number of elements failing due to the single element being removed.


The workflow consists of 5 steps (step 0 to step 4) containing a total of 6 IronPython scripts, which may be initiated by simple Dynamo graphs, whereby examples of these are provided herein. The five steps are as presented and lightly explained in the following.

Step 0: Prepare the analytically correct FEM-Design model based off an existing Revit model. This FEM-Design model file will be denoted ‘mother .struxml file’ or just ‘mother file’.

This preparation includes the defining and checking of the following general requirements for acquiring analytically acceptable 3D models, which may all be performed in the original Revit model or in the exported FEM-Design model:
- Cross sectional data and dimensions
- Material properties (f_y, f_c, E, v, ρ)
- Loads and load combinations
- Boundary conditions/releases
- Element collisions
- Element connections
- Optionally reinforcement data (OBS: Not yet transferrable from Revit to FEM-Design, but more than likely possible - maybe you will make it happen?)

The above may be defined or checked manually, or one may make use of the workflows developed by Anders Hejnfelt (@Ahejnfelt), or Anders W. Andersen (@A.W.A) / Kasper N. Madsen.

In addition to the above preparations, an additional prerequisite for simulating the many possible wall-based failure scenarios, are to split all wall elements into smaller wall sections with a width of 500 mm each, thus enabling the removal of an arbitrary 3 m of wall. This can be done automatically by use of the following Dynamo graph and algorithm 1.

1. Split walls.dyn (11.8 KB)

1. Split (3.8 KB)

Step 1: Copy the mother file into as many duplicates as there are structural elements in the mother file. These copies will be denoted ‘children .struxml files’ or just ‘children files’.

This step may be done by use of the following Dynamo graph and algorithm 2.

2. Create XML files.dyn (11.7 KB)

2. (1.6 KB)

Step 2: Modify every one of the children files to simulate all possible local element-based failure scenarios, by removing either 6 wall sections (≥3 m wall), a single column, or a beam.

This step may be done by use of the following Dynamo graph and algorithm 3.

3. Modify XML files.dyn (15.3 KB)

3. Modify_XML_Files (4.1 KB)


Step 3: Run the FEM and structural analyses for each one of the children files/simulated failure scenarios. Save the results in lists in .csv files.

Since FEM-Design doesn’t (yet) provide an API, a script enabling an automated run of any desired FEM or structural analysis have been provided by the team of StruSoft, denoted ‘ana.fdscript’. The presented script however only provides an analysis of a single .struxml file, why following Dynamo graph 4 together with algorithm 4 enables a modification of the ‘ana.fdscript’ to run on all the created children .struxml files (failure scenarios).

4. Modify analysis file.dyn (16.8 KB)

4. (3.9 KB)


To run the analyses automatically (and completely without having to interact with FEM-Design, not even open the software) one must have created a shortcut for the FEM-Design software, and associate it with the ‘ana.fdscript’, as may be done as follows:


With the ‘ana.fdscript’ being modified and the FEM-Design shortcut created one may run the following Dynamo graph 5 with algorithm 5 to initiate the automatic analyses on all the different failure scenarios, from which the loads, boundary conditions, choice of analyses, etc. all were defined in the mother .struxml file.

5. Launch analysis.dyn (9.0 KB)

5. (490 Bytes)


Step 4: Evaluate and visualize the results from the results in the .csv files.

The categories are initially defined by the single scenarios causing the most elements to fail. Four categories have been defined, ranging from “critical” to “not-as-critical”:
- Category 1: Colour the 0-10% of removed elements—which causes the most other elements to become overutilized—red.
- Category 2: Colour the 10-25% of removed elements—which causes the second-most other elements to become overutilized—orange.
- Category 3: Colour the 25-50% of removed elements—which causes the third-most other elements to become overutilized—yellow.
- Category 4: No colourization of the remaining elements—however—make them 50% transparent.
This step may be done by use of the following Dynamo graph and algorithm 6.

6. Read CSV files.dyn (67.1 KB)

6. (6.3 KB)



Read more:

Article: (Danish/English)

Explanatory video presentation:

The paper itself and a .zip folder with the ARA:


I am not even sure what to say. Quickly glancing over this, this seems very impressive to say the least. Good work.


Job well done. It was a pleasure to follow the project :slight_smile:

It is almost like not working having these bright students doing their thesis. Not only this project but all the thesis and special course project I am pleased to supervise/had supervised. Having students that comes with a strong and deeply felt desire to “solve” disciplinary issues in the construction industry and at the same time willing to get a deeper understanding of data structures and processes. When they start they don’t need to be programmers, they only need to know basic programming stuff… but when they finish they will figure that they gained being programmers as well to some extent during the process of doing the project.

And as a teaser… there are more projects to come later this summer :slight_smile: