Inverse FORM with a cantilever beam

This example uses the cantilever beam model from the OpenTURNS use cases to demonstrate the InverseFORM algorithm.

The beam tip displacement is given by:

d = \frac{F L^3}{3 E I}

where E is Young’s modulus, F is the load, L is the length, and I is the moment of inertia.

We treat the length L as a parameter to calibrate. Given a target reliability index \beta_t, we seek the beam length such that the Hasofer-Lind reliability index of the failure event \{d > d_0\} (displacement exceeding a threshold) equals \beta_t.

import openturns as ot
import otrobopt
from openturns.usecases import cantilever_beam

ot.RandomGenerator.SetSeed(0)

# Load the cantilever beam use case
cb = cantilever_beam.CantileverBeam()
print(cb.model)
[E,F,L,I]->[F*L^3/(3*E*I)]

Freeze the beam length L (input index 2) as a parameter with initial value 2.55 m. The remaining random inputs are E, F, I.

g = ot.ParametricFunction(cb.model, [2], [2.55])

# Build the joint distribution of the random inputs (E, F, I)
marginals = [cb.E, cb.F, cb.II]
distribution = ot.JointDistribution(marginals)

# Starting point: median values of the random inputs
x0 = [dist.computeQuantile(0.5)[0] for dist in marginals]

Define the failure event: displacement > 0.15 m.

Run the inverse FORM algorithm with a target reliability index \beta_t = 3.0.

algo = otrobopt.InverseFORM(event, 'L', x0)
algo.setTargetBeta(3.0)
algo.run()

result = algo.getResult()
print('Calibrated L =', result.getParameter())
print('Hasofer-Lind beta =', result.getHasoferReliabilityIndex())
print('Convergence criteria =', result.getConvergenceCriteria())
Calibrated L = [2.18001]
Hasofer-Lind beta = 2.9999999999999996
Convergence criteria = [4,0,1.83978e-05,4.44089e-16]

The calibrated length L^* is the beam length that achieves the target reliability index \beta_t = 3.0 for the given failure threshold. If the initial length leads to a reliability above the target, the algorithm increases it (making the beam more flexible and thus less reliable), and vice versa.