Il Bar dell'Ingegneria

FIRE 2D

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

    Member

    Group
    Member
    Posts
    766
    Reputation
    +23

    Status
    Offline
    PROCEDURA DI CALCOLO DELLA RESISTENZA DI MANUFATTI IN CA e CAP ESPOSTI AL FUOCO SECONDO LA CURVA DI INCENDIO ISO834.

    Per il seguente post mi rifaccio alla norma:

    CITAZIONE
    EN 1992-1-2 (2004) (English): Eurocode 2: Design of concrete
    structures - Part 1-2: General rules - Structural fire
    design [Authority: The European Union Per Regulation
    305/2011, Directive 98/34/EC, Directive 2004/18/EC]

    Propongo una procedura di calcolo alternativo al metodo semplificato dell'isoterma 500°C, per la verifica allo SLU di manufatti in CA/CAP sottoposti alla curva di incendio ISO834.
    Buona parte del codice che vado a modificare/adattare è già stato in parte pubblicato in questo forum in varie sezioni da afazio, zax, giaria, se dimentico qualcuno me ne scuso.
    Tralascio la parte fisico/teorica del problema per la quale rimando alla letteratura di riferimento, e come i gamberi partirò dalla parte pratica conclusiva.
    Per l'analisi termica a monte utilizzerò software FEM open source, del quale parlerò più avanti al termine dell'articolo.
    Premetto che la procedura numerica che vado ad implementare, è una procedura poco efficiente, che richiede tempi di elaborazione lunghi, in minima parte legata al linguaggio di programmazione VBA che andrò ad utilizzare.
    Attached Image
    TR

     
    Top
    .
  2.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    wow la sintesi

    (questo mio inutile commento serve solo per ricevere gli interventi che seguiranno in mail)
     
    Top
    .
  3.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Io però sarei interessato alla parte teorica.

    Da quello che dice Tex la parte di analisi termica viene svolto da software FEM di terze parti.

    Qualche anno fa avevo svolto qualche ricerca arrivando all'algoritmo di Crank Nicolson che permette di risolvere il problema del transitorio termico agli elementi finiti.
    Ma mi ero fermato li.

    In teoria, avuta la mappa di temperatura il resto è 'semplice'.
    Elementino per elementino, sempre in funzione della deformazione, e con il solito diagramma costitutivo, si potrà conoscere la tensione nel centro dell'elementino. Tensione che verrà ridotta con apposito parametro proprio in funzione della temperatura raggiunta nell'elementino. Idem per quanto riguarda le armature (il parametro riduttivo è ovviamente differente tra acciaio e cls).

    Integrando tutte le risultanti di ogni singolo elementino si potrà giungere, al solito, ad una tripletta N, Mrx, Mry.
     
    Top
    .
  4.     +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    885
    Reputation
    +41

    Status
    Online
    Piace pure a me.
    Grazie.
    L'ho ricondiviso su g+
    https://plus.google.com/116747419155192950...sts/NbaVMT2AEtk
    con l'hashtag #baringegneria.
     
    Top
    .
  5.     +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    766
    Reputation
    +23

    Status
    Offline
    CITAZIONE (zax2013 @ 5/8/2014, 18:13) 
    Io però sarei interessato alla parte teorica.
    Da quello che dice Tex la parte di analisi termica viene svolto da software FEM di terze parti.
    Qualche anno fa avevo svolto qualche ricerca arrivando all'algoritmo di Crank Nicolson che permette di risolvere il problema del transitorio termico agli elementi finiti.
    Ma mi ero fermato li.
    .....
    .....

    Per la parte teorica del calcolo delle temperature ricordo un post di heavyconcrete "Verifica al fuoco di sezioni in C.A." in questa stessa sezione del forum.
    Gli algoritmi risolutori classici del transitorio termico sono fondamentalmente quattro, il metodo Crank Nicolson che hai citato, il metodo Galerkin, il metodo Eulero, ed il metodo Laasonen.
    Comunque potremmo successivamente riesumare il post di heavyconcrete per approfondire questi aspetti.
    Quì appunto mi occuperò solo della seconda parte del problema dal mero punto di vista informatico.
    Vedo con piacere che l'argomento trattato suscita molto interesse tra i frequentatori abituali del bar.

    Edited by texitaliano64 - 11/8/2014, 09:47
     
    Top
    .
  6.     +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    766
    Reputation
    +23

    Status
    Offline
    Zax è andato dritto al punto della situazione ed ha già capito cosa intendo fare.
    Nel post CiaP abbiamo sviluppato un foglio excel che permette di calcolare la resistenza dei manufatti CA/CAP agli SLU, ebbene quà modificheremo questo foglio per la verifica dei manufatti in condizione di incendio, anche avvalendoci di software open-source di terze parti.
    La potenza dello zaxcode che non passa inosservata, stà nella possibilità di poter verificare assembly di poligoni con caratteristiche dei materiali variegate e con legami costitutivi variegati.
    Questa possibilità nel tempo l'ho potenziata togliendo dei vincoli implementativi che si riassumono nella allocazione dinamica della memoria, nell'affinamento della procedura di discretizzazione in fibre interna, nel migliorato controllo della convergenza.
    Pertanto data una sezione di elemento CA/CAP sottoposta a curva di incendio ISO834, dopo aver impostato le condizioni al contorno (pareti esposte al fuoco) è possibile condurre una analisi termica nel transitorio previa discretizzazione (meshatura) per ricavare nel tempo t di interesse la temperatura nodale di ogni singolo tassello.
    Per ogni tassello si calcolerà la temperatura nel baricentro, si andrà a decurtare la resistenza con EN-1-2 (2004) in funzione della temperatura rilevata, ed infine si procederà al calcolo di verifica.
    Il procedimento risulta molto laborioso se confrontato con i software commerciali specializzati in questo campo, ma chissà forse con gli sviluppi futuri potremmo ridurre il gap.
     
    Top
    .
  7.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Nello zaxcode, come mi piace che vi siete abituati a chiamarlo, il calcolo della risultante N e dei relativi momenti di rottura, veninva svolto 'indagando' la zona compressa tramite fibre parallele all'asse neutro.
    Questo perchè:

    1) Tutti i punti giacenti su di una fibra sono 'assoggettate' alla stessa deformazione (ipotesi di deformazione piana sempre valida);
    2) Tramite il legame costitutivo dalla deformazione si risale alla tensione, anch'essa identica per ogni punto della fibra indagata.

    Quindi la N 'sviluppata' dalla parte compressa della sezione viene ricavata sommando tutti questi contributi "lineari" (anche i momenti di rottura in definitiva allo stesso modo).

    Nel caso incendio la cosa è lievemente differente.
    Per quanto riguarda l'assetto deformativo a rottura non dovrebbe cambiare nulla tra il caso "a freddo" e quello "a caldo" (ma chiedo conferma a Tex, perchè non ricordo benissimo).
    Quello che varia è invece un parametro 'riduttivo' della resistenza che è funzione della temperatura raggiunta nel punto generico della sezione al generico istante di tempo t dopo l'avvio dell'incendio.
    Il diagramma di questo parametro è presente nella norma citata in apertura da Tex (lievemente differente da quello riportato nella UNI9502, ormai ritirata).
    E' ovvio che questo fattore riduttivo varia da 1.0 ("a freddo") fino a 0.0 (oltre i 1100 °C).

    Quindi lungo una fibra, per quanto si possa ancora dire che la deformazione è costante, non si potrà più dire che la tensione lo sia. Questo perchè le parti della fibra più vicina al perimetro della sezione avranno temperatura più alta (quindi meno 'resistente'), e le parti interne temperatura più bassa (quindi più 'resistenti').

    Ecco quindi che bisogna abbandonare il metodo a 'fibre', ed utilizzare la meshatura che si è utilizzata per determinare il campo di temperature nell'istante generico t.

    png

    Ovvero, operare triangolino per triangolino.
    Quindi ogni volta, nel generico triangolo i:

    1) Definire la deformazione nel suo baricentro;
    2) Definire la sua temperatura;
    3) Definire l'area del singolo triangolino
    4) Richiamare la funzione che in base alla deformazione restituisce la tensione (al solito modo "a freddo")
    5) Richiamare la funzione che in base alla temperatura determina il fattore riduttivo della tensione
    6) Integrare tutti i singoli dN=sigma*area_triangolo ricavati triangolino per triangolino determinando N e Mrx, ed Mry

    Se nella zona compressa sono presenti un migliaio di triangolini tutto questo deve essere ripetuto qualche decina di migliaia di volte (alla ricerca della esatta posizione dell'asse neutro tale che la N interna della sezione sia pari, o quasi, alla N esterna sollecitante). E per un singolo assetto dell'asse neutro.
     
    Top
    .
  8.     +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    766
    Reputation
    +23

    Status
    Offline
    CITAZIONE (zax2013 @ 6/8/2014, 09:10) 
    ....
    Ovvero, operare triangolino per triangolino.
    Quindi ogni volta, nel generico triangolo i:

    1) Definire la deformazione nel suo baricentro;
    2) Definire la sua temperatura;
    3) Definire l'area del singolo triangolino
    4) Richiamare la funzione che in base alla deformazione restituisce la tensione (al solito modo "a freddo")
    5) Richiamare la funzione che in base alla temperatura determina il fattore riduttivo della tensione
    6) Integrare tutti i singoli dN=sigma*area_triangolo ricavati triangolino per triangolino determinando N e Mrx, ed Mry

    Se nella zona compressa sono presenti un migliaio di triangolini tutto questo deve essere ripetuto qualche decina di migliaia di volte (alla ricerca della esatta posizione dell'asse neutro tale che la N interna della sezione sia pari, o quasi, alla N esterna sollecitante). E per un singolo assetto dell'asse neutro.

    Io i punti 4 e 5 propongo di implementarli in unico passaggio adottando il legame costitutivo del calcestruzzo proposto dalla EN1992-1-2 e modificarlo in funzione della temperatura del singolo poligono di mesh analizzato.
    Il procedimento dal punto di vista pratico è più semplice di quanto ci si immagina, lo zax-code ha già tutta questa potenza, dobbiamo solo esplicitarla.
    Come tutte le procedure di calcolo FEM anche in questo caso si giunge ad una soluzione approssimata del problema, quindi una mesh fitta tipicamente 2/3 cm consentirà risultati soddisfacenti.
    Questa mesh così fitta consentirà allo stesso tempo di giungere alla convergenza anche del problema termico, altrimenti non raggiungibile.
     
    Top
    .
  9.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Il tuo richiamo alla EN1992-1-2, mi ha costretto a prenderla ed a rileggere la parte relativa al diagramma costitutivo.
    Effettivamente ricordavo male. Le deformazioni limite si modificano man mano che aumentano le temperature.
    Ecco quanto riportato nell'EC incriminato:

    png

    Dove fc,teta è il valore della resistenza cilindrica raggiunto alla temperatura teta.
    Nella tabella sopra la figura la prima colonna dopo quella della temperatura riporta il rapporto fc,teta/fck, che come detto prima varierebbe da 1.0 a 0.0.

    Adesso però la domanda è..........ma se le deformazioni limite si modificano al variare della temperatura........di quale temperatura stiamo parlando?
    Io non penso al singolo triangolino della mesh. Perchè vorrebbe dire che i triangolini più caldi potrebbero andare oltre il limite di deformazione di quelli più freddi.
    In sintesi, con questo diagramma deformazioni-tensioni 'cangiante' io vedo difficoltà a definire le deformazioni di rottura ad un certo periodo t di tempo.
     
    Top
    .
  10.     +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    766
    Reputation
    +23

    Status
    Offline
    Iniziamo con lo sviluppo di routines accessorie al nostro programma.
    Noi dovremmo gestire geometrie 2D e poligoni di mesh di tipo linea, triangolo, quadrangolo, non andremo ad analizzare forme più complesse in quanto per le geometrie di elementi in CA/CAP sono più che adeguate.
    Definiamo pertanto queste nuove strutture dati:
    CODICE
    '01234567890123456789012345678901234567890123456789012345678901234567890123456789
    '
    '                       FFFF   III   RRR     EEEE
    '                       F       I    R  R    E
    '                       FFF     I    RRR     EEEE
    '                       F       I    RR      E
    '                       F      III   R R     EEEE
    '
    '01234567890123456789012345678901234567890123456789012345678901234567890123456789

    Option Explicit

    '---------------------------------------
    'Strutture dati per il calcolo del fire
    '---------------------------------------
    Type TipoPuntoFire
       X As Double
       Y As Double
       T As Double 'Temperatura
    End Type

    Type TipoLinea
       A As TipoPuntoFire
       b As TipoPuntoFire
    End Type

    Type TipoTriangolo
       A As TipoPuntoFire
       b As TipoPuntoFire
       c As TipoPuntoFire
    End Type

    Type TipoQuadrangolo
       A As TipoPuntoFire
       b As TipoPuntoFire
       c As TipoPuntoFire
       d As TipoPuntoFire
    End Type

    Type TipoLinTriaQuad
       A As TipoPuntoFire
       b As TipoPuntoFire
       c As TipoPuntoFire      'nel caso di linee posto a 0
       d As TipoPuntoFire      'nel caso di triangoli e linee posto a 0
       LinTriaQuad As Integer  '0=Vuoto, 1=Linea, 2=Triangolo, 3=Quadrilatero
       TraveGetto As Integer   '1=Trave, 2=Getto
    End Type
    '--------------------------


    Definiamo alcune funzioni utili alla interpolazione delle temperature negli elementi Linea:

    CODICE
    '------------------------------------------------------------------------------------
    ' Funzione Temp2P() determina la temperatura del punto P(x,y) passato come riferimento
    ' sulla linea passante per due punti A e B di temperatura nota
    ' Parametri:
    ' - due punti strutturati come da struttura TipoLinea
    ' - il punto P di cui sono note le coordinate planimetriche (x,y) passato byref
    '
    ' Risultato:
    ' - valore Falso nel caso in cui non è stato possibile determinare la temperatura
    ' - Valore Vero nel caso in cui è stato possibile determinare la temperatura.
    ' La temperatura determinata si trova come temperatura T del punto passato come riferimento.
    '
    ' Tex - Luglio 2014
    '----------------------------------------------------------------------------------

    Private Function Temp2P(TL As TipoLinea, ByRef P As TipoPuntoFire) As Boolean

       'Controllo che il punto sia interno alla linea
       Dim TT As TipoTriangolo
       TT.a = TL.a
       TT.b = TL.b
       TT.c = P
       If AreaTria(TT) > 0.0001 Then
           Temp2P = False
           Exit Function
       End If

       Dim DeltaT As Double
       Dim distAB As Double
       Dim distAP As Double
       DeltaT = TL.b.t - TL.a.t
       distAB = Distanza12(TL.a.X, TL.a.Y, TL.b.X, TL.b.Y)
       distAP = Distanza12(TL.a.X, TL.a.Y, P.X, P.Y)
       If distAB = 0# Then
           P.t = (TL.a.t + TL.b.t) / 2
       Else
           P.t = TL.a.t + DeltaT * distAP / distAB
       End If
       Temp2P = True

    End Function

    'Determina le coordinate e la temperatura in corrispondenza del punto medio della linea
    Private Function PMedioLinea(TL As TipoLinea) As TipoPuntoFire
       PMedioLinea.X = (TL.A.X + TL.b.X) / 2
       PMedioLinea.Y = (TL.A.Y + TL.b.Y) / 2
       PMedioLinea.T = (TL.A.T + TL.b.T) / 2
    End Function


    Definiamo alcune funzioni utili alla interpolazione delle temperature negli elementi Triangolo:

    CODICE
    '------------------------------------------------------------------------------------
    ' Funzione Temp3P() determina la temperatura del punto P(x,y) passato come riferimento
    ' sul piano determinato dai tre punti A, B e C di temperatura nota
    ' Parametri:
    ' - tre punti strutturati come da struttura TipoPuntoFire
    ' - il punto P di cui sono note le coordinate planimetriche (x,y) passato byref
    '
    ' Risultato:
    ' - valore Falso nel caso in cui non è stato possibile determinare la temperatura
    ' - Valore Vero nel caso in cui è stato possibile determinare la temperatura.
    ' La temperatura determinata si trova come temperatura T del punto passato come riferimento.
    '
    ' Tex - Luglio 2014
    '----------------------------------------------------------------------------------

    Private Function Temp3P(TT As TipoTriangolo, ByRef P As TipoPuntoFire) As Boolean

       Dim s As Double
       Dim t As Double
       Dim denom As Double
       
       denom = (TT.a.X * (TT.c.Y - TT.b.Y) + TT.b.X * (TT.a.Y - TT.c.Y) + TT.c.X * (TT.b.Y - TT.a.Y))
       If denom = 0# Then
           P.t = 0#
           Temp3P = False
           Exit Function
       End If
       
       s = -(P.X * (TT.c.Y - TT.a.Y) + TT.a.X * (P.Y - TT.c.Y) + TT.c.X * (TT.a.Y - P.Y)) / denom
       t = (P.X * (TT.b.Y - TT.a.Y) + TT.a.X * (P.Y - TT.b.Y) + TT.b.X * (TT.a.Y - P.Y)) / denom
       
       If s >= 0# And t >= 0# And (s + t) < 1# Then
           P.t = (1# - s - t) * TT.a.t + s * TT.b.t + t * TT.c.t
           Temp3P = True
           Exit Function
       Else
           Temp3P = False
           Exit Function
       End If

    End Function

    'Determina le coordinate e la temperatura in corrispondenza del baricentro del triangolo
    Private Function BaricTria(TT As TipoTriangolo) As TipoPuntoFire
       BaricTria.X = (TT.A.X + TT.b.X + TT.c.X) / 3
       BaricTria.Y = (TT.A.Y + TT.b.Y + TT.c.Y) / 3
       BaricTria.T = (TT.A.T + TT.b.T + TT.c.T) / 3
    End Function


    Definiamo alcune funzioni utili alla interpolazione delle temperature negli elementi quadrangolari:

    CODICE
    'Determina le coordinate e la temperatura in corrispondenza del baricentro del quadrangolo
    Private Function BaricQuad(QQ As TipoQuadrangolo) As TipoPuntoFire
    'Sia ABCD un generico quadrilatero; convesso o concavo che sia è sempre
    'possibile dividere ABCD in due triangoli che indicherò con T1 e T2.
    'Essendo note le coordinate dei vertici (in un opportuno sistema di riferimento fissato)
    'A,B,C,D, si ricavano le coordinate di G1, baricentro geometrico di T1, e le coordinate di G2, baricentro geometrico di T2.
    '(Basta infatti trovare le equazioni delle mediane, rette per due punti, e intersecarle).
    'Una volta che si hanno le coordinate di G1e G2, basta fare il baricentro tra i due baricentri;
    'attenzione al fatto che adesso questi due baricentri "pesano" diversamente, in quanto sono baricentri di triangoli di aree diverse.
    'Vanno quindi determinate A, A1 e A2, ovvero le aree, rispettivamente, di ABCD, T1 e T2.
    '(con la formula di Erone uno trova A1 ed A2 in funzione delle sole coordinate di A,B,C,D, e quindi A=A1+A2).
    'Finalmente si ha, denotando con G il baricentro di ABCD,
    Dim TT1 As TipoTriangolo
    Dim g1 As TipoPuntoFire
    Dim A1 As Double

    Dim TT2 As TipoTriangolo
    Dim g2 As TipoPuntoFire
    Dim A2 As Double

    Dim g As TipoPuntoFire
    Dim A As Double

    'si da per scontato che il quadrilatero non sia convesso
    TT1.A = QQ.A
    TT1.b = QQ.b
    TT1.c = QQ.c
    A1 = AreaTria(TT1)
    g1 = BaricTria(TT1)

    TT2.A = QQ.c
    TT2.b = QQ.d
    TT2.c = QQ.A
    A2 = AreaTria(TT2)
    g2 = BaricTria(TT2)

    A = A1 + A2

    g.X = (A1 * g1.X + A2 * g2.X) / A
    g.Y = (A1 * g1.Y + A2 * g2.Y) / A

    'verifica che il punto sia interno al quadrangolo
    If IsPointInsideQuad(QQ, g) = True Then
       'cacolo la temperatura del punto G
       If Temp4P(QQ, g) = False Then g.T = 0#
    Else
       g.T = 0#
    End If

    BaricQuad = g

    End Function

    'Area di un triangolo con la formula di Erone
    'S=sqr(p*(p-a)*(p-b)*(p-c)) dove p=(a+b+c)/2
    Private Function AreaTria(TT As TipoTriangolo) As Double
       Dim P As Double
       Dim lAB As Double, lBC As Double, lCA As Double
       lAB = Distanza12(TT.A.X, TT.A.Y, TT.b.X, TT.b.Y)
       lBC = Distanza12(TT.b.X, TT.b.Y, TT.c.X, TT.c.Y)
       lCA = Distanza12(TT.c.X, TT.c.Y, TT.A.X, TT.A.Y)
       P = (lAB + lBC + lCA) / 2
       AreaTria = Sqr(P * (P - lAB) * (P - lBC) * (P - lCA))
    End Function

    '------------------------------------------------------------------------------------
    ' Funzione Temp4P() determina la temperatura del punto P(x,y) passato come riferimento
    ' sul piano determinato dai quattro punti A, B, C e D di temperatura nota
    ' Parametri:
    ' - quattro punti strutturati come da struttura TipoPuntoFire
    ' - il punto P di cui sono note le coordinate planimetriche (x,y) passato byref
    '
    ' Risultato:
    ' - valore Falso nel caso in cui non è stato possibile determinare la temperatura
    ' - Valore Vero nel caso in cui è stato possibile determinare la temperatura.
    ' La temperatura determinata si trova come temperatura T del punto passato come riferimento.
    '
    ' Tex - Luglio 2014
    '----------------------------------------------------------------------------------

    Private Function Temp4P(QQ As TipoQuadrangolo, ByRef P As TipoPuntoFire) As Boolean

    Dim M(1 To 4, 1 To 4) As Double
    Dim b(1 To 4) As Double

    M(1, 1) = QQ.A.X * QQ.A.Y
    M(1, 2) = QQ.A.X
    M(1, 3) = QQ.A.Y
    M(1, 4) = 1#
    b(1) = QQ.A.T

    M(2, 1) = QQ.b.X * QQ.b.Y
    M(2, 2) = QQ.b.X
    M(2, 3) = QQ.b.Y
    M(2, 4) = 1#
    b(2) = QQ.b.T

    M(3, 1) = QQ.c.X * QQ.c.Y
    M(3, 2) = QQ.c.X
    M(3, 3) = QQ.c.Y
    M(3, 4) = 1#
    b(3) = QQ.c.T

    M(4, 1) = QQ.d.X * QQ.d.Y
    M(4, 2) = QQ.d.X
    M(4, 3) = QQ.d.Y
    M(4, 4) = 1#
    b(4) = QQ.d.T

    Call gaussEliminaz(M, b, 4)

    P.T = b(1) * P.X * P.Y + b(2) * P.X + b(3) * P.Y + b(4)

    Temp4P = True

    End Function



    '----------------------------------------------------------------
    ' la sub gaussEliminaz() risolve un sistema lineare nxn
    '
    ' dati di input:
    ' A(): matrice nxn dei coefficienti, 1-based
    ' B(): vettore dei termini noti di dimensione nx1, 1-based
    ' B(): vettore delle soluzioni di dimensione nx1, 1-based
    '
    ' La procedura altera le matrici A() e B() passate
    ' deposita nel vettore B() la soluzione del sistema
    '
    '----------------------------------------------------------------

    Private Sub gaussEliminaz(A() As Double, b() As Double, n As Integer)

    Dim i As Integer
    Dim ii As Integer
    Dim j As Integer
    Dim k As Integer
    Dim c As Double

    'Eliminazione in avanti
    For k = 1 To n - 1
       For i = k + 1 To n
           c = A(i, k) / A(k, k)
           For j = k + 1 To n
               A(i, j) = A(i, j) - c * A(k, j)
           Next j
           b(i) = b(i) - c * b(k)
       Next i
    Next k

    'Sostituizione all'indietro
    b(n) = b(n) / A(n, n)
    For ii = 1 To n - 1
       i = n - ii
       c = 1 / A(i, i): b(i) = c * b(i)
       For k = i + 1 To n
           b(i) = b(i) - c * A(i, k) * b(k)
       Next k
    Next ii
       
    End Sub

    'Verifica se il punto P è interno al triangolo
    Private Function IsPointInsideTria(TT As TipoTriangolo, P As TipoPuntoFire) As Boolean
       Dim c As Double
       c = TT.A.X * TT.b.Y - TT.b.X * TT.A.Y + TT.A.Y * TT.c.X - TT.c.Y * TT.A.X + TT.b.X * TT.c.Y - TT.c.X * TT.b.Y
       If c = 0# Then IsPointInsideTria = False Else IsPointInsideTria = True
    End Function

    'Verifica se il punto P è interno al quadrangolo
    Private Function IsPointInsideQuad(QQ As TipoQuadrangolo, P As TipoPuntoFire) As Boolean
       Dim Ak As Double, Bk As Double, Ck As Double, Dk As Double
       Ak = SegnoProdottoVettore3P(QQ.A, QQ.b, P)
       Bk = SegnoProdottoVettore3P(QQ.b, QQ.c, P)
       Ck = SegnoProdottoVettore3P(QQ.c, QQ.d, P)
       Dk = SegnoProdottoVettore3P(QQ.d, QQ.A, P)
       IsPointInsideQuad = (Ak = Bk) And (Bk = Ck) And (Ck = Dk)
    End Function


    Edited by texitaliano64 - 21/8/2014, 08:28
     
    Top
    .
  11.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    CITAZIONE (zax2013 @ 6/8/2014, 10:12) 
    Adesso però la domanda è..........ma se le deformazioni limite si modificano al variare della temperatura........di quale temperatura stiamo parlando?
    Io non penso al singolo triangolino della mesh. Perchè vorrebbe dire che i triangolini più caldi potrebbero andare oltre il limite di deformazione di quelli più freddi.
    In sintesi, con questo diagramma deformazioni-tensioni 'cangiante' io vedo difficoltà a definire le deformazioni di rottura ad un certo periodo t di tempo.

    Io penso che l'analisi di resistenza della sezione non venga fatta al variare del tempo ma ad un tempo prefissato o, meglio, ad una temperatura prefissata raggiunta al contorno.
    A monte dell'analisi di resistenza analitica della sezione ci dovrebbe stare tutta l'analisi del carico d'incendio e della temperatura raggiunta per prefissato grado R.

    Partiamo quindi, a mo di esempio, da un valore della temperatura nella superficie esterna della sezione o in parti di essa, per esempio 500°C. Questa rappresenterebbe, a mio ignorante parere, la condizione al contorno per l'analisi termica della sezione e partendo da questa condizione si ricaverebbero le temperature raggiunte in tutti i punti interni della sezione.
    Avuta la temperatura in un generico punto si adotta il legame tenso-deformativo relativo a questa temperatura.
     
    Top
    .
  12.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    3,345
    Reputation
    +213

    Status
    Offline
    CITAZIONE (texitaliano64 @ 5/8/2014, 17:29) 
    PROCEDURA DI CALCOLO DELLA RESISTENZA DI MANUFATTI IN CA e CAP ESPOSTI AL FUOCO SECONDO LA CURVA DI INCENDIO ISO834.

    Per il seguente post mi rifaccio alla norma:

    CITAZIONE
    EN 1992-1-2 (2004) (English): Eurocode 2: Design of concrete
    structures - Part 1-2: General rules - Structural fire
    design [Authority: The European Union Per Regulation
    305/2011, Directive 98/34/EC, Directive 2004/18/EC]

    considerato che vi sono più partecipanti alla discussione, tanto per evitare equivoci derivanti dall'uso di norme differenti, state tutti usando la norma EN 1992-1-2:2005 in italiano, quella che sulla prima pagina riporta la dicitura: "corretta il 25 settembre 2008"?
     
    Top
    .
  13.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Io si. Confermo.

    Aggiungo: Versione Italiana del giugno 2007

    E' l'ultima?
     
    Top
    .
  14.     +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    766
    Reputation
    +23

    Status
    Offline
    Io ho come riferimento la EN1992-1-2 inglese con incorporate le correzioni di luglio 2008.

    Edited by texitaliano64 - 6/8/2014, 13:08
     
    Top
    .
  15.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    CITAZIONE (afazio @ 6/8/2014, 10:27) 
    Avuta la temperatura in un generico punto si adotta il legame tenso-deformativo relativo a questa temperatura.

    Ma è qui che mi pare ci sia qualcosa che non va.
    L'ipotesi di sezione
    piana continua a mantenersi, qualsiasi sia la temperatura raggiunta nella sezione.
    Ora, per determinare la deformazione del baricentro del generico triangolino io ho necessità di conoscere la deformazione massima sul bordo superiore della trave, oppure sul bordo inferiore.
    Come puoi vedere dalla tabella che ho pubblicato, a temperature maggiori corrispondono deformazioni ultime maggiori.
    Quindi per triangoli più interni nella trave, dotati di temperature minori, potrebbe darsi il caso che la deformazione determinata con i parametri validi per i punti a maggiore temperatura (immagina una trave soggetta a fuoco da tutti i lati, e quindi ha temperature alte nel bordo superiore più compresso), sia maggiore di quanto la temperatura in quel punto permetta.

    Quindi prima di definire una deformazione limite, bisogna 'spazzolare' tutti i triangoli alla ricerca della configurazione deformativa di rottura compatibile con tutti i triangoli che si trovano, ognuno, a differenti temperature.
    Poi, e successivamente, anche io ignorante in materia, una volta fatto questo, per determinare il deltaN di ogni singolo triangolo si procederà con il diagramma tensioni-deformazioni 'personalizzato' per la temperatura raggiunta dal singolo triangolo.
     
    Top
    .
137 replies since 5/8/2014, 16:29   10514 views
  Share  
.