quoFEM: an Optimization and Uncertainty-Quantification Study
- silviamazzoni
- Mar 9
- 4 min read
Great! Let's go step by step through running an optimization and uncertainty quantification (UQ) analysis in quoFEM. We'll optimize the design of a steel beam by minimizing weight while ensuring structural reliability.
📌 Step-by-Step Guide: Running an Optimization & UQ Study in quoFEM
🎯 Goal:
Optimize the design of a steel beam by adjusting its depth and flange width while ensuring it meets stress and deflection limits under uncertainty.
🛠 Tools Needed:
quoFEM (Download from the NHERI SimCenter)
A Finite Element (FE) model of the beam (e.g., OpenSees, ABAQUS, FEAP, etc.)
Python (if using OpenSeesPy for scripting)
📌 Step 1: Open quoFEM and Define the Problem
Launch quoFEM on your computer.
In the "GI" (General Information) tab, enter:
Project title (e.g., "Steel Beam Optimization").
Author name and units (e.g., SI or Imperial).
📌 Step 2: Define the Finite Element Model
Go to the "FEM" (Finite Element Model) tab.
Select the modeling tool you are using (e.g., OpenSees, ABAQUS, FEAP, OpenSeesPy).
Upload your FE model file (e.g., .tcl for OpenSees, .inp for ABAQUS).
Define output parameters (e.g., max stress, max deflection).
💡 Example: Steel Beam Model in OpenSeesPyIf using OpenSeesPy, you could define a simply supported beam under uniform load like this:
from openseespy.opensees import *
wipe()
# Define model
model('basic', '-ndm', 2, '-ndf', 3)
node(1, 0.0, 0.0)
node(2, 5.0, 0.0)
fix(1, 1, 1, 1)
fix(2, 0, 1, 0)
# Define material properties
E = 29000 # ksi
I = 100 # in^4 (to be optimized)
A = 10 # in^2
# Define element
element('elasticBeamColumn', 1, 1, 2, A, E, I, 1)
# Apply uniform load
timeSeries('Linear', 1)
pattern('Plain', 1, 1)
load(2, 0, -10.0, 0) # Load downward
# Analysis
system('BandGeneral')
constraints('Plain')
numberer('RCM')
algorithm('Linear')
integrator('LoadControl', 1.0)
analysis('Static')
analyze(1)
# Get max deflection
nodeDisp(2, 2)
📌 In quoFEM, you can set I (Moment of Inertia) as a design variable and optimize it.
📌 Step 3: Define Design Variables & Uncertainties
Go to the "RV" (Random Variables) tab.
Define input parameters with uncertainty, such as:
Yield Strength of Steel (Fy) → Normally distributed (mean = 50 ksi, std = 5 ksi).
Elastic Modulus (E) → Normally distributed (mean = 29000 ksi, std = 2000 ksi).
Beam Depth (d) → Design variable (range: 10–24 inches).
Flange Width (bf) → Design variable (range: 4–12 inches).
📌 Step 4: Define Optimization Objective & Constraints
Go to the "EDP" (Engineering Demand Parameter) tab to specify performance outputs:
Max Stress (σ) → Should not exceed 50 ksi (safety constraint).
Max Deflection (δ) → Should not exceed L/360 (serviceability constraint).
Go to the "QoI" (Quantity of Interest) tab and set:
Objective: Minimize beam weight (Weight = A Length Density).
Constraints:
σ ≤ Fy (Stress must not exceed yield strength).
δ ≤ L/360 (Deflection must meet serviceability limits).
📌 Step 5: Select Optimization Algorithm
Go to the "UQ" (Uncertainty Quantification) tab and choose:
Sensitivity Analysis (finds the most critical parameters).
Bayesian Calibration (adjusts FE model to match experimental data).
Reliability Analysis (checks probability of failure).
Optimization (finds the best beam dimensions).
Select "Optimization" and choose an algorithm:
Gradient-Based Optimization (if the problem is smooth).
Bayesian Optimization (for complex, noisy problems).
Genetic Algorithm (if multiple local minima exist).
Set Number of Iterations (e.g., 50–100) to allow the optimizer to converge.
📌 Step 6: Run the Analysis
Click "RUN" to start the optimization.
quoFEM will:
Sample different values for d, bf, Fy, E.
Run multiple FE simulations.
Find the optimal beam dimensions that minimize weight while satisfying constraints.
📌 Step 7: View & Interpret Results
Go to the "RES" (Results) tab to analyze outputs.
Key results include:
Optimal beam dimensions (d, bf) for minimum weight.
Probability of failure (if reliability analysis was performed).
Importance ranking of variables (which ones impact performance most).
Convergence plot (how optimization improved over iterations).
📌 Example Interpretation
Parameter | Initial Design | Optimized Design |
Beam Depth (d) | 18 in | 14.5 in |
Flange Width (bf) | 8 in | 6.5 in |
Weight | 600 lbs | 520 lbs (-13%) |
Max Stress (σ) | 47 ksi | 49.5 ksi (safe) |
Max Deflection (δ) | L/400 | L/360 (limit met) |
Conclusion:
The optimized beam is lighter (reduced weight by 13%) while still meeting stress and deflection limits.
Material variability (yield strength, modulus) had a small effect, but beam depth (d) was the most important factor in optimization.
🚀 Summary of Key Actions
Step | Action |
Step 1 | Load or create the finite element model |
Step 2 | Define design variables (beam depth, flange width) |
Step 3 | Define uncertainty in material properties (steel strength, modulus) |
Step 4 | Set optimization objective (minimize weight, ensure strength) |
Step 5 | Choose optimization algorithm (Gradient, Genetic, Bayesian) |
Step 6 | Run the analysis |
Step 7 | Analyze results (optimized beam design, weight reduction) |
🌟 Want to Modify the Example?
Need a different structure? This method works for columns, trusses, bridges, etc.
Want reliability analysis? Instead of optimization, you can check the failure probability of a design.
Need Bayesian Calibration? Use experimental data to fine-tune the FE model.
Would you like a deeper dive into any part of the process? 🚀
Comments