This example demonstrates the simulation of follower loading applied to frame elements.
This example demonstrates the simulation of follower loading applied to frame elements.
Our model is a basic cantilever composed of ne
, ExactFrame
elements.
In order to define the follower loading, we first add a
Plain
load pattern to the current
Model
instance,
labeled with the tag 1
and scaled in time by a Linear
time series:
model.pattern("Plain", 1, "Linear")
Next we add a
FrameLoad
to this pattern, applied to the element with tag ne
(ie, the last element).
The argument "Dirac"
specifies that the loading is Dirac delta function.
Before performing the analysis, we’ll also define a Motion
with the veux
library which we will use to animate the simulation:
import veux
artist = veux.create_artist(model, model_config=dict(extrude_outline="square"))
artist.draw_nodes(size=10)
artist.draw_sections()
motion = veux.Motion(artist)
Once the loading is defined and post-processing is setup, the analysis procedure follows the standard idiom for static incremental analysis:
u = []
v = []
w = []
P = []
while model.getTime() < Pmax:
if model.analyze(1) != 0:
print(f"Failed at time = {model.getTime()} with v = {v[-1]}")
break
motion.advance(time=model.getTime()*speed)
motion.draw_sections(rotation=model.nodeRotation,
position=model.nodeDisp)
u.append(-model.nodeDisp(ne, 1))
v.append( model.nodeDisp(ne, 2))
w.append( model.nodeDisp(ne, 3))
P.append( model.getTime())
The following plot reproduces Figure 4 from