Friction on cables / rigging#

Friction can be added between a cable and its intermediate connections.

The intended purpose is the modelling of friction in rigging systems where standards such as DNV can prescribe a load distribution over, for example, different legs of a grommet.

Friction definition and specification#

Physically the amount of friction force is related to the contact force between the cable and the connection. The contact force in turn is a function of the geometry and the tension in the cable. If the tension is twice as high, the absolute value of the friction is also twice as high.

Friction Factor#

For practical reasons, DAVE lets you define friction at a connection (either Point or Circle) using a Friction Factor (FF).
This factor is defined such that a FF of 0.1 results in a 45%/55% load distribution for any 180 degree turns (without reversions). For example the following configurations all result in the same total amount of friction:


A positive friction increases the tension in the cable on the A-side and decreases the tension on the B-side of the connection. This definition means that it is irrelevant whether or not a connection is “reversed”.

Colors can be used to indicate the tension in a cable. If this is done then blue is the lowest tension in the cable and red signals the higher tensions. Note that blue is the lowest tension which is not necessarily zero.


Tension continuity in loops#

If a cable is a loop, for example a grommet, then the frictional forces need to add up to zero because the force in the cable-loop itself is continuous. This means that the friction for exactly one of the connections does not need to be defined. In fact DAVE requires that one of the friction factors is explicitly left to the solver to determine. DAVE will calculate the required friction at that location based on the actual geometry.


Friction can be defined using the GUI. The menu can be opened using the “Open advanced settings” button below the connections.



DAVE defines the friction as fraction of the mean cable tension considering a directional change of the cable direction over the connection of 180 degrees.

180 degrees turn


\(F_2 = F_1 + F_{friction}\)
\(F2/F1 = (1+FF) / (1-FF)\)
\(F2 = F1 \cdot (1+FF) / (1-FF)\)

\(F_{friction} = F_2 - F_1 = F1 \cdot [(1+FF) / (1-FF)-1]\)
In terms of mean tension:
\(F_{mean} = (F_1 + F_2) / 2\)
\(F_{friction} = 2 \cdot FF \cdot F_{mean}\)

For FF=0.1:
\(FF = 0.1\) [definition]
\(F_2 / F_1 = {{1+0.1} \over {1-0.1}} = 55/45\) [ok]

Turns other than 180 degrees#

For turns other than 180 degrees the product of the subsequent (F2/F1) factors for curves adding up to 180 degrees needs to be (1+FF / 1-FF).

Tension multiplication factor

\(F2/F1 = (1+FF) / (1-FF)\)

for 180 degrees

\(F2/F1 = [(1+FF) / (1-FF)]^{angle/180}\)

for any angle [deg]


\(F2/F1 = (1.1 /0.9)^{0.5} \approx 1.11\)


\(F2/F1 = (1.1 /0.9)^{1.5} \approx 1.35\)

For a cable running over a Circle the amount of wire friction is determined from the geometry.

For cables running over a Point this is determined as the smallest amount possible to reach the required direction change (so always <= 180).

Calculating the Friction Factor from a known friction#

If the angle of turn and relative change in tension are known, then the friction factor (FF) can be calculated using the reverse formulation of the above:

\( known: F2 / F1 = {(FF + 1) \over (FF-1)}^{angle/180} \)

solve for FF:

\( FF = (x-1) / (1+x)\) with \(x = (F2/F1)^{180/angle}\)

note: y = (1+x) / (1-x) is equivalent to x = (y-1) / (1+y)

Cable weight#

The cable force used for the friction is the force due to elastic stretch only. Cable self-weight is not included in the friction calculation.

The weight of a steel rigging item (say a grommet) is typically around 5% of the load on that item. Friction is then another 5% of that, making the influence on the total tension too small (0.025%). For synthetic (HPME) rigging this is even smaller.

If cable weight is significant then this may be covered by increasing define the friction fraction accordingly.

Note: An experimental option to fully include the cable self-weight in the calculations is to enable [segment length solving](cables - segment length


Friction on Round-Bars works in exactly the same was as friction on circles. The only caveat is that round-bars can be inactive. This means that in loops the required unknown friction can not be defined on a round-bar.


If the bar is in-active then the friction force (which is not there) is not included in the friction_forces results of the cable.

Hint: If the friction force on the bar is needed then it can be obtained from the force applied on the Point that the bar is connected to.



The resulting tensions and frictions can be obtained using:

  • friction forces: The friction forces in [kN] at the connections. If the cable is a loop then the first index [0] refers to the first connection. If the cable is not a loop then it refers to the second [1] connection.

  • segment_mean_tensions: Mean tensions in the segments

  • segment_end_tensions: Tensions at the ends of the segments (nested sequence)

The following figure clarifies the indices used for setting and obtaining the results.



Friction fractions can be defined by setting the friction property of a Cable node. This is a sequence of numbers defining the Friction Factors.

Note that the indices of cable.friction_forces align with cable.friction.

For Loops#

  • The first index is the friction at the start/end point of the loop.

  • For loops the friction at one of the connections is determined by DAVE (to enforce continuity of the tension in the loop). The friction for that index needs to be set to None


cable = s.new_cable(connections = ['c1','c2','c3','c1'])
cable.friction = [0.05, None, 0.05]

This will define the friction at c1 and c3 to 0.05 and will leave the friction at c2 to be determined by DAVE.

For non-loops#

For non-loops the friction needs to be defined for all the intermediate connections.


cable = s.new_cable(connections = ['c1','c2','c3'])
cable.friction = [0.05]

This will define the friction at c2 to be 0.05.


Complete discretized tensions and shape can be obtained from:

cable.get_points_and_tensions_for_visual. This gives the tensions and locations for the whole cable.

import vedo

points, tensions = c.get_points_and_tensions_for_visual()

colors = vedo.color_map(tensions, 'viridis', vmin = min(tensions), vmax = max(tensions))
t = vedo.Tube(points, c=colors)