OpenSees Cloud
OpenSees AMI
Reaction and Unbalance
Original Post - 09 May 2021 - Michael H. Scott
Visit Structural Analysis Is Simple on Substack.
A confluence of recent inquiries led me to take a look at what the nodeReaction and nodeUnbalance commands return in an OpenSees dynamic analysis. While I have a pretty good handle on nodeReaction, going in to this post, I was unsure about nodeUnbalance.
We can learn a lot from a couple springs, so I created the 1D model shown below.
Each element has stiffness and damping defined through an elastic uniaxial material and the applied loads are step functions, i.e., assigned to a constant time series.
The values obtained from nodeReaction
and nodeUnbalance
after issuing
the reactions()
and reactions('-dynamic')
commands at each time step
in a dynamic analysis are shown below.
Because the reactions()
command only assembles static and damping forces
from elements, reactions are reported at nodes 2 and 3 in this case. You
can verify that these reactions are equal to the mass times acceleration
at each node. Also note that we “damp out” to the static equilibrium
solution at all nodes.
When we use reactions('-dynamic')
, the reactions at nodes 2 and 3 are
zero, as expected.
On the bright side, the reaction at the support, node 1, is the same in both cases. So, you don’t really have anything to worry about unless you are looking at the reactions of unconstrained DOFs.
Turning our attention to the nodeUnbalance
command, we see that it
returns the applied load at each node. Useful? Yes. Interesting? No. But
I’m sure there’s other cases where nodeUnbalance gives more interesting
results–maybe with member loads or element mass?
Please do give this simple example a try at home. If you’re feeling
brave, try to make sense out of the results obtained when constraining
node 2 to node 3 with the equalDOF
command.