Wir modellieren Prozesse in OpenFOAM und zeigen die Ergebnisse im Web an

In diesem Artikel werde ich Ihnen erklären, wie Sie Ihr Paket einfach, schnell und kostengünstig zusammenstellen können, um Probleme der Fluiddynamik in der Cloud zu modellieren. Ich werde dies mit einer Kombination aus zwei Werkzeugen tun: dem numerischen Simulator für die OpenFOAM-Kontinuumsmechanik und dem ParaView-Toolkit zur Visualisierung von Datensätzen.







Ich bin ein gewöhnlicher Entwickler und kein Experte auf diesem wissenschaftlichen Gebiet. Ich habe mich dieser Art von Aufgaben zum ersten Mal im Rahmen des kürzlich abgehaltenen FIT-M 2020- Hackathons gestellt , bei dem ich das Glück hatte, als Mitorganisator und Mentor teilzunehmen. Die Erfahrung erschien mir interessant, insbesondere aufgrund der Möglichkeit, das Gebiet des Hochleistungsrechnens (englisches Hochleistungsrechnen) zu berühren, das häufig auf Supercomputern ausgeführt wird . Ich habe herausgefunden, wie Sie schnell den Start von Berechnungen auf einem Server in der Cloud einrichten und das Ergebnis direkt über den Browser anzeigen können, sogar von einem Tablet oder Telefon aus!







Es schien mir, dass es nicht so viele Materialien auf Russisch zum Thema Visualisierung von Ergebnissen im Web gibt, obwohl das Thema selbst sehr nützlich und interessant ist. Hoffentlich hilft diese Schritt-für-Schritt-Anleitung jemandem bei seinen sehr praktischen täglichen Aufgaben. Oder vielleicht wird es für jemanden der erste Schritt in ein neues und interessantes Gebiet der Wissenschaft.







Supercomputing-Zentrum von Barcelona - Centro Nacional de Supercomputación

Bild aus dem Barcelona Supercomputing Center







Haftungsausschluss



Ich habe mir die Aufgabe gestellt, die Möglichkeit eines schnellen Starts und einer Anpassung der Berechnungen aufzuzeigen, um einen Ausgangspunkt zu geben, aber keinesfalls eine vollwertige Webanwendung zu erstellen. Es wird weder über die mögliche Architektur solcher Lösungen noch über den vorgefertigten Quellcode gesprochen. Die Lösung liegt auf dem Knie, aber schnell.







Kurze Einführung



, . , , ? : , , .







: , ? , , , ?

, (, - ).







 (. Computational fluid dynamics — CFD). , .   — , OpenFOAM (Open-source Field Operation And Manipulation). , , . , , , , , .. .







Anwendung von CFDs zur Berechnung der Reduzierung von Schwankungen der transportierten Flüssigkeit

. CFD .









, , , , . , , , , : « ».







Ein Beispiel für ein Maschennetz und Zellen

. .







, , (. mesh). , , (. cells). . , ( ). , . , , .







, :







  1. . , , , ;
  2. . , , (, , , , . .), ;
  3. (. postprocessing). , .
  4. . , , / , .


, . , (, . CAD). , .







, .









OpenFOAM — open-source , . , . : (. CPU) (. RAM). (. GPU) , .







. - . motorBike tutorial: 3D- . ( , ).







vCPU. ., Amazon, Microsoft, IBM, ..







  1. , .







  2. , SSH . Linux powershell/cmd Windows 10 :







    $ ssh-keygen -t rsa -b 2048
          
          





    . <>.pub, .







  3. , , : :









  4. ( , ) . :







    • 6 vCPU ( , tutorial-),
    • 12
    • 10 SSD .
    • SSH , .
    • , "" , . , .
    • , "team01". " "


  5. , , "Running".











. .







OpenFOAM



  1. SSH , (Linux) powershell/cmd (Windows) :







    $ ssh -i <_> <_>@<_ip_>
          
          





    , .







  2. , , OpenFOAM:







    $ sudo sh -c "wget -O - https://dl.openfoam.org/gpg.key | apt-key add -"
    $ sudo add-apt-repository http://dl.openfoam.org/ubuntu
    $ sudo apt-get update
    $ sudo apt-get -y install openfoam8
          
          





    , .







  3. . vi:







    $ vi ~/.bashrc
          
          





    • , i
    • , : source /opt/openfoam8/etc/bashrc
    • x!


  4. SSH







    $ exit
          
          





  5. Bash:







    $ simpleFoam -help
          
          





    , OpenFOAM.











, , /opt/openfoam8/tutorials/incompressible/simpleFoam/







  1. :







    $ cd $HOME
    $ sudo mkdir -p $FOAM_RUN
          
          











  2. $ cd $FOAM_RUN
    $ sudo cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/motorBike/ .
    $ sudo chmod -R a+rwx motorBike
    $ cd motorBike
          
          





  3. , :







    $ ./Allrun
          
          





    , . output:







    team01@team01:~/OpenFOAM/team01-8/run/motorBike$ ./Allrun
    Running surfaceFeatures on /home/team01/OpenFOAM/team01-8/run/motorBike
    Running blockMesh on /home/team01/OpenFOAM/team01-8/run/motorBike
    Running decomposePar on /home/team01/OpenFOAM/team01-8/run/motorBike
    Running snappyHexMesh in parallel on /home/team01/OpenFOAM/team01-8/run/motorBike using 6 processes
    Running patchSummary in parallel on /home/team01/OpenFOAM/team01-8/run/motorBike using 6 processes
    Running potentialFoam in parallel on /home/team01/OpenFOAM/team01-8/run/motorBike using 6 processes
    Running simpleFoam in parallel on /home/team01/OpenFOAM/team01-8/run/motorBike using 6 processes
    Running reconstructParMesh on /home/team01/OpenFOAM/team01-8/run/motorBike
    Running reconstructPar on /home/team01/OpenFOAM/team01-8/run/motorBike
          
          







Allrun. , OpenFOAM, . . , . , ( ):







$ blockMesh <--     
$ decomposePar -copyZero <--       
$ snappyHexMesh -overwrite <--      
$ potentialFoam <--      
$ reconstruct... <--     
      
      





, . , . , , .. , - Intel Core i7 (, Windows 10 WSL) , : /system/decomposeParDict







numberOfSubdomains simpleCoeffs:







numberOfSubdomains 6;  <--      

method          hierarchical;
// method          ptscotch;

simpleCoeffs
{
    n               (4 1 1);  <--     numberOfSubdomains 
    delta           0.001;
}
...
      
      







ParaView – open-source - . ParaView , . , ParaView , . OpenFOAM, . , ParaView , .







ParaView ( desktop), ( web).









. ParaView.







ParaView Visualization Toolkit (VTK), OpenGL MPI, . ParaView Server ( desktop web) . , Python QT. , :







  1. ParaView GUI, QT, . , Custom App, API .
  2. pvpython, Python.
  3. Paraview Catalyst, . , , - (, , , , ..).
  4. ParaViewWeb – web-framework, ParaView VTK Web- JavaScript. Three.js, VTK.js – VTK JavaScript.


, 3 OpenFOAM:







  1. desktop ParaView. , , , .







  2. desktop , X11-forwarding GUI . , "" "".







  3. - ParaView . web- , : Visualizer, LightViz, ArticViewer, SimPut HPCCloud.









. , . , web-, API ( multi-user). , Python . .







ParaViewWeb



, , . Kitware web- docker-. , , . , . ParaView.







ParaView, Python dockerhub. :







  • ParaViewWeb, Type = pvw
  • GPU , Rendering = osmesa
  • Major Python 2.x.x, Python = py2


, pvw-v5.7.1-osmesa-py2.







  1. Docker :







    $ sudo apt install docker.io
    $ export DEMO_HOST=84.201.179.235   <--  IP  
    $ export DEMO_PORT=9000 <--     "" 
    $ export IMAGE_TO_RUN=kitware/paraview:pvw-v5.7.1-osmesa-py2  <--   
          
          





  2. demo web-:







    $ mkdir -p demo
    $ cd demo
    $ curl -OL https://github.com/Kitware/paraviewweb-demo/archive/master.zip
    $ unzip master.zip
          
          





  3. web- :







    $ sudo docker pull kitware/paraview:pvw-v5.7.1-osmesa-py2
          
          





  4. : OpenFOAM:







    $ sudo docker run -v /home/team01/OpenFOAM/team01-8/demo/paraviewweb-demo-master/pvw:/pvw -v /home/team01/OpenFOAM/team01-8/run/motorBike:/data -p 0.0.0.0:9000:80 -e SERVER_NAME="${DEMO_HOST}:${DEMO_PORT}" -e PROTOCOL="ws" -ti ${IMAGE_TO_RUN}
          
          





  5. :

    http://84.201.179.235:9000











. web- ParaViewWeb.









Visualizer " ". , : .







OpenFOAM " ". ParaView , , ParaView, Open FOAM. desktop OpenFOAM:







$ paraFoam
      
      





: *.foam. , ParaView .







GUI , paraFoam "" QT.







, :







$ touch motorBike.foam
      
      





, OpenFOAM. ParaViewWeb.













.









. ParaViewWeb







: .

























. , . , . , . . .









, web-. Web - POST HTTP OpenFOAM , . -, .







. , Amazon (AWS Lambda):









.







,…



50 , . , , . , . , , — , .







Natürlich sind OpenFOAM und ParaView nicht die einzigen verfügbaren Softwarepakete für die technische Simulation. Es gibt bereits viele von ihnen. Aufgrund der Komplexität des Aufbaus studieren Spezialisten und Wissenschaftler, die an solchen Berechnungen beteiligt sind, in der Regel einfach ein Werkzeug und versuchen, es auf alle Aufgaben anzuwenden. Wenn wir die Werkzeuge zugänglicher machen, werden wir wahrscheinlich viel mehr Anwendungen der Modellierung in unserem Leben sehen, und dies kann sehr nützlich sein. Nicht umsonst gibt es ein Sprichwort: Siebenmal messen, einmal schneiden!








All Articles