Table of contents
1. Mesh Generation in Computational Science
2. Deep Neural Networks (DNNs) for mesh-based simulations
3. Graph Neural Networks (GNNs) for mesh-based simulations
4. MESHNET: GNN for mesh generation
5. GRAPHNET: GNN for mesh adaptation
6. ADAPTNET: Framework for automated mesh generation and adaptation
Je vais d'abord donner rapidement un peu de contexte sur l'importance des maillages en science informatique.
Meshes in simulation
High quality mesh generation framework
Meshes in simulation
High quality mesh generation framework
Parameters for Mesh Generation
Mesh generation depends on several critical parameters:
Local Metrics: Metrics at specific points in the mesh.
Element Sizes: Maximum and minimum sizes of elements.
Hausdorff Coefficient: A measure of domain complexity.
Metric Gradation: Acceptable gradation of the metric.
Others: Additional parameters influencing the mesh.
These parameters play a vital role in determining mesh quality and efficiency.
La génération de maillages dépend d'un certain nombre de paramètres, tels que les métriques locales en certains points, mais aussi, dans le cas général, les tailles maximale et minimale des éléments, le coefficient de Hausdorff, la gradation acceptable de la métrique, etc. Un ensemble de paramètres dont le choix est loin d'être trivial et dont un mauvais choix peut conduire à des maillages de mauvaise qualité, à un processus de génération trop long (car trop contraint), voire à un échec de la génération.
Parameters for Mesh Generation
Local Metrics: Metrics at specific points in the mesh.
Parameters for Mesh Generation
Local Metrics: Metrics at specific points in the mesh.
//+
Mesh.MshFileVersion = 2.2;
//+
SetFactory("OpenCASCADE");
//+
Box(1) = {0.045462, -3.922459, 0.000000, 35.722251, 9.127825, 1.000000};
//+
MeshSize {1} = 2.518574;
//+
MeshSize {2} = 2.518574;
//+
MeshSize {3} = 2.409870;
//+
MeshSize {4} = 2.409870;
//+
MeshSize {5} = 0.597988;
//+
MeshSize {6} = 0.597988;
//+
MeshSize {7} = 0.700752;
//+
MeshSize {8} = 0.700752;
//+
Cylinder(2) = {27.432369, -0.761381, 0.000000, 0.000000, 0.000000, 1.000000, 1.138991, 2*Pi};
//+
MeshSize {9} = 0.113899;
//+
MeshSize {10} = 0.113899;
//+
Cylinder(3) = {17.813682, 1.160731, 0.000000, 0.000000, 0.000000, 1.000000, 0.789672, 2*Pi};
//+
MeshSize {11} = 0.078967;
//+
MeshSize {12} = 0.078967;
//+
BooleanDifference{ Volume{1}; Delete; }{ Volume{2}; Volume{3}; Delete; }
J'ai restreint mon étude des réseaux de neurones pour la prédiction de paramètres aux métriques locales en certains points de la géométrie. Voici un exemple de métriques locales qu'on peut retrouver en utilisant le logiciel Gmsh. Les différents éléments géométriques sont définis. Puis on vient assigner une taille de maille locale en chaque point.
Parameters for Mesh Generation
Local Metrics: Metrics at specific points in the mesh.
Et voici un maillage qui peut être généré à partir d'un tel fichier. Le fichier que je viens de montrer est un fichier geo, plutôt spécifique à la nomenclature de Gmsh, mais on peut en extraire un fichier CAO plus classique, contenant simplement les point, et le type de connectivité géométrique entre les points. L'objectif du premier réseau de neurones sur graphe, nommé MESHNET, va être de prédire la taille de maille locale d'une géométrie pour générer un premier maillage de qualité correcte, qui pourra être utilisé pour des traitements ultérieurs.
MESHNET
A framework for learning local metrics parameters using graph neural networks.
Et voici un maillage qui peut être généré à partir d'un tel fichier. Le fichier que je viens de montrer est un fichier geo, plutôt spécifique à la nomenclature de Gmsh, mais on peut en extraire un fichier CAO plus classique, contenant simplement les point, et le type de connectivité géométrique entre les points. L'objectif du premier réseau de neurones sur graphe, nommé MESHNET, va être de prédire la taille de maille locale d'une géométrie pour générer un premier maillage de qualité correcte, qui pourra être utilisé pour des traitements ultérieurs.
MESHNET
A framework for learning local metrics parameters using graph neural networks.
Point(1) = {0.045462, -3.922459, 1};
Point(2) = {0.045462, -3.922459, 0};
Point(3) = {0.045462, 5.205366, 1};
Point(4) = {0.045462, 5.205366, 0};
Point(5) = {35.767713, -3.922459, 0};
Point(6) = {35.767713, -3.922459, 1};
Point(7) = {35.767713, 5.205366, 1};
Point(8) = {28.57136, -0.7613810000000002, 1};
Point(9) = {18.603354, 1.160731, 1};
Point(10) = {35.767713, 5.205366, 0};
Point(11) = {28.57136, -0.7613810000000002, 0};
Point(12) = {18.603354, 1.160731, 0};
Line(1) = {2, 1};
Line(2) = {1, 3};
Line(3) = {4, 3};
Line(4) = {2, 4};
Line(5) = {2, 5};
Line(6) = {5, 6};
Line(7) = {1, 6};
Line(8) = {3, 7};
Line(9) = {6, 7};
Spline(10) = {8, ...
Et voici un maillage qui peut être généré à partir d'un tel fichier. Le fichier que je viens de montrer est un fichier geo, plutôt spécifique à la nomenclature de Gmsh, mais on peut en extraire un fichier CAO plus classique, contenant simplement les point, et le type de connectivité géométrique entre les points. L'objectif du premier réseau de neurones sur graphe, nommé MESHNET, va être de prédire la taille de maille locale d'une géométrie pour générer un premier maillage de qualité correcte, qui pourra être utilisé pour des traitements ultérieurs.
MESHNET
A framework for learning local metrics parameters using graph neural networks.
cl__1 = 2.518574;
cl__2 = 2.40987;
cl__3 = 0.597988;
cl__4 = 0.700752;
cl__5 = 0.113899;
cl__6 = 0.078967;
Point(1) = {0.045462, -3.922459, 1, cl__1};
Point(2) = {0.045462, -3.922459, 0, cl__1};
Point(3) = {0.045462, 5.205366, 1, cl__2};
Point(4) = {0.045462, 5.205366, 0, cl__2};
Point(5) = {35.767713, -3.922459, 0, cl__3};
Point(6) = {35.767713, -3.922459, 1, cl__3};
Point(7) = {35.767713, 5.205366, 1, cl__4};
Point(8) = {28.57136, -0.7613810000000002, 1, cl__5};
Point(9) = {18.603354, 1.160731, 1, cl__6};
Point(10) = {35.767713, 5.205366, 0, cl__4};
Point(11) = {28.57136, -0.7613810000000002, 0, cl__5};
Point(12) = {18.603354, 1.160731, 0, cl__6};
Line(1) = {2, 1};
Line(2) = {1, 3};
Line(3) = {4, 3};
Line(4) = {2, 4};
Line(5) = {2, 5};
Line(6) = {5, 6};
Line(7) = {1, 6};
Line(8) = {3, 7};
Line(9) = {6, 7};
Spline(10) = {8, ...
Et voici un maillage qui peut être généré à partir d'un tel fichier. Le fichier que je viens de montrer est un fichier geo, plutôt spécifique à la nomenclature de Gmsh, mais on peut en extraire un fichier CAO plus classique, contenant simplement les point, et le type de connectivité géométrique entre les points. L'objectif du premier réseau de neurones sur graphe, nommé MESHNET, va être de prédire la taille de maille locale d'une géométrie pour générer un premier maillage de qualité correcte, qui pourra être utilisé pour des traitements ultérieurs.
Adaptive Mesh Refinement
Adapting the precision of the numerical computation based on the requirements of a computation problem in specific areas.
L'approche conventionnelle pour obtenir des maillages de haute qualité implique des passages multiples, où une solution est initialement calculée sur un maillage, puis une étape de post-traitement, connue sous le nom d'estimation d'erreur a posteriori, est entreprise. Cela peut impliquer la résolution de nombreux problèmes auxiliaires (par exemple, un par élément ou par patch d'éléments) afin d'estimer une contribution locale à une erreur globale dans la solution initiale, ou une analyse du Hessien, typique en CFD. Ces erreurs locales peuvent être combinées pour former une estimation globale de l'erreur, mais elles peuvent également être utilisées pour déterminer où la densité du maillage local a le plus besoin d'être augmentée (raffinement du maillage), et dans quelle mesure, et où la densité du maillage local peut être diminuée en toute sécurité (grossissement du maillage), et dans quelle mesure. Un nouveau maillage est alors généré sur la base de cette estimation d'erreur a posteriori et une nouvelle solution FE est calculée sur ce maillage.
Adaptive Mesh Refinement
Adapting the precision of the numerical computation based on the requirements of a computation problem in specific areas.
Hessian-based metric
\[ f: \mathbb{R}^n \rightarrow \mathbb{R}; (x_1, \dots, x_n) \mapsto f(x_1, \dots, x_n) \]
\[
H(f)=\left[
\begin{array}{ccc}
\frac{\partial^2 f}{\partial x_1^2} & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \\
\vdots & \ddots & \vdots \\
\frac{\partial^2 f}{\partial x_n \partial x_1} & \cdots & \frac{\partial^2 f}{\partial x_n^2}
\end{array}
\right]
\]
L'approche conventionnelle pour obtenir des maillages de haute qualité implique des passages multiples, où une solution est initialement calculée sur un maillage, puis une étape de post-traitement, connue sous le nom d'estimation d'erreur a posteriori, est entreprise. Cela peut impliquer la résolution de nombreux problèmes auxiliaires (par exemple, un par élément ou par patch d'éléments) afin d'estimer une contribution locale à une erreur globale dans la solution initiale, ou une analyse du Hessien, typique en CFD. Ces erreurs locales peuvent être combinées pour former une estimation globale de l'erreur, mais elles peuvent également être utilisées pour déterminer où la densité du maillage local a le plus besoin d'être augmentée (raffinement du maillage), et dans quelle mesure, et où la densité du maillage local peut être diminuée en toute sécurité (grossissement du maillage), et dans quelle mesure. Un nouveau maillage est alors généré sur la base de cette estimation d'erreur a posteriori et une nouvelle solution FE est calculée sur ce maillage.
Adaptive Mesh Refinement
Hessian-based metric
L'approche conventionnelle pour obtenir des maillages de haute qualité implique des passages multiples, où une solution est initialement calculée sur un maillage, puis une étape de post-traitement, connue sous le nom d'estimation d'erreur a posteriori, est entreprise. Cela peut impliquer la résolution de nombreux problèmes auxiliaires (par exemple, un par élément ou par patch d'éléments) afin d'estimer une contribution locale à une erreur globale dans la solution initiale, ou une analyse du Hessien, typique en CFD. Ces erreurs locales peuvent être combinées pour former une estimation globale de l'erreur, mais elles peuvent également être utilisées pour déterminer où la densité du maillage local a le plus besoin d'être augmentée (raffinement du maillage), et dans quelle mesure, et où la densité du maillage local peut être diminuée en toute sécurité (grossissement du maillage), et dans quelle mesure. Un nouveau maillage est alors généré sur la base de cette estimation d'erreur a posteriori et une nouvelle solution FE est calculée sur ce maillage.
GRAPHNET
A framework for learning mesh-based simulations using graph neural networks (GNNs)
L'objectif du deuxième réseau de neurone sur graphe sera donc d'apprendre à prédire une simulation physique. Le champ solution prédit servira pour calculer une métrique sur ce maillage afin de l'adapter au problème physique étudié. Pour souligner l'intérêt de cette adaptation de maillage, il faut savoir que sur cet exemple, la taille minimale de maille est de 1.6mm pour un nombre de nœuds de 5101. Le domaine faisant 20 par 5, si on avait dû se contenter d'un maillage régulier à cette taille minimale, nous aurions obtenu environ 40 millions de nœuds.
GRAPHNET
A framework for learning mesh-based simulations using graph neural networks (GNNs)
L'objectif du deuxième réseau de neurone sur graphe sera donc d'apprendre à prédire une simulation physique. Le champ solution prédit servira pour calculer une métrique sur ce maillage afin de l'adapter au problème physique étudié. Pour souligner l'intérêt de cette adaptation de maillage, il faut savoir que sur cet exemple, la taille minimale de maille est de 1.6mm pour un nombre de nœuds de 5101. Le domaine faisant 20 par 5, si on avait dû se contenter d'un maillage régulier à cette taille minimale, nous aurions obtenu environ 40 millions de nœuds.
ADAPTNET
A framework for automated mesh generation and adaptation
L'objectif du deuxième réseau de neurone sur graphe sera donc d'apprendre à prédire une simulation physique. Le champ solution prédit servira pour calculer une métrique sur ce maillage afin de l'adapter au problème physique étudié. Pour souligner l'intérêt de cette adaptation de maillage, il faut savoir que sur cet exemple, la taille minimale de maille est de 1.6mm pour un nombre de nœuds de 5101. Le domaine faisant 20 par 5, si on avait dû se contenter d'un maillage régulier à cette taille minimale, nous aurions obtenu environ 40 millions de nœuds.
Table of contents
1. Mesh Generation in Computational Science
2. Deep Neural Networks (DNNs) for mesh-based simulations
3. Graph Neural Networks (GNNs) for mesh-based simulations
4. MESHNET: GNN for mesh generation
5. GRAPHNET: GNN for mesh adaptation
6. ADAPTNET: Framework for automated mesh generation and adaptation
Mais bien que les simulations basées sur des maillages soient l'outil de choix en ingénierie mécanique et dans les disciplines connexes, les représentations adaptatives des maillages n'ont pas été beaucoup utilisées dans l'apprentissage automatique pour la prédiction de la physique. Pour surmonter ces limitations, nous visons ici à construire un modèle de substitution DL basé sur un réseau de neurones de graphes (GNN) qui peut capturer la dynamique de l'écoulement par exemple. La principale caractéristique des GNN est de représenter les données de simulation non structurées sous forme de graphes avec des nœuds et des arêtes.
Graph Neural Networks for mesh-based simulations
The key feature of GNNs is to represent unstructured simulation data as graphs with nodes and edges to achieve one of three tasks:
Node classification: predicting unknown quantities for the nodes of the graph
Link classification: predicting the existence of missing links between nodes
Graph classification: predicting unknown for the entire graph
D'une manière générale, les GNN exploitent la structure et les caractéristiques des nœuds et des arêtes pour accomplir l'une des trois tâches suivantes :
- la classification des nœuds : prédire des quantités inconnues pour les nœuds du graphe
- prédiction des liens : prédire l'existence de liens manquants entre les nœuds
- classification des graphes : prédire les inconnues pour l'ensemble du graphe
- clustering
- génération de graphes
Pour les simulations de flux, par exemple, nous pourrions construire des structures de graphe avec des nœuds de type mur et des nœuds de type flux, qui représentent différentes physiques sous-jacentes.
Message passing Graph Neural Networks
Whichever the task, the key idea in GNNs is to learn how to propagate information into nodes from their local neighbourhoods across interconnecting edges for all nodes in the graph.
An example graph used to illustrate node classification
Quelle que soit la tâche, l'idée clé des GNN est d'apprendre à propager l'information dans les nœuds à partir de leur voisinage local à travers les arêtes d'interconnexion pour tous les nœuds du graphe. Chaque nœud a un encodage initial qui peut être calculé à partir, par exemple, d'informations sur la structure physique que le nœud représente (c'est-à-dire les caractéristiques initiales du nœud), d'informations sur la connectivité de chaque nœud, ou il peut simplement s'agir d'une constante pour tous les nœuds au départ.
Message passing Graph Neural Netwroks
An example graph used to illustrate node classification
Message computation: for each node, we compute a message that it passes to neighboring nodes in the network.
\[ m_u^{(l)} = \textbf{MSG}^{(l)}(h_u^{(l-1)}) \]
Embedding h of node u at the previous level of the GNN are transformed by the message function MSG into message m.
Le cadre général du GNN consiste en trois étapes pour mettre à jour l'intégration des nœuds pour les tâches de classification ou de régression.
Passage du message : pour chaque nœud, nous calculons un "message" qu'il transmet aux nœuds voisins du réseau. La fonction de message peut être aussi simple que les encodages bruts ou une transformation apprise des encodages, par exemple à l'aide d'un perceptron multicouche (MLP). Dans la figure, les fonctions de message sont désignées par m.
Message passing Graph Neural Netwroks
An example graph used to illustrate node classification
Message computation
Aggregation: for each node, a function aggregates all of the messages received from neighbours.
\[ h_v^{(l)} = \textbf{AGG}_{u \in N(v)}^{(l)}(m_u^{(l)}) \]
Function used to aggregate the messages from neighboring nodes v for node u.
Agrégation : pour chaque nœud, une fonction agrège tous les messages reçus des voisins. Cette fonction doit être invariante par rapport à la permutation, car les nœuds voisins n'ont pas d'ordre canonique, et variadique, car différents nœuds peuvent avoir différents nombres de voisins. Les fonctions d'agrégation appropriées comprennent la somme, la moyenne et le maximum, ou des transformations apprises.
Message passing Graph Neural Netwroks
An example graph used to illustrate node classification
Message computation
Aggregation
Updating: given the aggregated messages from neighbouring nodes, the embedding of each node is updated using a processor function.
\[ h_v^{(l)} = \textbf{Processor}^{(l)}(h_v^{(l)}) \]
Embedding of node v is updated using a processor function given the aggregated information from neighbouring nodes.
Mise à jour : compte tenu des messages agrégés des nœuds voisins, l'intégration de chaque nœud est mise à jour à l'aide d'une fonction de traitement. Il s'agit le plus souvent d'une transformation apprise ou simplement d'une fonction de passage.
Message passing Graph Neural Netwroks
Each node has its own computational graph defined by its local neighborhood.
An example graph used to illustrate node classification
The general computational graph for the update of the blue node
L'ensemble de ces trois étapes constitue une couche GNN. Si, après la première couche, nous exécutons à nouveau ces étapes, nous ajouterons une autre couche GNN au graphique de calcul de chaque mise à jour de nœud. Notez que chaque nœud possède son propre graphe de calcul défini par son voisinage local. Cela souligne l'importance de la structure locale dans la propagation. Nous pouvons également constater que la propagation est indépendante de la taille du graphe, ce qui signifie qu'au cours de l'apprentissage, nous pouvons alimenter l'algorithme avec des graphes de tailles différentes puisque les graphes de calcul sont spécifiques à chaque nœud. Cela présente deux avantages qui permettent aux GNN de s'adapter à des graphes plus grands :
• Les poids appris sur un graphe sont transférables à des graphes de tailles différentes
• Le réseau apprend des poids communs à chaque couche, bien que chaque nœud ait une structure voisine différente.
MeshGraphNets (MGN)
Learning mesh-based simulation with Graph Networks [2]
La méthodologie MPNN appelée MeshGraphNets (MGN) proposée par Pfaff et al. (2020), dans laquelle le graphe d'apprentissage est construit à partir d'un maillage de simulation haute fidélité, présente un intérêt particulier pour ce travail. Les auteurs ont démontré que en codant diverses quantités physiques - en fonction de la physique sous-jacente - comme des caractéristiques de bord d'un graphe, MGN pourrait être un substitut rapide formé à partir de simulations haute-fidélité non structurées. Ces travaux montrent également que les modèles de substitution basés sur le MGN ont la capacité de se généraliser aux maillages non vus pendant la formation et peuvent capturer les limites internes avec plus de précision que les modèles basés sur le CNN.
MeshGraphNets (MGN)
Dataset
Simulations of incompressible Navier-Stokes flow trajectories over a circular cylinder over time.
1200 trajectories
600 time steps
Different simulation domains
Il s'agit de simulations de trajectoires d'écoulement Navier-Stokes incompressibles sur un cylindre circulaire au fil du temps, générées à l'aide de COMSOL. Comme illustré, l'ensemble de données se compose de 1 200 trajectoires (différents domaines de simulation), chacune consistant en 600 pas de temps. Les différentes trajectoires utilisent des maillages triangulaires 2D différents, la longueur des arêtes variant d'un bout à l'autre du maillage en fonction de la structure sous-jacente modélisée.
MeshGraphNets (MGN)
Data associated with each simulation
Node type: a 5-dimensional one-hot vector corresponding to node location in fluid, wall, inflow, or outflow regions.
Mesh topology: a each node contains the 2D position vector of its location in the two dimensional space that is being simulated.
Node attributes: 2D velocity vector of the fluid, and the scalar pressure.
Les données associées à chaque graphique de l'ensemble de données sont les suivantes :
- Type de nœud : un vecteur unitaire à 5 dimensions correspondant à l'emplacement du nœud dans les régions de fluide, de paroi, d'entrée ou de sortie.
- Topologie du maillage : chaque nœud contient le vecteur de position 2D de son emplacement dans l'espace bidimensionnel simulé.
- Attributs des nœuds : il s'agit des données sous-jacentes que nous allons apprendre aux MeshGraphNets à simuler. L'ensemble de données contient à la fois le vecteur de vitesse 2D du fluide et la pression scalaire, qui peut être directement calculée à partir de la vitesse en fonction du temps.
MeshGraphNets (MGN)
Graph signature in PyTorch Geometric (PyG)
MeshGraphNets (MGN)
Graph signature in PyTorch Geometric (PyG)
'''
For each node i in the graph with neighbor node j:
x - (node features) ground truth 2D velocities &
5D node type one-hot vector for all nodes [num_nodes x 7]
edge_index - connectivity of the graph. [2 x num_edges]
edge_attr - (edge features) 2D position vector between connecting nodes
& 2-norm of the position vector. [num_edges x 3]
y - (node outputs) ground truth 2D velocities at next time step.
[num_nodes x 2]
p - pressure scalar, used for validation [num_nodes x 1]
cells and mesh_pos: these attributes contain no new information.
'''
Data(x=x, edge_index=edge_index, edge_attr=edge_attr, y=y, p=p,
cells=cells, mesh_pos=mesh_pos)
Le résultat principal est le résultat final : dans PyG, chaque graphe est stocké dans une instance de torch_geometric.data.Data, qui stocke tous les attributs du graphe. Notre pré-processeur renvoie une liste de tous les graphes à chaque pas de temps pour toutes les trajectoires utilisées pendant l'entraînement. Un élément unique (c'est-à-dire un graphe correspondant à un seul pas de temps) a la signature suivante.
MeshGraphNets (MGN)
Netwrok architecture: Encoding - Processing - Decoding
Comme décrit, l'architecture des MeshGraphNets se compose d'étapes d'encodage, de traitement et de décodage. L'"encodage" génère des encodages de nœuds et d'arêtes à partir de caractéristiques, le "traitement" s'occupe du passage des messages, de l'agrégation et de la mise à jour, et le décodage est l'étape de post-traitement qui donne la prédiction finale.
MeshGraphNets (MGN)
Netwrok architecture: Encoding - Processing - Decoding
1. Encoding
L'étape d'encodage a pour tâche de générer les encastrements de nœuds et d'arêtes à partir des caractéristiques initiales du graphe, sur lesquelles nous nous entraînons ensuite lors de l'étape de traitement. Rappelons dans la discussion sur l'ensemble de données que les caractéristiques initiales des nœuds du graphe sont la vitesse concaténée au pas de temps actuel, désignée par wᵢ, avec le vecteur de type de nœud à un coup, désigné par nᵢ. Les caractéristiques de chaque nœud sont introduites dans un MLP, εᵥ, pour obtenir la caractéristique du nœud, vᵢ.
MeshGraphNets (MGN)
Netwrok architecture: Encoding - Processing - Decoding
2. Processing: Message Passing, Aggregation, Updating
Transmission de messages : Le message que chaque arête transmet aux nœuds voisins pour la mise à jour des nœuds est une transformation apprise par l'intermédiaire d'un MLP, avec un saut de connexion (fₘ) de l'intégration de l'arête propre, concaténée avec les intégrations des nœuds de connexion.
Agrégation : Il y a deux étapes d'agrégation dans MeshGraphNets : la première est l'agrégation des messages des voisins (c.-à-d., l'intégration des arêtes mise à jour). Il s'agit d'une sommation sur les arêtes connectées de chaque nœud. La deuxième étape d'agrégation consiste à agréger les messages agrégés ci-dessus avec l'intégration du nœud lui-même.
Mise à jour : La mise à jour s'effectue en passant le résultat final de l'agrégation pour chaque nœud dans un MLP avec une connexion de saut, fᵥ.
MeshGraphNets (MGN)
Netwrok architecture: Encoding - Processing - Decoding
3. Decode
Les accélérations finales pour chaque nœud i, désignées par pᵢ, sont trouvées en passant les encastrements de nœuds finaux, vᵢ', par le MLP de décodage δᵥ.
MeshGraphNets (MGN)
Learning mesh-based simulation with Graph Networks