Kildekode for klima

"""Beregning av vindlaster, funksjoner for påføring av krefter fra vind- og snølast."""

import math
from kraft import *

# Terrengkategorier etter EC1, NA.4.1
kat0 = {"k_r": 0.16, "z_0": 0.003, "z_min": 2.0}
kat1 = {"k_r": 0.17, "z_0": 0.01, "z_min": 2.0}
kat2 = {"k_r": 0.19, "z_0": 0.05, "z_min": 4.0}
kat3 = {"k_r": 0.22, "z_0": 0.3, "z_min": 8.0}
kat4 = {"k_r": 0.24, "z_0": 1.0, "z_min": 16.0}
terrengkategorier = ([kat0, kat1, kat2, kat3, kat4])


[dokumentasjon]def beregn_vindkasthastighetstrykk_EC(i, z): """Beregner dimensjonerende vindkasthastighetstrykk mhp. Eurokode 0. :param Inndata i: Input fra bruker :param float z: Høyde over bakken :math:`[m]` :return: Vindkasthastighetstrykk :math:`[\\frac{N}{m^2}]` :rtype: :class:`float` """ # Inngangsparametre v_b_0 = i.referansevindhastighet # [m/s] Referansevindhastighet for aktuell kommune c_dir = 1.0 # [1] Retningsfaktor c_season = 1.0 # [1] Årstidsfaktor c_alt = 1.0 # [1] Nivåfaktor c_prob = 1.0 # [1] Faktor dersom returperioden er mer enn 50 år c_0 = 1.0 # [1] Terrengformfaktoren kategori = 2 # Basisvindhastighet [m/s] v_b = c_dir * c_season * c_alt * c_prob * v_b_0 k_r = terrengkategorier[kategori]["k_r"] z_0 = terrengkategorier[kategori]["z_0"] z_min = terrengkategorier[kategori]["z_min"] z_max = 200 c_r = 0 if z <= z_min: c_r = k_r * math.log(z_min / z_0) elif z_min < z <= z_max: c_r = k_r * math.log(z / z_0) # Stedets middelvindhastighet [m/s] v_m = c_r * c_0 * v_b # Stedets vindhastighetstrykk [N/m^2] rho = 1.25 # [kg/m^3] Luftens densitet q_m = 0.5 * rho * v_m ** 2 # [N / m^2] # Turbulensintensiteten k_l = 1.0 # Turbulensintensiteten, anbefalt verdi er 1.0 k_p = 3.5 I_v = 0 if z <= z_min: I_v = k_l / (c_0 * math.log(z_min / z_0)) elif z_min < z <= z_max: I_v = k_l / (c_0 * math.log(z / z_0)) # Vindkasthastigheten # v_p = v_m * math.sqrt(1 + 2 * k_p * I_v) # Vindkasthastighetstrykket q_p = q_m * (1 + 2 * k_p * I_v) # [N/m^2] return q_p
[dokumentasjon]def q_KL(i, sys): """Beregner vindlast på kontaktledningen. :param Inndata i: Input fra bruker :param sys: Data for ledninger og utligger :return: Vindlast på KL :math:`[\\frac{N}{m}]` :rtype: :class:`float` """ # Inngangsparametre q_p = i.vindkasthasstighetstrykk cf = 1.1 # [1] Vindkraftfaktor ledning d_henge, d_Y = 0, 0 # [m] Diameter hengetraad, lengde Y-line q = 0 # [N/m] Brukes til å beregne masteavstand, a # Bidrag fra KL, bæreline, hengetråd og Y-line avhenger av utliggere utliggere = 1 if i.siste_for_avspenning or i.linjemast_utliggere == 2: utliggere = 2 # ALTERNATIV #1: q = 1.2 * q_kontakttråd q_kl = q_p * cf * sys.kontakttraad["Diameter"] / 1000 # [N / m] q += q_kl # ALTERNATIV #2: q = q_kontakttråd + q_bæreline + q_henge + q_Y # Kontakttråd. # q_kl = q_p * cf * sys.kontakttraad["Diameter"] / 1000 # [N / m] # q += q_kl # Bæreline. # q_b = q_p * cf * sys.baereline["Diameter"] / 1000 # [N / m] # q += q_b # Hengetråd. # for utligger in range(utliggere): # d_henge += sys.hengetraad["Diameter"] / 1000 # [m] # q_henge = q_p * cf * d_henge # [N/m] # q += q_henge # Y-line. # if not sys.y_line == None: # Sjekker at systemet har Y-line # d_Y += sys.y_line["Diameter"] / 1000 # [m] # # L_Y = lengde Y-line # q_Y = q_p * cf * d_Y # q += q_Y return q
[dokumentasjon]def vindlast_mast(i, mast, vindretning): """Beregner krefter grunnet vindlast på mast. 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 vindlast på brukerdefinert last. :param Inndata i: Input fra bruker :param Mast mast: Aktuell mast :param int vindretning: Aktuell vindretning :return: Liste med :class:`Kraft`-objekter :rtype: :class:`list` """ # Liste over krefter som skal returneres F = [] # Vind normalt spor if vindretning < 2: if i.ec3: q_p = i.vindkasthastighetstrykk # [N/m^2] cf = 2.2 # [1] Vindkraftfaktor mast q_normalt = q_p * cf * mast.A_ref # [N/m] Normalt spor if vindretning == 1: q_normalt = -q_normalt F.append(Kraft(navn="Vindlast: Mast", type=(0, 4), q=[0, 0, q_normalt], b=mast.h, e=[-mast.h / 2 + i.e, 0, 0])) if i.brukerdefinert_last: F.append(Kraft(navn="Vindlast: Brukerdefinert vindareal", type=(7, 4), f=[0, 0, q_p * i.a_vind], e=[- i.e_x + i.e, i.e_y, i.e_z])) else: q_K = _beregn_vindtrykk_NEK(i) if vindretning == 1: q_K = -q_K if mast.type == "H": G_lat = 1.05 # [1] Resonans faktor C_lat = 2.80 # [1] Drag faktor A_lat = mast.A_ref # [m^2 / m] Mastens referanseareal q_normalt = q_K * G_lat * (1.0 + 0.2 * (math.sin(2 * (math.pi / 2)) ** 2)) * C_lat * A_lat F.append(Kraft(navn="Vindlast: Mast", type=(0, 4), q=[0, 0, q_normalt], b=mast.h, e=[-mast.h / 2 + i.e, 0, 0])) else: C_str = 2.0 if mast.type == "B": C_str = 1.4 q_normalt = q_K * C_str * mast.A_ref F.append(Kraft(navn="Vindlast: Mast", type=(0, 4), q=[0, 0, q_normalt], b=mast.h, e=[-mast.h / 2 + i.e, 0, 0])) if i.brukerdefinert_last: F.append(Kraft(navn="Vindlast: Brukerdefinert vindareal", type=(7, 4), f=[0, 0, q_K * i.a_vind], e=[- i.e_x, i.e_y, i.e_z])) # Vind parallelt spor else: if i.ec3: q_p = i.vindkasthastighetstrykk # [N/m^2] cf = 2.2 # [1] Vindkraftfaktor mast q_par = q_p * cf * mast.A_ref_par # [N/m] Parallelt spor F.append(Kraft(navn="Vindlast: Mast", type=(0, 4), q=[0, q_par, 0], b=mast.h, e=[-mast.h / 2 + i.e, 0, 0])) if i.brukerdefinert_last: F.append(Kraft(navn="Vindlast: Brukerdefinert vindareal", type=(7, 4), f=[0, q_p * i.a_vind, 0], e=[- i.e_x, i.e_y, i.e_z])) else: q_K = _beregn_vindtrykk_NEK(i) if mast.type == "H": # Inngangsparametre G_lat = 1.05 # [1] Resonans faktor C_lat = 2.80 # [1] Drag faktor A_lat = mast.A_ref # [m^2 / m] Mastens referanseareal q_par = q_K * G_lat * (1.0 + 0.2 * (math.sin(2 * (math.pi / 2)) ** 2)) * C_lat * A_lat F.append(Kraft(navn="Vindlast: Mast", type=(0, 4), q=[0, q_par, 0], b=mast.h, e=[-mast.h / 2 + i.e, 0, 0])) else: # Inngangsparametre C_str = 1.4 # [1] Drag faktor q_par = q_K * C_str * mast.A_ref_par F.append(Kraft(navn="Vindlast: Mast", type=(0, 4), q=[0, q_par, 0], b=mast.h, e=[-mast.h / 2 + i.e, 0, 0])) if i.brukerdefinert_last: F.append(Kraft(navn="Vindlast: Brukerdefinert vindareal", type=(7, 4), f=[0, q_K * i.a_vind, 0], e=[- i.e_x, i.e_y, i.e_z])) return F
[dokumentasjon]def vindlast_ledninger(i, sys, vindretning): """Beregner krefter grunnet vindlast på ledninger. :param Inndata i: Input fra bruker :param System sys: Data for ledninger og utligger :param int vindretning: Aktuell vindretning :return: Liste med :class:`Kraft`-objekter :rtype: :class:`list` """ # Liste over krefter som skal returneres F = [] # Ingen vindlast på ledninger med vind parallelet spor if vindretning < 2: a = (i.a1 + i.a2) / 2 # [m] masteavstand a2 = i.a2 # [m] Avstand til neste mast if i.ec3: q_p = i.vindkasthastighetstrykk # [N/m^2] cf = 1.1 # [1] Vindkraftfaktor ledning q = q_p * cf else: q_K = _beregn_vindtrykk_NEK(i) G_C = 0.75 # [1] Respons faktor C_C = 1.0 # [1] Drag faktor q = q_K * G_C * C_C if vindretning == 1: q = -q # Antall utliggere n = 1 if i.siste_for_avspenning or i.linjemast_utliggere == 2: n = 2 # Kontakttråd g_sno = _g_sno(i.ec3, i.isklasse, sys.kontakttraad["Diameter"]) D = _D_ledning(i.ec3, g_sno, sys.kontakttraad["Diameter"]) f_z = n * a * q * sys.kontakttraad["Diameter"] / 1000 F.append(Kraft(navn="Vindlast: Kontakttråd", type=(1, 4), f=[0, 0, f_z], e=[-i.fh, 0, 0])) f_z = n * a * q * D F.append(Kraft(navn="Vindlast: Kontakttråd, økt diameter", type=(1, 3), f=[0, 0, f_z], e=[-i.fh, 0, 0])) # Bæreline g_sno = _g_sno(i.ec3, i.isklasse, sys.baereline["Diameter"]) D = _D_ledning(i.ec3, g_sno, sys.baereline["Diameter"]) f_z = n * a * q * sys.baereline["Diameter"] / 1000 F.append(Kraft(navn="Vindlast: Bæreline", type=(1, 4), f=[0, 0, f_z], e=[-i.fh - i.sh, 0, 0])) f_z = n * a * q * D F.append(Kraft(navn="Vindlast: Bæreline, økt diameter", type=(1, 3), f=[0, 0, f_z], e=[-i.fh - i.sh, 0, 0])) # Hengetråd d_henge = sys.hengetraad["Diameter"] / 1000 # [m] # Bruker lineær interpolasjon for å finne lengde av hengetråd L_henge = 8 * a / 60 q_henge = q * d_henge # [N/m] f_z = n * L_henge * q_henge F.append(Kraft(navn="Vindlast: Hengetråd", type=(1, 4), f=[0, 0, f_z], e=[-i.fh - i.sh/2, 0, 0])) # Y-line if not sys.y_line == None: # Sjekker at systemet har Y-line 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 g_sno = _g_sno(i.ec3, i.isklasse, sys.y_line["Diameter"]) D = _D_ledning(i.ec3, g_sno, sys.y_line["Diameter"]) f_z = n * L * q * sys.y_line["Diameter"] / 1000 F.append(Kraft(navn="Vindlast: Y-line", type=(1, 4), f=[0, 0, f_z], e=[-i.fh - i.sh, 0, 0])) f_z = n * L * q * D F.append(Kraft(navn="Vindlast: Y-line, økt diameter", type=(1, 3), f=[0, 0, f_z], e=[-i.fh - i.sh, 0, 0])) # Fikspunktmast if i.fixpunktmast: g_sno = _g_sno(i.ec3, i.isklasse, sys.fixline["Diameter"]) D = _D_ledning(i.ec3, g_sno, sys.fixline["Diameter"]) f_z = a * q * sys.fixline["Diameter"] / 1000 F.append(Kraft(navn="Vindlast: Fixpunktmast", type=(2, 4), f=[0, 0, f_z], e=[-i.fh - i.sh, 0, 0])) f_z = a * q * D F.append(Kraft(navn="Vindlast: Fixpunktmast, økt diameter", type=(2, 3), f=[0, 0, f_z], e=[-i.fh - i.sh, 0, 0])) # Fiksavspenningsmast if i.fixavspenningsmast: g_sno = _g_sno(i.ec3, i.isklasse, sys.fixline["Diameter"]) D = _D_ledning(i.ec3, g_sno, sys.fixline["Diameter"]) f_z = (a2 / 2) * q * sys.fixline["Diameter"] / 1000 F.append(Kraft(navn="Vindlast: Fixavspenningsmast", type=(2, 4), f=[0, 0, f_z], e=[-i.fh - i.sh, 0, 0])) f_z = (a2 / 2) * q * D F.append(Kraft(navn="Vindlast: Fixavspenningsmast, økt diameter", type=(2, 3), f=[0, 0, f_z], e=[-i.fh - i.sh, 0, 0])) # Avspenningsmast if i.avspenningsmast: g_sno_b = _g_sno(i.ec3, i.isklasse, sys.baereline["Diameter"]) g_sno_kl = _g_sno(i.ec3, i.isklasse, sys.kontakttraad["Diameter"]) D_b = _D_ledning(i.ec3, g_sno, sys.baereline["Diameter"]) D_kl = _D_ledning(i.ec3, g_sno, sys.kontakttraad["Diameter"]) f_z = (a2 / 2) * q * (sys.baereline["Diameter"] / 1000 + sys.kontakttraad["Diameter"] / 1000) F.append(Kraft(navn="Vindlast: Avspenningsmast", type=(3, 4), f=[0, 0, f_z], e=[-i.fh - i.sh, 0, 0])) f_z = (a2 / 2) * q * (D_b + D_kl) F.append(Kraft(navn="Vindlast: Avspenningsmast, økt diameter", type=(3, 3), f=[0, 0, f_z], e=[-i.fh - i.sh, 0, 0])) # Forbigangsledning if i.forbigang_ledn: g_sno = _g_sno(i.ec3, i.isklasse, sys.forbigangsledning["Diameter"]) D = _D_ledning(i.ec3, g_sno, sys.forbigangsledning["Diameter"]) f_z = a * q * sys.forbigangsledning["Diameter"] / 1000 kategori = 5 # Fastavspent, side if not i.matefjern_ledn and not i.at_ledn and not i.jord_ledn: kategori = 6 # Fastavspent, topp F.append(Kraft(navn="Vindlast: Forbigangsledn", type=(kategori, 4), f=[0, 0, f_z], e=[-i.hf, 0, 0])) f_z = a * q * D F.append(Kraft(navn="Vindlast: Forbigangsledn, økt diameter", type=(kategori, 3), f=[0, 0, f_z], e=[-i.hf, 0, 0])) # Returledning (2 stk.) if i.retur_ledn: g_sno = _g_sno(i.ec3, i.isklasse, sys.returledning["Diameter"]) D = 2 * _D_ledning(i.ec3, g_sno, sys.returledning["Diameter"]) f_z = 2 * a * q * sys.returledning["Diameter"] / 1000 F.append(Kraft(navn="Vindlast: Returledning", type=(5, 4), f=[0, 0, f_z], e=[-i.hr, 0, 0])) f_z = a * q * D F.append(Kraft(navn="Vindlast: Returledning, økt diameter", type=(5, 3), f=[0, 0, f_z], e=[-i.hr, 0, 0])) # Fiberoptisk ledning if i.fiberoptisk_ledn: g_sno = _g_sno(i.ec3, i.isklasse, sys.fiberoptisk["Diameter"]) D = _D_ledning(i.ec3, g_sno, sys.fiberoptisk["Diameter"]) f_z = a * q * sys.fiberoptisk["Diameter"] / 1000 F.append(Kraft(navn="Vindlast: Fiberoptisk ledning", type=(5, 4), f=[0, 0, f_z], e=[-i.fh, 0, 0])) f_z = a * q * D F.append(Kraft(navn="Vindlast: Fiberoptisk ledning, økt diameter", type=(5, 3), f=[0, 0, f_z], e=[-i.fh, 0, 0])) # Mate-/fjernledning(er) (n stk.) if i.matefjern_ledn: n = i.matefjern_antall g_sno = _g_sno(i.ec3, i.isklasse, sys.matefjernledning["Diameter"]) D = n * _D_ledning(i.ec3, g_sno, sys.matefjernledning["Diameter"]) f_z = n * a * q * sys.matefjernledning["Diameter"] / 1000 er = "er" if n > 1 else "" F.append(Kraft(navn="Vindlast: Mate-/fjernledning{}".format(er), type=(6, 4), f=[0, 0, f_z], e=[-i.hfj, 0, 0])) f_z = a * q * D F.append(Kraft(navn="Vindlast: Mate-/fjernledning{}, økt diameter".format(er), type=(6, 3), f=[0, 0, f_z], e=[-i.hfj, 0, 0])) # AT-ledning (2 stk.) if i.at_ledn: g_sno = _g_sno(i.ec3, i.isklasse, sys.at_ledning["Diameter"]) D = 2 * _D_ledning(i.ec3, g_sno, sys.at_ledning["Diameter"]) f_z = 2 * a * q * sys.at_ledning["Diameter"] / 1000 F.append(Kraft(navn="Vindlast: AT-ledning", type=(6, 4), f=[0, 0, f_z], e=[-i.hfj, 0, 0])) f_z = a * q * D F.append(Kraft(navn="Vindlast: AT-ledning, økt diameter", type=(6, 3), f=[0, 0, f_z], e=[-i.hfj, 0, 0])) # Jordledning if i.jord_ledn: g_sno = _g_sno(i.ec3, i.isklasse, sys.jordledning["Diameter"]) D = _D_ledning(i.ec3, g_sno, sys.jordledning["Diameter"]) f_z = a * q * sys.jordledning["Diameter"] / 1000 kategori = 5 # Fastavspent, side e_z = -0.3 if not i.matefjern_ledn and not i.at_ledn and not i.forbigang_ledn: kategori = 6 # Fastavspent, topp e_z = 0 F.append(Kraft(navn="Vindlast: AT-ledning", type=(kategori, 4), f=[0, 0, f_z], e=[-i.hj, 0, e_z])) f_z = a * q * D F.append(Kraft(navn="Vindlast: AT-ledning, økt diameter", type=(kategori, 3), f=[0, 0, f_z], e=[-i.hj, 0, e_z])) return F
[dokumentasjon]def isogsno_last(i, sys): """Beregner krefter grunnet is- og snølast. :param Inndata i: Input fra bruker :param System sys: Data for ledninger og utligger :return: Liste med :class:`Kraft`-objekter :rtype: :class:`list` """ a = (i.a2 + i.a1) / 2 # [m] Midlere masteavstand a2 = i.a2 # [m] Avstand til neste mast a_T, a_T_dot = sys.a_T, sys.a_T_dot arm = a_T_dot if i.strekkutligger: arm = a_T # F = liste over krefter som skal returneres F = [] # Antall utliggere n = 1 if i.siste_for_avspenning or i.linjemast_utliggere == 2: n = 2 # Bæreline g_sno = _g_sno(i.ec3, i.isklasse, sys.baereline["Diameter"]) F.append(Kraft(navn="Islast: Bæreline", type=(1, 3), f=[n * a * g_sno, 0, 0], e=[-i.fh - i.sh, 0, i.sms])) # Hengetråd: Ingen snølast. # Kontakttråd g_sno = _g_sno(i.ec3, i.isklasse, sys.kontakttraad["Diameter"]) F.append(Kraft(navn="Islast: Kontakttråd", type=(1, 3), f=[n * a * g_sno, 0, 0], e=[-i.fh, 0, arm])) # Y-line if not sys.y_line == None: # Sjekker at systemet har Y-line # L = lengde Y-line 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 g_sno = _g_sno(i.ec3, i.isklasse, sys.y_line["Diameter"]) F.append(Kraft(navn="Islast: Y-line", type=(1, 3), f=[n * L * g_sno, 0, 0], e=[-i.fh, 0, i.sms])) # Fikspunktmast if i.fixpunktmast: g_sno = _g_sno(i.ec3, i.isklasse, sys.fixline["Diameter"]) F.append(Kraft(navn="Islast: Fixline", type=(2, 3), f=[a * g_sno, 0, 0], e=[-i.fh - i.sh, 0, i.sms])) # Fiksavspenningsmast if i.fixavspenningsmast: g_sno = _g_sno(i.ec3, i.isklasse, sys.fixline["Diameter"]) F.append(Kraft(navn="Islast: Fixline", type=(2, 3), f=[(a2/2) * g_sno, 0, 0], e=[-i.fh - i.sh, 0, 0])) # Avspenningsmast if i.avspenningsmast: g_sno_b = _g_sno(i.ec3, i.isklasse, sys.baereline["Diameter"]) g_sno_kl = _g_sno(i.ec3, i.isklasse, sys.kontakttraad["Diameter"]) F.append(Kraft(navn="Islast: Avspenningsmast", type=(3, 3), f=[(a2/2) * (g_sno_b + g_sno_kl), 0, 0], e=[-i.fh - i.sh/2, 0, 0])) # Forbigangsledning if i.forbigang_ledn: e_z = -0.3 kategori = 5 if not i.matefjern_ledn and not i.at_ledn and not i.jord_ledn: # Forbigangsledning montert på baksiden av mast e_z = 0 kategori = 6 g_sno = _g_sno(i.ec3, i.isklasse, sys.forbigangsledning["Diameter"]) F.append(Kraft(navn="Islast: Forbigangsledning", type=(kategori, 3), f=[a * g_sno, 0, 0], e=[-i.hf, 0, e_z])) # Returledninger (2 stk.) if i.retur_ledn: g_sno = 2 * _g_sno(i.ec3, i.isklasse, sys.returledning["Diameter"]) F.append(Kraft(navn="Islast: Returledning", type=(5, 3), f=[a * g_sno, 0, 0], e=[-i.hr, 0, -0.5])) # Mate-/fjernledning(er) (n stk.) if i.matefjern_ledn: n = i.matefjern_antall er = "er" if n > 1 else "" g_sno = n * _g_sno(i.ec3, i.isklasse, sys.matefjernledning["Diameter"]) F.append(Kraft(navn="Islast: Mate-/fjernledning{}".format(er), type=(6, 3), f=[a * g_sno, 0, 0], e=[-i.hfj, 0, 0])) # Fiberoptisk if i.fiberoptisk_ledn: g_sno = _g_sno(i.ec3, i.isklasse, sys.fiberoptisk["Diameter"]) F.append(Kraft(navn="Islast: Fiberoptisk ledning", type=(5, 3), f=[a * g_sno, 0, 0], e=[-i.fh, 0, -0.3])) # AT-ledninger (2 stk.) if i.at_ledn: g_sno = 2 * _g_sno(i.ec3, i.isklasse, sys.at_ledning["Diameter"]) F.append(Kraft(navn="Islast: AT-ledning", type=(6, 3), f=[a * g_sno, 0, 0], e=[-i.hfj, 0, 0])) # Jordledning if i.jord_ledn: e_z = -0.3 kategori = 5 if not i.matefjern_ledn and not i.at_ledn and not i.forbigang_ledn: e_z = 0 kategori = 6 g_sno = _g_sno(i.ec3, i.isklasse, sys.jordledning["Diameter"]) F.append(Kraft(navn="Islast: Jordledning", type=(kategori, 3), f=[a * g_sno, 0, 0], e=[-i.hj, 0, e_z])) return F
[dokumentasjon]def _beregn_vindtrykk_NEK(i): """Beregner dimensjonerende vindtrykk mhp. bransjestandard. :param Inndata i: Input fra bruker :return: Vindtrykk :math:`[\\frac{N}{m^2}]` :rtype: :class:`float` """ """ # Alternativ #1: NEK EN 50125-2 # Inngangsparametre for referansehøyde 10m over bakkenivå z = 10 # [m] høyde over bakken v_10 = 24 # [m / s] 10-min middelvindhastighet # Ruhetsparameteren for ulike terrengkategorier [1] alpha = [0.12, 0.16, 0.20, 0.28] # Vindhastigheten i høyden z over bakkenivå etter NEK EN 50125-2. v_z = v_10 * (z/10) ** alpha[3] """ # Alternativ 2: EC1 # Terrengkategori II velges v_b_0 = i.referansevindhastighet # [m/s] Referansevindhastighet for aktuell kommune # Dynamisk vindtrykk [N / m^2] rho = 1.255 # [kg / m^3] G_q = 2.05 # [1] Gust-respons faktor G_t = 1.0 # [1] Terrengfaktor av typen åpent q_K = 0.5 * rho * G_q * G_t * v_b_0 ** 2 return q_K
[dokumentasjon]def _g_sno(ec3, isklasse, d): """Beregner linjelast fra snø/is på en ledning. Linjelastene som hentes ut basert på isklasse ved NEK-beregning gjelder for ledninger med diametere mellom :math:`10` og :math:`20 mm`, derfor settes linjelasten for ledninger med større diametere til maksimalverdien :math:`[15 \\frac{N}{m}]`. :param Boolean ec3: Brukerens valg av beregningsmetode :param float d: Ledningens diameter :math:`[mm]` :return: Last på ledningen :math:`[\\frac{N}{m}]` :rtype: :class:`float` """ if ec3: return 2 + 0.5 * d else: if d > 20: return 15 else: if isklasse == 0: return 0 elif isklasse == 1: return 3.5 elif isklasse == 2: return 7.5 else: return 15
[dokumentasjon]def _D_ledning(ec3, g_sno, d): """Beregner effektiv økning av en lednings vindareal grunnet snø/is. :param Boolean ec3: Brukerens valg av beregningsmetode :param float g_sno: Linjelast fra snø/is :math:`[\\frac{N}{m}]` :param float d: Ledningens initielle diameter :math:`[mm]` :return: Ledningens tilleggsareal grunnet snø/is :math:`[m]` :rtype: :class:`float` """ if ec3: return 0 else: d /= 1000 rho = 500 * 9.81 return math.sqrt(d**2 + 4*g_sno/(math.pi*rho)) - d