-
.
Concludo l'illustrazione del foglio pubblicato e delle funzioni in esso contenute segnalando che oltre alle 8 funzioni che ho già elencato, il foglio contiene altre funzioni come per esempio:
Funzione Confinamento(B , H , c , n_St_chiuse , n_tiRanti , diam_Staffe , passo_Staffe , fCk , fYk , flag )
Il format di input di questa funzione lo si può trovare nel foglio denominato "clsConf"
Inoltre è presente un modulo dedicato alla determinazione del momento di primo snervamento e dominio di snervamento per sezione rettangolare. Segnalo però che a differenza delle funzioni illustrate con gli esempi, le funzioni dedicate al momento di prima plasticizzazione non sono state testate e quindi non ho idea se forniscono risultati corretti in qualsiasi condizione. Le mie intenzioni erano quelle di verificare la correttezza dei risultati e poi estendere le funzioni anche alle altre sezioni e successivamente condurre anche il calcolo di una sezione considerando anche il confinamento, ma impegni mi hanno allontanato dal progetto tanto che adesso non ricordo nemmeno cosa ho fatto nella scrittura di queste ulteriori funzioni.. -
.
Aggiungo ulteriore esempio su come usare le funzioni per determinarsi la duttilità in curvatura per cls non confinato.
I risultati sono da prendere con le molle dato che sarà utilizzata la funzione che determina il momento di prima plasticizzazione che non ho completamente testato.
Esempio 8
Data la sezione rettangolare di dimensioni
B= 300 mm
H= 500 mm
c = 40 mm
con armature:
armatura inferiore: Afinf= 1272 mm²
armatura superiore: Afsup=763 mm²
armatura di parete: Afpar= 509 mm²
in cls C25/30 ed acciaio B450C
soggetta ad uno sforzo normale Ned= -100 kN
determinare la duttilita in curvatura
Apriamo il solito foglio dove abbiamo trascinato il modulo "rottura" e se prima non lo abbiamo salvato, ne apriamo uno nuovo e trasciniamoci dentro il modulo rottura.
Scegliamo una cella qualsiasi ed inseriamo la funzione UDF VersezRettSLU01()
Appare il solito dialogo che ci guida nell'inserimento degli argomenti e riempiamo i campi qui riportati coi dati del problema
Il flag che ci interessa è il 57 che ci fornisce la curvatura per pressoflessione positiva
Adesso dovremmo importare in questo nostro file di lavoro anche il modulo "snervamento" dove sono raccolte le funzioni relative alla determinazione del momento di primo snervameno per sezioni rettangolari.
Aprimo quini il file VerSezSLU e, come spiegato inizialmente, entriamo in modalita programmazione (ALT F11), individuiamo il modulo "Snervamento" dal progetto di VersezSLU e trasciniamolo nel progettyo del nostro file di lavoro
Torniamo in ambiente excel e possiamo chiudere il file VerSezSLU07032.xls Abbiamo trasferito le funzioni che ci servono in maniera semplicissima.
Adesso scegliamo altra cella ed inseriamo la funzione utente =VsezRett_snerv()
Appare solito dialogo, lo riempiamo coi dati richiesti (sono praticamente uguali a quelli inseriti precedentemente.)
Confermati i dati, sul foglio avremo i seguenti due valori:
φu= 2.416*10-5 curvatura a rottura
φy= 7.126*10-6 curvatura di primo snervamento
La duttilità di curvatura risulta:
μφ = φu / φy = 2.416/7.126*10 = 3.39
Edited by afazio - 24/1/2014, 10:41. -
.Io ritengo che questo ultimo esempio possa far capire a Reversi che quanto lui si propone di fare, seppur percorribile nella teoria, si scontra con la pratica.
E la pratica sono le funzioni di afazio, che vanno per forza modificate qualora si volessero considerare le armatura a strati.
Volerle considerare come vuole fare Reversi porta solamente a complicazioni su complicazioni.
Infatti:
Per ogni singolo valore di Nd nella tabella dovrei far visualizzare non soltanto il valore del momento di rottura, ma anche il valore di X (asse neutro). Da questo asse neutro posso ricavare con le formulazioni date da Reversi (ma non esplicitate del tutto se non fino a quando le armature rimangano in ambito lineare) le armature 'equivalenti'. Ma queste sono 2, una armatura "sforzo normale", una armatura "momento flettente".
Quindi dovrei aggiungere anche ulteriori colonne, magari nascoste, in cui determinare le armature equivalenti da dare in pasto alle funzioni di afazio.
Ma..............l'armatura equivalente a questo punto, determinata con un certo valore di x (asse neutro), a sua volta, fa variare x stesso.
Un procedimento iterativo ordunque si appalesa.
Il gatto che si morde la coda. No, no e no.
premesso che ho lasciato cadere la mia proposta perché ho visto che non ha raccolto interesse e premesso anche che non faccio mai polemiche (quindi chiedo che questo post non venga inteso come tale) voglio cercare di esprimere più chiaramente il mio punto di vista.
la funzione di afazio lavora assumendo di volta in volta un valore noto per l'asse neutro.
in sostanza, facendo riferimento all'immagine allegata (in cui ho nascosto alcune colonne per avere un'immagine ridotta della schermata), si chiede: se l'asse neutro vale x = 0,125 quanto vale Nrd e quanto Mrd?
per rispondere (oltre a tutte le altre variabili che le servono), la funzione prende allora il valore di x dalla cella S10 e il valore dell'armatura inferiore dalla cella E5 e scrive il risultato nella cella T10. la funzione ripete lo stesso discorso per il momento e scrive il risultato nella cella U10.
se io ho più strati di barre, supponiamo 2, non ho alcun motivo di determinare alcuna posizione dell'asse neutro per poter operare con le aree di ferro equivalenti perché quello che devo fare è, a mia volta, chiedermi: se l'asse neutro vale x = 0,125 quanto vale l'area equivalente ai fini dello sforzo normale? scriverò questo valore in una cella libera, ad esempio, nella cella J5.
dopodiché passerò alla funzione nella cella T10 non più l'area di ferro che leggo nella cella E5 ma quella che leggo nella cella J5.
se trovo l'area equivalente ai fini del momento e la scrivo nella cella J6, sarà questo valore che passerò alla funzione in U10.
tutto qui, non c'è nessun cane che si morde la coda.. -
.Io ritengo che questo ultimo esempio possa far capire a Reversi che quanto lui si propone di fare, seppur percorribile nella teoria, si scontra con la pratica.
E la pratica sono le funzioni di afazio, che vanno per forza modificate qualora si volessero considerare le armatura a strati.
Volerle considerare come vuole fare Reversi porta solamente a complicazioni su complicazioni.
Infatti:
Per ogni singolo valore di Nd nella tabella dovrei far visualizzare non soltanto il valore del momento di rottura, ma anche il valore di X (asse neutro). Da questo asse neutro posso ricavare con le formulazioni date da Reversi (ma non esplicitate del tutto se non fino a quando le armature rimangano in ambito lineare) le armature 'equivalenti'. Ma queste sono 2, una armatura "sforzo normale", una armatura "momento flettente".
Quindi dovrei aggiungere anche ulteriori colonne, magari nascoste, in cui determinare le armature equivalenti da dare in pasto alle funzioni di afazio.
Ma..............l'armatura equivalente a questo punto, determinata con un certo valore di x (asse neutro), a sua volta, fa variare x stesso.
Un procedimento iterativo ordunque si appalesa.
Il gatto che si morde la coda. No, no e no.
premesso che ho lasciato cadere la mia proposta perché ho visto che non ha raccolto interesse e premesso anche che non faccio mai polemiche (quindi chiedo che questo post non venga inteso come tale) voglio cercare di esprimere più chiaramente il mio punto di vista.
la funzione di afazio lavora assumendo di volta in volta un valore noto per l'asse neutro.
in sostanza, facendo riferimento all'immagine allegata (in cui ho nascosto alcune colonne per avere un'immagine ridotta della schermata), si chiede: se l'asse neutro vale x = 0,125 quanto vale Nrd e quanto Mrd?
per rispondere (oltre a tutte le altre variabili che le servono), la funzione prende allora il valore di x dalla cella S10 e il valore dell'armatura inferiore dalla cella E5 e scrive il risultato nella cella T10. la funzione ripete lo stesso discorso per il momento e scrive il risultato nella cella U10.
se io ho più strati di barre, supponiamo 2, non ho alcun motivo di determinare alcuna posizione dell'asse neutro per poter operare con le aree di ferro equivalenti perché quello che devo fare è, a mia volta, chiedermi: se l'asse neutro vale x = 0,125 quanto vale l'area equivalente ai fini dello sforzo normale? scriverò questo valore in una cella libera, ad esempio, nella cella J5.
dopodiché passerò alla funzione nella cella T10 non più l'area di ferro che leggo nella cella E5 ma quella che leggo nella cella J5.
se trovo l'area equivalente ai fini del momento e la scrivo nella cella J6, sarà questo valore che passerò alla funzione in U10.
tutto qui, non c'è nessun cane che si morde la coda.
Quanto dici di voler fare lo si potrebbe anche fare (a costo di ulteriori calcoli per cui forse una sola cella non sarebbe sufficiente dovendo procedere al calcolo dell'armatura equivalente per un numero di casi certamente superiore a tre (penso almeno dieci casi uno per ognuno dei deici campi e poi forse distinguere all'interno del campo se l'armatura trovasi nel tratto elasticvo o in quello plastico), in ogni caso questo sarebbe applicabile solo ai fini del tracciamento del dominio mentre non lo è sicuramente ai fini del calcolo di Mrd per fissato Ned.. -
.Quanto dici di voler fare lo si potrebbe anche fare (a costo di ulteriori calcoli per cui forse una sola cella non sarebbe sufficiente dovendo procedere al calcolo dell'armatura equivalente per un numero di casi certamente superiore a tre (penso almeno dieci casi uno per ognuno dei deici campi ...)
infatti io pensavo a 2 nuove colonne inserite di fianco alla colonna dell'asse x e, per ogni asse x dato in pasto, avere l'area equivalente. altrove si metterà invece l'area del primo strato e rispettiva posizione e l'area del secondo strato e rispettiva posizione.
come ho già scritto, ritengo che le formule di trasformazione delle aree siano al più 2 o 3 (penso a entrambi gli strati in campo elastico, uno in campo elastico e uno plastico, entrambi in campo plastico - nell'ultimo caso l'area equivalente è semplicemente la somma delle aree) da mettere in maniera appropriata di fianco alla x.... in ogni caso questo sarebbe applicabile solo ai fini del tracciamento del dominio mentre non lo è sicuramente ai fini del calcolo di Mrd per fissato Ned.
non ho riflettuto sul caso in cui Ned sia fissato. cosa cambierebbe?. -
.Quanto dici di voler fare lo si potrebbe anche fare (a costo di ulteriori calcoli per cui forse una sola cella non sarebbe sufficiente dovendo procedere al calcolo dell'armatura equivalente per un numero di casi certamente superiore a tre (penso almeno dieci casi uno per ognuno dei deici campi ...)
infatti io pensavo a 2 nuove colonne inserite di fianco alla colonna dell'asse x e, per ogni asse x dato in pasto, avere l'area equivalente. altrove si metterà invece l'area del primo strato e rispettiva posizione e l'area del secondo strato e rispettiva posizione.
come ho già scritto, ritengo che le formule di trasformazione delle aree siano al più 2 o 3 (penso a entrambi gli strati in campo elastico, uno in campo elastico e uno plastico, entrambi in campo plastico - nell'ultimo caso l'area equivalente è semplicemente la somma delle aree) da mettere in maniera appropriata di fianco alla x.... in ogni caso questo sarebbe applicabile solo ai fini del tracciamento del dominio mentre non lo è sicuramente ai fini del calcolo di Mrd per fissato Ned.
non ho riflettuto sul caso in cui Ned sia fissato. cosa cambierebbe?
CAmbia parecchio dato che all'interno una funzione procede alla determinazione della posizione dell'asse neutro per via iterativa, in particolare ricorrendo al metodo della bisezione.
Comunque, volendo si potrebbe anche fare come pensi di voler fare tu, ma trattandosi impresa pari all'ottava erculea fatica, io personalmente in caso di bisogno impiego dieci minuti e forse meno ad introdurre ulteriore strato di armatura posto a quota variabile.
In alternativa posso anche predisporre una funzione che legga un range di dati in cui inserisco decine di strati di armatura.. -
.
Ho dimenticato di sottolineare che x non è la posizione dell'asse neutro riferito alla sezione quindi non è un rapporto tra altezza della sezione e profondità dell'asse neutro, ma rappresenta la posizione dell'asse neutro all'interno del campo che si sta considerando.
Quindi se ipotizziamo di essere in campo 3, la x è variabile da 2.0001 a 2.9999 ed è stata fissata come aliquota di una qualche grandezza caratteristica relativa alla deformata in campo 3. -
.
sì, l'avevi già spiegato. mi sono riferito ad x per semplicità di esposizione. io stesso nel post in cui ho messo alcuni sviluppi analitici ho avvisato che la mia x non era uguale alla tua. . -
.sì, l'avevi già spiegato. mi sono riferito ad x per semplicità di esposizione. io stesso nel post in cui ho messo alcuni sviluppi analitici ho avvisato che la mia x non era uguale alla tua.
Comunque, se proprio vuoi provare ad aggiungere quelle due colonne di cui hai parlato, hai a disposizione anche la funzione Asseneutro() che, noto il parametro x restituisce la posizione dell'asse neutro riferito alla sezione (quindi la distanza rispetto al bordo compresso).CODICEFunction asseNeutro(H As Double, c As Double, x As Double, _
Optional epsSmax As Double = 0.0675, _
Optional epsCmax As Double = 0.0035, _
Optional epsCrif As Double = 0.002) As Variant
' Restituisce la posizione dell'asse neutro rispetto al bordo superiore in funzione dei parametri immessi
' h = altezza sezione (mm)
' c = copriferro inferiore e superiore (mm)
' x = coefficiente di campo
If x = 0 Or x = 5 Or x = 10 Then
asseNeutro = 100000000
Else
asseNeutro = -CalcEpsilon_rottura(H, c, 0, x, epsSmax, epsCmax, epsCrif) * H / (CalcEpsilon_rottura(H, c, H, x, epsSmax, epsCmax, epsCrif) - CalcEpsilon_rottura(H, c, 0, x, epsSmax, epsCmax, epsCrif))
End If
End Function. -
lennon1983.
User deleted
Signori Buongiorno,
assistevo alla vostra discussione con molto interesse e mi spiace si sia interrotta. Forse siete arrivati al dunque in discussioni private e non sono state riportate qui.... -
.Signori Buongiorno,
assistevo alla vostra discussione con molto interesse e mi spiace si sia interrotta. Forse siete arrivati al dunque in discussioni private e non sono state riportate qui...
Credo che la discussione avviata da reversi si sia conclusa qui in chiaro. Nessun appendice privato.. -
.
Lennon, benvenuto intanto.
Non penso che ci sia stato chissà quale scambio di MP da parte di chi è qui intervenuto.
In generale cerchiamo di scrivere qui tutto quanto, anche a rischio di vergognarci delle fesserie che possono uscir fuori.
Se hai richieste o curiosità particolari, spara.. -
.
Ricordo che il fatto che il codice sia in chiaro e leggibile consente a chiunque di poter apportare modifiche e migliorie che ritiene utili.
A mo di esempio pubblico una piccola variante della funzione VsezRettSLU che prevede anche l'input di un strato di armature posto a quota generica. Ho denominato questa variante col nome VsezRettSLU_Ygen01 e potete trovare il relatico codice nel file scaricabile dal link che segue:
Variante
Spulciando il codice potrete vedere che le aggiunte sono davvero pochisisme e sono riassunte in:
- aggiunta di due nuovi parametri della funzione ( Afgen e Ygen);
- modifica di tutte le vecchie chiamate alla funzione DominioRotturaRett con l'inserimento dei due nuovi parametri
- aggiunta delle seguenti righe di codice :CODICE' coppia di tondini a quota generica
y = YGen
z = CalcEpsilon_rottura(H, c, y, x)
w = SigmaS(z, fyd, 1)
N_dominio = N_dominio + w * AfGen
M_dominio = M_dominio + w * AfGen * (y - yg)
nel corpo della funzione DominioRotturaRett()
Questo basta ad ottenere la nuova funzionalità. Naturalmente se apportate le modifiche a partire dal foglio che conteneva le formule delle vecchie funzioni, dovrete aggiornarle prevedendo il nuovo elenco di parametri.
Questo, soltanto per mostrare come le funzioni presentate siano facilmente adattabili anche per diverse disposizione di armature, purchè alla fine la disposizione sia simmetrica rispetto all'asse verticale.. -
lennon1983.
User deleted
afazio ti ringrazio per la celerità della riposta. Vi ho fatto questa richiesta perchè dopo vari anni di professione acciaio sono tornato sul c.a. e sto affrontando il problema della costruzione del foglio per il dominio, che voi avete eccellentemente già costruito.
La mia richiesta è semplice e a voi parrà un'inezia dato che siete navigatissimi in merito al tema: nel mio foglio pensavo di operare una semplificazione per permettere di inserire più layer di armatura: operare un calcolo "pesato" di un unico braccio interno d, utilizzzando i singoli d1,d2,...dn relativi alle armature A1,A2,.....An.
Immagino che questa semplificazione porti ad una sottostima del reale Momento resistente (e comunque di tutta la curva che definisce il dominio della mia sezione).
Spero di essermi fatto comprendere..
In merito a questo ed a possibili alternative soluzioni ho vagato molto in internet e vedo che è un problema che non viene mai affrontato da nessuno (probabilmente perchè per "i più" non rappresenta un problema).. -
.afazio ti ringrazio per la celerità della riposta. Vi ho fatto questa richiesta perchè dopo vari anni di professione acciaio sono tornato sul c.a. e sto affrontando il problema della costruzione del foglio per il dominio, che voi avete eccellentemente già costruito.
La mia richiesta è semplice e a voi parrà un'inezia dato che siete navigatissimi in merito al tema: nel mio foglio pensavo di operare una semplificazione per permettere di inserire più layer di armatura: operare un calcolo "pesato" di un unico braccio interno d, utilizzzando i singoli d1,d2,...dn relativi alle armature A1,A2,.....An.
Immagino che questa semplificazione porti ad una sottostima del reale Momento resistente (e comunque di tutta la curva che definisce il dominio della mia sezione).
Spero di essermi fatto comprendere..
In merito a questo ed a possibili alternative soluzioni ho vagato molto in internet e vedo che è un problema che non viene mai affrontato da nessuno (probabilmente perchè per "i più" non rappresenta un problema).
Ritengo che la via proposta da te adesso e gia discussa con Reversi, non sia praticabile con la funzione che ho implementato.
Invece sarebbe possibile ed anche facile apportare una modifica alla funzione in modo tale che accetti un "range" di celle (quindi una matrice) in cui depositiamo i vari layer di armature intermedie.
Vuoi provarci?.