quoFEM Scenario: Seismic Performance-Based Optimization
- silviamazzoni
- Mar 2
- 4 min read
Here is an intersting scenario with a different type of objective.
Great choice! Let’s explore a different optimization setup for the 5-story RC building, but this time, instead of focusing on minimizing cost, we'll optimize the building for seismic resilience by:
✅ Maximizing the fundamental period (T1) to improve flexibility & reduce seismic forces✅ Minimizing inter-story drift ratio to prevent excessive structural deformation✅ Ensuring reliability by considering uncertainty in earthquake intensity
📌 Scenario: Seismic Performance-Based Optimization
🎯 Goal:
Adjust beam and column stiffness (EI - flexural rigidity) to maximize flexibility (longer period) while minimizing drift to keep the building safe.
🛠 Step-by-Step Guide
📌 Step 1: Define the New Optimization Objectives
Objective 1: Maximize the fundamental period (T1)
A longer period means the structure is more flexible, reducing seismic forces.
Objective 2: Minimize inter-story drift ratio (IDR)
Prevents excessive deformation that could lead to structural damage.
📌 This creates a multi-objective optimization problem, where we balance two competing goals:
Making the building more flexible (T1 ↑)
Keeping it stiff enough to limit excessive movement (IDR ↓)
📌 Step 2: Modify the Structural Model
📌 In this version, we will:✅ Make EI (flexural rigidity) an optimization variable✅ Compute T1 (fundamental period) from modal analysis✅ Compute IDR (drift ratio) under earthquake loading
💡 New OpenSees Model (model_modal.tcl)
model BasicBuilder -ndm 3 -ndf 6
# Define Nodes
for {set i 1} {$i <= 5} {incr i} {
node $i 0.0 [expr $i*3.0] 0.0
}
node 0 0.0 0.0 0.0
# Fix Base
fix 0 1 1 1 1 1 1
# Define Design Variables (EI as an Optimization Parameter)
set EI_beam [expr 29000000 * (12 * 24^3) / 12] ; # Flexural Rigidity of Beam (to be optimized)
set EI_col [expr 29000000 * (16 * 16^3) / 12] ; # Flexural Rigidity of Column (to be optimized)
# Define Elements (Elastic Beam-Columns)
element elasticBeamColumn 1 0 1 10 29000000 $EI_beam 1
element elasticBeamColumn 2 1 2 10 29000000 $EI_beam 1
element elasticBeamColumn 3 2 3 10 29000000 $EI_beam 1
element elasticBeamColumn 4 3 4 10 29000000 $EI_beam 1
element elasticBeamColumn 5 4 5 10 29000000 $EI_beam 1
# Perform Modal Analysis to Get Fundamental Period (T1)
set lambda [eigen 1]
set T1 [expr 2 * 3.1416 / sqrt($lambda)]
# Apply Earthquake Loading
set dt 0.02
timeSeries Path 2 -filePath ground_motion.txt -dt $dt -factor 1.0
pattern UniformExcitation 2 1 -accel 2
# Run Dynamic Analysis
analysis Transient
analyze 1000 $dt
# Compute Maximum Inter-Story Drift Ratio
set IDR_max 0.0
for {set i 1} {$i <= 4} {incr i} {
set IDR [expr abs([nodeDisp $i 2] - [nodeDisp [expr $i+1] 2])]
if {$IDR > $IDR_max} { set IDR_max $IDR }
}
# Record Outputs
recorder Node -file period.txt -time -node 5 -dof 2 "T1"
recorder Node -file drift.txt -time -node 5 -dof 2 "IDR_max"
📌 New Features in This Model:✅ Computes fundamental period (T1) via eigenvalue analysis✅ Computes maximum inter-story drift (IDR_max)✅ EI_beam and EI_col are now design variables
📌 Step 3: Define Optimization Variables
Go to "RV" (Random Variables) tab in quoFEM.
Define the following design variables:
Variable Name | Initial Value | Min Value | Max Value |
EI_beam (Beam Rigidity) | 5e6 k-in² | 2e6 k-in² | 10e6 k-in² |
EI_col (Column Rigidity) | 5e6 k-in² | 2e6 k-in² | 10e6 k-in² |
📌 These values control the stiffness of the structure, affecting both T1 and IDR_max.
📌 Step 4: Define Objectives and Constraints
Go to the "QoI" (Quantity of Interest) tab.
Define Objectives:
Maximize T1 (Period) → More flexible = Less seismic force.
Minimize IDR_max (Interstory Drift Ratio) → Prevents excessive deformation.
📌 Multi-objective optimization balances stiffness & flexibility.
Go to "EDP" (Engineering Demand Parameters) tab and set:
Constraint: IDR_max ≤ 2% (To prevent damage).
📌 Step 5: Select Optimization Algorithm
Go to "UQ" (Uncertainty Quantification) tab.
Select "Multi-Objective Optimization".
Choose Pareto Front Optimization (for trade-offs between T1 & IDR).
Set Max Iterations = 50.
📌 This approach finds the best trade-off solutions between period and drift.
📌 Step 6: Run Optimization
Click "RUN" in quoFEM.
quoFEM will:
Adjust beam & column stiffness (EI)
Compute T1 & IDR for each iteration.
Identify the optimal balance between flexibility and safety.
📌 Step 7: Analyze Results
📌 Pareto Front Graph (Trade-off Solutions)
IDR_max (%)
^
| *
| * *
| * *
|* *
|---------------------> Fundamental Period T1 (sec)
✅ The left side (low T1, high IDR) = Too stiff, unsafe✅ The right side (high T1, low IDR) = Too flexible, excessive drift✅ The Pareto front solutions (middle points) = Best balance
📌 Final Optimized Stiffness Values
Parameter | Initial | Optimized |
EI_beam | 5e6 k-in² | 6.2e6 k-in² |
EI_col | 5e6 k-in² | 7.1e6 k-in² |
T1 (Period) | 0.8 sec | 1.2 sec |
IDR_max | 2.5% (unsafe) | 1.8% (safe) |
📌 Optimized solution makes the structure flexible enough to reduce seismic force while keeping drift within safe limits!
🚀 What’s Next?
Want to visualize the Pareto front in Python? I can provide a script!
Need to optimize damping devices (base isolators, tuned mass dampers)?
Would you like Python code for visualization or another type of structural optimization? 😊
ความคิดเห็น