OpenSees Cloud

OpenSees AMI

Pushover with Constant Ground Jerk

Original Post - 05 Nov 2020 - Michael H. Scott

Visit Structural Analysis Is Simple on Substack.


A graduate student and I are developing an OpenSees model of the water tower benchmark structure developed by Bjornsson and Krishnan (2014). Thankfully, the model is pretty straightforward, i.e., reproducible from what’s written in the paper.

The authors of the paper did a pushover analysis of the water tower using dynamic response to a “slow, ramped, horizontal ground acceleration that increases at a constant rate of 0.3g/min”. In other words, a constant ground jerk of 0.3g/min. I wasn’t familiar with this approach to pushover analysis. I usually specify a load pattern, then ramp up the load factor in a static analysis.

Naturally, I had to figure out how to do this in OpenSees. After defining your model, create a linear time series with the jerk as the time series factor. Then define a uniform excitation and proceed with a dynamic analysis as usual.

inch = 1.0
sec = 1.0
minute = 60*sec
g = 386.4*inch/sec**2

#
# Define model, including mass and damping
#

dt = 0.02*sec
Tfinal = 180*sec

ops.timeSeries('Linear',12,'-factor',0.3*g/min)
ops.pattern('UniformExcitation',23,1,'-accel',12) # direction = 1 (X-direction)

ops.analysis('Transient')

Nsteps = int(Tfinal/dt)
for i in range(Nsteps):
   ok = ops.analyze(1,dt)
   if ok < 0:
      break
   ops.reactions('-dynamic')

   #
   # Do other stuff
   #

The load applied to each dynamic DOF is directly proportional to the nodal mass and in the opposite direction of the ground acceleration.

Simple 2DOF model with increasing ground acceleration

The pushover analysis works, but the real question is how far does the ground displace?