Ingegneria Forum
Ingegneria Edile, Strutturale & Geotecnica => .:C#, Excel, VB e Programmazione:. => Topic started by: quattropassi on 27 April , 2011, 16:04:23 PM
-
Salute ad Afazio e a tutti gli utenti del citato foglio sviluppato a partire dalle librerie di DocHolly (Ing. Cattivelli).
La domanda riguarda il settaggio di default per epsSmax = 10/1000.
Vorrei sapere per quale ragione è stato scelto di conservare tale (antico) valore al posto del recente 67.5/1000.
Temo che tutto nasca dallo sviluppo madre di DocHolly che era impostato sui vecchi SLU ex DM96.
Possibile che sostituendo epsSmax As Double = 67.5/1000 succeda un disastro?
:mmm:
Public Function SigmaC(eps As Double, sigma_max As Double, forma As Integer, _
Optional Emodulus As Double = 0#, _
Optional epsSmax As Double = 0.01, _
Optional epsCmax As Double = 0.0035, _
Optional epsCrif As Double = 0.002) As Double
'Restituisce la tensione del calcestruzzo corrispondente alla deformazione epsilon data
'Parametri:
' eps = deformazione epsilon di cui calcolare la tensione sigma
' sigma_max = tensione massima (MPa)
' forma = parametro di forma del diagramma:
' forma = 1 => parabola-rettangolo EC2
' forma = 2 => perfettamente elastico lineare per compressione (il modulo di elasticità è definito da epsCmax)
' forma = 3 => elasto-plastico (il modulo di elasticità se non definito è calcolato da epsCrif)
' Emodulus = modulo di elasticità (necessario per forma pari a ?) (MPa)
' epsSmax = deformazione limite dell'acciaio
' epsCmax = deformazione limite del cls
' epsCrif = deformazione limite del cls per compressione semplice
If forma = 1 Then
Select Case eps
Case -epsCmax To -epsCrif
SigmaC = -sigma_max
Case -epsCrif To 0
SigmaC = -sigma_max * (1 - (1 - Abs(eps) / epsCrif) ^ 2) 'secondo EC2
Case Else
SigmaC = 0#
-
Salute ad Afazio e a tutti gli utenti del citato foglio sviluppato a partire dalle librerie di DocHolly (Ing. Cattivelli).
La domanda riguarda il settaggio di default per epsSmax = 10/1000.
Vorrei sapere per quale ragione è stato scelto di conservare tale (antico) valore al posto del recente 67.5/1000.
Temo che tutto nasca dallo sviluppo madre di DocHolly che era impostato sui vecchi SLU ex DM96.
Possibile che sostituendo epsSmax As Double = 67.5/1000 succeda un disastro?
:mmm:
Public Function SigmaC(eps As Double, sigma_max As Double, forma As Integer, _
Optional Emodulus As Double = 0#, _
Optional epsSmax As Double = 0.01, _
Optional epsCmax As Double = 0.0035, _
Optional epsCrif As Double = 0.002) As Double
'Restituisce la tensione del calcestruzzo corrispondente alla deformazione epsilon data
'Parametri:
' eps = deformazione epsilon di cui calcolare la tensione sigma
' sigma_max = tensione massima (MPa)
' forma = parametro di forma del diagramma:
' forma = 1 => parabola-rettangolo EC2
' forma = 2 => perfettamente elastico lineare per compressione (il modulo di elasticità è definito da epsCmax)
' forma = 3 => elasto-plastico (il modulo di elasticità se non definito è calcolato da epsCrif)
' Emodulus = modulo di elasticità (necessario per forma pari a ?) (MPa)
' epsSmax = deformazione limite dell'acciaio
' epsCmax = deformazione limite del cls
' epsCrif = deformazione limite del cls per compressione semplice
If forma = 1 Then
Select Case eps
Case -epsCmax To -epsCrif
SigmaC = -sigma_max
Case -epsCrif To 0
SigmaC = -sigma_max * (1 - (1 - Abs(eps) / epsCrif) ^ 2) 'secondo EC2
Case Else
SigmaC = 0#
Tu possiedi la versione 06 in cui non avevo ancora apportato la correzione al valore impostato da DocHolly.
In ogni caso, proprio con riferimento alla funzione che hai riportato, il valore di epsSmax NON SERVE ed infatti in una successiva mia revisione ho tolto quel parametro dalla funzione.
Public Function SigmaC(eps As Double, sigmaC_max As Double, forma As Integer, _
Optional Emodulus As Double = 0#, _
Optional epsCmax As Double = 0.0035, _
Optional epsCrif As Double = 0.002) As Double
'Restituisce la tensione del calcestruzzo corrispondente alla deformazione epsilon data
'Parametri:
' eps = deformazione epsilon di cui calcolare la tensione sigma
' sigma_max = tensione massima (MPa)
' forma = parametro di forma del diagramma:
' forma = 1 => parabola-rettangolo EC2
' forma = 2 => perfettamente elastico lineare per compressione (il modulo di elasticità è definito da epsCmax)
' forma = 3 => elasto-plastico (il modulo di elasticità se non definito è calcolato da epsCrif)
' Emodulus = modulo di elasticità (necessario per forma pari a ?) (MPa)
' epsSmax = deformazione limite dell'acciaio
' epsCmax = deformazione limite del cls
' epsCrif = deformazione limite del cls per compressione semplice
If forma = 1 Then
Select Case eps
Case -epsCmax To -epsCrif
SigmaC = -sigmaC_max
Case -epsCrif To 0
SigmaC = -sigmaC_max * (1 - (1 - Abs(eps) / epsCrif) ^ 2) 'secondo EC2
Case Else
SigmaC = 0#
End Select
Exit Function
End If
If forma = 2 Then
If eps < 0 Then
SigmaC = eps * (sigmaC_max / epsCmax)
Else
SigmaC = 0#
End If
Exit Function
End If
If forma = 3 Then
If (Emodulus = 0 And epsCrif <> 0) Then Emodulus = sigmaC_max / epsCrif
Select Case eps
Case -epsCmax To -epsCrif
SigmaC = -sigmaC_max
Case -epsCrif To 0
SigmaC = eps * Emodulus
Case Else
SigmaC = 0#
End Select
Exit Function
End If
SigmaC = 0#
End Function
Mentre nella omologa funzione che serve per determinare la tensione nell'acciaio ho impostato epsSmax a 67.5 millesimi
Public Function SigmaS(eps As Double, sigmaS_max As Double, forma As Integer, _
Optional Emodulus As Double = 210000#, _
Optional epsSmax As Double = 0.0675) As Double
'Restituisce la tensione del'acciaio corrispondente alla deformazione epsilon data
'Parametri:
' eps = deformazione epsilon di cui calcolare la tensione sigma
' sigmaS_max = tensione massima (MPa)
' forma = parametro di forma del diagramma:
' forma = 1 => elasto-plastico
' forma = 2 => perfettamente elastico lineare (il modulo di elasticità è definito da epsSmax)
' forma = 3 => elasto-plastico incrudente (da sviluppare!)
' Emodulus = modulo di elasticità (necessario per forma pari a 1) (MPa)
' epsSmax = deformazione limite dell'acciaio
' epsCmax = deformazione limite del cls
' epsCrif = deformazione limite del cls per compressione semplice
Dim epsSrif As Double
If Emodulus <> 0 Then
epsSrif = sigmaS_max / Emodulus
Else
epsSrif = 0#
End If
If forma = 1 Then
Select Case eps
Case -epsSmax To -epsSrif
SigmaS = -sigmaS_max
Case -epsSrif To epsSrif
SigmaS = eps * Emodulus
Case epsSrif To epsSmax
SigmaS = sigmaS_max
Case Else
SigmaS = 0#
End Select
Exit Function
End If
If forma = 2 Then
SigmaS = eps * (sigmaS_max / epsSmax)
Exit Function
End If
SigmaS = 0#
End Function
-
:ciau:
Grazie.
PS.
Mi sembra che nel resto del codice adoperi sempre il flag per forma = 1 (parabola rettangolo)
Giusto?
-
:ciau:
Grazie.
PS.
Mi sembra che nel resto del codice adoperi sempre il flag per forma = 1 (parabola rettangolo)
Giusto?
giusto
-
:mmm:
però...
Private Function VariazioneEpsilon(h As Double, dmin As Double, _
di As Double, delta As Double, _
Optional epsSmax As Double = 0.01, _
Optional epsCmax As Double = 0.0035, _
Optional epsCrif As Double = 0.002) As Double
'Restituisce la deformazione limite per il calcolo del dominio MN funzione dei parametri immessi
' Attenzione nell'uso: valori positivi di epsilon per il cls non hanno alcun senso! Controllare la funzione SigmaC
'Parametri:
' h=altezza sezione (mm)
' dmin = copriferro superiore o inferiore (mm)
' di = distanza della fibra di cui si calcola epsilon dall'estremità superiore della sezione (mm)
' delta = coefficiente di campo (da 0 a 5 per i momenti positivi che tendono le fibre inferiori,
' da 5 a 10 per i momenti negativi che tendono le fibre superiori)
' epsSmax = deformazione limite dell'acciaio
' epsCmax = deformazione limite del cls
' epsCrif = deformazione limite del cls per compressione semplice
bisognerà che rimpiazzi dove serve
Optional epsSmax As Double = 0.01, _
con
Optional epsSmax As Double = 0.0675, _
No?
-
:mmm:
però...
Private Function VariazioneEpsilon(h As Double, dmin As Double, _
di As Double, delta As Double, _
Optional epsSmax As Double = 0.01, _
Optional epsCmax As Double = 0.0035, _
Optional epsCrif As Double = 0.002) As Double
'Restituisce la deformazione limite per il calcolo del dominio MN funzione dei parametri immessi
' Attenzione nell'uso: valori positivi di epsilon per il cls non hanno alcun senso! Controllare la funzione SigmaC
'Parametri:
' h=altezza sezione (mm)
' dmin = copriferro superiore o inferiore (mm)
' di = distanza della fibra di cui si calcola epsilon dall'estremità superiore della sezione (mm)
' delta = coefficiente di campo (da 0 a 5 per i momenti positivi che tendono le fibre inferiori,
' da 5 a 10 per i momenti negativi che tendono le fibre superiori)
' epsSmax = deformazione limite dell'acciaio
' epsCmax = deformazione limite del cls
' epsCrif = deformazione limite del cls per compressione semplice
bisognerà che rimpiazzi dove serve
Optional epsSmax As Double = 0.01, _
con
Optional epsSmax As Double = 0.0675, _
No?
Forse è meglio che ti passi l'ultima versione?
-
Tu possiedi la versione 06 in cui non avevo ancora apportato la correzione al valore impostato da DocHolly.
In ogni caso, proprio con riferimento alla funzione che hai riportato, il valore di epsSmax NON SERVE ed infatti in una successiva mia revisione ho tolto quel parametro dalla funzione.
Public Function SigmaC(eps As Double, sigmaC_max As Double, forma As Integer, _
Optional Emodulus As Double = 0#, _
Optional epsCmax As Double = 0.0035, _
Optional epsCrif As Double = 0.002) As Double
'Restituisce la tensione del calcestruzzo corrispondente alla deformazione epsilon data
'Parametri:
' eps = deformazione epsilon di cui calcolare la tensione sigma
' sigma_max = tensione massima (MPa)
' forma = parametro di forma del diagramma:
' forma = 1 => parabola-rettangolo EC2
' forma = 2 => perfettamente elastico lineare per compressione (il modulo di elasticità è definito da epsCmax)
' forma = 3 => elasto-plastico (il modulo di elasticità se non definito è calcolato da epsCrif)
' Emodulus = modulo di elasticità (necessario per forma pari a ?) (MPa)
' epsSmax = deformazione limite dell'acciaio
' epsCmax = deformazione limite del cls
' epsCrif = deformazione limite del cls per compressione semplice
If forma = 1 Then
Select Case eps
Case -epsCmax To -epsCrif
SigmaC = -sigmaC_max
Case -epsCrif To 0
SigmaC = -sigmaC_max * (1 - (1 - Abs(eps) / epsCrif) ^ 2) 'secondo EC2
Case Else
SigmaC = 0#
End Select
Exit Function
End If
If forma = 2 Then
If eps < 0 Then
SigmaC = eps * (sigmaC_max / epsCmax)
Else
SigmaC = 0#
End If
Exit Function
End If
If forma = 3 Then
If (Emodulus = 0 And epsCrif <> 0) Then Emodulus = sigmaC_max / epsCrif
Select Case eps
Case -epsCmax To -epsCrif
SigmaC = -sigmaC_max
Case -epsCrif To 0
SigmaC = eps * Emodulus
Case Else
SigmaC = 0#
End Select
Exit Function
End If
SigmaC = 0#
End Function
Mentre nella omologa funzione che serve per determinare la tensione nell'acciaio ho impostato epsSmax a 67.5 millesimi
Public Function SigmaS(eps As Double, sigmaS_max As Double, forma As Integer, _
Optional Emodulus As Double = 210000#, _
Optional epsSmax As Double = 0.0675) As Double
'Restituisce la tensione del'acciaio corrispondente alla deformazione epsilon data
'Parametri:
' eps = deformazione epsilon di cui calcolare la tensione sigma
' sigmaS_max = tensione massima (MPa)
' forma = parametro di forma del diagramma:
' forma = 1 => elasto-plastico
' forma = 2 => perfettamente elastico lineare (il modulo di elasticità è definito da epsSmax)
' forma = 3 => elasto-plastico incrudente (da sviluppare!)
' Emodulus = modulo di elasticità (necessario per forma pari a 1) (MPa)
' epsSmax = deformazione limite dell'acciaio
' epsCmax = deformazione limite del cls
' epsCrif = deformazione limite del cls per compressione semplice
Dim epsSrif As Double
If Emodulus <> 0 Then
epsSrif = sigmaS_max / Emodulus
Else
epsSrif = 0#
End If
If forma = 1 Then
Select Case eps
Case -epsSmax To -epsSrif
SigmaS = -sigmaS_max
Case -epsSrif To epsSrif
SigmaS = eps * Emodulus
Case epsSrif To epsSmax
SigmaS = sigmaS_max
Case Else
SigmaS = 0#
End Select
Exit Function
End If
If forma = 2 Then
SigmaS = eps * (sigmaS_max / epsSmax)
Exit Function
End If
SigmaS = 0#
End Function
Ho notato che hai sostituito il sigma_max, rispettivamente in sigmaC_max e SigmaS_max.
Cambia qualcosa?
-
Ho notato che hai sostituito il sigma_max, rispettivamente in sigmaC_max e SigmaS_max.
Cambia qualcosa?
No
-
Forse è meglio che ti passi l'ultima versione?
Io ho la versione 01 che hai postato su ingforum.
Sarebbe possibile rendere pubblica anche questa versione più recente?
Credo che faresti cosa gradita a tutti.
Willy
-
che io sappia esiste anche la versione 7, visto che ultimamente la politica di Afazio è quella di non dare il file bensì il link al suo box.net non lo posterò.
-
Io ho la versione 01 che hai postato su ingforum.
Sarebbe possibile rendere pubblica anche questa versione più recente?
Credo che faresti cosa gradita a tutti.
Willy
Ok Willy. Dammi qualche minuto e carico l'ultimissima versione che e' la 7.03.
A dopo
-
Ok Willy. Dammi qualche minuto e carico l'ultimissima versione che e' la 7.03.
A dopo
http://www.box.net/shared/u9py6x1nfx (http://www.box.net/shared/u9py6x1nfx)
-
Grazie. :ook:
-
nella versione 8 sarebbe interessante ci fosse anche il momento resistente in direzione trasversale.
-
nella versione 8 sarebbe interessante ci fosse anche il momento resistente in direzione trasversale.
Cioè, cosa intendi?
Non è sufficiente ruotare la sezione?
-
nella versione 8 sarebbe interessante ci fosse anche il momento resistente in direzione trasversale.
Come programma in excel potrei anche farlo ma certamente non come funzione da poter richiamare in qualsiasi altro foglio dedicato ad altro. Infatti, volendo comporre una funzione che determina pure il momento resistente (e tutte le altre grandezze collegate, come per esempio la posizione dell'asse neutro, il campo di rottura, le deformazioni dei materiali a rottura ecc ecc) nell'altra direzione dovrei duplicare il numero dei "flag". Gia cosi ho una cinquantina di flag, vedi la confusione se i flag diventano cento.
-
l'obiettivo è ovviamente rivolto alla gestione della 4.1.10.
-
l'obiettivo è ovviamente rivolto alla gestione della 4.1.10.
Mi annoia andare a leggere la normativa. Che dice sto quattro uno dieci?
-
che per le sezioni deviate la verifica la si conduce con un bel
(Mex/Mrx)^alpha+(Mey/Mry)^alpha<=1
con alpha giustificato o comunque=1.
-
che per le sezioni deviate la verifica la si conduce con un bel
(Mex/Mrx)^alpha+(Mey/Mry)^alpha<=1
con alpha giustificato o comunque=1.
OK
Ruoti la sezione e determini l'altro momento resistente. No?
Non vedo la necessità di raddoppiare le linee di codice, perchè di questo si tratta.
-
Rimango sempre molto colpito e ho grande ammirazione per i tuoi eccellenti lavori.
Visto che sul post dove condividi VerSezSLU0731.xls hai già 5 ringraziamenti la mia stellina te la metto sul “mi annoia andarmi a leggere la normativa” :rotfl:
Premesso che di Vba ne capisco poco e che quindi potrei fare una domanda banale mi chiedevo: relativamente alla parte di codice seguente
Mentre nella omologa funzione che serve per determinare la tensione nell'acciaio ho impostato epsSmax a 67.5 millesimi
Public Function SigmaS(eps As Double, sigmaS_max As Double, forma As Integer, _
Optional Emodulus As Double = 210000#, _
Optional epsSmax As Double = 0.0675) As Double
'Restituisce la tensione del'acciaio corrispondente alla deformazione epsilon data
'Parametri:
' eps = deformazione epsilon di cui calcolare la tensione sigma
' sigmaS_max = tensione massima (MPa)
' forma = parametro di forma del diagramma:
' forma = 1 => elasto-plastico
' forma = 2 => perfettamente elastico lineare (il modulo di elasticità è definito da epsSmax)
' forma = 3 => elasto-plastico incrudente (da sviluppare!)
' Emodulus = modulo di elasticità (necessario per forma pari a 1) (MPa)
' epsSmax = deformazione limite dell'acciaio
' epsCmax = deformazione limite del cls
' epsCrif = deformazione limite del cls per compressione semplice
Dim epsSrif As Double
If Emodulus <> 0 Then
epsSrif = sigmaS_max / Emodulus
Else
epsSrif = 0#
End If
If forma = 1 Then
Select Case eps
Case -epsSmax To -epsSrif
SigmaS = -sigmaS_max
Case -epsSrif To epsSrif
SigmaS = eps * Emodulus
Case epsSrif To epsSmax
SigmaS = sigmaS_max
Case Else
SigmaS = 0#
End Select
Exit Function
End If
If forma = 2 Then
SigmaS = eps * (sigmaS_max / epsSmax)
Exit Function
End If
SigmaS = 0#
End Function
a cosa serve definire la forma 2 => perfettamente elastico lineare con modulo di elasticità = (sigmaS_max / epsSmax) e dove epsSmax=6,75%?
-
Rimango sempre molto colpito e ho grande ammirazione per i tuoi eccellenti lavori.
Visto che sul post dove condividi VerSezSLU0731.xls hai già 5 ringraziamenti la mia stellina te la metto sul mi annoia andarmi a leggere la normativa :rotfl:
Premesso che di Vba ne capisco poco e che quindi potrei fare una domanda banale mi chiedevo: relativamente alla parte di codice seguente
a cosa serve definire la forma 2 => perfettamente elastico lineare con modulo di elasticità = (sigmaS_max / epsSmax) e dove epsSmax=6,75%?
La funzione a cui ti riferisci e' quella che ho preso dal lavoro dell'ing. Cattivelli con la sola modifica dell'allungamento a rottura dell'acciaio pari a 67.5/1000. Cosa avesse intenzione di fare non ne ho proprio idea dato che penso non l'abbia usata nemmeno lui nel suo foglio CMN.xls.
-
La funzione a cui ti riferisci e' quella che ho preso dal lavoro dell'ing. Cattivelli con la sola modifica dell'allungamento a rottura dell'acciaio pari a 67.5/1000. Cosa avesse intenzione di fare non ne ho proprio idea dato che penso non l'abbia usata nemmeno lui nel suo foglio CMN.xls.
Correggo:
ho proprio adesso controllato il lavoro dell'ing Cattivelli. In effetti nel foglio c'è altra linguetta denominata "tensioni ammissibili" ed in questo foglio conduce le verifiche alle tensioni ammissibili ove , mi pare, abbia usato la forma 2 per l'acciaio.
Cerca in rete il foglio CMN.xls