ParaView, une bibliothèque libre pour la visualisation scientifique

Posté par  (site web personnel) . Édité par Benoît Sibaud et bubar🦥. Modéré par bubar🦥. Licence CC By‑SA.
48
6
mar.
2021
Science

Pour faire suite à la dépêche sur VTK, voici une présentation de ParaView qui vient de sortir récemment en version 5.9.0.

ParaView logo

Basée sur VTK, une bibliothèque libre pour la visualisation scientifique développée par la même société, son architecture est modulaire. Cela permet de développer rapidement des applications métiers dédiées à un domaine particulier. Par exemple ParaVis, le module de post-traitement de SALOME, développé par EDF et le CEA, est une illustration de la réutilisation de ParaView pour un besoin précis. ParaView est donc à la fois un logiciel clef en main pour la visualisation scientifique et un cadriciel d’application (application framework).

Sommaire

Présentation

ParaView est un logiciel libre multi-plateforme dédié à l’exploration et à la visualisation de données.
La première version est sortie en 2002. Il est développé par Kitware en collaboration avec plusieurs laboratoires de recherche nord-américains.

Une des raisons qui a motivé le développement de ParaView est le calcul de rendu massivement parallélisé—d’où le Para pour Parallel dans son nom. Il est ainsi conçu pour fonctionner aussi bien sur des machines de bureau que sur des super-calculateurs dans des environnements à mémoire distribuée ou partagée de grande échelle. On peut ainsi trouver des records tels que le calcul sur des données de l’ordre du trillion (1018 !) d’éléments de maillage structuré sur plus de 100 000 nœuds de calculs.

L’écosystème autour de ParaView est très vaste et il existe plusieurs façons de l’utiliser. Nous allons en présenter quelques-unes dans la suite de cette dépêche.

Version de bureau

Voici l’utilisation la plus courante de ParaView à travers l’application de bureau basée sur Qt, disponible pour de nombreux systèmes d’exploitation : Windows, Linux, MacOS/OsX… Elle permet d’utiliser en toute transparence les ressources de la machine locale ou celle d’un serveur distant pour les calculs.

Capture d’écran de la version bureau

ParaView garde les mêmes concepts que la bibliothèque VTK sur laquelle il est basé :

  • Séparation entre données, représentations graphiques et vues 3D
  • Utilisation d’un pipeline qui applique des traitements successifs aux données

On retrouve ainsi cette dernière dans l’interface graphique représentée sous forme d’arborescence, en haut à gauche dans l’image ci-dessus. Cela permet de retrouver toute la souplesse et la puissance de cette architecture.

Paraview pipeline browser

Attention, cette représentation du pipeline est une version simplifiée par rapport aux objets VTK sous-jacents. Par exemple les filtres actor ou renderer n’apparaissent pas.

Une fenêtre de propriété et d’information est associée à chacun des filtres du pipeline, permettant de changer des valeurs générales comme la coloration ou la disposition dans la vue 3D, et des valeurs spécifiques au filtre sélectionné.

propriétés d’un filtre

fenêtre d’information

On retrouve ainsi beaucoup de filtres classiques de VTK tels que le découpage de modèle, l’extraction de surface ou de lignes de contours, l’affichage de surfaces, de lignes de flux, de rendu volumique, la modification de la plage de couleurs, etc.

barre d’outils

Petit exemple, le découpage (clip) d’un modèle volumique selon un plan :

Clip

Pour finir, la fenêtre de rendu est totalement paramétrable notamment en multipliant très facilement les vues sur un même modèle. Chaque sous-fenêtre a alors son propre jeu de propriétés, permettant d’afficher plusieurs représentations sur le même écran :

plusieurs vues

En plus de la représentation 3D, ParaView offre d’autres types de rendus facilement paramétrables comme des tableaux de données, des courbes ou encore des histogrammes :

exemple d’histogramme

Animations

ParaView sait aussi gérer les données qui ont une composante temporelle (unsteady data), via sa fenêtre d’animation. On peut ainsi paramétrer très finement la façon dont les données doivent varier temporellement et même rajouter des mouvements de caméra.

Par exemple dans la capture d’écran ci-dessous, je fais varier le facteur d’échelle de la déformation (WarpByVector) en fonction du temps, ainsi qu’un mouvement circulaire de caméra :

Fenêtre animation

Un GIF animé étant trop volumineux, vous pouvez voir le résultat ici.

Python

ParaView est développé en C++ mais ses composants sont pilotables en python. On peut ainsi créer et manipuler très facilement tous les types d’objets du pipeline dynamiquement : filtres, importeurs, exporteurs, grâce au shell python intégré :

Shell python de paraview

ainsi que les filtres programmables dont le calcul est effectué par un code python éditable à la volée :

Programmable source

Macros

Cette interface de programmation permet aussi d’enregistrer et de rejouer une série d’actions de l’utilisateur, ce qui est bien pratique pour s’éviter des clics dans des tâches répétitives.

Petit exemple : vous avez une échelle de couleur imposée que vous devez charger à chaque analyse de modèle. Vous pouvez créer une macro qui le fait en un simple clic de bouton :

  • Lancer l’enregistrement d’une trace (Tools --> Start Trace)
  • Effectuer les actions nécessaires, ici aller chercher la bonne palette de couleur
  • Arrêter la trace (Tools --> Stop Trace)
  • Une fenêtre s’ouvre avec le code python correspondant aux actions effectuées :

 Trace python

Il suffit ensuite de faire File --> Save As Macro… pour obtenir un bouton dans l’interface qui permet d’exécuter le code correspondant !

Macro python

Comme la macro est un fichier python, vous pouvez l’éditer pour l’enrichir ou encore la partager très facilement.

Greffons

Comme décrit dans le paragraphe précédent, l’utilisation de l’interface de programmation en python permet d’étendre rapidement les fonctionnalités de ParaView. Cependant les performances sont limitées, car les fichiers python sont interprétés à la volée.

Ainsi, pour des extensions plus exigeantes en vitesse il existe un mécanisme de greffons, ou plug-ins en anglais, compilés en natif, qui peut utiliser le langage C++. Les extensions possibles sont alors très diverses :

  • Ajouter un format de fichier en entrée ou en sortie
  • Ajouter un filtre personnalisé
  • Ajouter des éléments graphiques 3D ou 2D (boutons, menus…)
  • Créer une vue dédiée à un rendu spécifique

Quelques exemples avancés :

Greffon NVidia IndeX, source: NVidia

Animation des lignes de flux

Version serveur : ligne de commande et In Situ

Serveur distant

L’architecture de ParaView est de type client-serveur, c’est-à-dire que les calculs sont effectués sur l’entité serveur et le client ne fait que visualiser le résultat. Même dans la version de bureau, il y a un serveur intégré lancé automatiquement, nommé builtin :

Serveur intégré par défaut

Pour utiliser une machine distante, il suffit de lancer l’exécutable pvserver sur celle-ci et de s’y connecter avec l’application de bureau :

Serveur distant

Le fonctionnement est ensuite totalement transparent pour l’utilisateur, où que soit situé le serveur.

Ligne de commande pvbatch

Les scripts python évoqués précédemment peuvent être lancés par la commande pvbatch livrée avec ParaView. Cette commande ne prend qu’un seul argument qui est le fichier à exécuter, et peut être lancée indifféremment sur un client ou sur un serveur.

Si ParaView a été compilé avec le support de MPI, il est alors possible de lancer pvbatch via mpiexec pour effectuer un traitement sur plusieurs nœuds de calculs :

mpiexec -np 4 pvbatch my_script.py

pvbatch ne fournit pas d’interface graphique. Il faut donc prévoir à la fin du script d’écrire le résultat de la visualisation dans un fichier image ou de générer une vidéo. Par exemple, si on a une simulation qui nous fourni des résultats bruts que l’on veut visualiser, un calcul OpenFOAM ou FreeCAD FEM par exemple, alors le flux de travail serait :

ParaView pvbatch

Ce mode de fonctionnement est très pratique pour traiter à distance ou en arrière-plan des données de grandes tailles.

Cependant pour des simulations avancées, il arrive qu’il ne soit pas souhaitable de générer les fichiers intermédiaires :

  • taille trop importante, les opérations d’écritures de fichier deviennent critiques,
  • coût de stockage trop important, surtout quand on loue les serveurs de calculs,
  • besoin d’avoir accès rapidement à des résultats pendant la simulation, notamment si celle-ci dure plusieurs heures, voire plusieurs jours

C’est pour cela qu’il existe la visualisation in situ, venant du Latin sur place, qui permet d’embarquer ParaView dans le calcul de simulation et ainsi s’affranchir des données intermédiaires.

Catalyst

Si on reprend l’image de flux qui illustre l’utilisation de pvbatch, celle de la version in situ serait d’intégrer le calcul de visualisation dans la simulation :

ParaView InSitu

C’est Catalyst, un module de ParaView, qui s’en charge. Ainsi, plus besoin de générer les données intermédiaires potentiellement coûteuses en espace disque, le résultat attendu est directement généré à la volée. En outre, comme Catalyst peut être appelé dès les premiers calculs, les images arrivent en temps réel, ce qui permet d’arrêter prématurément un calcul qui serait mal paramétré.

On peut évidemment utiliser Catalyst seulement pour surveiller le calcul, avec un rendu intermédiaire rapide à calculer, et s’autoriser à faire le rendu final une fois que la simulation est terminée :

ParaView in-situ et pvbatch

C’est la force d’une architecture modulaire et ouverte !

Version Web

ParaView n’a pas échappé aux besoins croissants des utilisateurs d’utiliser un simple butineur pour visualiser des données. Il existe ainsi deux approches :

  • client seul, les calculs et l’affichage sont gérés par le client
  • client-serveur, les calculs sont effectués par le serveur et le client ne fait qu’afficher des images

ParaView Glance utilise la première approche et ParaView Web fourni la deuxième. Nous allons détailler ces deux solutions dans la suite de cette dépêche.

Calcul et affichage côté client : ParaView Glance

ParaView Glance est une application JavaScript autonome pour la visualisation interactive de données.

L’autonomie implique que traitement des données et leur affichage soient effectués directement par le navigateur internet. Plusieurs bibliothèques JavaScript sont utilisées :

Vous pouvez tester l’application via l’instance de démonstration de Kitware :

ParaView Glance

L’application permet de modifier la scène affichée (couleurs, échelle, type de représentation, etc.) ainsi que d’interagir interactivement avec le modèle (zoom, rotation, multi-vue, etc.). Dans la partie gauche, l’utilisateur a accès à un pipeline simplifié. Il peut modifier des paramètres, mais il ne peut pas rajouter ou enlever de filtres.

Paraview Glance Pipeline

ParaView Glance est donc l’outil idéal pour partager une scène préalablement paramétrée en une web app prête à l’emploi. Celle-ci peut être générée très facilement depuis la version bureau de ParaView.

Par exemple cette scène prise au hasard :

Paraview Glance avant export

s’exporte en quelques clics dans un fichier html autonome contenant données et code :

Paraview Glance après export

ParaView Glance est donc l’outil parfait pour partager rapidement des résultats de visualisations de façon portable, moderne et interactive !

Calcul sur le serveur, affichage chez le client

Comme on l’a vu dans la version serveur de ParaView, il est parfois peu pertinent d’embarquer les données côté client et de lui faire exécuter des calculs intensifs. Même si vtk.js est très performante, il est impensable de charger des fichiers de plusieurs gigaoctets dans le navigateur.

ParaView Web

ParaView Web est un cadriciel écrit en JavaScript pour construire des applications web de visualisation de données. Il contient de nombreux composants réutilisables, développés en React ou nativement :

  • connexion à des sources de données : fichiers, bases de données, ParaView Web backends, Girder
  • widgets d’interface : éléments de fenêtre (textes, boutons, onglets…) et composants dédiés à la visualisation scientifique (éditeur de sélection, légende, fonctions de transfert…)
  • fenêtre de rendu : 1D, 2D, 3D via three.js, vtk.js ou WebGL

Ce cadriciel est ainsi utilisé pour construire des applications web de type client/serveur dédiées à la visualisation scientifique. Vous pouvez en retrouver certaines développées par Kitware sur la page dédiée.

L’application web Visualizer

ParaView Lite

ParaView Lite est une application basée sur le cadriciel ParaView Web et qui reprend le fonctionnement de la version de bureau de ParaView.

Il se compose d’un serveur web accessible via le protocole http et qui expose une application qui permet d’explorer des données comme on le ferait avec l’application de bureau :

Paraview Lite

Dans ce mode de fonctionnement, les données et les calculs sont effectués sur le serveur. Le client ne fait qu’afficher des images pré-calculées. On retrouve à gauche le fameux pipeline, ainsi que les filtres et leurs propriétés en haut de la fenêtre:

Filtres dans ParaView Lite

Pipeline de ParaView Lite

Il est ainsi possible d’envisager de construire des applications manipulant des données plus importantes qu’avec ParaView Glance puisque tout le travail est effectué côté serveur.

Le résultat peut alors être consulté sur des terminaux peu puissants comme des tablettes ou des ordiphones. ArcticViewer, en version Android et iOS, en est l’illustration.

Conclusion

Cette dépêche, catalogue de fonctionnalités, illustre surtout les multiples usages possibles de ParaView pour l’exploration et l’affichage de données dans de nombreux domaines d’activités.

Développé avec une réelle philosophie d’ouverture, de réutilisation et d’exécution sur quasiment toutes les plateformes possibles (bureau, serveur, web, ligne de commande…), ce logiciel est évidemment un incontournable de la visualisation scientifique.

On remarquera que tout le long de ses bientôt 20 ans de développement il a su évoluer et s’adapter aux usages nouveaux de l’informatique (python, HPC, web…), contraint par les domaines d’activité où il se doit d’exceller pour survivre. Voici donc une belle preuve concrète que logiciel libre rime avec innovation !

Aller plus loin

  • # Salome-Meca, Code Aster vs COMSOL

    Posté par  (site web personnel) . Évalué à 4.

    Merci pour cette rédaction, en effet, pour avoir un peu joué avec ParaView, on aimerait faire ça toute la journée…

    Récemment, j'ai pu voir quelques évolutions intéressantes dans SALOME, notamment le nouveau modeleur paramétrique Shaper. Il remplace avantageusement le module Geometry, il semble rivaliser avec FreeCAD… Il y a tellement à dire qu'il faudrait sacrifier 1 mois de temps d'un physicien/informaticien/mécanicien pour faire un journal de la qualité de celui-ci sur ce logiciel (SALOME).

    Je profite de ce commentaire pour demander un avis :

    Actuellement nous utilisons COMSOL multiphysics pour simuler le comportement d'un plasma froid (et des effets de celui-ci sur son conteneur, aux électrodes et sur l'enveloppe) lorsqu'il est soumis à un champs électrique variable. C'est pas mal, mais c'est une solution coûteuse, surtout si l'on veut distribuer le calcul sur plusieurs machines.

    Y a t-il une solution OpenSource qui puisse se comparer à COMSOL pour ce cas d'usage?

    J'ai testé Elmer FEM et à l'époque, un peu SALOME, il faudrait tester FreeFEM, j'en ai conclu que je n'ai plus (j'ai failli faire un PhD sur les plasmas, comme un con j'ai dit non) le niveau, et de loin.

    Merci d'avance à celui qui se lance sur la rédaction d'un journal /ou d'un avis sur SALOME/Shaper autres.

    • [^] # Re: Salome-Meca, Code Aster vs COMSOL

      Posté par  . Évalué à 7.

      Pourquoi pas OpenFoam en volumes finis ? C'est une boite à outils formidable. Je travaille justement sur les écoulements de plasmas avec ce logiciel.

    • [^] # Re: Salome-Meca, Code Aster vs COMSOL

      Posté par  . Évalué à 5.

      Salut,

      J'ai testé Elmer FEM et à l'époque, un peu SALOME, il faudrait tester FreeFEM, j'en ai conclu que je n'ai plus (j'ai failli faire un PhD sur les plasmas, comme un con j'ai dit non) le niveau, et de loin.

      Elmer est une bonne solution mais si ce que tu veux faire n'est pas dedans, contrairement à COMSOL, tu auras du mal …

      La solution OpenSource la plus proche de COMSOL est fenics. C'est une code FEM qui permet de résoudre des formulations variationnelles. Donc si tu es capable de formuler ton problème sous forme variationnelle affaiblie, et du coup compatible avec la FEM, tu pourras le résoudre avec fenics.

      le coeur est en C++ mais tu peux accéder à la partie formulation variationnelle, choix des éléments, mise en données, lancement de la simulation et récupération des données en python.

      Une tentative d'intégration avec FreeCAD a été lancée, elle permet d'exporter au format de mise en données de fenics les groupes de noeuds et d'éléments nécessaires à la simulation.

      Il existe aussi sfepy qui permet de faire des choses assez avancées il faut voir si ton problème peut se formuler simplement avec.

      Après tu peux aussi faire du couplage faible avec Salome et des codes dédiés, mais ne connaissant pas la physique du plasma, je ne sais pas trop si il y a des outils disponibles.

      En ce qui concerne OpenFOAM, ce n'est pas des éléments finis, mais des volumes finis, Une discrétisation par la méthode des volumes finis (MVF) est basée sur une forme intégrale de l'EDP à résoudre (par exemple, la conservation de la masse, de la quantité de mouvement ou de l'énergie). L'EDP est écrite sous une forme qui peut être résolue pour un volume fini (ou cellule) donné. Le domaine de calcul est discrétisé en volumes finis, puis les équations de base sont résolues pour chaque volume. Le système d'équations résultant implique généralement des flux de la variable conservée, et donc le calcul des flux est très important dans le MVF, alors que la discrétisation par la méthode des éléments finis (FEM) est basée sur une représentation par morceaux de la solution en termes de fonctions de base spécifiées. Le domaine de calcul est divisé en domaines plus petits (éléments finis) et la solution dans chaque élément est construite à partir des fonctions de base. Les équations réelles qui sont résolues sont généralement obtenues en reformulant l'équation de conservation sous une forme faible : les variables de champ sont écrites en termes de fonctions de base, l'équation est multipliée par des fonctions de test appropriées, puis intégrée sur un élément. La solution FEM étant formulée en termes de fonctions de base spécifiques, on en sait beaucoup plus sur la solution que pour MVF.

      Il faut donc vraiment évaluer ce que tu veux récupérer comme infos sur ton problème avant de savoir si tu vas pouvoir basculer sur la MVF.

      • [^] # Re: Salome-Meca, Code Aster vs COMSOL

        Posté par  (site web personnel) . Évalué à 2.

        Merci pour cette réponse passionnante.

        Concernant notre problème, sur le plan physique, il faut calculer l'évolution des flux de plasma, dans une enceinte close. Il n'y a pas de flux au départ, puis un plasma est créée suite à un phénomène transitoire (comme une surtension dans un circuit électrique), puis il se déplace.

        Le but de nos recherches, c'est de connaitre comment évolue le plasma pour connaitre les caractéristiques électrique au cours du temps du composant électronique.

        On est en plein dans l'actualité, ces composants sont utilisés aussi bien dans les UPS des datacenter que dans votre box internet.

        Sur le plan de l'analyse numérique, on utilise COMSOL depuis 5 ans, avec le module PLASMA. C'est donc relativement récent pour nous. Mais nous faisons beaucoup de recherche expérimentale depuis bien plus longtemps.

        à ta connaissance, si nous voulions travailler avec des universités/écoles sur ces problème, vers où nous orienter ?

        Merci encore!

        • [^] # Re: Salome-Meca, Code Aster vs COMSOL

          Posté par  (site web personnel) . Évalué à 2. Dernière modification le 14 mars 2021 à 07:12.

          Les composants en question sont des éclateurs à gaz.

          • [^] # Re: Salome-Meca, Code Aster vs COMSOL

            Posté par  (site web personnel) . Évalué à 2.

            Un autre lien concernant le principe de fonctionnement (je ne peux pas éditer mes précédents messages pour les corriger, je n'aime pas spammer…) : Les éclateurs à gaz.

            Nos produits ne sont pas utilisés pour les onduleurs de datacenter (à priori), mais dans les onduleurs de fermes photovoltaïques (je ne mets pas de lien). Il est plus compliqué de protéger des installations en courant continu qu'en courant alternatif. La coupure est bien plus complexe à obtenir : le composant sert à rediriger l'excès d'énergie vers la masse, il doit ne pas devenir conducteur, mais se déconnecter automatiquement en deçà d'un certain seuil, sinon tout crame.

            • [^] # Re: Salome-Meca, Code Aster vs COMSOL

              Posté par  (site web personnel) . Évalué à 2.

              Mince, on est les premiers en "parafoudre datacenter" sur un certain moteur de recherche … Bon, on a rien à voir avec les UPS d'OVH, nos protections seront intégrées dans les futures UPS, avec une nouvelle norme concernant la fin de vie (autrement dit, coupure) (il y a beaucoup à dire sur le sujet, mais ce n'est pas l'objet de ce site)…

  • # Merci pour les dépêches

    Posté par  . Évalué à 8.

    Paraview est un super outil, qui a profondément modifié l’écriture de codes de simulation en recherche, en tout cas pour moi. En offrant une telle palette d’outils de visualisations via une interface propice à l’exploration de données spatiales, il permet de déléguer toute la visualisation des résultats à un programme externe et de laisser les codes de calculs se focaliser sur ce qu’ils ont à faire. J’utilisais déjà Paraview comme un tel couteau suisse, du déboguage (identifications de régions où le calcul se passe mal) au traitement des résultats, mais je ne connaissais pas Catalyst, cité dans la dépêche, qui va encore plus loin dans la simplification pour l’usage en tant que « débogueur scientifique ».

    Alors merci pour ces dépêches (au pluriel, celle sur VTK était excellente aussi) qui mettent la lumière sur deux outils vraiment très utiles au calcul scientifique. Les bindings Python de VTK (et pyvista que j’ai découvert avec l’autre dépêche) finissent d’en faire des trousses à outils très complètes pour le traitement et la visualisation de données. Pas étonnant que Paraview soit l’outil de visualisation distribué avec des logiciels de simulation tels que SALOME et OpenFOAM.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.