Cable Lifting Analysis

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
ablundon
Posts: 3
Joined: Thu Aug 12, 2021 4:27 am

Cable Lifting Analysis

Post by ablundon »

Hi all,

I'm new to OpenSees and have been working through example problems. I'm quite familiar with various commercial FEA packages (Abaqus and ANSYS).

I'm looking to perform a lifting analysis where I model an object (rigid body) that is suspended below a common point using a number of wire ropes. The purpose of the analysis is to determine the tension in each wire rope. I need to use a cable as the wire lengths will be fixed and not necessarily just the theoretical straight line distance between two nodes.

I seem to have trouble getting a static model to solve. Consider the simple 2D problem of a rigid beam suspended using two cables:
1
/ \
2_3

Support at node 1. Vertical Py load at 2 and 3. When I run the analysis using truss elements for the two diagonal components, the analysis runs fine, however when I swap to cable elements, the model gives an error:
WARNING SuperLU::solve(void)- Error 1 returned in factorization dgstrf()
WARNING NewtonRaphson::solveCurrentStep() -the LinearSysOfEqn failed in solve()

Any tips?
ablundon
Posts: 3
Joined: Thu Aug 12, 2021 4:27 am

Re: Cable Lifting Analysis

Post by ablundon »

I think I solved my own problem for now... I needed to add a X support at node 2 (or 3) to prevent rotation, seems to run now. I'll continue but leave this post for others to see.
ablundon
Posts: 3
Joined: Thu Aug 12, 2021 4:27 am

Re: Cable Lifting Analysis

Post by ablundon »

False alarm... I didn't solve it. I'm now getting a failed to converge. My code:

import openseespy.opensees as ops
import openseespy.postprocessing.Get_Rendering as opp
import math
import numpy as np
import matplotlib.pyplot as plt

# Units = m, k, s
ops.wipe()
ops.model('basic', '-ndm', 2, '-ndf', 2)

wire1_A = (0.0254 / 2)**2 * math.pi * 0.58
print('Wire Area: ', wire1_A)
wire1_E = 77000e6
wire1_rho = wire1_A * 7850.0
wire1_weight = wire1_rho * 9.806
wire1_length = 5.59
wire2_length = 6.0
wire1_alpha = 12.5e-6
wire1_temp = 0.0
wire1_error = 1e-6
wire1_NSub = 10
wire1_masstype = 0

# Load at each end of beam
Py = -50.0

# create nodes
print('Set Nodes')
ops.node(1, 0.0, 0.0)
ops.node(2, 5, 0.0)
ops.node(3, 2.5, 5.0)

# set boundary condition
print('Set Boundary Conditions')
ops.fix(1, 1, 0) # Restrain Global Rotation by Fixing X Direction of Node 1
ops.fix(3, 1, 1) # Fix Top Node

# define materials
print('Set Materials')
ops.uniaxialMaterial("Elastic", 1, wire1_E)

# define elements
print('Set Elements')
# Cable Elements
ops.element("CatenaryCable", 1, 1, 3, wire1_weight, wire1_E, wire1_A,
wire1_length, wire1_alpha, wire1_temp, wire1_rho, wire1_error, wire1_NSub,
0)
ops.element("CatenaryCable", 2, 2, 3, wire1_weight, wire1_E, wire1_A,
wire1_length, wire1_alpha, wire1_temp, wire1_rho, wire1_error, wire1_NSub,
0)

# multipoint constraint
print('Set MPC')
ops.rigidLink('beam', 1, 2)

# create TimeSeries
print('Set Time Series')
ops.timeSeries("Linear", 1)

# create a plain load pattern
print('Set Load Pattern')
ops.pattern("Plain", 1, 1)

# Create the nodal load
print('Set Loads')
ops.load(1, 0.0, Py)
ops.load(2, 0.0, Py)

ModelName = 'CableTruss'
LoadCaseName = 'Static'
opp.createODB(ModelName, LoadCaseName)

ops.test("EnergyIncr", 1.0E-10, 10000, 0)
ops.algorithm("Newton")
ops.numberer("RCM")
ops.constraints("Plain")
ops.system("SparseGeneral", "-piv")
ops.integrator('LoadControl', 1.0, 1, 1.0, 10.0)
ops.analysis("Static")
ops.analyze(10)

print('Node 1 Displacement: ', ops.nodeDisp(1))
print('Node 1 Displacement: ', ops.nodeDisp(2))
selimgunay
Posts: 916
Joined: Mon Sep 09, 2013 8:50 pm
Location: University of California, Berkeley

Re: Cable Lifting Analysis

Post by selimgunay »

Could you also post your question on the OpenSeespy forum? You may get more feedback there.
mhscott
Posts: 876
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: Cable Lifting Analysis

Post by mhscott »

It's a model issue (non-convergence). Not a Tcl/Py issue, Selim :D
Post Reply