|
|
Ecco adesso la funzione che per fissato valore del parametro x (posizione dell'asse neutro), determina il Mrd ed Nrd (ciè il punto sul dominio di rottura.
CODICE Public Function DominioRotturaRett(B As Double, H As Double, c As Double, _ AfInF As Double, AfSup As Double, AfParete As Double, _ fCd As Double, fyd As Double, _ x As Double, flag As Integer) ' Punto_del_dominio si appoggia alle funzioni ' CalcEpsilon_rottura, SigmaC, SigmaS ' messe a disposizione da "ing. D.Cattivelli (docholly@infinito.it)" nel suo file CNM.xls ' la funzione calcola lo sforzo normale e il momento flettente ' caratterizzanti un punto del dominio di rottura. Il punto e' definito ' attraverso il parametro x, variabile tra 0 e 5 (per flessione che tende le fibre inferiori) ' e da 5 a 10 (per flessione che tende le fibre superiori), che rappresenta ' la posizione all'interno del campo di rottura ' ' input: ' dimensioni in [mm], aree di ferro in [mm²], resistenze in [MPa] ' La funzione restituisce valori diversi in base al parametro flag ' flag = 1, restituisce Nrd in [N] ' flag = 2, restituisce Mrd in [N*mm]
Dim diVisioni As Integer ' numero di strisce in cui si suddivide la sezione Dim count As Integer
Dim yg As Double 'distanza del baricentro dal bordo superiore Dim y As Double ' distanza del punto generico rispetto al bordo superiore Dim z As Double ' variabile di appoggio per le deformazioni Dim w As Double ' variabile di appoggio per le tensioni
Dim N_dominio As Double Dim M_dominio As Double yg = H / 2 diVisioni = 100 ' variare questa variabile per aumentare o diminuire la precisione di calcolo
' parte relativa al calcestruzzo For count = 1 To diVisioni y = (count - 1 / 2) * H / diVisioni z = CalcEpsilon_rottura(H, c, y, x) w = SigmaC(z, fCd, 1) N_dominio = N_dominio + w * B * H / diVisioni M_dominio = M_dominio + w * B * H / diVisioni * (y - yg) Next
' acciaio superiore y = c z = CalcEpsilon_rottura(H, c, y, x) w = SigmaS(z, fyd, 1) N_dominio = N_dominio + w * AfSup M_dominio = M_dominio + w * AfSup * (y - yg) ' acciaio inferiore y = H - c z = CalcEpsilon_rottura(H, c, y, x) w = SigmaS(z, fyd, 1) N_dominio = N_dominio + w * AfInF M_dominio = M_dominio + w * AfInF * (y - yg)
' ferro di parete y = H / 2 z = CalcEpsilon_rottura(H, c, y, x) w = SigmaS(z, fyd, 1) N_dominio = N_dominio + w * AfParete M_dominio = M_dominio + w * AfParete * (y - yg)
Select Case flag Case 1 DominioRotturaRett = N_dominio Case 2 DominioRotturaRett = M_dominio End Select
End Function
La funzione è abbastanza commentata ed è di semplice lettura.
L'insieme delle quattro funzioni fin qui presentate è sufficiente allo scopo del tracciamento del dominio di rottura. Basta creare una tabella in cui nella prima colonna si fa variare la x a passo opportuno da 0 a 10, una seconda colonna in cui si richiama la funzione testè scritta calcolata per il valore x della prima colonna e per flag = 1, ed una terza colonna con la stessa funzione ma per flag=2. Naturalmente la funzione dovrà essere completata coi restanti dati di sezione, armatura e resistenza dei materiali.
Diagrammando le due colonne che rappresentano Nrd ed Mrd si ottiene l'intero dominio di rottura.
Notare il richiamo alla funzione che calcola la deformazione.
Per esempio nella parte relativa al cls:
- la sezione viene divisa in un numero fissato di strisce uguali - per ciascuna striscia viene determinata l’area - per ciascuna striscia viene determinata la sua posizione rispetto al bordo compresso - per ciascuna striscia ed in funzione della sua posizione viene determinata la deformazione - nota la deformazione viene determinato il valore della tenzione - nota la tensione si determina il contributo della striscia allo sforzo normale totale ed al momento flettente totale
Stessa cosa avviene per la parte relativa alle armature.
Pertanto chi volesse estendere questa funzione a forme di sezioni diverse da quella rettangolare, non deve far altro che agire proprio in queste due parti di codici. E' proprio in questa funzione che, volendo, si può introdurre un maggior numero di livelli intermedi di armatura , ma tenere presente che poi necessita modificare l'intestazione della funzione in modo da poter passare alla stessa i dati relativi ai nuovi livelli di armatura.
|
|