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, so it could be a future modeling challenge here at PD.
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 g = 386.4*inch/sec**2 # # Define model, including mass and damping # dt = 0.02*sec Tfinal = 60*sec ops.timeSeries('Linear',12,'-factor',0.3*g/Tfinal) 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.
The pushover analysis works, but the real question is how far does the ground displace?