Modelamos processos em OpenFOAM e exibimos os resultados na web

Neste artigo, direi como você pode montar seu pacote de maneira fácil, rápida e econômica para modelar problemas de dinâmica de fluidos na nuvem. Farei isso usando uma combinação de duas ferramentas: o simulador numérico de mecânica contínua OpenFOAM e o kit de ferramentas de visualização de conjunto de dados ParaView.







Sou um desenvolvedor comum e não um especialista neste campo científico. Enfrentei este tipo de tarefas pela primeira vez no quadro da hackathon FIT-M 2020 recentemente realizada , onde tive a sorte de participar como co-organizador e mentor. A experiência me pareceu interessante, em particular, pela oportunidade de tocar no campo da computação de alto desempenho (inglês High Performance Computing), que muitas vezes são executados em supercomputadores . Descobri como é possível configurar rapidamente o lançamento de cálculos em um servidor na nuvem e ver o resultado diretamente pelo navegador, mesmo de um tablet ou celular!







Pareceu-me que não existem tantos materiais em russo sobre o tópico de visualização de resultados na web, embora o tópico em si seja bastante útil e interessante. Espero que este guia passo a passo ajude alguém em suas tarefas diárias muito práticas. Ou talvez se torne para alguém o primeiro passo em um novo e interessante campo da ciência.







Centro de Supercomputação de Barcelona - Centro Nacional de Supercomputación

Imagem retirada do Centro de Supercomputação de Barcelona







aviso Legal



Eu me propus a mostrar a própria possibilidade de inicialização rápida e ajuste de cálculos, para dar um ponto de partida, mas de forma alguma construir uma aplicação web completa. Não haverá conversa sobre a arquitetura potencial de tais soluções, nem o código-fonte pronto. A solução está no joelho, mas rápida.







Breve introdução



, . , , ? : , , .







: , ? , , , ?

, (, - ).







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







Aplicação de CFDs para calcular a redução das flutuações do fluido transportado

. CFD .









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







Um exemplo de malha de malha e células

. .







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







Obviamente, OpenFOAM e ParaView não são os únicos pacotes de software de simulação de engenharia disponíveis. Já existem muitos deles. Mas devido à complexidade da configuração, via de regra, especialistas e cientistas envolvidos em tais cálculos simplesmente estudam uma ferramenta e tentam aplicá-la em todas as tarefas. Se tornarmos as ferramentas mais acessíveis, acho que veremos muito mais aplicações de modelagem em nossas vidas, e isso pode ser muito útil. Não é à toa que existe um provérbio: medir sete vezes, cortar uma vez!








All Articles