OpenSees Cloud
OpenSees AMI
Mass and Weight
Original Post - 20 Nov 2020 - Michael H. Scott
Visit Structural Analysis Is Simple on Substack.
Many structural analysis software programs will automatically define mass based on the input gravity loads.
OpenSees is not one of those programs.
You have to define mass and weight separately. Fortunately, using variables for units makes the mass and weight definitions easy. Plus, if using customary units, you won’t have to waste time Googling the definition of a slug.
kip = 1.0
inch = 1.0
sec = 1.0
ft = 12*inch
g = 32.2*ft/sec**2
For nodes, typically you’ll know the gravity load, then convert to mass. For example, a gravity load of 200 kip applied to node 2:
P = 200*kip
ops.mass(2,P/g,P/g,0)
ops.timeSeries('Constant',1) # Or 'Linear' if you want to ramp up gravity loads
ops.pattern('Plain',1,1)
ops.load(2,0,-P,0)
Likewise, for elements with known distributed gravity loads, you’ll convert the distributed load to distributed mass, or mass “density” per length. For example, a distributed load of 0.3 kip/ft applied to element 1:
wD = 0.3*kip/ft
ops.element('elasticBeamColumn',1,1,2,A,E,I,1,'-mass',wD/g)
ops.timeSeries('Constant',1) # Or 'Linear' if you want to ramp up gravity loads
ops.pattern('Plain',1,1)
ops.eleLoad('-ele',1,'-type','beamUniform',-wD)
The '-mass'
option works for the elasticBeamColumn
, as well as
dispBeamColumn
and forceBeamColumn
, but it could be some other string
for other elements. Check the documentation, or if there’s nothing
there, take a look at the source code.