# Multiple-Support Excitation

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.

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)``````

The default integration for obtaining ground velocity and displacement from ground acceleration is the trapezoidal rule. You can also use Simpson’s rule.

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
}``````

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

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)``````

Alternatively, we can apply a standard uniform excitation.

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

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

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.

## 11 thoughts on “Multiple-Support Excitation”

1. Prabakaran Kesavan says:

Dear Dr. Scott,
Thank you for such an informative post. I consider every post from you as a gem. I have a question to you. In OS wiki page, it says at groundMotion page that “For earthquake excitations it is important that the user provide the displacement time history, as the one generated using the trapezoidal method will not provide good results.”, Why is it so? Do we have to be careful about our accelerogram input? Kindly throw some light on this point. Thank you again.

Liked by 1 person

1. Hello Prabakaran,
Thank you for the question. I’m not sure how important that is for earthquake ground motion, but I’ve never looked at the issue.
PD

Like

1. Prabakaran Kesavan says:

Like

2. Thank you for a fantastic article. I’d would like to ask you a question. Is Multiple-Support Excitation better for high-rise structures? Because I believe uniform excitation causes a uniform acceleration across all nodes of the structure, which may be true for rigid and short structures but not for high-rise structures (of course, this is my opinion). What are your thoughts on this?

Liked by 1 person

1. Hello MSB,
Thank you! I don’t know if multiple-support excitation would be better for high rise structures.
PD

Like

3. Shima says:

Dear Dr. Scott,

Thank you for your post. I have a question. I have a 3D soil column model, which I should apply horizontal and vertical ground acceleration to the base nodes. (horizontal acc to node 1, and vertical acc to node 2, which they are 2 meter apart of each other). May I use multiple support excitation in this case?
If yes, how can I define vertical direction for acceleration to the multiple support excitation model?
thank you

Like

1. Yes, you can do that. It’s a pretty common scenario and you can find examples online.

Like

4. Shima says:

Dear Dr. Scott,

is it possible to help me how to define recorders in this case?

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
}

I run your code with my acceleration data, but I think there is a problem with recorders! I want to apply accel X and accel Y at the same time, but I don’t know how to record them,
here is my recorder code:

## record nodal displacments, velocities, and accelerations at each time step
recorder Node -file displacement.out -time -dT \$recDT -nodeRange 1 \$nNodeT -dof 1 2 3 disp
recorder Node -file velocity.out -time -dT \$recDT -nodeRange 1 \$nNodeT -dof 1 2 3 vel
recorder Node -file acceleration.out -time -dT \$recDT -nodeRange 1 \$nNodeT -dof 1 2 3 accel

may I define 2 recorders? for each accel directions?

regards

Like

1. Yes, you should be able to define two recorders for each direction. You can post your issue on the OpenSees message board or Facebook group.

Like

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