11 Agosto 2026 Admin 0 Commenti

AZIONE VARIABILE DEL VENTO

L’azione del vento viene calcolata con riferimento al D.M. 17 gennaio 2018 – NORME TECNICHE PER LE COSTRUZIONI Cap. 3 – AZIONI SULLE COSTRUZIONI – Par. 3.3 e 3.4 accompagnato dalle Norme CNR-DT207/2008.

Velocità base di riferimento

La velocità base di riferimento è funzione della posizione geografica della struttura, la sua definizione è riportata al punto 3.3.1. delle NTC. I parametri vengono definiti in Tab. 3.3.I:

Zona Descrizione $v_{b,0}$ [m/s] $a_{0}$ [m] $k_s$
1 Valle d’Aosta, Piemonte, Lombardia, Trentino Alto Adige, Veneto, Friuli Venezia Giulia (con l’eccezione della provincia di Trieste) 25 1000 0.40
2 Emilia Romagna 25 750 0.45
3 Toscana, Marche, Umbria, Lazio, Abruzzo, Molise, Puglia, Campania, Basilicata, Calabria (esclusa la provincia di Reggio Calabria) 27 500 0.37
4 Sicilia e provincia di Reggio Calabria 28 500 0.36
5 Sardegna (zona a oriente della retta congiungente Capo Teulada con l’Isola di Maddalena) 28 750 0.4
6 Sardegna (zona a occidente della retta congiungente Capo Teulada con l’Isola di Maddalena) 28 500 0.36
7 Liguria 28 1000 0.54
8 Provincia di Trieste 30 1500 0.5
9 Isole (con l’eccezione di Sicilia e Sardegna) e mare aperto 31 500 0.2

la velocità base di riferimento è data dall’espressione [3.3.1]:
$$v_b = v_{b,0}\cdot c_{a} $$
dove:
– $a_0, k_s$ sono parametri forniti nella Tab. 3.3.I in funzione della zona in cui sorge la costruzione (Fig. 3.3.1);
– $a_{s}$ è l’altitudine sul livello del mare del sito ove sorge la costruzione.

# Velocita base di riferimento
import math
print("Definizione dei dati\n")
print("Zona: \n")

zona = input("1 - Valle d’Aosta, Piemonte, Lombardia, Trentino Alto Adige, Veneto, Friuli Venezia Giulia (con l’eccezione della provincia di Trieste)\n" +
"2 - Emilia Romagna\n" +
"3 - Toscana, Marche, Umbria, Lazio, Abruzzo, Molise, Puglia, Campania, Basilicata, Calabria (esclusa la provincia di Reggio Calabria)\n" +
"4 - Sicilia e provincia di Reggio Calabria\n" +
"5 - Sardegna (zona a oriente della retta congiungente Capo Teulada con l’Isola di Maddalena)\n" +
"6 - Sardegna (zona a occidente della retta congiungente Capo Teulada con l’Isola di Maddalena)\n" +
"7 - Liguria\n" +
"8 - Provincia di Trieste\n" +
"9 - Isole (con l'eccezione di Sicilia e Sardegna) e mare aperto\n")

zona = int(zona)
print(f'zona: {zona}')

a_s = int(input("altitudine slm del sito dove sorge la costruzione: "))
D = int(input("Distanza dalla costa (inserire 0 oppure valori negativi per le costruzioni sul mare: )"))
Tr = int(input("Tempo di ritorno di progetto: "))
z = float(input("z altezza dell'edificio (fino alla linea di gronda: )"))

# Coefficiente di esposizione
print("Definizione dei dati: ")
print("## CLASSE DI RUGOSITA'\n")
classe_rugosita = input('A - Aree urbane in cui almeno il 15% della superficie sia coperto da edifici la cui altezza media superi i 15 m\n'+
'B - Aree urbane (non di classe A), suburbane, industriali e boschive\n'+
'C - Aree con ostacoli diffusi (alberi, case, muri, recinzioni,....); aree con rugosità non riconducibile alle classi A, B, D\n'+
'D - a) Mare e relativa fascia costiera (entro 2 km dalla costa);\n'+
' - b)Lago (con larghezza massima pari ad almeno 1 km) e relativa fascia costiera (entro 1 km dalla costa)\n'+
' - c) Aree prive di ostacoli o con al più rari ostacoli isolati (aperta campagna, aeroporti, aree agricole, pascoli, zone paludose o sabbiose, superfici innevate o ghiacciate, ....)\n')

# Definizione Categoria di esposizione
esp = "Condition not met" # Initialize with a default value
if classe_rugosita == 'A':
if D < 0:
esp = '0'
elif 0 < D < 10:
esp = 'IV'
elif 10 < D < 30: esp = 'IV' elif D > 30:
if a_s < 500:
esp = 'V'
elif 500 < a_s < 750: esp = 'V' elif a_s > 750:
esp = 'V'

elif classe_rugosita == 'B':
if D < 0:
esp = '0'
elif 0 < D < 10:
esp = 'III'
elif 10 < D < 30: esp = 'III' elif D > 30:
if a_s < 500:
esp = 'IV'
elif 500 < a_s < 750: esp = 'IV' elif a_s > 750:
esp = 'IV'

elif classe_rugosita == 'C':
if D < 0:
esp = '0'
elif 0 < D < 10:
esp = 'II' if zona <= 4 else 'III'
elif 10 < D < 30: esp = 'III' elif D > 30:
if a_s < 500:
esp = 'IV'
elif 500 < a_s < 750: esp = 'IV' elif a_s > 750:
esp = 'IV'

elif classe_rugosita == 'D':
if D < 0:
esp = 'I'
elif 0 < D < 10:
esp = 'II'
elif 10 < D < 30: esp = 'II' elif D > 30:
if a_s < 500:
esp = 'II'
elif 500 < a_s < 750: esp = 'III' elif a_s > 750:
if 2 <= zona <= 5: esp = 'III' elif zona == 1: esp = 'IV' else: esp = "nessuna classe disponibile" else: esp = "nessuna classe di rugosita trovata" #------------------------------------------------------------ # Parametri per la definizione del coefficiente di esposizione exposure_categories = { 'I': {'Kr': 0.17, 'z0': 0.01, 'zmin': 2}, 'II': {'Kr': 0.19, 'z0': 0.05, 'zmin': 4}, 'III': {'Kr': 0.20, 'z0': 0.10, 'zmin': 5}, 'IV': {'Kr': 0.22, 'z0': 0.30, 'zmin': 8}, 'V': {'Kr': 0.23, 'z0': 0.70, 'zmin': 12} } def get_exposure_values(esp): if esp in exposure_categories: kr = exposure_categories[esp]['Kr'] z0 = exposure_categories[esp]['z0'] zmin = exposure_categories[esp]['zmin'] return kr, z0, zmin else: return None, None, None kr, z0, zmin = get_exposure_values(esp) # ---------------------------------------------------------- # Valori dei parametri vb0, av0, ks if zona == 1: vb0 = 25 a0 = 1000 ks = 0.4 elif zona == 2: vb0 = 25 a0 = 750 ks = 0.45 elif zona == 3: vb0 = 27 a0 = 500 ks = 0.37 elif zona == 4: vb0 = 28 a0 = 500 ks = 0.36 elif zona == 5: vb0 = 28 a0 = 750 ks = 0.4 elif zona == 6: vb0 = 28 a0 = 500 ks = 0.36 elif zona == 7: vb0 = 28 a0 = 1000 ks = 0.54 elif zona == 8: vb0 = 30 a0 = 1500 ks = 0.50 else: vb0 = 31 a0 = 500 ks = 0.32 # ----------------------------------------------------- # Velocità di riferimento if a_s a0: c_a = float(1+ks*(a_s/a0 -1)) print("## PARAMETRI vb0, a0, ks\n") print(f'vb0 = {vb0}\n'+ f'a0 = {a0}\n'+ f'ks = {ks}\n') print("# VELOCITA BASE DI RIFERIMENTO\n") vb = vb0*c_a print(f'vb = {vb}') print("# CLASSE DI RUGOSITA'") print(f'Classe: {classe_rugosita}+{esp}') print('## VELOCITA DI RIFERIMENTO') c_r = 0.75*((1-0.2*math.log(-math.log(1-1/Tr)))**0.5) vr = vb*c_r print(f'vr = {vr}\n') print("# AZIONI STATICHE DI RIFERIMENTO\n") # Risultati print("## PRESSIONE CINETICA DI RIFERIMENTO") q_r = 0.5*1.25*vr**2 print(f'q_r = {q_r} N/mq') print("## COEFFICIENTE DI ESPOSIZIONE") # Now we print the variables, assuming the function returned valid values if kr is not None and z0 is not None and zmin is not None: print(f"Kr: {kr}") print(f"z0: {z0}") print(f"zmin: {zmin}") else: print("Exposure category not found.") ct = 1 # coefficiente topografico cf = 1 # coefficiente di d'attrito cp = 1 # vedi C3.3.8 COEFFICIENTI AERODINAMICI cd=1 if z >= zmin:
ce = kr**2*ct*math.log(z/z0)*(7+ct*math.log(z/z0))
else:
ce = kr**2*ct*math.log(zmin/z0)*(7+ct*math.log(zmin/z0))
print(f'ce(z) = {ce}')

print("## PRESSIONE DEL VENTO")
p = round(q_r*ce*cp*cd,3)
print(f'p = {p} N/mq')

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *