Slings#
Slings are modelled as a combination of cable and rigid-body nodes. Cables are used for the eyes, splices and the mid-section of the sling. The mass of the sling is included in the rigidbody nodes.
The length of a sling is defined by the “ultimate” length. That is the length between the insides of the eyes when the sling pulled tight over pins with a diameter of zero.
Tip
The “Rigging” package for DAVE includes methods to define slings and grommets using their ultimate, nominal or circumferencal length as well as to set their stiffness from the diameter and make.
from DAVE import *
from DAVE.jupyter import *
s = Scene()
# code for Frame
s.new_frame(name='Frame',
position=(10.0,
0.0,
0.0),
rotation=(0.0,
0.0,
0.0),
fixed =(False, True, True, True, True, True) ) # Free only in X
# code for Point
s.new_point(name='Left',
parent=None,
position=(0.0,
0.0,
0.0))
# code for Point_1
s.new_point(name='Right',
parent='Frame',
position=(0.0,
0.0,
0.0))
# code for Circle
s.new_circle(name='Circle',
parent='Left',
axis=(0.0, 1.0, 0.0),
radius=0.0 )
# code for Circle_1
s.new_circle(name='Circle_1',
parent='Right',
axis=(0.0, 1.0, 0.0),
radius=0.0 )
# Exporting sling
# Create sling
sling = s.new_sling("sling", length = 10.0,
LeyeA = 2,
LeyeB = 2,
LspliceA = 1,
LspliceB = 1,
diameter = 0.1,
EA = 1000000.0,
mass = 0.0,
endA = "Circle",
endB = "Circle_1",
sheaves = None)
s.new_force('small_load', parent = 'Right', force = (1,0,0))
s.solve_statics()
show(s, camera_pos = (5, -10, 0),
lookat = (5,0,0),
painters = 'Visual',
width=1600,
height=600,
zoom_fit = False)

The distance between the insides of the loops is defined to be 10m.
This length is distributed over the following items:
Item |
Length [m] |
---|---|
left eye |
2 |
left splice |
1 |
main part |
4 |
right splice |
1 |
right eye |
2 |
The amount of wire in the eyes is such that is accounts for the two legs as well as the length of the bend around a zero diameter pin.
\(L_{wire} = 2 * L_{eye} + \pi * d/2\)
In this case the diamter of the wire is 0.1m which makes the length in the eye 2 * 2 + 3.141 * 0.1 * 0.5 = 4.157m
for n in s.nodes_of_type(Cable):
report(n, ['length'])
Property | Value | Unit | Remarks | Explained |
---|---|---|---|---|
length | 4.000 | [m] | Length of the cable when in rest |
Property | Value | Unit | Remarks | Explained |
---|---|---|---|---|
length | 4.158 | [m] | Length of the cable when in rest |
Property | Value | Unit | Remarks | Explained |
---|---|---|---|---|
length | 4.158 | [m] | Length of the cable when in rest |
Property | Value | Unit | Remarks | Explained |
---|---|---|---|---|
length | 1.000 | [m] | Length of the cable when in rest |
Property | Value | Unit | Remarks | Explained |
---|---|---|---|---|
length | 1.000 | [m] | Length of the cable when in rest |
To double-check the length the sling is pulled tight by a tiny force. The distance between the two zero-diameter pins should be just over 10.000m
The left end of the sling is located at 0,0,0.
the unstretched length of the sling is 10m
The right pin should be at x=10m
print(f'Right at {s["Right"].global_position[0]:.6f}m')
Right at 10.000007m
Stiffness#
The stiffness of the wire of the sling is defined by EA of the wire. The wire (Cable) in the eyes of the sling has this EA.
In reality the splices of the sling should have a stiffness of 2 * EA. In the model however they are modelled using a body with infinite stiffness. The EA of the main-part is therefore adjusted to correct for that.
In practice it can be more practical to define the stiffness of the sling by its total stiffness (k).
\( k = { EA_{effective} \over L_{ultimate}} [kN/m]\)
\( k_{main} = EA / (L_{main}) \)
\( k_{splice} = 2EA / (L_{splice}) \)
\( k_{eye} = 4 EA / (L_{wire,eye}) \)
\( k_{total} = { 1 \over 1/k_{eye,left} + 1/k_{splice,left} + 1/k_{main} + 1/k_{eye,right} + 1/k_{splice,right}} \)
sling.EA = 1000 # kN/m
k = sling.k_total
print(sling.k_total)
141.2596007219238
Apply 141.26 kN of force, and check that the sling extends 1m.
The left end of the sling is located at 0,0,0.
the unstretched length of the sling is 10m
The stretch is 1m
so the right end should be at x=11m
s['small_load'].force = (k,0,0)
s.solve_statics()
print(f'Right at {s["Right"].global_position[0]:.3f}m')
Right at 11.000m
The total stiffness can also be set:
sling.k_total = 1000
print(f'Total stiffness set to {sling.k_total:.2f} [kN/m]')
print(f'Resulting EA: {sling.EA:.2f} [kN]')
Total stiffness set to 1000.00 [kN/m]
Resulting EA: 7079.16 [kN]
And check the extension for 1000 kN force:
s['small_load'].force = (1000,0,0)
s.solve_statics()
print(f'Right at {s["Right"].global_position[0]:.3f}m')
Right at 11.000m
When changing the length of a sling, the EA stays the same. This means the k changes:
sling.length = 20
print(f'Total stiffness: {sling.k_total:.2f} [kN/m]')
print(f'Resulting EA: {sling.EA:.2f} [kN]')
Total stiffness: 414.49 [kN/m]
Resulting EA: 7079.16 [kN]