Influence Line: Bar Deformation#
This example demonstrates how to compute the influence line for the vertical displacement \(w\) at midspan of the first bar in a simple two-span bar system.
The procedure follows the classical principle of unit loads:
- To determine the influence line of a specific displacement (or rotation),a unit force or unit moment is applied exactly at the location and in the direction of the desired response.
The system is then solved using the displacement method.
The resulting deformation of the structure corresponds directly to the influence line of the selected quantity.
This approach allows influence lines to be computed for any point and any generalized displacement, such as:
vertical displacement \(w\)
horizontal displacement \(u\)
rotation \(\varphi\)
You can find the example as an executable Python file here.
Import Modules#
InfluenceLine instance:[1]:
from sstatics.core.preprocessing import (
Node, Bar, Material, CrossSection, System
)
from sstatics.core.calc_methods import InfluenceLine
from sstatics.core.postprocessing.graphic_objects import ObjectRenderer, SystemGeo
Create System#
We first define the material, cross-section, nodes, and bars for the simple two-span bar system:
[2]:
# 1. Define material and cross-section
mat = Material(21000, 0.1, 8100, 0.1) # S235
cs = CrossSection(2769, 76.84, 20, 10, 0.1) # HEA-240
# 2. Define nodes with supports
node_1 = Node(0, 0, u='fixed', w='fixed')
node_2 = Node(300, 0, w='fixed')
node_3 = Node(600, 0, w='fixed')
# 3. Define bars and system
bar_1 = Bar(node_1, node_2, cs, mat)
bar_2 = Bar(node_2, node_3, cs, mat)
system = System([bar_1, bar_2])
# Visualize system
ObjectRenderer(SystemGeo(system, show_bar_text=True), 'mpl').show(show_axis=False)
Create Influence-Line#
We now create an InfluenceLine object that performs the computation:
[3]:
# 4. Define Influence line
il = InfluenceLine(system)
Compute Influence Line#
To compute the influence line for the vertical displacement \(w\) at midspan of bar_1, we apply the unit load at:
bar:
bar_1local position: = 0.5 (midpoint)
[4]:
il.deform(kind='w', obj=bar_1, position=0.5)