RM

Project · Shanghai · 2004 → 2026

Shanghai Cruise Terminal

Prestressed cable facade, re-engineered 21 years on with a Python + Oasys GSA pipeline — Eurocode 3 sizing, form-finding, and GB 50011 seismic verification.

Twenty-one years ago, this facade fascinated me.

I was a junior engineer at RFR. The Shanghai Cruise Terminal — the most challenging structure I had ever calculated. I’ve rebuilt it with Rhino, GSA, Python and AI, and built tools to accelerate this kind of complex project.

Building × wave · displacements · stress — GSA result loops (Rhino → GSA → sizing loop → mode shapes)

PART ONE · THE EUROCODE 3 (EC3) & FormFinding

Back then, modeling and sizing were very tedious

Modeling, Size, Calculate, Resize. Recalculate. Check my old Eurocode 3 Spread Sheet. Again. And again. For days...

The solution at the time was MACROS, that made us save a lot of time, but MACROS still require a lot of hand-work and slow the process down.

I wonder… what about if I used… Python + AI?

PART ONE · THE EUROCODE 3 (EC3) & FormFinding

Critical load case, based on memory, 21 years later.

Section selection was done based in my nowadays memory after 21 years and taking into account that I did not participate in the Detail Design and Construction Design Phases.

FormFinding tool is not include in the Evaluation Version of Oasys GSA, but I thought with Python is easy.

PART ONE · THE EUROCODE 3 (EC3) & FormFinding

So I built it again — this time with Python+AI

AI has helped me to find the way, accelerating my GSA skills in combination with Python.

Python + AI is an amazing tandem that assist you in creating the model with the COM-API of GSA.

I have my configuration saved in a Markdown file that is connected with the Python apps that I have created.

With the terminal (CMD) I launch the file modifications and iterations better than the Visual (GUI) that has a lot of risks of crashing when the models become too complex.

PART ONE · Global study of forces & moments

Global study of forces & moments

Cristal Wave — prestressed cable façade · main structural members · results from GSA (Perspective View), values in kN / kNm · Automatization of Document Generation with Python

force/moment diagram

CaseAnalysis case Variable part added to the permanent base

Load legend (primary load cases)

L1Self-weight (Gravity)
L2Top Big Strut clamps
L3Top Small Strut clamps
L4Cable Bow clamps
L5Cable Cross
L6Vertical Cable clamps
L7Glass weight — Tempered
L8Glass weight — Roof
L9Cleaning / maintenance (SD)
L10Cleaning / maintenance (SDL)
L11Wind H000
L12Wind H045
L13Wind H090
L14Wind H135
L15Wind H180
L16Wind H225
L17Wind H270
L18Wind H315
L19Wind U000
L20Wind U045
L21Wind U090
L22Wind U135
L23Wind U180
L24Wind U225
L25Wind U270
L26Wind U315
L27Temperature — hot (+45 °C)
L28Temperature — cold
L101Prestress P — struts / bow cables
L102Prestress P — vertical / center cables

PART ONE · THE EUROCODE 3 (EC3) in Python

So I built it again — this time with Python+AI

So I have used my old Eurocode 3 Spread Sheet to verify every single step in Python.

PART ONE · THE EUROCODE 3 (EC3) & FormFinding

Same load case. FormFinding with Python + EC3 iteration

A fixed 50 % utilisation target converges in only 4 iterations for every section to settle within a ±10 % band.

My EC3 app is integrated with GSA: it runs the check, and if a section fails it sweeps the standard RHS catalogue with a convergence criterion in very few steps.

PART ONE · THE EUROCODE 3 (EC3) CONVERGENCE

After Form-Finding, EC3 App converges in 4 iterations with Python

Convergence is a reality. The real value of this app is cutting the tedious hand-work that slows the process down and introduces errors and frustration for the team.

No more remodeling, resizing, recalculating…

GSA crashes….

Again. And again.

For days.

I only Check my old Eurocode 3 Spread Sheet to verify the optimized solution. We require the Structural Engineer only in the important moment, we are always in the loop, but for the important thing.

Happy ending… for now

PART ONE · THE EUROCODE 3 (EC3) & FormFinding

Time / Tool of FormFinding with Python + EC3 iteration

Each GSA run takes around 50–60 min, while the automated EC3 check computes every section in 8 seconds — as you can try in the demo on the main page.

GSA optimisation pipeline

PART ONE · THE EUROCODE 3 (EC3) & FORMFINDING

Do you want to try it?

These are the default values for the first iteration of the Wave facade — enter the section, forces and buckling length of the project you are studying and check its EN 1993-1-1 clauses against my calculations.

Section

Critical element of your structure

Buckling length

RHS/SHS section — GSA

PART TWO · THE EARTHQUAKE

I passed to seismic verification Python+GSA.

GSA has a tool, but I want to see if I can do it with Python and as this leave the to the GSA tool the important tasks.

PART TWO · THE EARTHQUAKE

Python+GSA seismic verification.

Resonance mode 1Resonance mode 2Resonance mode 3Resonance mode 4
1 / 4

PART TWO · THE EARTHQUAKE

Python+GSA seismic verification.

Cable check — EN 12385 catalogue

Each family (bow / norm / vertical) sized by its governing axial force from the 100/30/30 envelope → smallest standard cable. → Huge margin: Cables sit far below capacity (max U = 17 %). The one open item is a small transient slack (−4 kN) under the worst 100/30/30 combo — bounded and acceptable. Cross-checked GSA vs Python: 1.000.

If your team still does this by hand — you can try

Ricardo Merino · structural engineering + automation

Eurocode · GB 50011 · EN 1993-1-11 · Python + GSA

I won’t pretend otherwise: I’m looking for projects, or a team, where I can put this to work. If this way of working appeals to you, here’s something concrete: from now on you can share a model with me. I’ll put it through and send it back, so you can see what a tool like this really does. First we protect both sides: review my NDA template, or share yours.

Have a GSA model you want sized to Eurocode 3? There is a way in: NDA, a pre-flight check that runs in your own browser, and the model comes back resized.

Contact

Let’s talk.

If part of your team’s week still looks like this, send a message — or find me on LinkedIn and Xing.

← Home