Skip to content

Guying

Overview

Mechaphlowers provides simple guying calculations necessary for field work involving guy cables. The guying module calculates the forces in guy cables and the associated vertical, horizontal, and longitudinal loads.

Guying is performed by using the loads at the selected support (the VHL - Vertical, Horizontal, Longitudinal loads) which are themselves calculated via the balance physics engine.

Key Features

  • Guy cable tension calculation: Determines the tension in the guy cable based on geometry and applied loads
  • Load analysis: Calculates the vertical, horizontal, and longitudinal components of forces
  • Support with or without pulley: Allows modeling of two different configurations
  • Side management: Supports guying on the left or right side of the support

Warning

The naming of left and right for guying may be confusing. Note that for a selected support, if you guy to the left of the support, you need to retrieve the VHL to the right of the support, as seen in the code.

Assumption

When there is an angle in the line, the guy cable is placed along the span axis. (see chart)

Geometric Configuration

It is possible to use a pulley on suspension supports (neither the first nor the last support). The configuration without a pulley corresponds to a direct guy cable, while the configuration with a pulley uses the span tension to calculate the tension in the guy cable.

Guying setup

Warning

In the charts below you can see the impact of the view parameter.
Be careful to the point of view you choose when setting guying parameters. Indeed support index and span index is not the same if guying side is right

Guying warning Guying warning

Usage Example

Here is a complete example showing how to calculate guying efforts:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import pandas as pd
import numpy as np
from mechaphlowers.core.models.balance.engine import BalanceEngine
from mechaphlowers.core.models.guying import Guying
from mechaphlowers.data.catalog import sample_cable_catalog
from mechaphlowers.entities.arrays import SectionArray

# Create a simple tower profile with 4 supports
section_data = pd.DataFrame({
    "name": ["1", "2", "3", "4"],
    "suspension": [False, True, True, False],
    "conductor_attachment_altitude": [30, 30, 30, 30],  # conductor attachment altitude (m)
    "crossarm_length": [0, 0, 0, 0],  # crossarm length (m)
    "line_angle": [0, 0, 0, 0],  # line deflection angle (grad)
    "insulator_length": [0.01, 3, 3, 0.01],  # insulator chain length (m)
    "span_length": [400, 400, 400, np.nan],  # span length (m)
    "insulator_mass": [0, 100, 100, 0],  # insulator mass (kg)
    "load_mass": [0, 0, 0, np.nan],  # additional load mass (kg)
    "load_position": [0.2, 0.4, 0.6, np.nan],  # relative load position
})

section_array = SectionArray(
    section_data,
    sagging_parameter=2000,  # sagging parameter (daN)
    sagging_temperature=15,  # reference temperature (°C)
)

# Get cable from catalog
from mechaphlowers.data.catalog import sample_cable_catalog

cable_array = sample_cable_catalog.get_as_object(["ASTER600"])

# Initialize the balance engine
balance_engine = BalanceEngine(
    cable_array=cable_array,
    section_array=section_array,
)

# Solve equilibrium
balance_engine.solve_adjustment()
balance_engine.solve_change_state(
    new_temperature=15,
    wind_pressure=0,
)

# Create the guying calculation instance
guying = Guying(balance_engine)

# Calculate guying efforts at support 1 (suspension support)
# Without pulley, guy cable on the left side of the support
guying_results = guying.compute(
    index=1,
    with_pulley=False,
    altitude=0,  # guy cable attachment altitude (m)
    horizontal_distance=50,  # horizontal distance to anchorage (m)
    side='left',
)

# Display results
print(guying_results)

# Access individual results
print(f"Guy cable tension: {guying_results.guying_tension}")
print(f"Vertical load: {guying_results.vertical_force}")
print(f"Longitudinal load: {guying_results.longitudinal_force}")
print(f"Guy cable angle: {guying_results.guying_angle_degrees}")

# Calculate efforts with pulley at support 2
guying_results_pulley = guying.compute(
    index=2,
    with_pulley=True,
    altitude=0,
    horizontal_distance=50,
    side='right',
)

print(f"\nResults with pulley: {guying_results_pulley}")

# Guying Tension: 4118.5 decanewton
# Vertical Load: 2673.8 decanewton
# Longitudinal Load: 0.0 decanewton
# Guying Angle (degrees): 31.0 degree

# Guy cable tension: 41185.0 newton
# Vertical load: 26738.0 newton
# Longitudinal load: 0.0 newton
# Guy cable angle: 31.0 degree

# Results with pulley: Guying Tension: 3549.4 decanewton
# Vertical Load: 2381.0 decanewton
# Longitudinal Load: 488.0 decanewton
# Guying Angle (degrees): 31.0 degree