Il Bar dell'Ingegneria

VerSezSLU

« Older   Newer »
 
  Share  
.
  1.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,165
    Reputation
    +294

    Status
    Offline
    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"

    6sbh

    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.
     
    Top
    .
  2.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,165
    Reputation
    +294

    Status
    Offline
    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

    gmrh

    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
     
    Top
    .
  3.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    3,345
    Reputation
    +213

    Status
    Offline
    CITAZIONE (zax2013 @ 22/1/2014, 10:03) 
    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?

    png

    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.
     
    Top
    .
  4.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,165
    Reputation
    +294

    Status
    Offline
    CITAZIONE (reversi @ 29/1/2014, 16:18) 
    CITAZIONE (zax2013 @ 22/1/2014, 10:03) 
    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?

    png

    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.
     
    Top
    .
  5.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    3,345
    Reputation
    +213

    Status
    Offline
    CITAZIONE (afazio @ 29/1/2014, 16:46) 
    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.

    CITAZIONE (afazio @ 29/1/2014, 16:46) 
    ... 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?
     
    Top
    .
  6.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,165
    Reputation
    +294

    Status
    Offline
    CITAZIONE (reversi @ 29/1/2014, 17:01) 
    CITAZIONE (afazio @ 29/1/2014, 16:46) 
    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.

    CITAZIONE (afazio @ 29/1/2014, 16:46) 
    ... 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.
     
    Top
    .
  7.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,165
    Reputation
    +294

    Status
    Offline
    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
     
    Top
    .
  8.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    3,345
    Reputation
    +213

    Status
    Offline
    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.
     
    Top
    .
  9.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,165
    Reputation
    +294

    Status
    Offline
    CITAZIONE (reversi @ 29/1/2014, 18:22) 
    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).

    CODICE
    Function 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
     
    Top
    .
  10. lennon1983
        +1   -1
     
    .

    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...
     
    Top
    .
  11.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,165
    Reputation
    +294

    Status
    Offline
    CITAZIONE (lennon1983 @ 12/5/2014, 10:13) 
    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.
     
    Top
    .
  12.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    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.
     
    Top
    .
  13.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,165
    Reputation
    +294

    Status
    Offline
    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.
     
    Top
    .
  14. lennon1983
        +1   -1
     
    .

    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).
     
    Top
    .
  15.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,165
    Reputation
    +294

    Status
    Offline
    CITAZIONE (lennon1983 @ 13/5/2014, 12:27) 
    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?
     
    Top
    .
111 replies since 18/1/2014, 19:57   10043 views
  Share  
.