-->

OpenSees Cloud

OpenSees AMI

Centripetal Acceleration

28 Jan 2024 - Michael H. Scott


How can you induce element forces without defining loads or straining effects due to thermal expansion, residual stress, initial strain, or differential support motion?

Centripetal acceleration! Get a mass revolving in a plane about a fixed point and a force directed radially (toward the center of revolution) is required to keep the mass from flying off tangentially. Surely, you’ve spun a tethered object overhead like a lasso. Or you’ve seen a centrifuge, either in person or in Spies Like Us.

Spies LIke Us

But how do you pull off centripetal acceleration in OpenSees?

For the tether, you can use a corotational truss element, whose geometry is exact for large displacements.

Then, set the mass in motion with an initial velocity.

import openseespy.opensees as ops

r = 100
E = 29000
A = 0.1

g = 386.4
W = 0.1
m = W/g

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

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

ops.uniaxialMaterial('Elastic',1,E)
ops.element('CorotTruss',1,1,2,A,1)

a = 2*g
v = (a*r)**0.5

ops.setNodeVel(2,2,v,'-commit')

ops.analysis('Transient','-noWarnings')

Nrev = 2 # Number of revolutions
Tmax = Nrev*(2*3.14159*r)/v
dt = 0.001
Nsteps = int(Tmax/dt)

ops.analyze(Nsteps,dt)

The radial acceleration of the mass is \(a=v^2/r\). In the script above, the initial velocity is back calculated for the mass to pull 2g acceleration. No matter what initial velocity you use, the axial force in the corotational truss element should be \(mv^2/r\).

The axial force response history for the corotational truss element is shown below.

Axial force response history

A few things to note:

An animation of the analysis is shown below: