Dans cet article, je vais vous expliquer comment vous pouvez facilement, rapidement et à moindre coût assembler votre package pour modéliser des problèmes de dynamique des fluides dans le cloud. Je vais le faire en utilisant une combinaison de deux outils: le simulateur numérique de mécanique du continuum OpenFOAM et la boîte à outils de visualisation de l'ensemble de données ParaView.
Je suis un développeur ordinaire et je ne suis pas un expert dans ce domaine scientifique. J'ai fait face à ce type de tâches pour la première fois dans le cadre du hackathon FIT-M 2020 qui s'est tenu récemment , où j'ai eu la chance de participer en tant que co-organisateur et mentor. L'expérience m'a paru intéressante, notamment en raison de l'opportunité de toucher le domaine du calcul haute performance (anglais High Performance Computing), qui sont souvent exécutés sur des supercalculateurs . J'ai compris comment configurer rapidement le lancement de calculs sur un serveur dans le cloud et regarder le résultat directement via le navigateur, même depuis une tablette ou un téléphone!
Il m'a semblé qu'il n'y avait pas tellement de matériel en russe sur le thème de la visualisation des résultats sur le Web, bien que le sujet lui-même soit assez utile et intéressant. Espérons que ce guide étape par étape aidera quelqu'un dans ses tâches quotidiennes très pratiques. Ou peut-être que ce sera pour quelqu'un le premier pas dans un domaine scientifique nouveau et intéressant.
Image prise du centre de supercalculateur de Barcelone
Avertissement
Je me suis fixé pour tâche de montrer la possibilité même de mise en service rapide des calculs, de donner un point de départ, mais en aucun cas de construire une application Web à part entière. Il ne sera pas question de l'architecture potentielle de telles solutions, ni du code source prêt à l'emploi. La solution est sur le genou, mais rapide.
Brève introduction
, . , , ? : , , .
: , ? , , , ?
, (, - ).
(. 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 , . , , . , . , , — , .
Bien entendu, OpenFOAM et ParaView ne sont pas les seuls logiciels de simulation d'ingénierie disponibles. Il y en a déjà beaucoup. Mais en raison de la complexité de la configuration, en règle générale, les spécialistes et les scientifiques impliqués dans de tels calculs étudient simplement un outil et essaient de l'appliquer dans toutes les tâches. Si nous rendons les outils plus accessibles, alors je pense que nous verrons beaucoup plus d'applications de modélisation dans nos vies, et cela peut être très utile. Ce n'est pas pour rien qu'il y a un proverbe: mesurer sept fois, couper une fois!