"""Funksjoner for beregning av laster ikke relatert til is/snø på systemet."""
from kraft import *
[dokumentasjon]def _utliggerkrefter(i, sys, mast, e_t=0):
"""Beregner krefter fra utstyr montert på utligger.
Kraftsett som påføres avhenger av traversens eksentrisitetsverdi ``e_t``:
- ``e_t`` = 0: Beregner krefter for tilfelle med én utligger på systemet.
- ``e_t`` > 0: Beregner krefter for en normalt konfigurert utligger
dersom systemet har to utliggere.
- ``e_t`` < 0: Beregner krefter for en normalt konfigurert utligger
dersom systemet har to utliggere, eller utligger
med KL til avspenning dersom masten er angitt å være
siste seksjonsmast før avspenning.
:param Inndata i: Input fra bruker
:param System sys: Data for ledninger og utligger
:param Mast mast: Aktuell mast
:param e_t: Traversens eksentrisitet i y-retning :math:`[m]`
:return: Liste med :class:`Kraft`-objekter
:rtype: :class:`list`
"""
r = i.radius
a = (i.a1 + i.a2) / 2
a1, a2 = i.a1, i.a2
B1, B2 = sys.B1, sys.B2
a_T, a_T_dot = sys.a_T, sys.a_T_dot
sms = i.sms
fh = i.fh
sh = i.sh
alpha = 1.7 * 10 ** (-5)
delta_t = 45
# Eksentrisitet i z-retning for KL.
arm = a_T_dot
if i.strekkutligger:
arm = a_T
# F = liste over krefter som skal returneres
F = []
# Utligger(e)
F.append(Kraft(navn="Egenvekt: Utligger", type=(0, 0),
f=[sys.utligger["Egenvekt"] * sms, 0, 0],
e=[-fh - sh / 2, e_t, sys.utligger["Momentarm"] * sms]))
# Bæreline(r)
F.append(Kraft(navn="Egenvekt: Bæreline", type=(0, 0),
f=[sys.baereline["Egenvekt"] * a, 0, 0],
e=[-fh - sh, e_t, sms]))
# Hengetråd(er)
L = 8 * (a / 60)
F.append(Kraft(navn="Egenvekt: Hengetråd", type=(0, 0),
f=[sys.hengetraad["Egenvekt"] * L, 0, 0],
e=[-fh - sh, e_t, arm]))
# Kontakttråd(er)
F.append(Kraft(navn="Egenvekt: Kontakttråd", type=(0, 0),
f=[sys.kontakttraad["Egenvekt"] * a, 0, 0],
e=[-fh, e_t, arm]))
# Y-line(er)
if not sys.y_line == None:
L = 0
if (sys.navn == "20A" or sys.navn == "35") and i.radius >= 800:
L = 14
elif sys.navn == "25" and i.radius >= 1200:
L = 18
F.append(Kraft(navn="Egenvekt: Y-line", type=(0, 0),
f=[sys.y_line["Egenvekt"] * L, 0, 0],
e=[-fh - sh, e_t, arm]))
# Sidekrefter pga. ledningsføring
s_b = 1000 * sys.baereline["Strekk i ledning"]
s_kl = 1000 * sys.kontakttraad["Strekk i ledning"]
f_z_b = - s_b * a / r
f_z_kl = - s_kl * (a / r + ((B2 - B1) / a1 + (B2 - B1) / a2))
if i.strekkutligger:
f_z_b, f_z_kl = - f_z_b, - f_z_kl
if i.siste_for_avspenning and e_t<0:
f_z_avsp_b = - s_b * (sms / a2)
f_z_avsp_kl = - s_kl * (arm / a2)
if i.master_bytter_side:
f_z_avsp_b, f_z_avsp_kl = - f_z_avsp_b, -f_z_avsp_kl
F.append(Kraft(navn="Strekk: Bæreline til avspenning", type=(1, 1),
f=[0, 0, f_z_b + f_z_avsp_b],
e=[-fh - sh, 0, sms]))
F.append(Kraft(navn="Strekk: Kontakttråd til avspenning", type=(1, 1),
f=[0, 0, f_z_kl + f_z_avsp_kl],
e=[-fh, 0, arm]))
# Torsjonsresultant grunnet sidekreftenes eksentrisitet på travers
f_z_res = f_z_avsp_b + f_z_avsp_kl
F.append(Kraft(navn="Strekk: Torsjon, eksentrisitet utliggere", type=(1, 1),
f=[0, 0, f_z_res],
e=[-fh-sh/2, -e_t, (sms+arm)/2]))
else:
F.append(Kraft(navn="Strekk: Bæreline", type=(1, 1),
f=[0, 0, f_z_b],
e=[-fh - sh, 0, sms]))
F.append(Kraft(navn="Strekk: Kontakttråd", type=(1, 1),
f=[0, 0, f_z_kl],
e=[-fh, 0, arm]))
# Vandringskraft
avstand_fixpunkt = i.avstand_fixpunkt if not i.fixavspenningsmast else a
if i.fixpunktmast or i.siste_for_avspenning or i.linjemast_utliggere == 2:
avstand_fixpunkt = 0
dl = alpha * delta_t * avstand_fixpunkt
F.append(Kraft(navn="Vandringskraft: Bæreline", type=(1, 2),
f=[0, f_z_b * (dl / i.sms), 0],
e=[-i.fh - i.sh, 0, mast.bredde(mast.h - (i.fh + i.sh))/2000]))
F.append(Kraft(navn="Vandringskraft: Kontakttråd", type=(1, 2),
f=[0, (f_z_kl) * (dl / arm), 0],
e=[-i.fh, 0, mast.bredde(mast.h - i.fh)/2000]))
# Bidrag til normalkraft dersom ulik høyde mellom nabomaster
if not i.delta_h1 == 0 and not i.delta_h2 == 0:
s = 1000 * (sys.baereline["Strekk i ledning"] + sys.kontakttraad["Strekk i ledning"])
f_x = s * (i.delta_h1 / a1 + i.delta_h2 / a2)
F.append(Kraft(navn="Geometri: Ulik høyde mellom master", type=(1, 1),
f=[f_x, 0, 0], e=[-fh - sh / 2, e_t, (sms + arm) / 2]))
return F
[dokumentasjon]def beregn(i, sys, mast):
"""Beregner krefter grunnet statiske og temperaturavhengige forhold i systemet.
Krefter som beregnes inkluderer egenvekt av og strekk i samtlige ledninger,
vekt av isolatorer, krefter grunnet ledningsføringens geometri,
fix- og avspenningskrefter samt tilhørende
lodd og eventuell bardunering.
:param Inndata i: Input fra bruker
:param System sys: Data for ledninger og utligger
:param Mast mast: Aktuell mast
:return: Liste med :class:`Kraft`-objekter
:rtype: :class:`list`
"""
r = i.radius
a = (i.a1 + i.a2) / 2
a1, a2 = i.a1, i.a2
B1, B2 = sys.B1, sys.B2
a_T, a_T_dot = sys.a_T, sys.a_T_dot
sms = i.sms
fh = i.fh
sh = i.sh
# Eksentrisitet i z-retning for KL.
arm = a_T_dot
if i.strekkutligger:
arm = a_T
# F = liste over krefter som skal returneres
F = []
e_t = 0
# Sjekker om mast har 2 utliggere
if i.siste_for_avspenning or i.linjemast_utliggere == 2:
# Ekstra bidrag fra traversens eksentrisitet i y-retning
e_t = i.traverslengde / 2
F.append(Kraft(navn="Egenvekt: Traverser", type=(0, 0),
f=[220, 0, 0], e=[-fh - sh/2, 0, 0]))
F.extend(_utliggerkrefter(i, sys, mast, -e_t))
F.extend(_utliggerkrefter(i, sys, mast, e_t))
# Fixpunktmast
if i.fixpunktmast:
g = sys.fixline["Egenvekt"]
s = 1000 * sys.fixline["Strekk i ledning"]
f_z = s * ((a / r) + 2 * (arm / a))
if i.strekkutligger and r <= 1200:
f_z = s * (-(a / r) + 2 * (arm / a))
F.append(Kraft(navn="Egenvekt: Fixliner", type=(2, 0),
f=[g * a, 0, 0], e=[-fh - sh, 0, sms]))
F.append(Kraft(navn="Strekk: Fixliner", type=(2, 1),
f=[0, 0, f_z], e=[-fh - sh, 0, sms]))
# Fixavspenningsmast
if i.fixavspenningsmast:
g = sys.fixline["Egenvekt"]
s = 1000 * sys.fixline["Strekk i ledning"]
z = arm + (B1 + B2)
f_z = s * (0.5 * (a / r) + (z / a))
if (not i.strekkutligger) and r <= 1200:
f_z = s * (- 0.5 * (a / r) + (z / a))
F.append(Kraft(navn="Egenvekt: Fixline", type=(2, 0),
f=[g * a / 2, 0, 0], e=[-fh - sh, 0, 0]))
F.append(Kraft(navn="Strekk: Fixline", type=(2, 1),
f=[0, s, f_z], e=[-fh - sh, 0, 0]))
# Avspenningsbardun
if i.avspenningsbardun:
F.append(Kraft(navn="Strekk: Avspenningsbardun", type=(4, 1),
f=[s, - s, -f_z], e=[-fh - sh, 0, 0]))
# Avspenningsmast
if i.avspenningsmast:
g_b = sys.baereline["Egenvekt"]
g_kl = sys.kontakttraad["Egenvekt"]
s_b = 1000 * sys.baereline["Strekk i ledning"]
s_kl = 1000 * sys.kontakttraad["Strekk i ledning"]
z_b = arm
z_kl = arm + (B1 + B2)
f_z_b = s_b * (0.5 * (a / r) + (z_b / a))
f_z_kl = s_kl * (0.5 * (a / r) + (z_kl / a))
if (not i.strekkutligger) and r <= 1200:
f_z_b = s_b * (-0.5 * (a / r) + (z_b / a))
f_z_kl = s_kl * (-0.5 * (a / r) + (z_kl / a))
F.append(Kraft(navn="Egenvekt: Bæreline til avspenning", type=(3, 0),
f=[g_b * a1 / 2, 0, 0], e=[-fh - sh, 0, 0]))
F.append(Kraft(navn="Egenvekt: Kontakttråd til avspenning", type=(3, 0),
f=[g_kl * a1 / 2, 0, 0], e=[-fh, 0, 0]))
F.append(Kraft(navn="Strekk: Avspenning bæreline", type=(3, 1),
f=[0, s_b, f_z_b], e=[-fh - sh, 0, 0]))
F.append(Kraft(navn="Strekk: Avspenning kontakttråd", type=(3, 1),
f=[0, s_kl, f_z_kl], e=[-fh, 0, 0]))
# Avspenningsbardun
if i.avspenningsbardun:
F.append(Kraft(navn="Strekk: Avspenningsbardun", type=(4, 1),
f=[s_b + s_kl, - s_b - s_kl, -f_z_b -f_z_kl], e=[-fh - sh/2, 0, 0]))
# Avspenningslodd
utvekslingsforhold = 3
if sys.navn == "35":
utvekslingsforhold = 2
s_avsp = (s_b + s_kl) / utvekslingsforhold
F.append(Kraft(navn="Egenvekt: Avspenningslodd", type=(3, 0),
f=[s_avsp, 0, 0], e=[-fh - sh/2, 0, 0]))
# Forbigangsledning (1 stk., inkl. isolator)
if i.forbigang_ledn:
g = sys.forbigangsledning["Egenvekt"]
s = sys.forbigangsledning["Strekk 5C"]
e_z = -0.3
kategori = 5 # Fastavspent, side
if not i.matefjern_ledn and not i.at_ledn and not i.jord_ledn:
e_z = 0
kategori = 6 # Fastavspent, topp
f_z = s * ((a_T + a_T_dot + 2 * e_z) / a) if i.master_bytter_side else 0
f_z += s * a / r
F.append(Kraft(navn="Egenvekt: Forbigangsledning", type=(kategori, 0),
f=[g * a + 150, 0, 0], e=[-i.hf, 0, e_z]))
F.append(Kraft(navn="Strekk: Forbigangsledning", type=(kategori, 1),
f=[s * (i.delta_h1 / a1 + i.delta_h2 / a2), 0, f_z],
e=[-i.hf, 0, e_z]))
# Tilleggsbidrag grunnet temperatur -40C
s = sys.forbigangsledning["Strekk -40C"] - sys.forbigangsledning["Strekk 5C"]
f_z = s * ((a_T + a_T_dot + 2 * e_z) / a) if i.master_bytter_side else 0
f_z += s * a / r
f_diff = sys.forbigangsledning["Differansestrekk"] if i.auto_differansestrekk else i.differansestrekk
F.append(Kraft(navn="Temperatur: Forbigangsledning", type=(kategori, 2),
f=[0, f_diff, f_z],
e=[-i.hf, 0, e_z]))
# Tilleggsbidrag grunnet snølast
s = sys.forbigangsledning["Strekk med snø -25C"] - sys.forbigangsledning["Strekk -40C"]
f_z = s * ((a_T + a_T_dot + 2 * e_z) / a) if i.master_bytter_side else 0
f_z += s * a / r
F.append(Kraft(navn="Strekkbidrag fra snølast: Forbigangsledning", type=(kategori, 3),
f=[0, 0, f_z],
e=[-i.hf, 0, e_z]))
# Returledninger (2 stk., inkl. 2 stk. isolatorer)
if i.retur_ledn:
g = 2 * sys.returledning["Egenvekt"]
s = 2 * sys.returledning["Strekk 5C"]
e_z = -0.5
f_z = s * ((a_T + a_T_dot + 2 * e_z) / a) if i.master_bytter_side else 0
f_z += s * a / r
F.append(Kraft(navn="Egenvekt: Returledninger", type=(5, 0),
f=[g*a + 200, 0, 0], e=[-i.hr, 0, e_z]))
F.append(Kraft(navn="Strekk: Returledninger", type=(5, 1),
f=[s * (i.delta_h1 / a1 + i.delta_h2 / a2), 0, f_z],
e=[-i.hr, 0, e_z]))
# Tilleggsbidrag grunnet temperatur -40C
s = 2 * (sys.returledning["Strekk -40C"] - sys.returledning["Strekk 5C"])
f_z = s * ((a_T + a_T_dot + 2 * e_z) / a) if i.master_bytter_side else 0
f_z += s * a / r
f_diff = 2 * sys.returledning["Differansestrekk"] if i.auto_differansestrekk else 2 * i.differansestrekk
F.append(Kraft(navn="Temperatur: Returledninger", type=(5, 2),
f=[0, f_diff, f_z],
e=[-i.hr, 0, e_z]))
# Tilleggsbidrag grunnet snølast
s = 2 * (sys.returledning["Strekk med snø -25C"] - sys.returledning["Strekk -40C"])
f_z = s * ((a_T + a_T_dot + 2 * e_z) / a) if i.master_bytter_side else 0
f_z += s * a / r
F.append(Kraft(navn="Strekkbidrag fra snølast: Returledning", type=(5, 3),
f=[0, 0, f_z],
e=[-i.hr, 0, e_z]))
# Fiberoptisk ledning (1 stk.)
if i.fiberoptisk_ledn:
g = sys.fiberoptisk["Egenvekt"]
s = sys.fiberoptisk["Strekk 5C"]
e_z = -0.3
f_z = s * ((a_T + a_T_dot + 2 * e_z) / a) if i.master_bytter_side else 0
f_z += s * a / r
F.append(Kraft(navn="Egenvekt: Fiberoptisk ledning", type=(5, 0),
f=[g * a, 0, 0], e=[-i.fh, 0, e_z]))
F.append(Kraft(navn="Strekk: Fiberoptisk ledning", type=(5, 1),
f=[s * (i.delta_h1 / a1 + i.delta_h2 / a2), 0, f_z],
e=[-i.hf, 0, e_z]))
# Tilleggsbidrag grunnet temperatur -40C
s = sys.fiberoptisk["Strekk -40C"] - sys.fiberoptisk["Strekk 5C"]
f_z = s * ((a_T + a_T_dot + 2 * e_z) / a) if i.master_bytter_side else 0
f_z += s * a / r
f_diff = sys.fiberoptisk["Differansestrekk"] if i.auto_differansestrekk else i.differansestrekk
F.append(Kraft(navn="Temperatur: Fiberoptisk ledning", type=(5, 2),
f=[0, f_diff, f_z],
e=[-i.hf, 0, e_z]))
# Tilleggsbidrag grunnet snølast
s = sys.fiberoptisk["Strekk med snø -25C"] - sys.fiberoptisk["Strekk -40C"]
f_z = s * ((a_T + a_T_dot + 2 * e_z) / a) if i.master_bytter_side else 0
f_z += s * a / r
F.append(Kraft(navn="Strekkbidrag fra snølast: Fiberoptisk ledning", type=(5, 3),
f=[0, 0, f_z],
e=[-i.hf, 0, e_z]))
# Mate-/fjernledning(er) (n stk., inkl. isolatorer)
if i.matefjern_ledn:
n = i.matefjern_antall
g = n * sys.matefjernledning["Egenvekt"]
s = n * sys.matefjernledning["Strekk 5C"]
f_z = s * ((a_T + a_T_dot) / a) if i.master_bytter_side else 0
f_z += s * a / r
er = "er" if n > 1 else ""
F.append(Kraft(navn="Egenvekt: Mate-/fjernledning{}".format(er),
type=(6, 0), f=[g * a + 220, 0, 0], e=[-i.hfj, 0, 0]))
F.append(Kraft(navn="Strekk: Mate-/fjernledning{}".format(er), type=(6, 1),
f=[s * (i.delta_h1 / a1 + i.delta_h2 / a2), 0, f_z],
e=[-i.hfj, 0, 0]))
# Tilleggsbidrag grunnet temperatur -40C
s = n * (sys.matefjernledning["Strekk -40C"] - sys.matefjernledning["Strekk 5C"])
f_z = s * ((a_T + a_T_dot) / a) if i.master_bytter_side else 0
f_z += s * a / r
f_diff = n * sys.matefjernledning["Differansestrekk"] if i.auto_differansestrekk else n * i.differansestrekk
F.append(Kraft(navn="Temperatur: Mate-/fjernledning{}".format(er), type=(6, 2),
f=[0, f_diff, f_z],
e=[-i.hfj, 0, 0]))
# Tilleggsbidrag grunnet snølast
s = n * (sys.matefjernledning["Strekk med snø -25C"] - sys.matefjernledning["Strekk -40C"])
f_z = s * ((a_T + a_T_dot) / a) if i.master_bytter_side else 0
f_z += s * a / r
F.append(Kraft(navn="Strekkbidrag fra snølast: Mate-/fjernledning{}".format(er), type=(6, 3),
f=[0, 0, f_z],
e=[-i.hfj, 0, 0]))
# AT-ledninger (2 stk.)
if i.at_ledn:
g = 2 * sys.at_ledning["Egenvekt"]
s = 2 * sys.at_ledning["Strekk 5C"]
f_z = s * ((a_T + a_T_dot) / a) if i.master_bytter_side else 0
f_z += s * a / r
F.append(Kraft(navn="Egenvekt: AT-ledninger", type=(6, 0),
f=[g * a, 0, 0], e=[-i.hfj, 0, 0]))
F.append(Kraft(navn="Strekk: AT-ledninger", type=(6, 1),
f=[s * (i.delta_h1 / a1 + i.delta_h2 / a2), 0, f_z],
e=[-i.hfj, 0, 0]))
# Tilleggsbidrag grunnet temperatur -40C
s = 2 * (sys.at_ledning["Strekk -40C"] - sys.at_ledning["Strekk 5C"])
f_z = s * ((a_T + a_T_dot) / a) if i.master_bytter_side else 0
f_z += s * a / r
f_diff = 2 * sys.at_ledning["Differansestrekk"] if i.auto_differansestrekk else 2 * i.differansestrekk
F.append(Kraft(navn="Temperatur: AT-ledninger", type=(6, 2),
f=[0, f_diff, f_z],
e=[-i.hfj, 0, 0]))
# Tilleggsbidrag grunnet snølast
s = 2 * (sys.at_ledning["Strekk med snø -25C"] - sys.at_ledning["Strekk -40C"])
f_z = s * ((a_T + a_T_dot) / a) if i.master_bytter_side else 0
f_z += s * a / r
F.append(Kraft(navn="Strekkbidrag fra snølast: AT-ledninger", type=(6, 3),
f=[0, 0, f_z],
e=[-i.hfj, 0, 0]))
# Jordledning (1 stk.)
if i.jord_ledn:
g = sys.jordledning["Egenvekt"]
s = sys.jordledning["Strekk 5C"]
e_z = -0.3
kategori = 5 # Fastavspent, side
if not i.matefjern_ledn and not i.at_ledn and not i.forbigang_ledn:
e_z = 0
kategori = 6 # Fastavspent, topp
f_z = s * ((a_T + a_T_dot + 2 * e_z) / a) if i.master_bytter_side else 0
f_z += s * a / r
F.append(Kraft(navn="Egenvekt: Jordledning", type=(kategori, 0),
f=[g * a, 0, 0], e=[-i.hj, 0, e_z]))
F.append(Kraft(navn="Strekk: Jordledning", type=(kategori, 1),
f=[s * (i.delta_h1 / a1 + i.delta_h2 / a2), 0, f_z],
e=[-i.hj, 0, e_z]))
# Tilleggsbidrag grunnet temperatur -40C
s = sys.jordledning["Strekk -40C"] - sys.jordledning["Strekk 5C"]
f_z = s * ((a_T + a_T_dot) / a) if i.master_bytter_side else 0
f_z += s * a / r
f_diff = sys.jordledning["Differansestrekk"] if i.auto_differansestrekk else i.differansestrekk
F.append(Kraft(navn="Temperatur: Jordledning", type=(kategori, 2),
f=[0, f_diff, f_z],
e=[-i.hj, 0, e_z]))
# Tilleggsbidrag grunnet snølast
s = sys.jordledning["Strekk med snø -25C"] - sys.jordledning["Strekk -40C"]
f_z = s * ((a_T + a_T_dot + 2 * e_z) / a) if i.master_bytter_side else 0
f_z += s * a / r
F.append(Kraft(navn="Strekkbidrag fra snølast: Jordledning", type=(kategori, 3),
f=[0, 0, f_z],
e=[-i.hj, 0, e_z]))
return F
[dokumentasjon]def egenvekt_mast(i, mast):
"""Beregner last grunnet mastens egenvekt.
Lastens eksentrisitet i :math:`x`-retning justeres
med :math:`e`-målet for å ta hensyn til at denne lasten
måles fra masteinnspenning snarere enn SOK.
Se også: :func:`kraft.Kraft.__init__`
Funksjonen beregner også lastbidrag grunnet
brukerdefinert last.
:param Inndata i: Input fra bruker
:param Mast mast: Aktuell mast
:return: Liste med :class:`Kraft`-objekt for mastens egenvekt
:rtype: :class:`list`
"""
# F = liste over krefter som skal returneres
F = []
F.append(Kraft(navn="Egenvekt: Mast", type=(0, 0),
f=[mast.egenvekt * mast.h, 0, 0],
e=[i.e, 0, 0]))
if i.brukerdefinert_last:
F.append(Kraft(navn="Egenvekt: Brukerdefinert lastvektor", type=(7, 0),
f=[abs(i.f_x), abs(i.f_y), i.f_z],
e=[- i.e_x + i.e, i.e_y, i.e_z]))
return F
[dokumentasjon]def ulykkeslast_KL(i, sys, mast):
"""Beregner laster som skal påføres systemet ved ulykkessituasjon.
:param Inndata i: Input fra bruker
:param System sys: Data for ledninger og utligger
:param Mast mast: Aktuell mast
:return: Liste med :class:`Kraft`-objekter
:rtype: :class:`list`
"""
r = i.radius
a = (i.a1 + i.a2) / 2
a1, a2 = i.a1, i.a2
B1, B2 = sys.B1, sys.B2
a_T, a_T_dot = sys.a_T, sys.a_T_dot
sms = i.sms
fh = i.fh
sh = i.sh
alpha = 1.7 * 10 ** (-5)
delta_t = 45
# Eksentrisitet i z-retning for KL.
arm = a_T_dot
if i.strekkutligger:
arm = a_T
# F = liste over krefter som skal returneres
F = []
e_t = i.traverslengde
# Sidekrefter pga. ledningsføring
s_b = 1000 * sys.baereline["Strekk i ledning"]
s_kl = 1000 * sys.kontakttraad["Strekk i ledning"]
f_z_b = - s_b * a / r
f_z_kl = - s_kl * (a / r + ((B2 - B1) / a1 + (B2 - B1) / a2))
f_z_avsp_b, f_z_avsp_kl = 0, 0
if i.strekkutligger:
f_z_b, f_z_kl = - f_z_b, - f_z_kl
if i.siste_for_avspenning:
f_z_avsp_b = - s_b * (sms / a2)
f_z_avsp_kl = - s_kl * (arm / a2)
if i.master_bytter_side:
f_z_avsp_b, f_z_avsp_kl = - f_z_avsp_b, -f_z_avsp_kl
if abs(f_z_b + f_z_avsp_b + f_z_kl + f_z_avsp_kl) > abs(f_z_b + f_z_kl):
F.append(Kraft(navn="Strekk: Bæreline", type=(1, 1),
f=[0, 0, f_z_b + f_z_avsp_b],
e=[-fh - sh, e_t, sms]))
F.append(Kraft(navn="Strekk: Kontakttråd", type=(1, 1),
f=[0, 0, f_z_kl + f_z_avsp_kl],
e=[-fh, e_t, arm]))
else:
F.append(Kraft(navn="Strekk: Bæreline", type=(1, 1),
f=[0, 0, f_z_b],
e=[-fh - sh, e_t, sms]))
F.append(Kraft(navn="Strekk: Kontakttråd", type=(1, 1),
f=[0, 0, f_z_kl],
e=[-fh, e_t, arm]))
# Bæreline(r)
F.append(Kraft(navn="Egenvekt: Bæreline", type=(0, 0),
f=[sys.baereline["Egenvekt"] * a, 0, 0],
e=[-fh - sh, e_t, sms]))
# Hengetråd(er)
L = 8 * (a / 60)
F.append(Kraft(navn="Egenvekt: Hengetråd", type=(0, 0),
f=[sys.hengetraad["Egenvekt"] * L, 0, 0],
e=[-fh - sh, e_t, arm]))
# Kontakttråd(er)
F.append(Kraft(navn="Egenvekt: Kontakttråd", type=(0, 0),
f=[sys.kontakttraad["Egenvekt"] * a, 0, 0],
e=[-fh, e_t, arm]))
# Y-line(er)
if not sys.y_line == None:
L = 0
if (sys.navn == "20A" or sys.navn == "35") and i.radius >= 800:
L = 14
elif sys.navn == "25" and i.radius >= 1200:
L = 18
F.append(Kraft(navn="Egenvekt: Y-line", type=(0, 0),
f=[sys.y_line["Egenvekt"] * L, 0, 0],
e=[-fh - sh, e_t, arm]))
# Vandringskraft
avstand_fixpunkt = i.avstand_fixpunkt if not i.fixavspenningsmast else a
if i.fixpunktmast:
avstand_fixpunkt = 0
dl = alpha * delta_t * avstand_fixpunkt
F.append(Kraft(navn="Vandringskraft: Bæreline", type=(1, 2),
f=[0, f_z_b * (dl / i.sms), 0],
e=[-i.fh - i.sh, 0, mast.bredde(mast.h - (i.fh + i.sh)) / 2000]))
F.append(Kraft(navn="Vandringskraft: Kontakttråd", type=(1, 2),
f=[0, (f_z_kl) * (dl / arm), 0],
e=[-i.fh, 0, mast.bredde(mast.h - i.fh) / 2000]))
# Bidrag til normalkraft dersom ulik høyde mellom nabomaster
if not i.delta_h1 == 0 and not i.delta_h2 == 0:
s = 1000 * (sys.baereline["Strekk i ledning"] + sys.kontakttraad["Strekk i ledning"])
f_x = s * (i.delta_h1 / a1 + i.delta_h2 / a2)
F.append(Kraft(navn="Geometri: Ulik høyde mellom master", type=(1, 1),
f=[f_x, 0, 0], e=[-fh - sh / 2, e_t, (sms + arm) / 2]))
return F