Il Bar dell'Ingegneria

I colori che contano

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

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    CITAZIONE (reversi @ 12/10/2022, 17:00) 
    visto che avevo già implementato un bel po' di formule (anche mediante udf in visual basic) riguardo alla diffusione delle tensioni nel terreno, si potrebbe applicare questa idea al file qui: #entry545783439

    Se il lavoro è già fatto, tanto di guadagnato. Adesso scarico il file e in questo fine settimana ci guardo dentro.
    Grazie!
     
    Top
    .
  2.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Possiamo però applicare la doppia simmetria.
    La tensione indotta in punti simmetrici rispetto agli assi del rettangolo di carico è uguale. Basta pertanto, applicando le formule della simmetria, trasformare le coordinate del punto di indagine nelle simmetriche in modo tale da far ricadere il punto nel primo quadrante di simmetria.
    In questo modo i casi da esaminare si riducono drasticamente.
    Al solito, queste sono idee che mi balenano tra una fumata e l'altra. Ci studierò sopra col tempo
    Attached Image
    japp03

     
    Top
    .
  3.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    E possiamo anche considerare la coesistenza di aree rettangolari di carico comunque disposte (con inclinazione e senza).
    Questo significa che nel frattempo mi sono fumato altra sigaretta.
    Attached Image
    japp04

     
    Top
    .
  4.     +1   +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    250
    Reputation
    +31

    Status
    Offline
    Ho provato ad implementare un po' di codice inerente al topic, traducendo parte del codice di afazio in PowerShell; l'unico effettivo vantaggio è che crea un file bitmap (anche se un po' troppo piccolo).
    Se lo volete provare (fatti salvi i dubbi che ho messo nel commento) mi raccomando aggiustate la cartella dove salverà il file.
    (nota: ho già scritto nel codice presente qui, come abilitare l'esecuzione di script powershell in windows).

    (nota2: ho corretto il codice postato perché avevo messo quello col bug, su cui sono impazzito da sabato...
    CODICE
    <#
    Ho preso il codice di afazio da https://bar-ingegneria.forumfree.it/?t=79336104&st=15#entry660882152

    ho modificato leggermente il codice perché non mi tornava il risultato...

    ci sono alcuni problemi:
    1) funziona solo per carichi rettangolari...
    2) il risultato è validato solo ad occhio confrontandolo con https://bar-ingegneria.forumfree.it/?t=79336104&st=15#entry660878737
    3) non ho ancora ben capito come fare funzioni in PowerShell che ritornino un valore, quindi ho usato un trucchetto letto su internet
       per cui a funzione non dà un return e uso una variabile globale per memorizzare il valore di return.

    Quindi, per quanto esposto sopra, il codice deve essere sottoposto a revisione critica per la verifica effettiva del funzionamento.

    #>

    cls
    [System.Double]$script:dReturn = 0; #variabile globale dello script
    function sigmaZ_q_trap {
       # definisco parametri
       param(
           [Double]$x,
           [Double]$z,
           [Double]$xi,
           [Double]$xf,
           [Double]$qi,
           [Double]$qf,
           [Double]$zo
           )
       # inizio funzione
       [System.Double] $alFa;
       [System.Double] $bEta1;
       [System.Double] $betA2;
       #[Math]::PI
       if($z -gt $zo) {
           $bEta1 = [Math]::Atan(($x-$xf)/($z-$zo));
           $betA2 = [Math]::Atan(($x-$xi)/($z-$zo));
           $alFa =  $betA2 - $bEta1;
           #parte rettangolare
           $script:dReturn = ($qi * ($alFa + [Math]::Sin($alFa) * [Math]::Cos($alFa + 2 * $bEta1)) / [Math]::PI)
           Return $null
           #parte triangolare
           #$script:dReturn = (($qf - $qi) * (($x - $xi) * $alFa / ($xf - $xi) - 0.5 * [Math]::Sin(2 * $bEta1)) / [Math]::PI)
           #Return $null
           }
       else {
           #vedere meglio cosa accade quando siamo in scavo
           $script:dReturn = (0)
           Return $null
           }
       }
    [System.Double] $xiCoord = 10;
    [System.Double] $xfCoord = 20;
    [System.Double] $qIni = 200;
    [System.Double] $qFin = 200;
    [System.Double] $zetao = 0;
    [System.Double] $dCalc = 0;

    #sigmaZ_q_trap -x (0) -z (1/4) -xi $xiCoord -xf $xfCoord -qi $qIni -qf $qFin -zo $zetao > $null
    #$script:dReturn

    #<#
    [System.String] $ImageFilePath = "C:\Users\Administrator\Pictures\";
    $null=[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
    $bmp = New-Object System.Drawing.Bitmap(120, 120)

    for ([System.Double]$i = 1; $i -le (120); $i++)
    {
      for ([System.Double]$j = 1; $j -le 120; $j++)
      {
           sigmaZ_q_trap -x ($i/4) -z ($j/4) -xi $xiCoord -xf $xfCoord -qi $qIni -qf $qFin -zo $zetao > $null
           #$script:dReturn
           #[System.Int16]($script:dReturn/(($qIni,$qFin| Measure -Max).Maximum)*255) # normalizzo in
           $bmp.SetPixel($i-1, $j-1, [System.Drawing.Color]::FromArgb(255, [System.Int16](255-($script:dReturn/($qIni,$qFin| Measure -Max).Maximum)*255),0))
           #$bmp.SetPixel($i+($xiCoord*4)-1, $j-1, [System.Drawing.Color]::FromArgb(255, [System.Int16]($script:dReturn),0))
       }
    }
    $bmp.Save($ImageFilePath + "carico.bmp")
    #$bmp.Save($ImageFilePath + "bmp.jpeg", [System.Drawing.Imaging.ImageFormat]::Jpeg);#posso convertire in JPEG
    $bmp.Dispose(); #Rilascia tutte le risorse usate da questa classe Image.
    ii ($ImageFilePath + "carico.bmp")
    #>


    Edited by TDoes - 16/10/2022, 16:15
    Attached Image
    file risultato dello script al 400%

     
    Top
    .
33 replies since 7/10/2022, 12:39   1908 views
  Share  
.