In diesem Artikel werde ich Ihnen erklären, wie Sie Ihr Paket einfach, schnell und kostengünstig zusammenstellen können, um Probleme der Fluiddynamik in der Cloud zu modellieren. Ich werde dies mit einer Kombination aus zwei Werkzeugen tun: dem numerischen Simulator für die OpenFOAM-Kontinuumsmechanik und dem ParaView-Toolkit zur Visualisierung von Datensätzen.
Ich bin ein gewöhnlicher Entwickler und kein Experte auf diesem wissenschaftlichen Gebiet. Ich habe mich dieser Art von Aufgaben zum ersten Mal im Rahmen des kürzlich abgehaltenen FIT-M 2020- Hackathons gestellt , bei dem ich das Glück hatte, als Mitorganisator und Mentor teilzunehmen. Die Erfahrung erschien mir interessant, insbesondere aufgrund der Möglichkeit, das Gebiet des Hochleistungsrechnens (englisches Hochleistungsrechnen) zu berühren, das häufig auf Supercomputern ausgeführt wird . Ich habe herausgefunden, wie Sie schnell den Start von Berechnungen auf einem Server in der Cloud einrichten und das Ergebnis direkt über den Browser anzeigen können, sogar von einem Tablet oder Telefon aus!
Es schien mir, dass es nicht so viele Materialien auf Russisch zum Thema Visualisierung von Ergebnissen im Web gibt, obwohl das Thema selbst sehr nützlich und interessant ist. Hoffentlich hilft diese Schritt-für-Schritt-Anleitung jemandem bei seinen sehr praktischen täglichen Aufgaben. Oder vielleicht wird es für jemanden der erste Schritt in ein neues und interessantes Gebiet der Wissenschaft.
Bild aus dem Barcelona Supercomputing Center
Haftungsausschluss
Ich habe mir die Aufgabe gestellt, die Möglichkeit eines schnellen Starts und einer Anpassung der Berechnungen aufzuzeigen, um einen Ausgangspunkt zu geben, aber keinesfalls eine vollwertige Webanwendung zu erstellen. Es wird weder über die mögliche Architektur solcher Lösungen noch über den vorgefertigten Quellcode gesprochen. Die Lösung liegt auf dem Knie, aber schnell.
Kurze Einführung
, . , , ? : , , .
: , ? , , , ?
, (, - ).
(. 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 , . , , . , . , , — , .
Natürlich sind OpenFOAM und ParaView nicht die einzigen verfügbaren Softwarepakete für die technische Simulation. Es gibt bereits viele von ihnen. Aufgrund der Komplexität des Aufbaus studieren Spezialisten und Wissenschaftler, die an solchen Berechnungen beteiligt sind, in der Regel einfach ein Werkzeug und versuchen, es auf alle Aufgaben anzuwenden. Wenn wir die Werkzeuge zugänglicher machen, werden wir wahrscheinlich viel mehr Anwendungen der Modellierung in unserem Leben sehen, und dies kann sehr nützlich sein. Nicht umsonst gibt es ein Sprichwort: Siebenmal messen, einmal schneiden!