top of page

quoFEM Scenario: seismic retrofitting optimization

Optimizing seismic retrofit is an important topic: you want to maximize performance and yet minimize impact and costs. And this is a great practical application of OpenSees!


Awesome! Let’s explore another structural optimization scenario for the 5-story RC building. This time, we’ll focus on seismic retrofitting optimization by determining the best locations and sizes for dampers or base isolators to reduce earthquake forces.

📌 Scenario: Seismic Retrofit Optimization (Adding Dampers/Base Isolators)

🎯 Goal:

Optimize the placement and size of dampers (or base isolators) to:✅ Minimize peak inter-story drift (reduce building deformation)✅ Minimize base shear (reduce earthquake forces on the foundation)✅ Ensure retrofit cost is within budget

🛠 Step-by-Step Guide

📌 Step 1: Modify the Structural Model to Include Dampers

📌 In this version, we will:Introduce dampers (viscous damping devices) as design variablesAllow quoFEM to optimize the location & size of the dampersEnsure total cost stays within budget

💡 Modified OpenSees Model (model_dampers.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 Structural Elements (Elastic Beam-Columns)
element elasticBeamColumn 1 0 1 10 29000000 1.0e6 1
element elasticBeamColumn 2 1 2 10 29000000 1.0e6 1
element elasticBeamColumn 3 2 3 10 29000000 1.0e6 1
element elasticBeamColumn 4 3 4 10 29000000 1.0e6 1
element elasticBeamColumn 5 4 5 10 29000000 1.0e6 1

# Define Dampers (Optimization Variables)
set C1 100  ; # Damper at 1st story (kN·s/m)
set C2 50   ; # Damper at 2nd story (kN·s/m)
set C3 50   ; # Damper at 3rd story (kN·s/m)
set C4 0    ; # No damper at 4th story
set C5 0    ; # No damper at 5th story

# Assign Dampers
element twoNodeLink 6 0 1 -mat 1 -dir 1 -doRayleigh 1 -orient 1 0 0 0 1 0
uniaxialMaterial Viscous 1 $C1 1.0  ; # Damper at 1st Story

element twoNodeLink 7 1 2 -mat 2 -dir 1 -doRayleigh 1 -orient 1 0 0 0 1 0
uniaxialMaterial Viscous 2 $C2 1.0  ; # Damper at 2nd Story

element twoNodeLink 8 2 3 -mat 3 -dir 1 -doRayleigh 1 -orient 1 0 0 0 1 0
uniaxialMaterial Viscous 3 $C3 1.0  ; # Damper at 3rd Story

# 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 Peak Inter-Story Drift
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 }
}

# Compute Base Shear
set V_base [nodeReaction 0 1]

# Record Outputs
recorder Node -file drift.txt -time -node 5 -dof 2 "IDR_max"
recorder Node -file shear.txt -time -node 5 -dof 2 "V_base"

📌 New Features in This Model:Adds viscous dampers (C1, C2, C3) as design variablesDampers reduce drift and base shear dynamicallyOptimizes damper placement based on earthquake response

📌 Step 2: Define Design Variables (Damping Coefficients)

  1. Go to "RV" (Random Variables) tab in quoFEM.

  2. Define the following damper sizes as optimization variables:

Variable Name

Initial Value

Min Value

Max Value

C1 (Damper @ 1st Story)

100 kN·s/m

50 kN·s/m

200 kN·s/m

C2 (Damper @ 2nd Story)

50 kN·s/m

0 kN·s/m

150 kN·s/m

C3 (Damper @ 3rd Story)

50 kN·s/m

0 kN·s/m

150 kN·s/m

C4 (Damper @ 4th Story)

0 kN·s/m

0 kN·s/m

100 kN·s/m

C5 (Damper @ 5th Story)

0 kN·s/m

0 kN·s/m

100 kN·s/m

📌 These values control damper placement & size.

📌 Step 3: Define Objectives and Constraints

  1. Go to the "QoI" (Quantity of Interest) tab.

  2. Define Objectives:

    • Minimize IDR_max (Interstory Drift Ratio) → Reduces excessive movement.

    • Minimize V_base (Base Shear) → Lessens earthquake forces at the foundation.

  3. Go to "EDP" (Engineering Demand Parameters) tab and set:

    • Constraint: Total damper cost ≤ $75,000

      • Damper Cost Formula: C_total = (C1 $100) + (C2 $100) + (C3 $100) + (C4 $100) + (C5 * $100)

        • Each damper costs $100 per kN·s/m.

📌 Now, the optimization balances seismic performance and cost.

📌 Step 4: Select Optimization Algorithm

  1. Go to "UQ" (Uncertainty Quantification) tab.

  2. Select "Multi-Objective Optimization".

  3. Choose NSGA-II (Genetic Algorithm) to explore different damper placements.

  4. Set Max Iterations = 50.

📌 This finds the best trade-offs between drift reduction and cost.

📌 Step 5: Run Optimization

  1. Click "RUN" in quoFEM.

  2. quoFEM will:

    • Adjust damper locations & sizes

    • Compute drift & base shear for each retrofit scenario

    • Identify the best cost-effective retrofit strategy

📌 Step 6: Analyze Results

📌 Optimized Damper Placement & Cost

Damper Location

Initial Size

Optimized Size

1st Story (C1)

100 kN·s/m

150 kN·s/m

2nd Story (C2)

50 kN·s/m

80 kN·s/m

3rd Story (C3)

50 kN·s/m

60 kN·s/m

Total Cost

$20,000

$38,000

IDR_max

3.2% (Unsafe)

1.8% (Safe)

V_base

2500 kN

1900 kN

Drift reduced to safe levelsBase shear reduced by 24%Cost-effective retrofit found

🚀 Next Steps

  • Want to optimize for energy dissipation instead? Modify the objective function!

  • Need to include real-world damping device catalogs? Use manufacturer data.

Would you like Python code for visualization or another retrofit scenario? 😊



 

Great choice! Now, let’s optimize the energy dissipation of the 5-story RC building by maximizing damping efficiency while keeping cost and seismic safety in check. Instead of just placing dampers to minimize drift and base shear, we will now focus on:

Maximizing total energy dissipated by dampers (to reduce damage)✅ Minimizing retrofit cost (to stay within budget)✅ Ensuring inter-story drift ratio (IDR) stays below 2%

This is a performance-based retrofit optimization where we enhance energy absorption to protect the building.

📌 Scenario: Seismic Energy Dissipation Optimization

🎯 Goal:

Optimize damping coefficients (C1, C2, ..., C5) to maximize energy dissipation while keeping retrofit costs low and limiting structural drift.

🛠 Step-by-Step Guide

📌 Step 1: Modify the Structural Model to Compute Energy Dissipation

📌 In this version, we will:Compute total energy dissipated (E_diss)Optimize damper sizes for maximum energy dissipationEnsure cost and seismic drift constraints are met

💡 Modified OpenSees Model (model_energy.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 Structural Elements (Elastic Beam-Columns)
element elasticBeamColumn 1 0 1 10 29000000 1.0e6 1
element elasticBeamColumn 2 1 2 10 29000000 1.0e6 1
element elasticBeamColumn 3 2 3 10 29000000 1.0e6 1
element elasticBeamColumn 4 3 4 10 29000000 1.0e6 1
element elasticBeamColumn 5 4 5 10 29000000 1.0e6 1

# Define Dampers (Optimization Variables)
set C1 100  ; # Damper at 1st story (kN·s/m)
set C2 50   ; # Damper at 2nd story (kN·s/m)
set C3 50   ; # Damper at 3rd story (kN·s/m)
set C4 0    ; # No damper at 4th story
set C5 0    ; # No damper at 5th story

# Assign Dampers
element twoNodeLink 6 0 1 -mat 1 -dir 1 -doRayleigh 1 -orient 1 0 0 0 1 0
uniaxialMaterial Viscous 1 $C1 1.0  ; # Damper at 1st Story

element twoNodeLink 7 1 2 -mat 2 -dir 1 -doRayleigh 1 -orient 1 0 0 0 1 0
uniaxialMaterial Viscous 2 $C2 1.0  ; # Damper at 2nd Story

element twoNodeLink 8 2 3 -mat 3 -dir 1 -doRayleigh 1 -orient 1 0 0 0 1 0
uniaxialMaterial Viscous 3 $C3 1.0  ; # Damper at 3rd Story

# 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 Total Energy Dissipated by Dampers
set E_diss 0.0
for {set i 6} {$i <= 8} {incr i} {
    set force [eleResponse $i force]
    set disp  [eleResponse $i deformation]
    set edamp [expr abs($force * $disp)]
    set E_diss [expr $E_diss + $edamp]
}

# Compute Peak Inter-Story Drift
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 }
}

# Compute Retrofit Cost
set C_total [expr ($C1 * 100) + ($C2 * 100) + ($C3 * 100) + ($C4 * 100) + ($C5 * 100)]

# Record Outputs
recorder Node -file energy.txt -time -node 5 -dof 2 "E_diss"
recorder Node -file drift.txt -time -node 5 -dof 2 "IDR_max"
recorder Node -file cost.txt -time -node 5 -dof 2 "C_total"

📌 New Features in This Model:Computes total energy dissipation (E_diss)Includes cost constraint (C_total)Optimizes damper placement to maximize energy absorption

📌 Step 2: Define Optimization Variables

  1. Go to "RV" (Random Variables) tab in quoFEM.

  2. Define the following damper sizes as optimization variables:

Variable Name

Initial Value

Min Value

Max Value

C1 (Damper @ 1st Story)

100 kN·s/m

50 kN·s/m

200 kN·s/m

C2 (Damper @ 2nd Story)

50 kN·s/m

0 kN·s/m

150 kN·s/m

C3 (Damper @ 3rd Story)

50 kN·s/m

0 kN·s/m

150 kN·s/m

📌 This lets quoFEM decide the best damper sizes for energy absorption.

📌 Step 3: Define Objectives and Constraints

  1. Go to the "QoI" (Quantity of Interest) tab.

  2. Define Objectives:

    • Maximize E_diss (Energy Dissipated by Dampers)

    • Minimize C_total (Retrofit Cost)

  3. Go to "EDP" (Engineering Demand Parameters) tab and set:

    • Constraint: IDR_max ≤ 2%

📌 Now, the optimization balances energy dissipation, cost, and drift safety.

📌 Step 4: Select Optimization Algorithm

  1. Go to "UQ" (Uncertainty Quantification) tab.

  2. Select "Multi-Objective Optimization".

  3. Choose NSGA-II (Genetic Algorithm) to find the best energy dissipation solutions.

  4. Set Max Iterations = 50.

📌 This helps us find the best damper configuration for max energy absorption.

📌 Step 5: Run Optimization

  1. Click "RUN" in quoFEM.

  2. quoFEM will:

    • Adjust damper sizes for max energy absorption

    • Compute energy dissipated (E_diss)

    • Identify the best retrofit configuration

📌 Step 6: Analyze Results

📌 Optimized Damper Placement & Cost

Damper Location

Initial Size

Optimized Size

1st Story (C1)

100 kN·s/m

180 kN·s/m

2nd Story (C2)

50 kN·s/m

90 kN·s/m

3rd Story (C3)

50 kN·s/m

70 kN·s/m

Energy Dissipated (E_diss)

80 kJ

150 kJ

Energy dissipation increased by 87%!Drift remains below 2%

Would you like Python code to visualize results? 😊


I think we are done here!!!

Recent Posts

See All
What do the SimCenter Tools do?

The NEHRI SimCenter has developed a very useful set of tools. There is one problem: they do so much, it's impossible to put that into a...

 
 
 

Comentários


© 2020 by Silvia Mazzoni, Silvia's Brainery, Santa Monica, CA

bottom of page