OpenSees Cloud

OpenSees AMI

No Reaction

Original Post - 20 Nov 2024 - Michael H. Scott

Visit Structural Analysis Is Simple on Substack.


As the old mantra goes, “you can displace without deforming, but you can’t deform without displacing”.

Other than a post here and there on particle dynamics, the examples on this site deal with element deformation (or strain), which requires nodal displacement. But what about examples with elements that undergo only rigid body displacement with no deformation?

Consider a cantilever that undergoes a support displacement, u. There are no applied loads.

Cantilever with support displacement

A simple assertion is that the displacement at the free end of the cantilever is the same as the imposed support displacement. Another outcome of the model being statically determinate is that the support displacement should not generate any reactions.

import openseespy.opensees as ops
from math import isclose

L = 48
E = 29000
A = 20
I = 800

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

ops.node(1,0,0); ops.fix(1,1,1,1)
ops.node(2,L,0)

ops.section('Elastic',1,E,A,I)
ops.beamIntegration('Legendre',1,1,2)

ops.geomTransf('Linear',1)

ops.element('dispBeamColumn',1,1,2,1,1)

u = 1.0

ops.timeSeries('Constant',1)
ops.pattern('Plain',1,1)
ops.sp(1,2,u)

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

ops.analyze(1)

assert isclose(u,ops.nodeDisp(2,2))

ops.reactions()

for dof in [1,2,3]:
    assert isclose(0.0,ops.nodeReaction(1,dof),abs_tol=1e-10)

The only gotcha for this assertion is that you cannot use the Plain constraint handler because a fixed node has an imposed displacement (via the sp command inside a load pattern). Also, if you forget to issue the reactions command, you will always get zero reactions for the wrong reason.

This test is a good sanity check if you are developing a new element (or testing current elements) because a stiffness matrix and load vector must be assembled to solve this problem. And the test is not limited to frame elements. You can impose support displacements on any stable, statically determinate model and know exactly what the nodal displacements will be and that the reactions should be zero.



For this model, what assertions would you make on the free end displacement and rotation when imposing a support rotation instead of a support displacement?