Di seguito è riportato un codice VBA per Excel per il calcolo del coefficiente di spinta attiva in accordo al DM 14 gennaio 2008.
La procedura per usare il codice è la seguente:
- Aprire un nuovo foglio Excel, e quindi aprire la pagina progetto di Visual Basic;
- inserire un nuovo modulo;
- copiare ed incollare il codice qui sotto;
- tornare nel foglio Excel;
- nella voce inserisci funzione trovate la nuova funzione tra quelle definite dall’utente.
–
–
E questo è il codice:
Public Function Ka(fi As Double, alfa As Double, beta As Double, delta As Double, gammaFi As Double) As Variant
‘La funzione calcola il coefficiente di spinta attiva applicando i coefficienti gamma.m del DM2008
‘ parametri in input:
‘ fi= angolo di attrito interno in gradi
‘ alfa: inclinazione del terrapieno rispetto all’orizzontale in gradi
‘ beta= inclinazione del paramento interno del muro rispetto all’orizzontale (se verticale beta=90°)
‘ delta= inclinazione della spinta rispetto alla normale al paramento interno (positivo se verso l’alto)
‘ gammaFi= coefficiente parziale per il parametri del terreno secondo M1 o M2 che si applica a tan(fi)
‘ tutti gli angoli in input sono in gradi sessadecimaliPi = 4 * Atn(1)
fi = fi * Pi / 180
fi = Atn(Tan(fi) / gammaFi)
alfa = alfa * Pi / 180
beta = beta * Pi / 180
delta = delta * Pi / 180k1 = (Sin(beta + fi)) ^ 2
k2 = (Sin(beta)) ^ 2 * Sin(beta – delta) * (1 + ((Sin(fi + delta) * Sin(fi – alfa)) / (Sin(beta – delta) * Sin(beta + alfa))) ^ 0.5) ^ 2Ka = k1 / k2
End Function
–
–
Mentre il codice che segue implementa in Excel una funzione personalizzata che consente di determinare il coefficiente di spinta attiva in fase sismica sia nel caso di sisma verticale verso l’alto che verso il basso.
La spinta in fase sismica si calcola, trascurando la coesione ed eventuali sovraccarichi, con la formula:
Ed= 1/2*gamma*(1±Kv)* K *H²
La funzione permette di calcolare il coefficiente di spinta K.
Public Function K(fi As Double, alfa As Double, beta As Double, delta As Double, kh As Double, kv As Double, gammaFi As Double, flag As Integer) As Variant
‘La funzione calcola il coefficiente di spinta attiva per la determinazione della
‘ spinta del terreno in fase sismica applicando i coefficiemti del DM2008
‘ parametri in input:
‘ fi= angolo di attrito interno in gradi
‘ alfa: inclinazione del terrapieno rispetto all’orizzontale in gradi
‘ beta= inclinazione del paramento interno del muro rispetto all’orizzontale (se verticale beta=90°)
‘ delta= inclinazione della spinta rispetto alla normale al paramento interno (positivo se verso l’alto)
‘ kh, kv =coefficienti sismici orizzontale e verticale
‘ gammaFi= coefficiente parziale per il parametri del terreno secondo M1 o M2
‘ flag= indicatore del tipo di sisma verticale che assume i seguenti valori
‘ sisma verticale verso il basso: flag=1
‘ sisma verticale verso l’alto: flag=2
‘ se a flag si attribuisce valore diverso da 1 o due si assume pari ad 1
‘ tutti gli angoli in input sono in gradi sessadecimaliPi = 4 * Atn(1)
fi = fi * Pi / 180
fi = Atn(Tan(fi) / gammaFi)
alfa = alfa * Pi / 180
beta = beta * Pi / 180
delta = delta * Pi / 180Select Case flag
Case Is = 1 ‘sisma verticale verso il basso
teta = Atn(kh / (1 + kv))
Case Is = 2 ‘sisma verticale verso l’alto
teta = Atn(kh / (1 – kv))
Case Else
teta = Atn(kh / (1 + kv))
End Selectk1 = (Sin(beta + fi – teta)) ^ 2
k2 = Cos(teta) * (Sin(beta)) ^ 2 * Sin(beta – delta – teta)
k3 = 1
If alfa <= fi – teta Then
k3 = (1 + ((Sin(fi + delta) * Sin(fi – alfa – teta)) / (Sin(beta – delta – teta) * Sin(beta + alfa))) ^ 0.5) ^ 2
End IfK = k1 / (k2 * k3)
End Function
Per il contributo ringraziamo l’ing. Afazio.
In excel mi fa errore di sintassi..come mai?
Puo’ darsi che non hai caricato il pacchetto completo di excel.
Dove si blocca il codice?
Quale versione stai utilizzando?
Hai copincollato il codice in maniera corretta?
Alessandro, segui la procedura indicata, fai attenzione a copiare tutto e dovrebbe funzionarti. A me funzionava.
Altrimenti può essere un problema di versione di Excel, ma non saprei dire in questo caso…
per chi ha problemi con il codice, riscrivete gli apici e i segni meno.
Ciao