Influence Line: Internal Force (Mechanism)#

This example demonstrates how to compute the influence line for the internal force \(f_m\) at midspan of the first bar in a simple bar system when the modified structure becomes a mechanism.

Influence lines for internal forces are typically obtained by:

  • releasing the bar at the point where the force is to be evaluated, and

  • applying a unit deformation corresponding to the desired internal force quantity.

However, in this example, releasing the bar at midspan causes the structure to lose stiffness, turning it into a kinematically admissible mechanism. As a result, the system cannot be solved using the displacement method, since the stiffness matrix no longer has full rank.

In such cases, the influence line no longer corresponds to a bending line of a modified elastic system. Instead, it matches the displacement figure of the resulting rigid-body motion.

To obtain this displacement figure, a pole plan (Polplan) is constructed first. From this geometric construction, the corresponding displacement shape can be derived, which represents the influence line for the force quantity \(f_m\).

You can find the example as an executable Python file here.

Import Modules#

We start by importing the required classes needed to set up the structure and define the
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)

# 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)
../../_images/examples_06_influence_line_influence_line_fm_bar_unstable_4_0.png

Create Influence-Line#

We now create an InfluenceLine object that performs the computation:

[3]:
# 4. Define Influence line
il = InfluenceLine(system)

Compute Influence Line for Internal Force \(f_m\)#

To compute the influence line of the internal force \(f_m\) at the midpoint of the first bar, we specify:

  • force type: 'fm'

  • object: bar_1

  • local position = 0.5 (midspan)

[4]:
il.force(kind='fm', obj=bar_1, position=0.5)
../../_images/examples_06_influence_line_influence_line_fm_bar_unstable_8_0.png