Kami memodelkan proses di OpenFOAM dan menampilkan hasilnya di web

Pada artikel ini saya akan memberi tahu Anda bagaimana Anda dapat dengan mudah, cepat dan murah merakit paket Anda untuk memodelkan masalah dinamika fluida di cloud. Saya akan melakukan ini dengan menggunakan kombinasi dua alat: simulator numerik mekanika kontinum OpenFOAM dan toolkit visualisasi dataset ParaView.







Saya adalah pengembang biasa dan bukan ahli dalam bidang ilmiah ini. Saya menghadapi jenis tugas ini untuk pertama kalinya dalam rangka hackathon FIT-M 2020 yang baru-baru ini diadakan , di mana saya cukup beruntung dapat berpartisipasi sebagai co-organiser dan mentor. Pengalaman itu sepertinya menarik bagi saya, khususnya karena berkesempatan menyentuh bidang komputasi berperforma tinggi (English High Performance Computing) yang sering dijalankan di superkomputer . Saya menemukan bagaimana Anda dapat dengan cepat menyiapkan peluncuran penghitungan pada server di cloud dan melihat hasilnya langsung melalui browser, bahkan dari tablet atau ponsel!







Bagi saya, tampaknya tidak banyak materi dalam bahasa Rusia tentang topik memvisualisasikan hasil di web, meskipun topik itu sendiri cukup berguna dan menarik. Semoga panduan langkah demi langkah ini akan membantu seseorang dalam tugas sehari-hari yang sangat praktis. Atau mungkin seseorang akan menjadi langkah pertama ke bidang sains yang baru dan menarik.







Pusat Superkomputer Barcelona - Centro Nacional de Supercomputación

Gambar diambil dari Barcelona Supercomputing Center







Penolakan



Saya menetapkan sendiri tugas untuk menunjukkan kemungkinan permulaan cepat dan penyesuaian perhitungan, untuk memberikan titik awal, tetapi tidak berarti membangun aplikasi web yang lengkap. Tidak akan ada pembicaraan tentang arsitektur potensial dari solusi tersebut, atau kode sumber yang sudah jadi. Solusinya ada di lutut, tapi cepat.







Pengantar singkat



, . , , ? : , , .







: , ? , , , ?

, (, - ).







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







Penerapan CFD untuk menghitung pengurangan fluktuasi fluida yang diangkut

. CFD .









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







Contoh mesh mesh dan sel

. .







, , (. 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 , . , , . , . , , — , .







Tentu saja, OpenFOAM dan ParaView bukan satu-satunya paket perangkat lunak simulasi rekayasa yang tersedia. Jumlahnya sudah banyak. Tetapi karena kerumitan penyiapan, biasanya, spesialis dan ilmuwan yang terlibat dalam penghitungan semacam itu hanya mempelajari satu alat dan mencoba menerapkannya di semua tugas. Jika kita membuat alat lebih mudah diakses, maka saya pikir kita akan melihat lebih banyak aplikasi pemodelan dalam hidup kita, dan ini bisa sangat berguna. Bukan tanpa alasan ada pepatah: ukur tujuh kali, potong sekali!








All Articles