OpenSees Cloud
OpenSees AMI
A Simple Base-Isolated Model
Original Post - 26 Nov 2024 - Michael H. Scott
Visit Structural Analysis Is Simple on Substack.
Although there are several base isolator elements available in OpenSees, I don’t know much about base isolation. And when I don’t know much about a topic, I look for a simple example to play with–usually something elastic that can be expanded later and that I can return to when I run into issues with nonlinear response.
The one story model shown below is from Chopra’s book (all editions as far as I can tell). The model is parameterized by the model’s fixed-based period and damping ratio along with the period and damping ratio of the base isolation system.
The model can be analyzed using two zero length elements in series with elastic materials whose stiffness and damping are based on the system properties. You won’t get Rayleigh or modal damping to work out here. And let’s assume the mass is m=300/g kip-in/sec2.
import openseespy.opensees as ops
# Units = kip, inch, sec
g = 386.4
# Fixed-base properties
m = 300/g
Tf = 0.4
zetaf = 0.02
omegaf = 2*3.14159/Tf
kf = m*omegaf**2
cf = zetaf*2*m*omegaf
# Isolator properties
mb = 2.0/3*m
Tb = 2.0
zetab = 0.10
omegab = 2*3.14159/Tb
kb = (m+mb)*omegab**2
cb = zetab*2*(m+mb)*omegab
ops.wipe()
ops.model('basic','-ndm',1,'-ndf',1)
ops.node(0,0); ops.fix(0,1)
ops.node(1,0); ops.mass(1,mb)
ops.node(2,0); ops.mass(2,m)
ops.uniaxialMaterial('Elastic',1,kb,cb)
ops.uniaxialMaterial('Elastic',2,kf,cf)
ops.element('zeroLength',1,0,1,'-mat',1,'-dir',1)
ops.element('zeroLength',2,1,2,'-mat',2,'-dir',1)
w2 = ops.eigen('fullGenLapack',2)
From the eigenvalue analysis, you will see the natural periods of the
base-isolated system are 2.024 sec and 0.2500 sec. Note that you have to
use the
dreaded fullGenLapack
eigenvalue solver
to get both modes, but
it’s OK because there’s only two dynamic DOFs.
To analyze this model’s response to earthquake ground motion, we can define a uniform excitation.
ops.timeSeries('Path',1,'-dt',0.02,'-filePath','tabasFN.txt','-factor',g)
ops.pattern('UniformExcitation',1,1,'-accel',1)
ops.analysis('Transient','-noWarnings')
Tfinal = 50
dt = 0.01
Nsteps = int(Tfinal/dt)
ops.analyze(Nsteps,dt)
The resulting response histories of roof displacement and story shear for both the fixed-based and base-isolated model are shown below.
As expected, the base-isolated model leads to large structural displacement but with much lower story shear, i.e., lower demand on the structural components, compared to the fixed-base model.
Most base isolator elements have nonlinear force-deformation response, but this analysis gives an idea of how a base-isolated structural model should respond to an earthquake.