-
.
Ricordando le mie funzioni dedicate alla determinazione del dominio di rottura relativo a sezioni regolari sottoposte a presso-tensoflessione retta e ricordando che è pubblicata altrove (forse sul sito di LExatus) ho pensato di pubblicarla anche qui unitamente a qualche commento sul codice. Attached Image. -
.
Il file verSezSLU.xls è un foglio di calcolo in cui sono implementate diverse funzioni utente UDF finalizzate al calcolo del momento di rottura di una sezione avente una delle forme seguenti:
- sezione rettangolare
- sezione circolare
- sezione trapezia
- sezione a T
e sottoposte a presso o tenso flessione retta.
Il file contiene diversi fogli che costituiscono una interfaccia illustrativa dei vari parametri/dati/risultati coinvolti nella chiamata della UDF.
Le funzioni personalizzate definite sono sostanzialmente due per ogni tipo di sezione aventi la seguente forma:
VsezRettSLU01(B,H,c,AfInF, AfSup, AfParete, fcd, fyd,Ned, flag)
DominioRotturaRett(B,H,c,AfInF, AfSup, AfParete, fcd, fyd, x , flag)
per la sezione rettangolare
in cui il nome delle funzioni cambia in
VsezTrapSLU01(Binf, bsup ,H,c,AfInF, AfSup, AfParete, fcd, fyd,Ned, flag)
Punto_del_dominio_trap(Binf, Bsup, H, c, AfIn, AfSup, AfParete, fcd , fyd, x, flag)
per la sezione trapezia
VsezCircSLU01(D,c,nF, dF, Af_conc_tot, y_conc, fcd, fyd,Ned, flag)
Punto_del_dominio_circ(D, c, nF, dF, Af_conc_tot, y_conc, fcd , fyd, x, flag)
per la sezione circolare
VsezTSLU01(Binf, Hinf, Bsup ,Hsup ,c ,AfInF, AfSup, Afmed,fcd, fyd,Ned, flag)
Punto_del_dominio_T(Binf, Hinf, Bsup, Hsup, c, AfIn, AfSup, Afmed,fcd , fyd, x, flag)
per al sezione a T. -
.
La differenza tra le due funzioni consiste nel fatto che la prima conduce il calcolo della sezione per fissato valore di Ned, mentre la seconda conduce il calcolo di Mrd o di Nrd per fissata posizione dell'asse neutro.
Utilizzando la seconda funzione e facendo variare il parametro x che individua la posizione dell'asse neutro nell'intero range di variabilità (da 0 a 10) con opportuno passo di discretizzazione anche differenziato in funzione del campo in cui ci si trova, è possibile tracciare il dominio di rottura.
Il parametro x che individua la posizione dell'asse neutro è collegato al "numero del campo di rottura". Cosi il campo di rottura n° 1 è caratterizzato da 0<= x <=1 il campo 3 è caratterizzato da 2<= x <=3.
Per poter disegnare l'intero dominio di rottura quindi anche la parte relativa ai momenti negativi, la numerazione dei campi prosegue oltre il quinto arrivando a 10 secondo lo schema che segue:Attached Image. -
.
La pubblicazione del file:
col link che segue pubblico l'ultima versione del file:
VerSezSLU ver 7.03.02
Ribadisco che i fogli che sono contenuti nel file sono soltanto una interfaccia esplicativa all'uso delle varie funzioni contenute ma che in effetti la "roba preziosa" sono proprio le funzioni.
Queste possono essere esportate in qualsiasi vostro foglio di calcolo ed avere quindi a disposizione tutte le funzioni.
Potete comunque usare l'interfaccia proposta e comporre le vostre relazionid i calcolo attraverso la macchinetta fotografica con la quale catturerete solo quelle parti di schermo che vi interessa riportare in relazione.
Unica limitazione che pongo è quella di non ri-pubblicare il file mediante link diverso da quello che qui riporto. In sostanza il download del file deve avvenire sempre dal mio box.com
Nel caso in cui invece aggiungete/correggete/modificate il codice, è obbligatorio riportare sempre i riferimenti ai vari autori che hanno contribuito. Nello specifico vi ricordo che il codice non è interamente mio, vi sono un paio di funzioni che io ho prelevato da un codice il cui autore è l'ing. Cattivelli (docHollywood) ed il cui riferimento è riportato all'interno del codice stesso.
Naturalmente sarebbe gradita una comunicazione di modifica/miglioramento e la comunicazione del nuovo link di pubblicazione, ma non è obbligatoria.. -
.
La funzione che determina la deformazione di una generica fibra
Si puo' dire che è il nocciolo della questione. La funzione determina la deformazione della fibra per fissata posizione dell'asse neutro attraverso il parametro xCODICEFunction CalcEpsilon_rottura(H As Double, dmin As Double, _
di As Double, delta As Double, _
Optional epsSmax As Double = 0.0675, _
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
Dim x0 As Double ' variabile di appoggio
Select Case delta
Case 0 To 1
CalcEpsilon_rottura = epsSmax - (H - dmin - di) / (H - dmin) * (epsSmax * delta)
Case 1 To 2
CalcEpsilon_rottura = epsSmax - (H - dmin - di) / (H - dmin) * (epsSmax + epsCmax * (delta - 1))
Case 2 To 3
CalcEpsilon_rottura = -epsCmax + di / (H - dmin) * (epsCmax + epsSmax * (3 - delta))
Case 3 To 4
CalcEpsilon_rottura = epsCmax * (-1 + di * (4 - delta) / (H - dmin) + di * (delta - 3) / H)
Case 4 To 5
x0 = (epsCmax - epsCrif) * H / epsCmax
CalcEpsilon_rottura = -epsCrif + epsCrif * (5 - delta) * (di - x0) / (H - x0)
Case 5 To 6
CalcEpsilon_rottura = -(6 - delta) * epsCrif - (delta - 5) * epsCmax * di / H
Case 6 To 7
CalcEpsilon_rottura = -epsCmax * ((7 - delta) * dmin * (H - di) / (H * (H - dmin)) + (di - dmin) / (H - dmin))
Case 7 To 8
CalcEpsilon_rottura = -epsCmax * (di - dmin) / (H - dmin) + (delta - 7) * epsSmax * (H - di) / (H - dmin)
Case 8 To 9
CalcEpsilon_rottura = (epsSmax + (9 - delta) * epsCmax) * (H - di) / (H - dmin) - (9 - delta) * epsCmax
Case 9 To 10
CalcEpsilon_rottura = (10 - delta) * epsSmax * (H - di) / (H - dmin) + (delta - 9) * epsSmax
Case Else
CalcEpsilon_rottura = 0
End Select
End Function
Le formule contenute all'interno dei vari case, le ho determinate io con geometrica pazienza, fissando all'interno di ciascun campo una generica posizione dell'asse neutro. La posizione l'ho definita come aliquota di (x-campo) o (campo-x) a secondo i casi, di una deformazione nota e caratterizzante i limiti di campo.
Per esempio nel primo campo, ho fissato la posizione dell'asse neutro secondo lo schema postato a seguire e ricavandomi la deformazione della fibra posta a quota di attraverso semplici (ma non sempre è stato semplice) considerazioni geometriche.Attached Image. -
.
Conoscendo la deformazione in corrispondenza di una fibra, è possibile determinare la tensione corrispondente dalla legge costitutiva del materiale.
La funzione che segue determina la tensione nel cls assumendo diverse leggi costitutive definite dal parametro "forma".CODICEPublic 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. -
.
Nota la deformazione in corrispondenza di un tondino di armatura, la funzione che determina la tensione nel tondino è la seguente: CODICEPublic 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
Le tre funzioni fin qui esposte sono praticamente dell'ing. Cattivelli (noto nel newGroup di discussione di ingegneriacivile col nik DocHollywood). Io ho semplicemente rivisto, ricalcolando per conto mio le relazioni geometriche della prima funzione, ed ampliato i campi da 5 a 10 per avere l'intero dominio.. -
.
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. CODICEPublic 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.. -
.
Non penso di illustrare le altre funzioni, chi volesse puo' leggerle all'interno del codice e nel caso chiedere delucidazioni.
Ritengo invece più utile illustrare la maniera di utilizzo della funzioni all'interno di propri fogli. Cosa che farò coi prossimi post.. -
.
volevo proporre una mia idea per implementare nel foglio excel la possibilità di considerare più strati di armatura passando attraverso la definizione di un'area di ferro equivalente. preciso che la simbologia da me usata non coincide con quella del foglio excel, per cui i miei simboli hanno significato solo all'interno del mio post.
dalla figura sopra si hanno le seguenti relazioni:
(d1 - x)*tg(a) = e1
(d - x)*tg(a) = e2
dividendo membro a membro:
e1/e2 = (d1 - x)/(d - x)
e1 = e2*(d1 - x)/(d - x)
sarà anche:
sigma1 = E*e1
sigma2 = E*e2
quindi, agli effetti del momento:
M = As1*sigma1*(d1 - x) + As2*sigma2*(d - x) = E*[As1*((d1 - x)/(d - x))^2 + As2]*(d - x)*e2
pertanto, agli effetti del momento, nel caso di più strati di barre disposti a diverse altezze entro la sezione possiamo assumere un'area equivalente (tutta posta all'altezza di calcolo d riferita ad As2) pari a:
Aeq(M) = As1*[(d1 - x)/(d - x)]^2 + As2
ciò equivale a dire che, ai fini del momento, per trasportare alla quota di calcolo d un'area di ferro As1 posta ad altezza d1 occorre moltiplicarla per il fattore riduttivo [(d1 - x)/(d - x)]^2 sommandola poi all'area di ferro As2 già ivi presente.
ripetendo il tutto per lo sforzo normale:
N = As1*sigma1 + As2*sigma2 = E*[As1*(d1 - x)/(d - x) + As2]*e2
si trova un'area equivalente agli effetti dello sforzo normale pari a:
Aeq(N) = As1*(d1 - x)/(d - x) + As2
ciò equivale a dire che, ai fini dello sforzo normale, per trasportare alla quota di calcolo d un'area di ferro As1 posta ad altezza d1 occorre moltiplicarla per il fattore riduttivo (d1 - x)/(d - x) sommandola poi all'area di ferro As2 già ivi presente.
in definitiva, per non modificare troppo le funzioni già implementate nel foglio, si può pensare di aggiungere a monte una nuova funzione che abbia lo scopo di calcolare le aree equivalenti (ai fini del momento e dello sforzo normale) di una serie di barre poste a quote differenti, passando alle funzioni già implementate i valori ottenuti Aeq(M) ed Aeq(N).
nota: l'esempio proposto vale per una particolare configurazione deformata della sezione. bisognerà verificare (ma non credo, pur non avendolo fatto) che anche in altri campi di rottura le equivalenze delle aree di ferro seguano le formule da me postate sopra.. -
.
Come utilizzare le funzioni in un proprio foglio.
- aprire il nuovo foglio excel
- aprire il file verSezSLU
- entrare in ambiente progettazione (ALT F11 )
- individuare il modulo "Rottura" all'interno del progetto VersezSLU
- selezionare e trascinare il modulo "Rottura" all'interno del progetto relativo al nuovo foglio
Alla fine del trascinamento dovremmo avere copiato il codice contenuto nel modulo "rottura" dal progetto VerSezSLU al progetto del nuovo foglio.
A questo punto ritorniamo in ambiente excel e possiamo chiudere il file VerSezSLU. Nel nuovo file abbiamo a disposizione le funzioni per il tracciamento del dominio di rottura e per il calcolo agli SLU delle sezioni considerate.. -
.
Come usare direttamente le funzioni
Illustro come usare le funzioni direttamente in una cella del nuovo foglio che abbiamo creato ed in cui abbiamo trascinato il modulo di codice "rottura". Lo faccio con alcuni esempi.
Esempio n° 1
Intendiamo determinare il momento resistente che tende le fibre inferiori di una sezione rettangolare di dimensioni 30x60 cm
avente armatura inferiore costituita da 3Ф16, armatura superiore costituita da 3Ф12, copriferro 3.5 cm (inteso come distanza del baricentro del tondino dal bordo sezione).
Il cls sia un C20/25 e l'acciaio il solito B450C
Ricordando che la funzione richiede come unita di misura:
- dimensioni il mm
- aree ferri il mm²
- resistenze il MPa
abbiamo i seguenti dati di input:
B= 300 mm
H=600 mm
c=35 mm
Afinf = 3*201=603 mm²
Afsup = 3*113 = 339 mm²
fyd= 450/1.15 = 391.3 MPa
fcd = 0.85*20/1.5 = 11.33 MPa
Scegliamo la cella dove vogliamo sia collocato il risultato fornito dalla funzione, scegliamo "Inserisci funzione", selezioniamo dal dialogo che appare le funzioni definite dall'utente e quindi cerchiamo la funzione VsezRettSLU01. Selezioniamo la relativa voce e diamo l'ok.
Appare il tipico dialogo che ci propone l'input dei vari parametri richiesti dalla funzione stessa.
Riempiamo i diversi campi coi valori che abbiamo in testa... come nelle seguenti immagini
Resta da inserire l'ultimo parametro. Il parametro flag è proprio quel parametro che ci indica cosa vogliamo che la funzione ci restituisca.
Nel caso in esame volevamo il momento resistente per flessione semplice (Ned=0) che tende le fibre inferiori. Il flag in questo caso è il numero 30.
Digitiamo 30 nell'ultimo campo di input e diamo l'ok.
Nella cella adesso comparirà il valore 126909921.84126 che è proprio il momento resistente che abbiamo richiesto ma espresso in [N*mm].
dividendo il tutto per 1000 lo trasformiamo in [N*m] e dividendolo ancora per 1000 lo avremo in [kN*m] ottenendo il valore:
Mrd = 126.91 kN*m
Capite che è fondamentale avere sempre presente la tabella di corrispondenza tra flag e valore restituito.
se per esempio avessimo inserito il flag 37 avremmo ottenuto in risposta la curvatura φu a rottura.. -
.volevo proporre una mia idea per implementare nel foglio excel la possibilità di considerare più strati di armatura passando attraverso la definizione di un'area di ferro equivalente. preciso che la simbologia da me usata non coincide con quella del foglio excel, per cui i miei simboli hanno significato solo all'interno del mio post.
dalla figura sopra si hanno le seguenti relazioni:
(d1 - x)*tg(a) = e1
(d - x)*tg(a) = e2
dividendo membro a membro:
e1/e2 = (d1 - x)/(d - x)
e1 = e2*(d1 - x)/(d - x)
sarà anche:
sigma1 = E*e1
sigma2 = E*e2
...
Non credo sia sempre cosi. La legge costituiva non è lineare e puo' capitare che e1 si trovi nel tratto lineare ed e2 nel tratto plastico.. -
.
non ci sono dubbi, infatti ho scritto:CITAZIONE (reversi @ 21/1/2014, 14:53)nota: l'esempio proposto vale per una particolare configurazione deformata della sezione. bisognerà verificare (ma non credo, pur non avendolo fatto) che anche in altri campi di rottura le equivalenze delle aree di ferro seguano le formule da me postate sopra.
questo però non impedisce di scrivere, con la stessa filosofia, altre equivalenze valide negli altri campi di rottura.
credo che il metodo sia applicabile, in quanto il grosso problema della determinazione dell'asse neutro viene da te risolto al contrario: parti cioè dall'asse neutro e su di quello basi tutta la costruzione.
di conseguenza, poiché per ogni campo di rottura è nota la x (perché viene assunta tale), si potrà scrivere la formula di equivalenza per quel campo. nei campi in cui As2 è snervata l'equivalenza prevederà di portare As1 alla quota d con una sigma pari a fyd.. -
.
non ci sono dubbi, infatti ho scritto:CITAZIONE (reversi @ 21/1/2014, 14:53)nota: l'esempio proposto vale per una particolare configurazione deformata della sezione. bisognerà verificare (ma non credo, pur non avendolo fatto) che anche in altri campi di rottura le equivalenze delle aree di ferro seguano le formule da me postate sopra.
questo però non impedisce di scrivere, con la stessa filosofia, altre equivalenze valide negli altri campi di rottura.
credo che il metodo sia applicabile, in quanto il grosso problema della determinazione dell'asse neutro viene da te risolto al contrario: parti cioè dall'asse neutro e su di quello basi tutta la costruzione.
di conseguenza, poiché per ogni campo di rottura è nota la x (perché viene assunta tale), si potrà scrivere la formula di equivalenza per quel campo. nei campi in cui As2 è snervata l'equivalenza prevederà di portare As1 alla quota d con una sigma pari a fyd.
Non capisco come intenderesti procedere nel caso di presenza di un terzo livello di armatura posto ad una generica altezza.
Non puoi usare la mia funzione direttamente e per questo vorresti dargli in pasto una specie di area equivalente (che ti determnineresti a mano tu), ma per determinare quest'area avresti bisogno dell'asse neutro calcolato dalla mia funzione?
Aggiungo:
tieni conto che proprio nel caso di terzo livello a quota genericia sarebbe facilissimo apportare le modifiche scrivendo per esempio altra funzione tipo VsezRettSLU02(B,H,c,AfInF, AfSup, Afgen,Ygen, fcd, fyd,Ned, flag)
Aggiungo inoltre che l'asse neutro dipenderebbe anche dal valore di Ned che dai in input. La funzione non determina il momento resistente per flessione semplice ma per presso-tensoflessione..