From OpenSeesWiki
Jump to navigationJump to search

This command is used to construct a catenary cable element object.

element CatenaryCable $tag $iNode $jNode $weight $E $A $L0 $alpha $temperature_change $rho $errorTol $Nsubsteps $massType

$eleTag unique element object tag
$iNode $jNode end nodes (3 dof per node)
$E elastic modulus of the cable material
$A cross-sectional area of element
$L0 unstretched length of the cable
$alpha coefficient of thermal expansion
$temperature_change temperature change for the element
$rho mass per unit length
$errortol allowed tolerance for within-element equilbrium (Newton-Rhapson iterations)
$Nsubsteps number of within-element substeps into which equilibrium iterations are subdivided (not number of steps to convergence)
$massType Mass matrix model to use ($massType = 0 lumped mass matrix, $massType = 1 rigid-body mass matrix (in development))

This cable is a flexibility-based formulation of the catenary cable. An iterative scheme is used internally to compute equilibrium. At each iteration, node i is considered fixed while node j is free. End-forces are applied at node-j and its displacements computed. Corrections to these forces are applied iteratively using a Newton-Rhapson scheme (with optional sub-stepping via $Nsubsteps) until nodal displacements are within the provided tolerance ($errortol). When convergence is reached, a stiffness matrix is computed by inversion of the flexibility matrix and rigid-body mode injection.


  1. The stiffness of the cable comes from the large-deformation interaction between loading and cable shape. Therefore, all cables must have distributed forces applied to them. See example. Should not work for only nodal forces.
  2. Valid queries to the CatenaryCable element when creating an ElementalRecorder object correspond to 'forces', which output the end-forces of the element in global coordinates (3 for each node).
  3. Only the lumped-mass formulation is currently available.
  4. The element does up 100 internal iterations. If convergence is not achieved, will result in error and some diagnostic information is printed out.

Code Developed by: Pablo Ibañez and José A. Abell at Universidad de los Andes, Chile


# This example implements a slight modification of the verification test from reference #1.

model BasicBuilder -ndm 3 -ndf 3

set x 30. ;     #Set to example from paper x = 30, 60, 80, 100. Will not work for x=0.01, system ill-conditioned.

node 1 0.0 0.0 90.0
node 2 [expr $x/2] 0.0 40.0
node 3 $x 60 30.

fix 1 1 1 1 
fix 2 0 1 0 
fix 3 1 1 1

set w3  -0.00001
set E  3.e7 
set A  1.
set L0  100. 
set alfa  6.5e-6 
set cambiodetemp  100.
set rho [expr $w3 / 9.81]

set errorTol 1e-6
set NSubSteps 20

element CatenaryCable 1 1 2 $w3 $E $A [expr $L0/2] $alfa $cambiodetemp $rho $errorTol $NSubSteps  0
element CatenaryCable 2 2 3 $w3 $E $A [expr $L0/2] $alfa $cambiodetemp $rho $errorTol $NSubSteps 0

set NSteps 10
timeSeries Linear 1 -factor 1

pattern Plain 2 1 {
    eleLoad -ele 1 2 -type -beamUniform 0. 0. -1

recorder Node -file "disp.txt" -time -nodeRange 1 3 -dof 1 2 3 disp
recorder Element -file "forces.txt" -time -eleRange 1 2 force

system FullGeneral
constraints Plain
numberer Plain
test NormDispIncr 1.0e-5 100 1
integrator LoadControl [expr 1.0/$NSteps]
algorithm Newton
analysis Static

analyze $NSteps

print -node 2

Results should be:

Node: 2
   Coordinates  : 15 0 40 
   Disps: 8.58693 0 2.82578 
    unbalanced Load: 0 0 0 
   ID : 0 -1 1 

Compare the forces.txt (for node 3) file with the results from reference [1].


1. Salehi Ahmad Abad, M., Shooshtari, A., Esmaeili, V., & Naghavi Riabi, A. (2013). Nonlinear analysis of cable structures under general loadings. Finite Elements in Analysis and Design, 73, 11–19.

2. Thai, H. T., & Kim, S. E. (2011). Nonlinear static and dynamic analysis of cable structures. Finite Elements in Analysis and Design, 47(3), 237–246.