OpenFOAMでプロセスをモデル化し、結果をWebに表示します

この記事では、クラウド内の流体力学の問題をモデル化するために、パッケージを簡単、迅速、安価に組み立てる方法を説明します。これは、OpenFOAM連続体力学数値シミュレーターとParaViewデータセット視覚化ツールキットの2つのツールを組み合わせて使用​​します。







私は普通の開発者であり、この科学分野の専門家ではありません。最近開催されたハッカソンFIT- M2020の枠組みの中で、この種の課題に初めて直面しました。幸運にも、共同主催者およびメンターとして参加することができました。特に、スーパーコンピューターで実行されることが多い高性能コンピューティング(英語の高性能コンピューティング)の分野に触れる機会があったため、この経験は私にとって興味深いものに思えました。クラウド内のサーバーで計算の起動をすばやく設定し、タブレットや電話からでもブラウザから直接結果を確認する方法を見つけました。







ウェブ上で結果を視覚化するというトピックに関するロシア語の資料はそれほど多くないように思えましたが、トピック自体は非常に有用で興味深いものです。このステップバイステップガイドが、非常に実用的な日常業務で誰かを助けることを願っています。あるいは、誰かにとって、新しくて興味深い科学分野への第一歩になるかもしれません。







バルセロナスーパーコンピューティングセンター-CentroNacionaldeSupercomputación

バルセロナスーパーコンピューティングセンターから撮影した画像







免責事項



私は、計算の迅速な試運転の可能性を示し、出発点を与えるというタスクを自分自身に設定しましたが、本格的なWebアプリケーションを構築することは決してありません。そのようなソリューションの潜在的なアーキテクチャや、既製のソースコードについての話はありません。解決策はひざまずくが、速い。







簡単な紹介



, . , , ? : , , .







: , ? , , , ?

, (, - ).







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







輸送された流体の変動の減少を計算するためのCFDの適用

. CFD .









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







メッシュメッシュとセルの例

. .







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







もちろん、OpenFOAMとParaViewだけが利用可能なエンジニアリングシミュレーションソフトウェアパッケージではありません。すでにたくさんあります。しかし、セットアップが複雑であるため、原則として、このような計算に関与する専門家や科学者は、1つのツールを研究し、それをすべてのタスクに適用しようとします。ツールをより利用しやすくすれば、私たちの生活の中でモデリングのアプリケーションがもっと増えると思います。これは非常に便利です。証明があるのは無意味ではありません:7回測定し、1回カットしてください!








All Articles