Remote Control

An OpenSees question posted online mentioned numerical issues when attempting to load a structural model via a “remote node” connected to the main structure by a rigid link.

I quipped, “Why don’t you use an equivalent force-couple?” That response did not garner a reply, but the original question brought up a common issue with the unnecessary use of rigid links.

Suppose we have a portal frame loaded via a “remote node” some distance d from the model.

The literal implementation of this model involves a frame, a rigid beam, and a load while a more efficient implementation involves only a frame and an equivalent force-couple.

Analysis of both models gives the same response for the frame. Run the script below and the assertions on nodal displacements and reactions will pass.

import openseespy.opensees as ops
from numpy import isclose 

E = 29000
A = 20
I = 1000

H = 240
h = 168

P = 10
d = 72

ops.wipe()
ops.model('basic','-ndm',2,'-ndf',3)

ops.node(1,0,0); ops.fix(1,1,1,1)
ops.node(2,0,h)
ops.node(3,H,h)
ops.node(4,H,0); ops.fix(4,1,1,1)

ops.geomTransf('Linear',1)

ops.element('elasticBeamColumn',1,1,2,A,E,I,1)
ops.element('elasticBeamColumn',2,2,3,A,E,I,1)
ops.element('elasticBeamColumn',3,3,4,A,E,I,1)

ops.timeSeries('Constant',1)
ops.pattern('Plain',1,1)
ops.load(3,0,-P,-P*d)

ops.analysis('Static','-noWarnings')
ops.analyze(1)
ops.reactions()

u1 = ops.nodeDisp(3)
R1 = ops.nodeReaction(1)

ops.remove('loadPattern',1)

# Remote node and rigid link
ops.node(5,H+d,h) 
ops.rigidLink('beam',5,3)

ops.pattern('Plain',1,1)
ops.load(5,0,-P,0)

ops.wipeAnalysis()

ops.constraints('Transformation')
ops.analysis('Static','-noWarnings')
ops.analyze(1)
ops.reactions()

u2 = ops.nodeDisp(3)
R2 = ops.nodeReaction(1)

assert isclose(u1,u2).all()
assert isclose(R1,R2).all()

If you are not concerned about the deformations of a statically determinate part of a model, you can safely remove that part and replace its loads with statically equivalent force-couples. There’s no need to bring constraint handlers into an analysis if you don’t have to. For three-dimensional models, you can use cross-products or Varignon’s theorem to form the equivalent loadings.

On the other hand, if deformations or geometric nonlinearity of the rigid arm are important, then yeah, model it up with flexible elements. But you rarely have to use rigid links to apply loads from remote nodes.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.