Absolutely, It’s Relative

One of the most frequently asked OpenSees questions is whether node recorders record absolute or relative displacement (relative to the ground) when a model is subjected to a uniform excitation.

There’s several approaches to find the answer to this question.

One solution is to apply a simple uniform excitation–like a constant ground acceleration–to an SDF model, then plot what the node recorder records.

Here is the code for this SDF analysis, an MWE if you will.

import openseespy.opensees as ops

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

k = 400
m = 1
g = 386.4

ops.node(1,0); ops.fix(1,1)
ops.node(2,0); ops.mass(2,m)

ops.uniaxialMaterial('Elastic',1,k)

ops.element('zeroLength',1,1,2,'-mat',1,'-dir',1)

ag = 1.0*g
ops.timeSeries('Constant',1,'-factor',ag)
ops.pattern('UniformExcitation',1,1,'-accel',1)

tf = 1.0
dt = 0.001
Nsteps = int(tf/dt)

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

ops.analysis('Transient')
ops.analyze(Nsteps,dt)

At constant acceleration, \ddot{u}_g, the ground will move quadratically with respect to time–193.2 inches after 1 second of 1 g acceleration according to u_g(t)=\frac{1}{2}\ddot{u}_gt^2. Below is the displacement response history recorded by the node recorder.

The displacement response does not increase quadratically and it’s nowhere near 193.2 inches. Instead, the displacement oscillates about the static, fixed base solution, -{m\ddot{u}_g}/k.

Thus, the recorded displacement is relative to the ground for a uniform excitation. Same goes for the nodal velocity and acceleration.

OpenSees bonus points: the peak dynamic response is twice the static solution, as expected based on the closed form SDF solution for undamped, forced vibration with a step function.


OpenSees community, what approaches have you come up with in order to answer this question of relative or absolute displacement recorded by the node recorders?

3 thoughts on “Absolutely, It’s Relative

      1. Greetings Prof. Scott,

        What Dong R.S says is found in Node Recorder, where it states that:

        For a UniformExcitation analysis, this command generates output file nodesA.out that contains absolute accelerations (ground motion acceleration + relative acceleration) in x direction for nodes 1, 2, 3, and 4. NOTE that if no TimeSeries is provided and a uniform excitation analysis is performed, the relative accelerations are recorded.

        This cannot be found on the OpenSeesPy documentation, hence the confusion.

        The ‘-timeSeries’ argument has to be omitted in a Node or Node Envelope recorder in order to obtain the relative accel / vel / disp, otherwise the absolute values are recorded.

        Like

Leave a reply to Dong R.S Cancel reply

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