Parte 14Riprendo un discorso relativo ai diagrammi costitutivi dei materiali. Di essi avevo parlato nella parte 8.
Relativamente all'acciaio avevo implementato uno dei due diagrammi previsti dalla normativa. Il semplice “elasto-plastico indefinito”.
In effetti la norma prevede si possa adoperare anche un diagramma “elasto plastico con incrudimento”.
Avevo imbastito una piccola funzione che prevedeva sostanzialmente in ingresso la deformazione
def e che, piuttosto che restituire la tensione, restituiva un valore
alfa compreso tra 0 ed 1. Valore che poi nella funzione chiamante, moltiplicato per
fyd dava l'effettiva tensione agente nella singola barra deformata di
def.
L'aver 'confinato' in una specifica funzione questa operazione torna oggi a mio favore, perchè basta sostituire la funzione iniziale con un'altra per poter utilizzare in teoria tutti i legami costitutivi che si vogliono, anche i più bislacchi, senza modificare, se non per dettagli, gli algoritmi di calcolo più 'pesanti' e che stanno più in alto di tale funzione elementare.
La funzione iniziale era la seguente:
float elast_plast_indef(float); /* Prototipo della funzione */
float elast_plast_indef(float def)
{
float alfa;
if (def>=fyd/Ea) alfa=1.0;
else alfa=def*fyd/Ea;
return(alfa);
}
Dove appunto, superato il valore deformativo di
fyd/Ea la funzione restituiva sempre e comunque il valore alfa=1.0, indipendentemente dalla deformazione in ingresso.
Se invece voglio implementare il diagramma come in figura rubata dalla normativa:
Devo aggiungere la variabile k tra quelle gestite dalla funzione.
Vediamo meglio cosa dice la normativa in proposito.
Tale variabile è denominata “fattore di incrudimento” e definita nella stessa norma con
k=(ft/fy)k ovvero valore caratteristico del rapporto tra i valori della tensione di rottura e di snervamento di un generico acciaio.
In sintesi, avendo a disposizione n provini, e determinati per ognuno, la tensione a rottura e la tensione di snervamento, il valore del rapporto
ft/fy superato dal 5% dei provini sarà il valore da assegnare a k per quella specifica partita di acciaio.
Dico “per quella specifica partita di acciaio” perchè in effetti la norma non assegna a questa variabile un valore univoco. Al capitolo 11 tra i valori di controllo che consento ad un acciaio di potersi fregiare della sigla B450C si indica solamente che tale rapporto deve essere compreso tra 1.15 e 1.35
Se facciamo il semplice rapporto tra i valori nominali delle tensioni di rottura e snervamento di un acciaio B450C otteniamo 540/450=1.20, numeretto suggerito da parecchi autori.
Guardando bene il diagramma in questione però ci accorgiamo che introdurre la variabile k è necessario, ma non sufficiente. Infatti la parte post snervamento si 'impennerà' da fyd fino a
k*fyd nel tratto che va da una deformazione
epsyd=fyd/Ea fino a
epsud.
epsud per la norma è pari al 90% della deformazione a rottura nominale. Per in B450C tale valore minimo dove essere del 7.5% e pertanto
epsud=0.9*7.5=6.75%=0.0675In definitiva, per semplici similitudini di triangoli, detta def la deformazione, il valore alfa che la nuova funzione deve restituire sarà:
se def<epsyd: alfa=def*fyd/Ea
se def>=epsyd: alfa=1+(k-1)*(def-fyd/Ea)/(epsud-fyd/Ea)Facciamo diventare tutto funzione:
float elast_plast_indef(float def)
{
float alfa;
if (def>=fyd/Ea) alfa=1.0+(k_incr-1.0)*(def-fyd/Ea)/(epsud-fyd/Ea);
else alfa=def*fyd/Ea;
return(alfa);
}
Dove si è presupposto che
fyd,
Ea,
k_incr ed
epsud siano delle variabili globali.
Come si vede tutto il resto delle altre funzioni non ha necessità di nessuna variazione.
Ovviamente all'interno del programma si dovrà consentire di gestire le variabili
k_incr ed
epsud, per assegnarle, modificarle, ecc.
Questa funzione così modificata consente di di poter gestire entrambi i legami costitutivi previsti dalla norma. Risulta infatti banale verificare che assegnando a
k_incr il valore 1.0 dal diagramma elasto-plastico con incrudimento si ricade nell'elasto-plastico indefinito.
Per adesso contentatevi di questo.