Structural Analysis
Indeterminate structures, matrix methods, and influence lines.
Structural Analysis
Structural analysis is the determination of forces, moments, and deformations in structures under applied loads. While statically determinate structures can be analyzed using equilibrium equations alone, most real-world structures are statically indeterminate, requiring additional compatibility and material relationships.
Classification of Structures
Degree of Indeterminacy
External Indeterminacy: When support reactions exceed equilibrium equations
For 2D structures:
Where is the number of reaction components.
Internal Indeterminacy: Additional redundancy within the structure
For trusses:
Where = members, = reactions, = joints
For frames:
Where = internal hinges (releases)
Stability
A structure is stable if:
- It can resist all possible loads
- It doesn't form a mechanism
- It's not improperly constrained
Conditions:
- Determinate: (truss) or (frame)
- Stable and Indeterminate: (properly arranged)
- Unstable: or improper arrangement
Force Method (Flexibility Method)
The force method treats redundant forces as unknowns and uses compatibility conditions to solve for them.
Basic Procedure
- Determine degree of indeterminacy ()
- Select redundant forces
- Remove redundants to create a primary (released) structure
- Write compatibility equations:
Where:
- = displacement at due to applied loads
- = flexibility coefficient (displacement at due to unit force at )
- = redundant forces
Flexibility Coefficients
Using virtual work:
For beams (bending dominant):
Maxwell's Reciprocal Theorem
The displacement at due to unit load at equals displacement at due to unit load at .
Displacement Method (Stiffness Method)
The displacement method treats joint displacements as unknowns and uses equilibrium conditions at joints.
Basic Procedure
- Identify degrees of freedom (unknown displacements)
- Restrain all DOFs to create the restrained structure
- Calculate fixed-end forces
- Write equilibrium equations:
Where:
- = applied joint loads - fixed-end forces
- = stiffness matrix
- = joint displacements
Element Stiffness Matrix
For a beam element with axial deformation:
Fixed-End Moments
For uniform load :
For central point load :
For point load at distance from A:
Moment Distribution Method
A hand-calculation method for continuous beams and frames with sidesway prevented.
Key Concepts
Stiffness Factor:
Distribution Factor:
Carry-Over Factor: For prismatic members = 0.5
Procedure
- Calculate distribution factors at each joint
- Calculate fixed-end moments
- Release one joint at a time, distribute unbalanced moment
- Carry over half to far ends
- Repeat until moments converge
Modified Stiffness for End Conditions
| Far End Condition | Stiffness Factor |
|---|---|
| Fixed | |
| Pinned | |
| Free (cantilever) | 0 |
Slope-Deflection Method
Relates end moments to rotations and displacements.
Slope-Deflection Equations
Where:
- , = end rotations
- = chord rotation (sidesway)
- , = fixed-end moments
Application to Continuous Beams
- Write slope-deflection equations for each span
- Apply moment equilibrium at each joint
- Solve simultaneous equations for rotations
- Calculate final moments
Influence Lines
Influence lines show the variation of a specific response (reaction, shear, moment) as a unit load moves across the structure.
Muller-Breslau Principle
The influence line for a response is the deflected shape caused by removing the restraint corresponding to that response and introducing a unit displacement.
Influence Line Equations
Simply supported beam:
Reaction at A:
Shear at point C (distance from A):
Moment at point C:
Using Influence Lines
For concentrated loads:
For distributed loads:
Maximum Effects from Moving Loads
Position loads to maximize the area under influence line:
- Maximum positive effect: Load over positive area
- Maximum negative effect: Load over negative area
Matrix Structural Analysis
Direct Stiffness Method
- Establish element properties: For each element, form local stiffness matrix
- Transform to global coordinates:
- Assemble global stiffness matrix: Add element contributions
- Apply boundary conditions: Modify equations for known displacements
- Solve for displacements:
- Calculate member forces:
Transformation Matrix
For 2D frame element at angle :
Where and .
Approximate Methods
Portal Method (for Lateral Loads)
Assumptions:
- Inflection points at midheight of columns
- Inflection points at midspan of beams
- Interior columns carry twice the shear of exterior columns
Cantilever Method (for Lateral Loads)
Assumptions:
- Inflection points at midheight of columns and midspan of beams
- Axial stress in columns varies linearly from neutral axis
Real-World Application: Continuous Bridge Analysis
Analyzing a three-span continuous bridge using the moment distribution method.
Bridge Analysis Example
import math
# Bridge geometry and properties
bridge_params = {
'spans': [20.0, 25.0, 20.0], # meters
'EI': 1.0e9, # kN-m^2 (constant)
'dead_load': 30.0, # kN/m
'live_load': 45.0, # kN/m (applied to spans 1 and 3)
}
# Calculate stiffness factors
L1, L2, L3 = bridge_params['spans']
K_AB = 1 / L1 # Proportional to I/L
K_BC = 1 / L2
K_CB = 1 / L2
K_CD = 1 / L3
# Distribution factors at joint B
sum_K_B = K_AB + K_BC
DF_BA = K_AB / sum_K_B
DF_BC = K_BC / sum_K_B
# Distribution factors at joint C
sum_K_C = K_CB + K_CD
DF_CB = K_CB / sum_K_C
DF_CD = K_CD / sum_K_C
# Fixed-end moments (wL^2/12)
w = bridge_params['dead_load'] + bridge_params['live_load']
FEM_AB = -w * L1**2 / 12 # negative = counterclockwise at A
FEM_BA = w * L1**2 / 12
FEM_BC = -w * L2**2 / 12
FEM_CB = w * L2**2 / 12
FEM_CD = -w * L3**2 / 12
FEM_DC = w * L3**2 / 12
print(f"Continuous Bridge Analysis - Moment Distribution")
print(f"=" * 50)
print(f"\nSpan lengths: {L1}m, {L2}m, {L3}m")
print(f"Total load: {w} kN/m")
print(f"\nDistribution Factors:")
print(f" Joint B: DF_BA = {DF_BA:.3f}, DF_BC = {DF_BC:.3f}")
print(f" Joint C: DF_CB = {DF_CB:.3f}, DF_CD = {DF_CD:.3f}")
print(f"\nFixed-End Moments (kN-m):")
print(f" Span AB: M_AB = {FEM_AB:.1f}, M_BA = {FEM_BA:.1f}")
print(f" Span BC: M_BC = {FEM_BC:.1f}, M_CB = {FEM_CB:.1f}")
print(f" Span CD: M_CD = {FEM_CD:.1f}, M_DC = {FEM_DC:.1f}")
# Moment distribution iterations
moments = {
'AB': FEM_AB, 'BA': FEM_BA,
'BC': FEM_BC, 'CB': FEM_CB,
'CD': FEM_CD, 'DC': FEM_DC
}
# Simplified moment distribution (symmetric structure, symmetric load)
# Joint B unbalanced moment
UB_B = -(moments['BA'] + moments['BC'])
dist_BA = DF_BA * UB_B
dist_BC = DF_BC * UB_B
CO_AB = 0.5 * dist_BA
CO_CB = 0.5 * dist_BC
# Joint C unbalanced moment
UB_C = -(moments['CB'] + CO_CB + moments['CD'])
dist_CB = DF_CB * UB_C
dist_CD = DF_CD * UB_C
# Final moments (after several iterations, converged values)
M_B = moments['BA'] + dist_BA + 0.5 * dist_CB # Approximate
M_C = moments['CB'] + CO_CB + dist_CB # Approximate
print(f"\nFinal Support Moments (approximate, kN-m):")
print(f" Moment at B: {abs(M_B):.1f}")
print(f" Moment at C: {abs(M_C):.1f}")
# Maximum positive moment in span
M_max_midspan = w * L2**2 / 8 - abs(M_B + M_C) / 2
print(f"\nMaximum positive moment in center span: {M_max_midspan:.1f} kN-m")
Your Challenge: Indeterminate Beam Analysis
Analyze a two-span continuous beam using the force method.
Goal: Determine the support reactions and bending moments for a continuous beam.
Problem Setup
import math
# Beam configuration
beam_config = {
'L1': 6.0, # meters (first span)
'L2': 8.0, # meters (second span)
'EI': 50000, # kN-m^2
'w1': 20.0, # kN/m (uniform load on span 1)
'P': 40.0, # kN (point load on span 2)
'P_location': 5.0, # meters from middle support
}
# This is a 1-degree indeterminate structure
# Select reaction at middle support (B) as the redundant
# Primary structure: two simply supported beams
# Displacement at B due to applied loads (released structure)
# For span 1 with UDL:
L1 = beam_config['L1']
w1 = beam_config['w1']
# Deflection at B due to w1 on span 1 (using superposition)
delta_B1_load = 5 * w1 * L1**4 / (384 * beam_config['EI'])
# For span 2 with point load:
L2 = beam_config['L2']
P = beam_config['P']
a = beam_config['P_location']
b = L2 - a
# Deflection at B due to P on span 2
delta_B2_load = P * a * b * (L2**2 - a**2 - b**2) / (6 * L2 * beam_config['EI'])
# Total displacement at B due to loads
delta_B_load = delta_B1_load + delta_B2_load
# Flexibility coefficient: displacement at B due to unit load at B
# For two spans meeting at B
f_BB = (L1**3 / (48 * beam_config['EI'])) + (L2**3 / (48 * beam_config['EI']))
# Redundant reaction at B (compatibility: delta_B = 0)
R_B = delta_B_load / f_BB
# Calculate reactions at A and C
R_A = w1 * L1 / 2 - R_B * L1 / (2 * L1) # Simplified
R_C = P * a / L2 + R_B * L2 / (2 * L2) # Simplified
print(f"Two-Span Continuous Beam Analysis")
print(f"=" * 40)
print(f"\nGeometry:")
print(f" Span 1: {L1} m with UDL = {w1} kN/m")
print(f" Span 2: {L2} m with P = {P} kN at {a} m from B")
print(f"\nForce Method Results:")
print(f" Reaction at B (redundant): {R_B:.2f} kN")
# Moment at B
M_B_left = R_A * L1 - w1 * L1**2 / 2
M_B_right = R_C * L2 - P * (L2 - a)
print(f"\nMoments:")
print(f" Moment at B (from left): {abs(M_B_left):.2f} kN-m")
# Maximum positive moments
x_max_1 = R_A / w1 if R_A > 0 else L1/2 # Location of max moment in span 1
M_max_1 = R_A * x_max_1 - w1 * x_max_1**2 / 2
print(f" Maximum positive moment in span 1: {M_max_1:.2f} kN-m at x = {x_max_1:.2f} m")
How would the analysis change if there were settlement at the middle support?
ELI10 Explanation
Simple analogy for better understanding
Self-Examination
What is the degree of static indeterminacy and how is it calculated for frames and trusses?
How does the force method differ from the displacement method in structural analysis?
What is the purpose of influence lines and how are they used in bridge design?
How are stiffness matrices assembled for frame structures using the direct stiffness method?
What are the key assumptions and limitations of linear elastic structural analysis?