OpenSees Cloud

OpenSees AMI

Trying to Get a Reaction

Original Post - 15 Nov 2021 - Michael H. Scott

Visit Structural Analysis Is Simple on Substack.


OpenSees does not compute reactions automatically because this can be a time consuming process–OpenSees assembles reactions over all nodes in a model, not just over the nodes that are constrained. When performing response history analysis, assembling reactions is likely not something you want or need to do at every time step. You probably just want to get the nodal displacements and move on.

But if you do want reactions and you don’t want OpenSees to always report zero (because the reactions were not assembled), there are a couple ways to go.

First, you can issue the reactions command to get the reactions “on demand”. This is useful if you only want the reactions at certain times in an analysis, e.g., after the final step of a pushover analysis.

ops.reactions()

See this post for more details on the -dynamic option for the reactions command.

After calling the reactions command, you can use the nodeReaction command to get individual reactions, e.g., the DOF 1 reaction of node 2:

R2X = ops.nodeReaction(2,1)

You can omit the DOF to get a list of all reactions at a node.

R2 = ops.nodeReaction(2)

An alternative to the nodeReaction command is the nodeResponse command, but you can only get reactions one DOF at a time. Note that 6 is the response code for nodal reaction.

R2X = ops.nodeResponse(2,1,6)

The second approach is a node recorder. Once the recorder is created, the reactions will be computed automatically at all subsequent analysis steps–you do not have to use the reactions command. For example, to record the reaction history for DOFs 1 and 2 of node 2:

ops.recorder('Node','-file','reactions2.out','-time','-node',2,'-dof',1,2,'reaction')

There are likely other ways to force OpenSees to compute reactions, but these are the two most common methods.