Il Bar dell'Ingegneria

Calcolo Paratie

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

    User deleted


    paratiathuumb
    Salve,
    sono a condividere un file xls per il calcolo di paratie.
    La stesura del codice in VBA è la traduzione dei listati presenti nel testo "Fondazioni progetto e analisi" di Joseph E. Bowles.

    Il codice è stato testato con l'esempio 13.1 a pag. 652.

    Ulteriori indicazioni sull'utilizzo del file si trovano (ovviamente!!!) nel capitolo 13 del suddetto testo e nella parte introduttiva del codice VBA.

    Il file è stato realizzato anni fa e mai testato seriamente (non me ne volete)

    Questo è il link per il download: https://www.dropbox.com/s/dox74tc40cpttcu/Paratia.xls

    Saluti

    IngB

    Edited by IngB - 26/3/2013, 09:51
     
    Top
    .
  2.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    26/11 11:32 afazio: vedo la presenza di ingB, vorrei chiedergli se in qualche modo puo' inserire nel suo foglio di calcolo delle paratie col metodo proposto in quel volume
    26/11 11:33 afazio: dicevo, se può inserire il significato dei termini in input letti dal codice
    26/11 11:33 afazio: io non saprei dove mettere mani
     
    Top
    .
  3. IngB
        +1   -1
     
    .

    User deleted


    scusatemi per la poca presenza (consegna lavoro imminente),
    allego due file PDF con teoria (tratta da Bowles) e listato originale relativi al foglio di calcolo.

    https://www.dropbox.com/s/4cm2runsizmx9op/bowles.pdf

    https://www.dropbox.com/s/thddul8dymxydop/Listato%20B9.pdf

    spero siano utili.

    Saluti
     
    Top
    .
  4.     +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    443
    Reputation
    +27

    Status
    Offline
    Leggendo questo post mi è venuto in mente che tanti anni fa la Softing proponeva una sua applicazione del metodo di Bowles all'interno del programma MacSap (oggi Nolian).
    Tale applicazione non viene più allegata al software, ma la si potrebbe ricostruire facilmente con la demo del software attuale che gestisce 300 nodi ed ha anche la possibilità di inserire elementi non lineari.
    Per scaricare il software basta iscriversi al sito ed accedere alla sezione Downloads
    www.softing.it/

    Potrebbe essere interessante ragionare insieme sul metodo di Bowles e sulle paratie per arrivare a formulare una sorta di manualetto applicativo.
    In questo momento lancio solo l'idea perchè ho poco tempo da dedicare, ma aspetto eventuali adesioni a tale proposta da sviluppare in un futuro non troppo remoto.

    Willy
     
    Top
    .
  5.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Willy, l'argomento è certamente interessante e meritevole di approfondimento.
    Chissà che non si riesca a fare qualcosa.
    Intanto personalmente non ho voglia di iscrivermi al sito della softing. Esiste qualche altro modo per ottenere ?....
     
    Top
    .
  6.     +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    443
    Reputation
    +27

    Status
    Offline
    CITAZIONE (afazio @ 15/3/2013, 13:16) 
    Willy, l'argomento è certamente interessante e meritevole di approfondimento.
    Chissà che non si riesca a fare qualcosa.
    Intanto personalmente non ho voglia di iscrivermi al sito della softing. Esiste qualche altro modo per ottenere ?....

    Qualche anima buona che ti invia l'installer via mail la puoi sempre trovare .... ;)

    Comunque Nolian è quello che conosco.
    Qualsiasi altro fem di pari caratteristiche andrebbe bene
     
    Top
    .
  7.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    CITAZIONE (ingwilly @ 15/3/2013, 12:51) 
    Leggendo questo post mi è venuto in mente che tanti anni fa la Softing proponeva una sua applicazione del metodo di Bowles all'interno del programma MacSap (oggi Nolian).
    Tale applicazione non viene più allegata al software, ma la si potrebbe ricostruire facilmente con la demo del software attuale che gestisce 300 nodi ed ha anche la possibilità di inserire elementi non lineari.
    Per scaricare il software basta iscriversi al sito ed accedere alla sezione Downloads
    www.softing.it/

    Potrebbe essere interessante ragionare insieme sul metodo di Bowles e sulle paratie per arrivare a formulare una sorta di manualetto applicativo.
    In questo momento lancio solo l'idea perchè ho poco tempo da dedicare, ma aspetto eventuali adesioni a tale proposta da sviluppare in un futuro non troppo remoto.

    Willy

    Willy,
    penso che della demo di Nolian non me ne faccio nulla per lo scopo che ci si prefigge. Occorrerebbe avere, invece, il documento che illustra il metodo di Bowles. Avendo quello penso che si possa iniziare a studiare come impostare la questione e quindi iniziare a scrivere qualcosa.
    NAturalmente quel che faremo, se lo faremo, non deve ricorrere ad alcun FEM esterno, ma dovrà risolvere il sistema (se ce ne sarà uno) da se, magari sfruttando qualche libreria di funzioni matematiche o funzioni di manipolazione di matrici numeriche.

    Ho gia scaricato il documento messo a disposizione da ingB in uno dei post precedenti. Devo stamparlo per evitare il torcicollo.
     
    Top
    .
  8. g.iaria
        +1   -1
     
    .

    User deleted


    Intanto i miei complimenti ad IngB per l'utilissima trasposizione Fortran --> VBA del magnifico codice di Bowles.
    Il codice di Bowles è un f.e.m. estrememente efficiente che consente anche il calcolo di travi su molle elastiche "alla Winkler".
    Tempo fa mi ci ero dedicato anch'io, ma la difficoltà di lettura del Fortran mi ha fatto quasi subito desistere.
    Se il codice così tradotto risulta funzionante, direi che IngB ha già fatto gran parte del lavoro che ci si prefigge di fare in questo thread, ed a questo punto ognuno può dare la veste grafica del foglio excel che più gli aggrada ai fini dell'immissione dei dati di input necessari per far girare le routines.
     
    Top
    .
  9.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    CITAZIONE (g.iaria @ 25/3/2013, 10:54) 
    Intanto i miei complimenti ad IngB per l'utilissima trasposizione Fortran --> VBA del magnifico codice di Bowles.
    Il codice di Bowles è un f.e.m. estrememente efficiente che consente anche il calcolo di travi su molle elastiche "alla Winkler".
    Tempo fa mi ci ero dedicato anch'io, ma la difficoltà di lettura del Fortran mi ha fatto quasi subito desistere.
    Se il codice così tradotto risulta funzionante, direi che IngB ha già fatto gran parte del lavoro che ci si prefigge di fare in questo thread, ed a questo punto ognuno può dare la veste grafica del foglio excel che più gli aggrada ai fini dell'immissione dei dati di input necessari per far girare le routines.

    Ieri sera pensavo anche io di partire da quanto già fatto da ingB.

    Inizi tu a vestirlo?
     
    Top
    .
  10. g.iaria
        +1   -1
     
    .

    User deleted


    Prima di vestirlo devo capire, tempo permettendo, come è fatto dentro perchè come ho detto, la mia difficoltà di lettura del Fortran non mi ha mai consentito di farlo prima in maniera approfondita.
     
    Top
    .
  11.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Sto impostando una pagina generale per l'input con annesso diagramma che disegna la geometria della paratia

    Ho visto che il file di ingB ha delegato tutto l'input nelle prime righe del foglio "Dati_input" da cui il programma poi preleva i dati

    Mi sono prefisso quanto segue:

    - a - dai dati inseriti nei fogli che comporremo e che costituiscono "l'abito", si prelevano quelli necessari per riempire le righe predisposte nel foglio di ingB e che costituiscono l'input del programma

    - b - rinominare con "nomi di range dinamici " le righe predisposte da ingB per evitare che con successive modifiche che potrebbero derivare da funzionalità aggiunte il programma vada in errore.

    - c - riorganizzare l'output in maniera intellegibile anche con ricorso a tabelle ordinate e sopratutto diagrammi.

    - d - possibilitadi far "girare" il programma in condizioni di carico differenti (per esempio : calcolo in condizioni statiche e calcolo in condizioni sismiche...)


    Naturalmente le modifiche di cui al punto (b) si ripercuoteranno all'interno del codice che pertanto dovrà essere rivisto in funzione dei nomi che attribuisco ai range.
     
    Top
    .
  12.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Ecco un primo abito da cui poter partire

    par001

    qui potete scaricare il file xls formato 2003 dove è riportato lo schema iniziale.

    https://www.box.com/s/clm0pfdn0lha8t9cv824

    Inoltre è contenuto il codice che ha tradotto ingB con le prime mie modifiche (utilizzo di nomi per i range)

    Ho anche iniziato a scrivere alcune funzioni per il calcolo di:

    - coefficiente alfa previsto dal DM2008 per la determinazione di Kh
    - coefficienti SS ed ST come da corrispondenti tabelle da DM2008 in funzione della categoria di suolo e della categoria topografica
    - coefficienti di spinta attiva e passiva in condizioni statiche ed in condizioni sismiche (non so per adesso se serviranno entrambi)

    Naturalmente chiunque puo' intervenire con suggerimenti, modifiche, correzioni, apporto di codice e di materiale.
     
    Top
    .
  13.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Inizio a riportare le funzioni già scritte (per la verità le avevo gia scritte per altri scopi)

    La prima determina il fattore alfa traducendo il grafico riportato nel DM2008

    CODICE
    Public Function alFa(cat_sol As String, H As Double) As Variant

    Select Case cat_sol
       Case "A"
           alFa = 1
       Case "B"
           alFa = 1
          If H > 16 Then
               alFa = 1 - 0.38 / 34 * (H - 16)
               If alFa < 0.3 Then alFa = 0.3
          End If
       Case "C"
           alFa = 1
          If H > 8 Then
               alFa = 1 - 0.7 / 32 * (H - 8)
               If alFa < 0.3 Then alFa = 0.3
          End If
     
       Case "D"
           alFa = 1
          If H > 4 Then
               alFa = 1 - 0.7 / 16 * (H - 4)
               If alFa < 0.3 Then alFa = 0.3
          End If
       Case Else
           alFa = "N.B."
    End Select

    End Function


    Avrei voluto scrivere anche la funzione beta che traduce l'altro grafico riportato sempre nel DM2008. Ma dai primi tentativi non sono riuscito a trovare una funzione interpolante. Per adesso il fattore beta dovrà essere dato in input attraverso lettura del diagramma ma non escludo di poter "leggere" il diagramma come fatto per quello di Terzaghi, riportare i valori letti in forma tabellare e quindi interpolare da tabella.
     
    Top
    .
  14.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    A seguire le due funzioni che determinano i fattori SS ed ST.

    CODICE
    Public Function S_s(cat_sol As String, F0 As Double, ag_g As Double) As Variant

    Select Case cat_sol
       Case "A"
           S_s = 1
       Case "B"
           S_s = Max(1, Min(1.2, 1.4 - 0.4 * F0 * ag_g))
       Case "C"
           S_s = Max(1, Min(1.5, 1.7 - 0.6 * F0 * ag_g))
       Case "D"
           S_s = Max(0.9, Min(1.8, 2.4 - 1.5 * F0 * ag_g))
       Case "E"
           S_s = Max(1#, Min(1.6, 2# - 1.1 * F0 * ag_g))
       Case Else
           S_s = "N.B."
    End Select

    End Function
    '--------------------------------------
    Public Function S_T(cat_topo As String) As Variant

    Select Case cat_topo
       Case "T1"
           S_T = 1#
       Case "T2"
           S_T = 1.2
       Case "T3"
           S_T = 1.2
       Case "T4"
           S_T = 1.4

       Case Else
           S_T = "N.B."
    End Select

    End Function


    Coefficiente di spinta attiva in condizioni statiche

    CODICE
    Public Function Ka(fi As Double, alFa As Double, beta As Double, delta As Double, gammaFi As Double) As Variant
    ' La funzione calcola il coefficiente di spinta attiva in fase statica
    ' parametri in input:
    ' fi= angolo di attrito interno in gradi
    ' alfa: inclinazione del terrapieno rispetto all'orizzontale in gradi
    ' beta= inclinazione del paramento interno del muro rispetto all'orizzontale (se verticale beta=90°)
    ' delta= inclinazione della spinta rispetto alla normale al paramento interno (positivo se verso l'alto)
    ' gammaFi= coefficiente parziale per il parametri del terreno secondo M1 o M2
    ' tutti gli angoli in input sono in gradi sessadecimali

    Pi = 4 * Atn(1)
    fi = fi * Pi / 180
    fi = Atn(Tan(fi) / gammaFi)
    alFa = alFa * Pi / 180
    beta = beta * Pi / 180
    delta = delta * Pi / 180

    K1 = (Sin(beta + fi)) ^ 2
    k2 = (Sin(beta)) ^ 2 * Sin(beta - delta) * (1 + ((Sin(fi + delta) * Sin(fi - alFa)) / (Sin(beta - delta) * Sin(beta + alFa))) ^ 0.5) ^ 2

    Ka = K1 / k2

    End Function


    ... ed in condizioni sismiche

    CODICE
    Public Function Kas(fi As Double, alFa As Double, beta As Double, delta As Double, _
                       kh As Double, kv As Double, gammaFi As Double, flag As Integer) As Variant
    'La funzione calcola il coefficiente di spinta attiva per la determinazione della
    ' spinta del terreno in fase sismica applicando i coefficiemti del DM2008
    ' parametri in input:
    ' fi= angolo di attrito interno in gradi
    ' alfa: inclinazione del terrapieno rispetto all'orizzontale in gradi
    ' beta= inclinazione del paramento interno del muro rispetto all'orizzontale (se verticale beta=90°)
    ' delta= inclinazione della spinta rispetto alla normale al paramento interno (positivo se verso l'alto)
    ' kh, kv =coefficienti sismici orizzontale e verticale
    ' gammaFi= coefficiente parziale per il parametri del terreno secondo M1 o M2
    ' flag= indicatore del tipo di sisma verticale che assume i seguenti valori
    ' sisma verticale verso il basso: flag=1
    ' sisma verticale verso l'alto: flag=2
    ' se a flag si attribuisce valore diverso da 1 o 2 si assume pari ad 1
    ' tutti gli angoli in input sono in gradi sessadecimali

    Pi = 4 * Atn(1)
    fi = fi * Pi / 180
    fi = Atn(Tan(fi) / gammaFi)
    alFa = alFa * Pi / 180
    beta = beta * Pi / 180
    delta = delta * Pi / 180

    Select Case flag
    Case Is = 1 'sisma verticale verso il basso
       Teta = Atn(kh / (1 - kv))
    Case Is = 2 'sisma verticale verso l'alto
       Teta = Atn(kh / (1 + kv))
    Case Else
       Teta = Atn(kh / (1 - kv))
    End Select

    K1 = (Sin(beta + fi - Teta)) ^ 2
    k2 = Cos(Teta) * (Sin(beta)) ^ 2 * Sin(beta - delta - Teta)
    k3 = 1
    If alFa <= fi - Teta Then
    k3 = (1 + ((Sin(fi + delta) * Sin(fi - alFa - Teta)) / (Sin(beta - delta - Teta) * Sin(beta + alFa))) ^ 0.5) ^ 2
    End If

    Kas = K1 / (k2 * k3)

    End Function
     
    Top
    .
  15.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    3,345
    Reputation
    +213

    Status
    Offline
    CITAZIONE (afazio @ 25/3/2013, 21:16) 
    ... ed in condizioni sismiche
    CODICE
    Select Case flag
    Case Is = 1 'sisma verticale verso il basso
       Teta = Atn(kh / (1 - kv))
    Case Is = 2 'sisma verticale verso l'alto
       Teta = Atn(kh / (1 + kv))
    Case Else
       Teta = Atn(kh / (1 - kv))
    End Select

    attenzione ai segni:
    case 1: il segno davanti a kv deve essere positivo (il sisma va ad incrementare il peso proprio);
    case 2: il segno davanti a kv deve essere negativo (il sisma va a diminuire il peso proprio);
    case else: questo non lo capisco (se abbiamo già le due possibilità per il sisma verticale, quale altra possibilità rappresenta?).
     
    Top
    .
119 replies since 23/11/2012, 14:43   15201 views
  Share  
.