DegreeTutors/Modelling and Analysis of Non-linear Cablenet Structures using Python and Blender

  • $97

Modelling and Analysis of Non-linear Cablenet Structures using Python and Blender

  • Closed

Learn how to combine parametric modelling, exploratory form-finding and iterative analysis techniques to simulate the behaviour of tensile structures.
Closed for All Access Members Only

Course Contents

Introduction, course breakdown & prerequisites

In this first section, we’ll get our bearings by taking a look at the course structure. This will give you a good idea of what to expect. We’ll also introduce our main focus for this course - cablenet structures. This will provide some historical context for the technical analysis to follow. 

This course assumes that you’ve completed the prerequisite course on 2D cable analysis; we’ll elaborate on why it’s critical that you cover that course first if you want to get the most from this course. 
1.0 Introduction and course overview
Preview
2.0 Course prerequisites
Preview
Support and Lecture Q&A (Please read!)
3.0 Moving to JupyterLab
4.0 Cablenet structures
Preview

Developing the 3D Non-linear Stiffness Matrix

In this section, we’ll take the theory used to develop the 2D non-linear stiffness matrix and extend that to 3D. This really involves two steps, updating how we calculate the element transformation matrix and then updating the local element stiffness matrix. 

The task here isn’t difficult, the hard work was done in establishing the 2D stiffness matrix in the prerequisite course. We'll focus on whiteboarding the theory here before diving into code a little later.
5.0 Section overview
Preview
6.0 Building the 3D transformation matrix
7.0 Extending the non-linear stiffness matrix

Extending our Blender utility scripts

Blender is a trusty 3D Swiss army knife that makes all of this modelling possible. So, since we’re moving from 2D to 3D, we’ll need to update some of the utility scripts we wrote previously for data import and export. 

But it won’t be all coding in this section, we dabble in some 3D modelling and generate our first simple cablenet model to serve as our test-bed structure for the next section.
8.0 Section overview
Preview
9.0 Generate a simple cablenet
9.1 Blender File (lecture 9)
10.0 Extending our Blender export scripts
11.0 Visualising axial forces and deflections in Blender
11.1 Blender File (lectures 9-11)

Extending your solver toolbox from 2D to 3D

Now it’s time to roll up our sleeves and dive into our main solver code. In this section, we’re going to be doing the bulk of the work to update the 2D solver we wrote previously. We’ll also be implementing all of the transformation and stiffness matrix theory we whiteboarded earlier. 

Once you’ve completed this section you will have converted your 2D cable analysis code into a 3D solver…and we can start experimenting with some structures.
12.0 Section overview
Preview
13.0 Updating our Notebook structure
13.1 Jupyter Notebook (lecture 13)
14.0 Basic updates to our preprocessing code
14.1 Jupyter Notebook (lecture 14)
15.0 Implementing a basic 3D plot
16.0 Fixing the 3D scale problem
17.0 Implement support type visualisation
18.0 Implementing 3D arrows
19.0 Implementing 3D annotations
20.0 Building the transformation matrix
21.0 Calculating the pre-tension force vector
22.0 Building the stiffness matrix
23.0 Calculating the internal force system and axial forces
24.0 Recap of the main loop logic
25.0 Updating the results plot - phase 1
26.0 Updating the results plot - phase 2
27.0 Updating the results plot - phase 3
28.0 Using Pandas DataFrames to represent our data
29.0 Visualising deflection and axial force data in Blender
29.1 Jupyter Notebook (lectures 13-29)
29.2 Blender File (lecture 29)
Mid-course check-in

The cable-stayed antenna tower…in 3D

When we studied 2D cable analysis previously, we analysed a 2D cable-stayed antenna tower. So, now that we’ve built ourselves a 3D toolbox, the obvious first task is to build a bigger 3D cable-stayed lattice tower to see how our solver crunches through that! 

This section will be our first complete run-through of the analysis workflow, from modelling in Blender, to analysis in our solver to results visualisation back over in Blender.
30.0 Section overview
Preview
31.0 Model generation in Blender
31.1 Blender File (lecture 31)
32.0 Solving the antenna tower
32.1 Jupyter Notebook (lecture 32)
32.2 Blender File (lecture 32)
33.0 Saving and exporting all simulation data
33.1 Jupyter Notebook (lecture 33)
34.0 Building a results viewer notebook
34.1 Jupyter Notebook (lecture 34)

Parametric modelling and form-finding in Blender

In this section, we’ll focus on how we can get the most out of Blender’s modelling and simulation tools. We’ll start by exploring a relatively new feature in Blender; geometry nodes. This functionality gives us the ability to procedurally model and parameterise our geometry. This will be a taster on geometry nodes - after which you can decide if you want to investigate further beyond this course.

Next, we’ll explore Blender’s cloth simulation tools, one of Blender’s many physics engine toolboxes. Although this tool is not designed for structural simulation, it serves as an excellent way of approximating net and membrane geometry which we can use as a starting point for our structural analysis. 

This process of exploratory form-finding is one of the most creative and enjoyable parts of studying these structures and serves as a nice counter-balance to our focus on programming and mechanics!
35.0 Section overview
Preview
36.0 Simulation initial geometry in Blender - Part 1
37.0 Simulation initial geometry in Blender - Part 2
37.1 Blender File (lectures 36-37)
38.0 The relationship between form-finding and pre-tension
39.0 Procedural modelling with geometry nodes [Optional]
39.1 Blender File (lecture 39)

Cablenet Pavilion - Hyperbolic Paraboloid

In this section, we’ll bring together our 3D solver with what we’ve learned about form-finding using Blender’s simulation tools. We’ll focus on the modelling and analysis of a hyperbolic paraboloid cablenet structure. For the structure itself, we’ll draw inspiration from a fabric membrane structure by Frei Otto from 1955. 

This will give us a good opportunity to discuss the relationship between form-finding and pre-tension. Again, this will be another good demonstration of the typical modelling-analysis-visualisation workflow. 
40.0 Section overview
Preview
41.0 Accommodating different cable types
42.0 Generating the initial geometry
42.1 Blender File (lectures 41-42)
43.0 Analysis iteration 1 - Establishing pre-tension
44.0 Analysis iteration 2 - Adding props and stay cables
44.1 Jupyter Notebook (lectures 41-44)
44.2 Blender File (lecture 44)

Frei Otto’s Dancing Fountain in cablenet form

In this final section, we’re going to finish strong! We’ll use everything we’ve learned so far to build a model of one of Frei Otto’s finest membrane structures, the so-called ‘Dancing Fountain’ from the Cologne Federal Garden Exhibition in 1957. 

We’ll use all of the tools at our disposal to build the initial geometry, simulate the minimum surface under tension and then analyse the cablenet force distribution under self-weight. Naturally, we’ll bring it all back into Blender for final visualisation.

The successful completion of this structure sets a great high-water mark for your understanding of cablenet structures and of the tools you’ve just built. This should leave you confident enough to explore the behaviour of non-linear cablenet structures in the wild.

As with every DegreeTutors course, you should also be confident in extending the code beyond what we finish up with at the end of the course. 
45.0 Section overview
Preview
46.0 Form-finding the initial geometry
47.0 Roof pre-tension simulation
48.0 Full structure pre-tension simulation
48.1 Jupyter Notebook (lectures 47-48)
49.0 Applying load to the pre-tensioned structure
49.1 Jupyter Notebook (lecture 49)
49.2 Blender File (lectures 46-49)
50.0 Course wrap up & completion certificate

Appendix: Building Axial Force Visualisations in Blender

In this appendix, I’ll walk you through exactly how to build the axial force and deflected shape visualisation we implemented in the course. Once you see and understand how this is done, you can easily extend this to build other structural data visualisations in Blender.
51.0 Blender data-viz – Structure setup & force data
51.1 Jupyter Notebook (lecture 51)
52.0 Blender data-viz – Blocking out the code
53.0 Blender data-viz – The transformation matrix
54.0 Blender data-viz – Generating materials from force data
54.1 Jupyter Notebook (lectures 51-54)

🚨 Prerequisite Course

The current 3D cablenet course should only be taken once the prerequisite course below has been completed. In the current course, we rely heavily on the theory covered and the code written during the prerequisite course. 

  • $97

Non-linear Finite Element Analysis of 2D Catenary & Cable Structures using Python

  • Course
  • 75 Lessons

Build an iterative solution toolbox to analyse structures that exhibit geometric non-linearity due to large deflections

Dr Seán Carroll

BEng (Hons), MSc, PhD, CEng MIEI, FHEA

I'm a senior lecturer in structural engineering and a chartered engineer. I have a passion for teaching all things related to engineering, whether that's live in the lecture hall or here on DegreeTutors. I hope to see you inside one of my courses soon!