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.

One-story based-isolated frame model

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.

Roof displacement and story shear

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.