Pushover with Constant Ground Jerk

A graduate student and I are developing an OpenSees model of the water tower described in this paper. 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.pattern('UniformExcitation',23,1,'-accel',12) # direction = 1 (X-direction)


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

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

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

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