# 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?

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