OpenSees Cloud

OpenSees AMI

Multiple-Support Excitation

Original Post - 29 Aug 2021 - Michael H. Scott

Visit Structural Analysis Is Simple on Substack.


Structural systems typically have different ground accelerations at supports separated by long distances. These systems can be a single structure such as a long span bridge or multiple structures in a region.

While most OpenSees analyses use uniform excitation with effective earthquake forces applied to the dynamic DOFs of the model, the framework also accommodates multi-support excitation. The basic idea is that the locations of support excitation become DOFs where the ground displacement is input–much like putting sp constraints inside a load pattern.

For more details on the equation of motion for multiple-support excitation, see Ch. 9 of Chopra, 5th edition. Although Chopra presents the equation of motion for linear-elastic models, the extension to nonlinear models is straightforward.

But rather than get into details of the equation of motion, I’d like to show how to apply multiple-support excitation in OpenSees. As usual, so we don’t get mired in the details of specific element and material models, I’ll use a simple 1D model.

1D model for multiple-support excitation

After defining the model, we define time series for two ground motions, then impose the ground motions at the two supports.

import openseespy.opensees as ops

k = 60
m = 2
g = 386.4

ops.wipe()
ops.model('basic','-ndm',1,'-ndf',1)

ops.node(1,0); ops.fix(1,1)
ops.node(2,0); ops.mass(2,m)
ops.node(3,0); ops.fix(3,1)

ops.uniaxialMaterial('Elastic',1,k)

ops.element('zeroLength',1,1,2,'-mat',1,'-dir',1)
ops.element('zeroLength',2,2,3,'-mat',1,'-dir',1)

ops.timeSeries('Path',1,'-dt',0.02,'-filePath','tabasFN.txt','-factor',g)
ops.timeSeries('Path',2,'-dt',0.02,'-filePath','tabasFP.txt','-factor',g)

ops.pattern('MultipleSupport',1)
ops.groundMotion(1,'Plain','-accel',1)
ops.imposedMotion(1,1,1) # node, dof, gmTag
ops.groundMotion(2,'Plain','-accel',2)
ops.imposedMotion(3,1,2)

ops.constraints('Transformation')

The default integration for obtaining ground velocity and displacement from ground acceleration is the trapezoidal rule. You can also use Simpson’s rule. And since you’ll be imposing non-homogeneous boundary conditions, you will need to use the Transformation constraint handler.

In addition, the groundMotion and imposedMotion objects must be defined after the load pattern. In Tcl speak, these objects should be inside braces.

timeSeries Path 1 -dt 0.02 -filePath tabasFN.txt -factor $g
timeSeries Path 2 -dt 0.02 -filePath tabasFP.txt -factor $g

pattern MultipleSupport 1 {
   groundMotion 1 Plain -accel 1
   imposedMotion 1 1 1 ;# node, dof, gmTag
   groundMotion 2 Plain -accel 2
   imposedMotion 3 1 2
}

constraints Transformation

After performing dynamic analysis, the displacement response histories of the mass and the two supports are shown below.

Model response for multiple-support excitation

We see that the supports have different displacement response histories, as expected, while the dynamic DOF vibrates. Multiple-support excitation is fairly straightforward in OpenSees.


The remainder of this post deals with two ways to apply uniform excitation to the simple 1D model. First, we can impose the same ground motion at the supports.

ops.timeSeries('Path',1,'-dt',0.02,'-filePath','tabasFN.txt','-factor',g)

ops.pattern('MultipleSupport',1)
ops.groundMotion(1,'Plain','-accel',1)
ops.imposedMotion(1,1,1) # node, dof, gmTag
ops.imposedMotion(3,1,1)

ops.constraints('Transformation')

Model response with same support excitations

Alternatively, we can apply a standard uniform excitation. No constraint handler required.

ops.timeSeries('Path',1,'-dt',0.02,'-filePath','tabasFN.txt','-factor',g)

ops.pattern('UniformExcitation',1,1,'-accel',1) # tag, dir, tsTag

Model response with uniform excitation

These two approaches give the same response for the dynamic DOF (relative to the ground displacement). But of course we lose the ground displacement when doing the standard uniform excitation.