Author Topic: Programma di verifica a presso-flessione deviata di sezioni generiche in c.a  (Read 149410 times)

0 Members and 1 Guest are viewing this topic.

zax2010

  • Guest
Tutto nasce da una mia “pretesa” di oltre una decina di anni fa di riuscire a fare un programma per la verifica a presso-tenso-flessione deviata di sezioni generiche in cemento armato. Oltre dieci anni significa pieno periodo di verifiche alle tensioni ammissibili.

Ovviamente non ci sono riuscito, per mia scarsa conoscenza del linguaggio C, che allora pensavo di meglio padroneggiare, ed anche per la scarsa padronanza dell'interfaccia Windows lato “programmatore”.
Però tutto quanto ho recuperato ed imparato allora non è materiale perduto. Anche oggi le verifiche SLE alle tensioni vanno fatte, anche oggi le verifiche SLE a fessurazione implicano la conoscenza di uno stato tensionale di ogni singola barra, ecc.

Allora ero riuscito a ricavare quasi da solo - poiché non era mai stato menzionato in nessuno dei libri su cui avevo studiato, e nemmeno l'ho mai successivamente ritrovato (seppur non abbia cercato a fondo) – il cosiddetto “metodo della matrice di rigidezza della sezione”; che consente appunto, agli SLE, di fare ciò che recita il titolo del topic.

In parte mi meraviglio di come ci sia riuscito. Senza fonti, senza libri, ma semplicemente telefonando ad un ingegnere che un programma simile aveva fatto, e che rispondeva alle mie domande, da un lato cercando di non far trapelare un segreto “industriale” di grande portata; dall'altro invece con grande voglia di svelarmi i grandi segreti di sapienza da lui posseduti.

Nel tentativo di essere quanto più “didattico” possibile sto preparando un po' di materiale che, penso e spero, condividerò con voi a cadenza settimanale circa.

Per quanto riguarda la prima parte, ovvero le verifiche SLE, ho delle vecchie porzioni di codice che, adeguatamente rivedute e corrette, vorrei pubblicare per dare spunti a chi è più bravo e volenteroso di me.
Per le verifiche SLU probabilmente saranno più le chiacchiere che il resto.

Comunque, vedremo.

In ultimo: una dedica speciale ad Afazio, non ultimo nella condivisione della conoscenza.

zax2010

  • Guest
Parte 1

Geometria della sezione
Per prima cosa occorre definire matematicamente la sezione di forma generica.

Essa è costituita da una serie di n vertici, riferiti ad un sistema cartesiano, numerati in sequenza, ed in sequenza uniti da segmenti, fino a formare, unendo il primo e l'ultimo vertice, un poligono chiuso.
Dimenticatevi raccordi circolari ellittici, ecc. Questi potranno essere “riprodotti” con opportuni raffittimenti di vertici che approssimeranno più o meno bene queste parti curvilinee della vostra sezione. Ma in ogni caso comunque la sezione rimane poligonale.

Ecco un esempio di quanto intendo:



Per descrivere quindi in un software una simile geometria basterebbe memorizzare le n coppie di coordinate x,y di ogni singolo vertice.

Purtroppo però spesso la realtà non è così semplice come nell'immagine. Una sezione di forma realmente generica può essere costituita da parti piene e parti vuote, oppure da porzioni di sezione fatte con differente materiale (esempio sezioni precompresse con soletta di differenti caratteristiche del calcestruzzo, oppure sezioni in acciaio-calcestruzzo, ecc.).
Solamente quella dei vuoti è una situazione che è possibile bypassare semplicemente facendo “arrotolare” il poligono su se stesso. Ad esempio il famoso programma VCASLU del prof. Gelfi non permette di inserire più poligoni, però con questa accortezza è in grado di eseguire verifiche anche di sezioni cave.
Poco male però per noi, in quanto semplicemente la sezione verrà rappresentata non da uno, ma da più poligoni. Vedremo in seguito come il metodo assolutamente generico che propongo è in grado di gestire queste situazioni (ma anche parti di sezione che si parzializzano a trazione, oppure no).
Per adesso quindi ci concentreremo sul singolo poligono, si estenderanno poi i concetti espressi anche alle sezioni pluri-poligonali.
Alla prossima.

Offline afazio

  • Veterano del forum
  • ****
  • Posts: 663
  • Karma: 273
  • dovizio mi delizio
    • CI si vede al Bar
Io ringrazio per la dedica speciale e seguo con attenzione. Chissà ...
« Ogni qualvolta una teoria ti sembra essere l’unica possibile, prendilo come un segno che non hai capito né la teoria né il problema che si intendeva risolvere. »
K.P.

Massimo.T

  • Guest
quando arrivi in fondo con gli SLE, qualcuno parte con gli SLU?

zax2010

  • Guest
Parte 2

Calcolo delle caratteristiche geometriche delle sezioni
Premetto che queste nozioni di base sono finalizzate al calcolo SLE delle sezioni.
Il calcolo delle caratteristiche geometriche di una sezione rappresentata da un poligono, intendo baricentri, momenti statici e di inerzia rispetto agli assi coordinati, va svolta utilizzando una sommatoria di momenti statici e di inerzie riferite ad un singolo segmento del poligono stesso.
Ad esempio nella prima immagine sottostante potete vedere cosa si intende.





E' semplice verificare cosa accade se vogliamo calcolare l'area del poligono. Basterà calcolare l'area del trapezio sotteso ad ogni segmento (quello in grigio nella figura), per capire, girando segmento per segmento del poligono, fino all'ultimo segmento che unisce l'ultimo vertice con il primo, che alcuni trapezi avranno area positiva (ad esempio quello segnato), altri area negativa (quello della seconda immagine, perchè x[i+1]-x[i ] diventa negativo), e pertanto la somma algebrica di tutte queste aree restituisce, appunto, l'area del poligono.
Per le altre caratteristiche geometriche, si procederà in maniera analoga.

Il mattone “elementare” quindi diventa calcolare le caratteristiche geometriche del trapezio segnato nelle figure.
E' giusto che io non taccia e che dica subito che tutte le caratteristiche geometriche, però saranno riferite al sistema di riferimento prescelto, e quindi, almeno per i momenti statici e di inerzia, agli assi x ed y di figura.
Poco male. Basterà utilizzare i teoremi di trasporto per ritrovare momenti statici ed inerzie riferiti al baricentro della sezione. Perchè è questi che di seguito ci interesseranno.

Allora, per semplificare le varie formule ho indicato con a il valore (x[i+1]-x[i ]) e con d il valore (y[i+1]-y[i ]). In questo modo l'area sarà la somma di un rettangolo e di un triangolo (anche di area negativa se d è negativo), ed anche i momenti statici e le inerzie verranno spezzettate sommando inerzie di rettangoli e triangoli.

In definitiva avremo:

area
a*y[i ]+a*d/2   --> ovvero semplificando: a*(y[i ]+d/2)

momento statico attorno all'asse x
a*y[i ]^2/2+a*d/2*(y[i ]+d/3)   --> ovvero semplificando: a/2*(y[i ]^2+d^2/3+d*y[i ])

momento statico attorno all'asse y
In questo caso dovete immaginare il trapezio disposto in verticale proiettando il segmento sull'asse y, piuttosto che sull'asse x.
-d*x[i ]^2/2+d*a/2*(x[i ]+a/3)   --> ovvero semplificando: -d/2*(x[i ]^2+a^2/3+a*x[i ])

momento d'inerzia attorno all'asse x
a*y[i ]^3/3+a*d^3/36+a*d/2*(y[i ]+d/3)^2   --> ovvero semplificando: a/3*(y[i ]^3+y[i ]*d^2+3*y[i ]^2*d/2+d^3/4)

momento d'inerzia attorno all'asse y
Anche in questo caso il trapezio è ruotato, proiettando il segmento sull'asse y.
-d*x[i ]^3/3+d*a^3/36+d*a/2*(y[i ]+a/3)^2   --> ovvero semplificando: -d/3*(x[i ]^3+x[i ]*a^2+3*x[i ]^2*a/2+a^3/4)

momento d'inerzia xy
Non ricordo bene come lo abbia ricavato a suo tempo, ma pigliatelo come atto di fede, nella formulazione già semplificata:
a*(x[i ]/2*(y[i ]^2+d^2/3+d*hy)+a/2*(y[i ]^2/2+d^2/4+2*d*hy/3))

Adesso, ottenute tutte queste grandezze, sommandole tra loro, segmento per segmento costituente il poligono, ed eventualmente ripetendo ancora l'operazione per gli altri poligoni che compongono la sezione è possibile trovare il baricentro della sezione:

xg=Mstaticoy/areatot
yg=Mstaticox/areatot

Ed una volta avuto il baricentro, con i vari teoremi di trasporto ricavare le inerzie. Ad esempio:

inerziaxg=inerziax-areatot*yg^2

E così via.
Personalmente ho sempre avuto qualche difficoltà proprio in questa fase, specie per l'inerzia xy.
Pertanto avevo preferito, allungando un po' il brodo, calcolare prima aree e momenti statici, in modo da determinarmi inizialmente i baricentri, ed infine calcolarmi le inerzie direttamente dal baricentro (con una banale traslazione degli assi).

Per completare questa prima parte, preliminare si, ma assai basilare, introduco anche il valore di alfa, ovvero l'angolo degli assi principali di inerzia rispetto agli assi coordinati, ed i valori dei momenti principali di inerzia rispetto agli assi principali.
Come in tutti i manuali di geometria delle masse:

alfa=atan(-2*inerziagxy/(inerziagx-inerziagy))/2

ialfa=(inerziagx+inerziagy)/2+sqrt((inerziagx-inerziagy)^2+4*inerziagxy^2)/2
ibeta=(inerziagx+inerziagy)/2+sqrt((inerziagx-inerziagy)^2+4*inerziagxy^2)/2

Insomma, pare tutto facile. Però in effetti le cose non sono così semplici come io ve le ho raccontate finora. Infatti, domandatevi:

Cosa succede e cosa cambia se invece di inserire il poligono con i vertici via via in senso orario, li inserissi in senso antiorario?

E le armature, non ne parliamo?

Le risposte alla prossima.


« Last Edit: 07 April , 2011, 16:43:45 PM by zax2010 »

Offline afazio

  • Veterano del forum
  • ****
  • Posts: 663
  • Karma: 273
  • dovizio mi delizio
    • CI si vede al Bar
Intanto accadrebbe come prima cosa che l'area ottenuta sarebbe negativa.
Poco male dirai tu, perchè sara possibile ricorrere a questa caratteristica per poter inserire anche le cavità fissando a priori che il contorno esterno della sezione deve essere inputato con la sequenza dei vertici in senso orario mentre i contorni delle cavità devono essere inseriti coi vertici in senso antiorario.
« Ogni qualvolta una teoria ti sembra essere l’unica possibile, prendilo come un segno che non hai capito né la teoria né il problema che si intendeva risolvere. »
K.P.

zax2010

  • Guest
Esattamente, caro Afazio.

Io però, questa caratteristica che tu hai appena enunciato, e che esiste ovviamente, non intendo sfruttarla.
Spiegherò meglio alla prossima.

Offline afazio

  • Veterano del forum
  • ****
  • Posts: 663
  • Karma: 273
  • dovizio mi delizio
    • CI si vede al Bar
dal link che metto a seguire, potete scaricare un file excel che calcola la caratteristiche meccaniche per qualsiasi sezione (ma senza cavità).

http://www.box.net/shared/dmxqgjt77a

Il fogklio implementa le formule descritte da Zax ricorrendo alla funzione scarto per ottenere le differenze tra le coordinate.

ciao

NB.: Anche questo file gode delle stesse restrizioni che ho imposto per la procedura di disegno dei pali.
« Ogni qualvolta una teoria ti sembra essere l’unica possibile, prendilo come un segno che non hai capito né la teoria né il problema che si intendeva risolvere. »
K.P.

Offline ferrarialberto

  • Semi Esperto
  • **
  • Posts: 137
  • Karma: 26
Bravo Zax, bella iniziativa. Non mancherà di certo il mio contributo.

Ciao.
ing. FERRARI Alberto - www.ferrarialberto.it

zax2010

  • Guest
Bravo Zax, bella iniziativa. Non mancherà di certo il mio contributo.

Ciao.

Ti chiedo scusa per la madornale scortesia nei tuoi confronti.
Arci contento del "ritorno" di Afazio, ho dimenticato di richiamare anche te nel mio messaggio iniziale.

Chi meglio di te, che già un programma del genere hai fatto, e soprattutto hai condiviso (il DORO se non sbaglio), doveva essere richiamato e ringraziato?

Spero certamente nel tuo contributo, e non esitare a darlo, specie se troverai inesattezze in quanto ho già detto e dirò.
Ancora non ho pubblicato qui alcuna riga di codice, ed ho previsto di farlo nella parte 4, spero vivamente che non inorridirai.
« Last Edit: 07 April , 2011, 22:41:41 PM by zax2010 »

Offline ferrarialberto

  • Semi Esperto
  • **
  • Posts: 137
  • Karma: 26
Ti chiedo scusa per la madornale scortesia nei tuoi confronti.
Arci contento del "ritorno" di Afazio, ho dimenticato di richiamare anche te nel mio messaggio iniziale.

Chi meglio di te, che già un programma del genere hai fatto, e soprattutto hai condiviso (il DORO se non sbaglio), doveva essere richiamato e ringraziato?

Spero certamente nel tuo contributo, e non esitare a darlo, specie se troverai inesattezze in quanto ho già detto e dirò.
Ancora non ho pubblicato qui alcuna riga di codice, ed ho previsto di farlo nella parte 4, spero vivamente che non inorridirai.

Assolutamente nessuna scortesia, ci mancherebbe.
Anch'io sono super contento del ritorno di Afazio dopo tanti mesi; spero che possa essere una nuova occasione per confrontarsi ancora una volta.
Una piccola inesattezza se mi consenti la hai già scritta, ieri non ho avuto 5 min. per scrivertelo. I momenti d'inerzia riportali subito al baricentro geometrico, quelli sulla terna di riferimento "globale" sono inutili (spesso) e possono portare ad una errata valutazione dell'inerzia rispetto ad un asse generico (serve una doppia trasposizione).
Non credo di aver motivo di inorridire, però penso di poterti indirizzare su scelte più avvedute. E' vero che sbagliando si impara, ma quando si tratta di scrivere un codice di calcolo è meglio pensare tre volte e lavorare una volta sola piuttosto che il viceversa.
Quando vuoi scrivimi pure, in privato o in pubblico che sia, sono contento di aiutarti se posso. L'importante è di partire col piede giusto e con le idee chiare (l'algoritmo), dopodichè lo sviluppo del codice ed il debug sono il meno.

Ciao.
ing. FERRARI Alberto - www.ferrarialberto.it

zax2010

  • Guest
Parte 3

Complichiamo un po le cose
Nella Parte 1 avevo parlato di vuoti che le sezioni reali possono possedere, oppure di differenti materiali costituenti porzioni separate della sezione totale.
Nel determinare le caratteristiche geometriche della sezione però non ne ho più fatto cenno.

Torniamo però adesso alla questione rimasta in sospeso nella Parte 2. Ovvero cosa accade se nell'input dei vertici di un poligono qualcuno inserisce i vertici in senso antiorario, piuttosto che in senso orario così come dalle figure riportate nella Parte 1.
E' semplice: l'area del poligono, ad esempio, risulterà negativa, così come tutte le altre caratteristiche geometriche.
Come mi hanno già fatto osservare, questo “problema” potrebbe trasformarsi invece in una opportunità. I “pieni” di una sezione vanno inseriti in senso orario, i “vuoti” di una sezione in senso antiorario. Basterebbe informare l'utente di una simile opportunità.
Questa caratteristica però non risolverebbe tutte le problematiche connesse con “realtà” articolate.

Un esempio chiarirà meglio.
Immaginate di avere una sezione precompressa, cava, che viene completata in opera, con un getto di calcestruzzo di differenti caratteristiche meccaniche, a sua volta cavo, perchè alleggerito con del polistirolo.
Ecco, per rappresentare una simile sezione occorreranno 4 poligoni. Un primo poligono sarà la parte “esterna” della sezione in c.a.p., il secondo poligono, la parte “vuota” della stessa, un terzo poligono il contorno esterno del getto in opera, ed infine il quarto poligono il vuoto all'interno della soletta.
Scopriamo l'acqua calda sapendo che i due calcestruzzi differenti di cui è composta la sezione nel suo complesso, possono essere trattati come se fossero uno solamente introducendo il fattore n di omogeneizzazione dato dal rapporto tra i moduli elastici dei due calcestruzzi.

Quindi basterà introdurre un semplice moltiplicatore, per ogni poligono costituente la sezione, per risolvere il problema. Moltiplicatore che di seguito chiamerò “omog”.

Tale moltiplicatore può valere ad esempio 1.0 per il poligono “pieno” esterno della sezione in c.a.p., -1.0 per il poligono che rappresenta il “vuoto” della sezione predetta, valere (esempio) 0.79 per il poligono che rappresenta la parte esterna della soletta, ed infine -0.79 per la sua parte “vuota”.
Se avessi optato per un “poligono antiorario” per il 4° poligono avrei tolto più area di quanto invece non ne avevo messo con il 3° poligono.

Pertanto un moltiplicatore “omog” negativo rappresenta un vuoto, un moltiplicatore “omog” positivo, una parte di sezione piena. Non necessariamente “omog” dovrà essere limitato nella sua espressione numerica, esso può valere anche più di 1.0
L'esempio classico è quello della sezione mista acciaio calcestruzzo. Il poligono che rappresenta il profilo metallico che la costituisce potrà avere “omog” 15.0, oppure 6.0, ecc.

A questo punto però è essenziale che gli algoritmi del programma si trovino sempre dei poligoni inseriti in senso orario.
Da un punto di vista di un programma software si può procedere in due modi: Si avvisa l'Utente “a lettere maiuscole” che nell'input deve procedere in senso orario, oppure si provvede a creare un “automatismo” per cui è il software che all'occorrenza “raddrizza” input “storti”.
Io personalmente prediligo questa seconda via, vista anche l'esperienza giornaliera che ognuno di noi fa con la chat di questo forum.
E la prossima volta vi fornirò una funzioncina che esegue proprio questo raddrizzamento.

Piccolo inciso. Le possibilità che l'input dell'utente possa essere “storto” non si limitano a questo solo aspetto. Tante altre possono essere le possibilità di “sbagliare” l'input. Essendomi concentrato più sull'output in realtà non voglio parlare degli aspetti riguardanti l'input. Se però qualcuno di voi volesse.....a disposizione.

Anche nel caso delle armature, da inserire anch'esse per il calcolo delle caratteristiche statiche della sezione, sarà necessario utilizzare la variabile “omog”. In questo caso essa piglierà il tipico valore 15, oppure il valore ritenuto opportuno.
Ogni singola barra di armatura verrà considerata come una massa concentrata disposta nelle coordinate x,y e di area af. Ossia come in figura:



In questo modo le varie entità geometriche dovranno essere aumentate delle quantità, calcolate barra per barra:

area
omog*af

momento statico attorno all'asse x
omog*af*y[i ]

momento statico attorno all'asse y
omog*af*x[i ]

momento d'inerzia attorno all'asse x
omog*af*y[i ]^2

momento d'inerzia attorno all'asse y
omog*af*x[i ]^2

momento d'inerzia xy
omog*af*x[i ]*y[i ]

Offline Ing. Edoardo

  • Global Moderator
  • Nonno del forum
  • *****
  • Posts: 1578
  • Karma: 83
afazio ti chiedo se possiamo pubblicare nella sezione download, il foglio che tu hai gentilmente condiviso qui.
"Niente e nessuno ha sempre torto: anche un orologio fermo ha ragione due volte al giorno."

Offline ferrarialberto

  • Semi Esperto
  • **
  • Posts: 137
  • Karma: 26
@Zax

Ti dico come lo ho impostato io in due miei programmi: la polilinea è unica per ogni materiale e deve essere inserita sempre in senso orario. L'utente verifica l'area dopo l'input; in caso di sezione cave (semplicemente connesse o pluriconnesse - 2 o più fori -) la parte interna viene definita in senso "antiorario" (e lo virgoletto) "aprendo" la sezione con un taglio fittizio e richiudendo la sezione definendo nuovamente le coordinate dei vertici in corrispondenza del taglio. Anche nel caso di sezioni cave è opportuno un controllo sull'area da parte dell'utente (potrebbe inserire tutto in senso orario, con aree doppie al posto dei vuoti). In tutti i casi il programma dopo aver calcolato l'area verifica che sia >0 e in caso contrario "consiglia" all'utente l'inversione automatica dei vertici.
Sui coefficienti di omogeneizzazione ho qualche riserva concettuale essendo un approccio di calcolo tipico delle tensioni ammissibili. Ci ritornerò, anche se agli SLE le cose vanno comunque bene.

Ciao.
ing. FERRARI Alberto - www.ferrarialberto.it

Offline Gilean

  • Administrator
  • Bisnonno Veterano
  • *****
  • Posts: 3292
  • Karma: 202
ing edo, puoi farlo tranquillamente, inserendo nel download creato non gia' il file, bensi il link al suo hdd virtuale.
Il calcolo è come la pelle delle @@, lo tiri dove vuoi tu.
Esempio di programmazione a Loop:
L'enunciato che segue è falso
L'enunciato precedente è vero.

Nonostante la consapevolezza dei rischi che si corrono dopo aver visto le prestazioni da 3° dan

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24