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.
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). , , . , , , , , .. .
. CFD .
, , , , . , , , , : « ».
. .
, , (. mesh). , , (. cells). . , ( ). , . , , .
, :
- . , , , ;
- . , , (, , , , . .), ;
- (. postprocessing). , .
- . , , / , .
, . , (, . CAD). , .
, .
OpenFOAM — open-source , . , . : (. CPU) (. RAM). (. GPU) , .
. - . motorBike tutorial: 3D- . ( , ).
vCPU. ., Amazon, Microsoft, IBM, ..
, .
, SSH . Linux powershell/cmd Windows 10 :
$ ssh-keygen -t rsa -b 2048
. <>.pub, .
-
- https://console.cloud.yandex.ru " "
- Compute Cloud
- " "
( , ) . :
- 6 vCPU ( , tutorial-),
- 12
- 10 SSD .
- SSH , .
- , "" , . , .
- , "team01". " "
, , "Running".
. .
OpenFOAM
SSH , (Linux) powershell/cmd (Windows) :
$ ssh -i <_> <_>@<_ip_>
, .
, , 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
. vi:
$ vi ~/.bashrc
- , i
- , : source /opt/openfoam8/etc/bashrc
- x!
SSH
$ exit
Bash:
$ simpleFoam -help
, OpenFOAM.
, , /opt/openfoam8/tutorials/incompressible/simpleFoam/
:
$ cd $HOME $ sudo mkdir -p $FOAM_RUN
$ cd $FOAM_RUN $ sudo cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/motorBike/ . $ sudo chmod -R a+rwx motorBike $ cd motorBike
, :
$ ./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. , :
- ParaView GUI, QT, . , Custom App, API .
- pvpython, Python.
- Paraview Catalyst, . , , - (, , , , ..).
- ParaViewWeb – web-framework, ParaView VTK Web- JavaScript. Three.js, VTK.js – VTK JavaScript.
, 3 OpenFOAM:
desktop ParaView. , , , .
desktop , X11-forwarding GUI . , "" "".
- 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
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 <--
demo web-:
$ mkdir -p demo $ cd demo $ curl -OL https://github.com/Kitware/paraviewweb-demo/archive/master.zip $ unzip master.zip
web- :
$ sudo docker pull kitware/paraview:pvw-v5.7.1-osmesa-py2
: 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}
-
. 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!