Cable Analysis

Analyzing cables subject to transverse loads is straightforward in OpenSees. Use a mesh of corotational truss elements with elastic uniaxial material. Of course, you can use any uniaxial material you like.

The only trick is you have to scramble the nodes up a little bit–if you try to analyze a perfectly straight cable, you’ll get a singular stiffness matrix.

Consider a horizontal cable subjected to its self-weight. The cable is L=20 ft long (horizontal projection) with 1 inch diameter and elastic modulus 29,000 ksi. The self-weight of the cable is w=2.705 lb/ft.

The horizontal reaction at the end of the cable should be equal to wL2/(8u) where u is the maixmum deflection of the cable.

For the model, the cable nodes are defined in a loop with a slight downward sag based on the sine function.

import openseespy.opensees as ops
import numpy as np

E = 29000*kip/inch**2
d = 1*inch
A = 3.14159/4*d**2
w = 0.287*lb/inch**3*A

L = 20*ft
N = 20
dX = L/N
Y = 0

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

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

ops.node(0,0,Y); ops.fix(0,1,1)
for i in range(N):
    x = dX*(i+1)
    ops.node(i+1,x,Y-0.01*np.sin(3.14159*x/L))
    ops.element('corotTruss',i+1,i,i+1,A,1)
ops.fix(N,1,1)
    
ops.timeSeries('Linear',1)
ops.pattern('Plain',1,1)
for i in range(1,N):
    ops.load(i,0,-w*dX)

Nsteps = 10
ops.integrator('LoadControl',1/Nsteps)
    
ops.system('UmfPack')
ops.test('RelativeNormDispIncr',1e-10,100,1)
ops.analysis('Static')

ops.analyze(Nsteps)
ops.reactions()

R = ops.reaction(N,1)
u = ops.nodeDisp(int(N/2),2)
print(R,w*L**2/(8*u))

You can verify that the computed reaction and the closed-form expression based on the deflection are close (1404 lb vs. 1416 lb in this example). These values should converge as more elements are used along the cable.

The deflected shape of the cable (drawn using opsvis) is shown below with a 10x scale factor.

For three-dimensional analysis, you’ll get a singular stiffness matrix if the nodes line in a plane, so you’ll have to jitter or zig-zag the nodes slightly out of plane in addition to giving an initial downward sag.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

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