Meshing is a critical, but user-intensive process necessary for stable and accurate simulations in computational fluid dynamics (CFD). Mesh generation is often a bottleneck in CFD pipelines. Adaptive meshing techniques allow the mesh to be updated automatically to produce an accurate solution for the problem at hand. Existing classical techniques for adaptive meshing require either additional functionality out of solvers, many training simulations, or both. Current machine learning techniques often require substantial computational cost for training data generation, and are restricted in scope to the training data flow regime. Mesh Deep Q Network (MeshDQN) is developed as a general purpose deep reinforcement learning framework to iteratively coarsen meshes while preserving target property calculation. A graph neural network based deep Q network is used to select mesh vertices for removal and solution interpolation is used to bypass expensive simulations at each step in the improvement process. MeshDQN requires a single simulation prior to mesh coarsening, while making no assumptions about flow regime, mesh type, or solver, only requiring the ability to modify meshes directly in a CFD pipeline. MeshDQN successfully improves meshes for two 2D airfoils.

Mesh generation in computational fluid dynamics (CFD) is a critical step for stable and accurate simulations. However, one of seven key findings from a year-long NASA study published in 2014 is that mesh generation and adaptation remains a significant bottleneck in the CFD workflow.1 One of the reasons for this is meshing tends to be done with intuition and experience, rather than a strictly mathematical approach, to get convergence and stable simulations.2 In order to achieve the goals of the NASA study, autonomous mesh generation is a necessary next step. A more recent review on the progress of modeling and mesh generation since the study has indicated a growing interest in adaptive mesh techniques to aid in mesh generation.3 

Substantial literature exists on using both classical as well as machine learning techniques for adaptive meshing.4–6 Much of the focus on classical approaches is on pointwise error estimation and subsequent refinement.5 While these methods can be used to improve meshes, they often require additional backward solves to compute adjoint states with a full simulation at each step to recalculate the velocity and pressure fields. This adds computational time, as well as additional necessary features into a CFD solver, often rendering the method unfeasible with CFD codes and pipelines. More recently, many machine learning models and methods have been developed for adaptive meshing. However, these methods tend to rely on substantial up-front computational time in training data generation, where many simulations are run,7 and adjoint-based adaptive meshing is used.6 

Iterative mesh refinement can instead be viewed as a sequential decision making process, where each region or vertex to be modified constitutes another decision. This is well suited for deep reinforcement learning (DRL). Recent surveys have shown DRL applied to CFD has been primarily focused on control and optimization.8,9 To the best of our knowledge, no work has been done in applying DRL for CFD meshing, specifically.

While using DRL for CFD meshing is novel, applying ML techniques for faster solutions is not. Works in operator learning,10 surrogate modeling,11–13 and system identification14 offer alternative approaches to improve CFD simulations. Operator learning and surrogate modeling are different methods to learn the temporal evolution of the system. System identification is used to find new equations that describe the system at hand. While these approaches show promise, meshing, specifically, is the focus of this work because it allows practitioners to use existing CFD solvers on the Navier–Stokes equations.

In this work, we develop a general purpose DRL framework to coarsen CFD meshes while maintaining accuracy in the calculation of coarse properties such as lift and drag. Mesh coarsening decreases simulation time and is done by selecting and removing individual vertices in the mesh. Proof of concept is demonstrated on 2D airfoils. Our framework requires a single solve prior to training. Interplay between different geometry, meshing, and simulation codes is often of practical concern. Eliminating any dependence of our method on any particular code is of key importance for wide adoption. This framework only requires modifying the mesh directly, which allows us to use standard CFD solvers to run subsequent simulations. Finally, our model makes no assumptions about the type of mesh, flow regime, solver, or dimensionality of the system. This allows our method to be easily incorporated into CFD pipelines.

The Mesh Deep Q Network (MeshDQN) framework is given below in Fig. 1. After running an initial simulation, the pressures, velocities, coordinates, and edges are saved. This data is then passed into the property calculation, where a coarse property, such as drag or lift, is calculated. The reward is then calculated from the property.

FIG. 1.

Each step begins by converting the current state st into a graph representation as described above. The state and reward rt are passed into the DQN, where a vertex is selected by action at. The chosen vertex is then removed, the mesh is smoothed using local averaging roughly until convergence, where the velocity and pressure are interpolated to the new mesh, creating our next state st+1. The target property is calculated using the new velocities and pressures, where the reward rt+1 is calculated. This workflow creates the tuple (st, at, st+1, rt+1) necessary for Double DQN training.

FIG. 1.

Each step begins by converting the current state st into a graph representation as described above. The state and reward rt are passed into the DQN, where a vertex is selected by action at. The chosen vertex is then removed, the mesh is smoothed using local averaging roughly until convergence, where the velocity and pressure are interpolated to the new mesh, creating our next state st+1. The target property is calculated using the new velocities and pressures, where the reward rt+1 is calculated. This workflow creates the tuple (st, at, st+1, rt+1) necessary for Double DQN training.

Close modal

The goal of CFD is to solve the Navier–Stokes equations over a discrete mesh. This work focuses on the incompressible NS equations with viscous flow:

(1)

where ρ is the density, u is the velocity, σ is the Cauchy stress tensor, p is the pressure, and f is the forcing term.

Solving the NS equations numerically gives us pressure and velocity at each point. The drag and lift are calculated from our solution velocity and pressure as

(2)
(3)

Where FD and FL are drag force and lift force, respectively and σ is again, the Cauchy stress tensor.

The meshes were generated using Delaunay Triangulation15 as part of GMSH,16 with Meshio17 used as an intermediary to convert mesh files into a useable format for the CFD solver. Simulations for this work were done over 5 s with the incremental pressure correction scheme (IPCS)18 implemented in Dolfin as part of FEniCS,19,20 based on the FEniCS Tutorial Volume 1.21 

In reinforcement learning (RL), an agent interacts with an environment through actions. The agent takes in a state s, selects an action a, which results in a new state s′. Additionally, a reward r is given after each action.

The goal in this case is to find an action selection policy such that reward is maximized. One way of measuring the quality of a state–action pair, and learning this Q-function is known as Q learning. The Q-function is defined in Eq. (4), where the reward R is given based on taking action a while in state s, and following the optimal policy afterward.

(4)

That is Qπ is the expected value of reward given our current state S0 = s, our current action A0 = a, and our policy π, with a given discount factor γ.

Deep RL (DRL) specifically refers to the use of neural networks for policy estimation. In this work, a graph neural network (GNN) is used to estimate the Q function, known as a Deep Q Network (DQN). Specifically, Double DQN is used, where one Q network performs action selection, and the other performs action evaluation, as in Eq. (5). This is algorithm is used because it overestimates action values significantly less than DQN and is very easy to implement on top of DQN.22 

(5)

The loss function, defined in Eq. (6), is then a function of the expected action value, as estimated by Qeval, and the actual selected action value, as measured by Qselect. Gradients from the loss are propagated backward to one network at a time, where the network being updated alternates every few episodes.

(6)

where St+1 is the resultant state from taking action at at state st, and Rt+1 is the reward from state St+1.

Meshes in CFD can be naturally interpreted as a graph G=(N,E), where the nodes N are the mesh vertices, and the edges E are the connections between vertices. By interpreting meshes as graphs, Graph Neural Networks (GNNs) become a natural model choice for learning in this context. The structure of GNNs can be generally understood in three phases: aggregation, combination, and readout. The aggregation step aggregates information from nodes and their neighbors.

(7)

where hu(k1) is the representation at layer k − 1 for node u in the neighbors of v, N(v). Once aggregated, the information is pooled, where popular approaches are mean and max pooling.

(8)

Finally, the readout operation is performed, often after several aggregation and combination steps. Pooling operations are also popular for the readout step.

(9)

for each node v in graph G. A more detailed description of GNNs can be found in a recent survey.23 

Node-level GNNs are used in this work because the values of interest, velocity and pressure, are defined at the nodes of the graph, and vertex selection is ultimately a node classification task. The DQN architecture used in this work is based on AirfoilGCNN, seen in Fig. 2, which is used for drag and lift prediction of airfoils in unstructured meshes.24 AirfoilGCNN makes use of GraphSAGE25 and Graph Convolutional26 layers as well as top-k pooling.27 

FIG. 2.

Deep Q Network used in MeshDQN. The graph representation of a mesh is passed into the first GraphSAGE layer. Top-K pooling is done after each graph layer. The output from all three GraphSAGE and GCN layers is then pooled with both mean pooling and max pooling into a concatenated vector of size 256 with skip connections. The output from each layer is then added together and passed into a fully-connected neural network classifier.

FIG. 2.

Deep Q Network used in MeshDQN. The graph representation of a mesh is passed into the first GraphSAGE layer. Top-K pooling is done after each graph layer. The output from all three GraphSAGE and GCN layers is then pooled with both mean pooling and max pooling into a concatenated vector of size 256 with skip connections. The output from each layer is then added together and passed into a fully-connected neural network classifier.

Close modal

GraphSAGE layers are specifically designed to generate embeddings for unseen nodes, and are very well suited in this case where actions can result in a new vertex being added to the state space. Each GraphSAGE layer aggregates information from each vertex as well as its neighbors. In this work, aggregation is done as

(10)

And the next state is given by

(11)

Here, N(i) is the set of all neighbors of vertex i, σ is a nonlinearity, and W1(l) and W2(l) are trainable weights in each layer.

GCN layers have been shown to perform well in node classification tasks, and so are also suitable choice here. GCN layers aggregate information in each layer, l, through the adjacency matrix with self–self connection A

(12)

where D = jAij, W(l) is a trainable weight matrix in each layer, and σ is again a nonlinearity.

Top-K pooling is similar to max pooling, but selects the top-k fraction of data instead of the singular maximum value.

Skip connections are utilized in order to more effectively propagate information from each embedding into the final dense layers before classification. Our model was developed using Pytorch Geometric.28 

To begin our DRL training loop, we first run a simulation to calculate our target property using the IPCS scheme from Sec. II A. Our target property is then computed using the equation for either drag [Eq. (2)] or lift [Eq. (3)] and is our ground truth value pgt. Intermediate and final pressure and velocity fields are stored as u0 and p0, respectively, which will be referred to as snapshots. The number of snapshots to store can be tuned for the problem at hand. This is used to construct our initial state, which is stored as a graph, G=N,E. Our state is defined as the N closest vertices to the airfoil, seen in Fig. 3, inspired by an approach for designing nanopores.29 Training was parallelized across 15 CPU cores using Ray,30 where 14 executed MeshDQN and the 15th acted as a server for DQN weights and updates.

FIG. 3.

The initial state is given by the 180 vertices in the mesh closest to the airfoil, seen in blue. The remaining black vertices are added to the state as vertices are removed. Red vertices are the vertices on the boundary of the airfoil and simulation box. These are not removable and cannot be added to the state.

FIG. 3.

The initial state is given by the 180 vertices in the mesh closest to the airfoil, seen in blue. The remaining black vertices are added to the state as vertices are removed. Red vertices are the vertices on the boundary of the airfoil and simulation box. These are not removable and cannot be added to the state.

Close modal

1. State and action space

The node-level information at each vertex is

Where m is the x and y coordinates of each mesh vertex, u is the x and y flow velocities at each vertex for each snapshot, p is the pressure at each vertex for each snapshot, and indicates column-wise concatenation. The edge index is simply the connectivity between vertices in our mesh and the edge attribute is the Euclidean distance between vertices. The complete state space is given by S which is a mixed continuous and discrete state space. Our action space A is all vertices in the current state, as well as an additional “no removal” option that replaces the vertex nearest to the airfoil in the current state with the vertex nearest to the airfoil that is farther than all points in the current state. The “no removal” action stacks for a given episode, meaning that if the “no removal” action is selected N times, then for a state consisting of 200 vertices, the vertices are the Nth through N + 200th closest to the airfoil.

Before initialization and after each vertex removal, the mesh is smoothed with local averaging 50 times for approximate convergence. Local averaging shifts each vertex to the average coordinates of all of its neighbors not including itself. Boundary vertices are not shifted and shift magnitude is bounded so at most a vertex will move half the distance to the nearest boundary. Smoothing until convergence allows the full effect of each vertex removal to be realized immediately. This helps decorrelate actions from each other, making the dynamics of the system simpler.

2. Interpolation

After vertex removal and smoothing is complete, the original snapshot values are interpolated onto the new mesh. Interpolation is done using piecewise elements as supported by FEniCS. Second order interpolation is done for velocities and first order is done for pressures. This matches the element order of the finite element method used in these simulations, which has shown acceptable accuracy. A toy example of interpolation is shown in Fig. 4.

FIG. 4.

The initial pressures and velocities are interpolated onto the new mesh at each interpolation step.

FIG. 4.

The initial pressures and velocities are interpolated onto the new mesh at each interpolation step.

Close modal

3. Reward function

Finally, the reward function is defined in Eq. (13) where a broken mesh or broken interpolation returns a negative reward and ends the episode. The initial velocities and pressures are interpolated to the new mesh after each vertex removal and used for property estimation.

(13)

When the mesh and interpolation do not break, the reward is given by a property and time component, defined in Eqs. (14) and (16), respectively. The factor K is selected for an accuracy threshold of 0.1%, in line with thresholds found in literature.31 An error of 0.05% yields a property reward of 0, and negative reward for worse accuracy. When the accuracy threshold is exceeded after a vertex removal, the episode is ended. Additionally, after a specified target number of vertices are removed the episode is ended. This reward incentivizes the selection of vertices that reduce error the smallest amount, and begins to penalize vertices if their removal results in too large of a drop in accuracy. The maximum property reward is 1, and the minimum is −1. A more in-depth exploration of the property reward function is given in Appendix A.

(14)

The factor K can then be computed analytically by setting Rproperty = 0 for an error of 0.0005 and solving for K:

(15)

For the time reward, the factor 0.005 is chosen so that the reward remains approximately constant after the removal of a vertex that results in a small, expected, drop in accuracy. This incentivizes vertex removals, and without this, MeshDQN would be rewarded for selecting “no removal” at every step. The full workflow is given in Fig. 1.

(16)

Drag, specifically is used as the target property in these experiments. The YS93032 and AH93W14533 airfoils from the UIUC Airfoil Database34 were used, with results in Table I. We use an accuracy threshold of 0.1%31 and aim for 5% of vertices to be removed.

TABLE I.

MeshDQN is able to remove over 5% of vertices for both airfoils, while inducing an error significantly smaller than our target threshold for our target property, drag. More lift error is induced in AH93W145, but this is well within the range of calculated lift values from standard meshes.

AirfoilVertices removed (%)Drag error (%)Lift error (%)
YS930 5.023 0.039 0.002 
AH93W145 5.019 0.026 1.782 
AirfoilVertices removed (%)Drag error (%)Lift error (%)
YS930 5.023 0.039 0.002 
AH93W145 5.019 0.026 1.782 

We see in Fig. 5 that MeshDQN is able to improve upon the selected airfoil, maintaining accuracy in the target property of drag for 44 vertices removed for the YS930 airfoil. This accuracy is maintained past a mesh that was generated using Delaunay triangulation and smoothing. Drag is also approximately maintained after each vertex removal, indicating MeshDQN is selecting vertices that maintain the drag at each step. The initial and final YS930 airfoils are give in Fig. 7. Lift results are given in Fig. 6, where we see lift is also preserved. Plots for the AH93W145 airfoil are given in Appendix B.

FIG. 5.

The trajectory of the computed drag is seen in red, where a full simulation is run after each vertex removal. We see drag is maintained after 5% of vertices have been removed.

FIG. 5.

The trajectory of the computed drag is seen in red, where a full simulation is run after each vertex removal. We see drag is maintained after 5% of vertices have been removed.

Close modal
FIG. 6.

The trajectory of the computed lift is seen in red, where a full simulation is run after each vertex removal. We see lift is maintained fairly well after 5% of vertices have been removed.

FIG. 6.

The trajectory of the computed lift is seen in red, where a full simulation is run after each vertex removal. We see lift is maintained fairly well after 5% of vertices have been removed.

Close modal

The initial and final meshes are given in Fig. 7. We see the mesh is sparser at the top and bottom surfaces of the airfoil, in the boundary flow layer where the flow is relatively simple.

FIG. 7.

YS930 Airfoil with original, smoothed mesh on top (a), and final, improved mesh on the bottom (b) with unitless coordinates in the x and y directions. We see the agent has removed many vertices close to the airfoil, but has left vertices in complex flow regions at the leading and trailing edges of the airfoil.

FIG. 7.

YS930 Airfoil with original, smoothed mesh on top (a), and final, improved mesh on the bottom (b) with unitless coordinates in the x and y directions. We see the agent has removed many vertices close to the airfoil, but has left vertices in complex flow regions at the leading and trailing edges of the airfoil.

Close modal

Interpolation is the key in allowing MeshDQN to quickly estimate target property values, and is of critical importance for accurate mesh improvement trajectories. Interpolated and calculated values are compared in Fig. 8. The green trajectory is the interpolated drag and lift value after each vertex removal, and the red trajectory is the value calculated from a full numerical simulation. In both figures, we see that the interpolated and calculated values correlate well with each other, generally showing shifts up and down in the same locations. However, the magnitude of shift is not the same. For lift, which was not used in training, there is little correlation between interpolated and calculated values.

FIG. 8.

Comparing calculated (red) and interpolated (green) values for the drag and lift, we see good correlation for the target property of drag. Correlation between calculated and interpolated lift values is weaker.

FIG. 8.

Comparing calculated (red) and interpolated (green) values for the drag and lift, we see good correlation for the target property of drag. Correlation between calculated and interpolated lift values is weaker.

Close modal

We see MeshDQN has successfully taken fine meshes and selectively removed vertices while maintaining target property accuracy for 2D viscous, laminar flow for an unstructured mesh. MeshDQN is able to improve the mesh for multiple airfoils, while making no assumptions about the solver scheme, mesh type, flow regime, or dimensionality. While the current framework has demonstrated success at the given task, improved interpolation accuracy is of critical importance and is the current accuracy bottleneck.

While this work demonstrates a promising first step toward applying adaptive meshing to systems in CFD, there are many additional areas of CFD and meshing to explore. A promising future direction of research would be to apply this framework to new mesh types, such as structured, block structured, and arbitrary polygon unstructured meshes. Additionally, this work focused primarily on laminar flows, so applying this framework for turbulent flows remains an open problem. Further, this framework could be adapted to 3D geometries. Finally, this framework was used simply for reducing the number of nodes in a fine mesh. In order to fully adapt a mesh to a particular problem, adding vertices to the mesh is necessary for refinement in regions of complex flow with high Reynolds number. This would also allow practitioners to begin with a relatively coarse mesh easy to generate mesh and adaptively refine the mesh to a given problem, making the CFD development significantly easier.

supplementary material contains further explanation of the drag reward, results for the AH93W145 airfoil, as well as training and simulation parameters.

C.L. acknowledges Francis Ogoke for providing starter simulation code and helping with debugging. C.L. acknowledges Zhonglin Cao for the idea of using N closest vertices to the airfoil.

This material is based upon work supported by the National Science Foundation under Grant No. 1953222.

The authors have no conflicts to disclose.

Cooper Lorsung: Conceptualization (equal); Data curation (lead); Formal analysis (lead); Methodology (lead); Software (lead); Validation (supporting); Visualization (lead); Writing – original draft (lead); Writing – review & editing (lead). Amir Barati Farimani: Conceptualization (equal); Funding acquisition (lead); Resources (lead); Supervision (lead); Writing – review & editing (supporting).

The data that support the findings of this study are openly available at https://github.com/BaratiLab/MeshDQN.35 

1.
J.
Slotnick
,
A.
Khodadoust
,
J.
Alonso
,
D.
Darmofal
,
W.
Gropp
,
E.
Lurie
, and
D.
Mavriplis
, “
CFD Vision 2030 study: A path to revolutionary computational aerosciences
,”
Technical Report No.NF1676L-18332
(
NASA
,
2014
).
2.
T. J.
Baker
, “
Mesh generation: Art or science?
,”
Prog. Aeronaut. Sci.
41
(
1
),
29
63
(
2005
).
3.
J. R.
Chawner
and
N. J.
Taylor
, “
Progress in geometry modeling and mesh generation toward the CFD Vision 2030
,” in
AIAA Aviation 2019 Forum
(
American Institute of Aeronautics and Astronautics
,
Dallas, TX
,
2019
).
4.
M. A.
Park
,
A.
Loseille
,
J.
Krakos
,
T. R.
Michal
, and
J. J.
Alonso
, “
Unstructured grid adaptation: Status, potential impacts, and recommended investments towards CFD 2030
,” in
46th AIAA Fluid Dynamics Conference, AIAA Aviation Forum
(
American Institute of Aeronautics and Astronautics
,
2016
).
5.
F.
Alauzet
and
A.
Loseille
, “
A decade of progress on anisotropic mesh adaptation for computational fluid dynamics
,”
Comput.-Aided Des.
72
,
13
39
(
2016
), part of special issue: 23rd International Meshing Roundtable Special Issue: Advances in Mesh Generation.
6.
K.
Huang
,
M.
Krügener
,
A.
Brown
,
F.
Menhorn
,
H. J.
Bungartz
, and
D.
Hartmann
, “
Machine learning-based optimal mesh generation in computational fluid dynamics
,” arXiv:2102.12923 (
2021
).
7.
H.
Xu
,
Z.
Nie
,
Q.
Xu
,
Y.
Li
,
F.
Xie
, and
X. J.
Liu
, “
SuperMeshing: Boosting the mesh density of stress field in plane-strain problems using deep learning method
,”
J. Comput. Inf. Sci. Eng.
23
,
034501
(
2022
).
8.
P.
Garnier
,
J.
Viquerat
,
J.
Rabault
,
A.
Larcher
,
A.
Kuhnle
, and
E.
Hachem
, “
A review on deep reinforcement learning for fluid mechanics
,”
Computers Fluids
225
,
104973
(
2021
) .
9.
J.
Viquerat
,
P.
Meliga
, and
E.
Hachem
, “
A review on deep reinforcement learning for fluid mechanics: An update
,”
Physics of Fluids
34
,
111301
(
2022
) .
10.
Z.
Li
,
K.
Meidani
, and
A. B.
Farimani
, “
Transformer for partial differential equations’ operator learning
,” arXiv:2205.13671 (
2022
).
11.
Z.
Li
and
A. B.
Farimani
, “
Graph neural network-accelerated Lagrangian fluid simulation
,”
Comput. Graphics
103
,
201
(
2022
).
12.
P.
Pant
,
R.
Doshi
,
P.
Bahl
, and
A.
Barati Farimani
, “
Deep learning for reduced order modelling and efficient temporal evolution of fluid simulations
,”
Phys. Fluids
33
(
10
),
107101
(
2021
).
13.
C.
Jiang
and
A. B.
Farimani
, “
Deep learning convective flow using conditional generative adversarial networks
,” arXiv:2005.06422 (
2020
).
14.
K.
Meidani
and
A.
Barati Farimani
, “
Data-driven identification of 2D Partial Differential Equations using extracted physical features
,”
Comput. Methods Appl. Mach. Eng.
381
,
113831
(
2021
).
15.
C. B.
Barber
,
D. P.
Dobkin
, and
H.
Huhdanpaa
, “
The quickhull algorithm for convex hulls
,”
ACM Trans. Math. Software
22
(
4
),
469
483
(
1996
).
16.
C.
Geuzaine
and
J.-F.
Remacle
, “
Gmsh: A three-dimensional finite element mesh generator with built-in pre- and post-processing facilities
,”
Int. J. Numer. Methods Eng.
79
,
1309
1331
(
2009
).
17.
N.
Schlömer
,
Li T.
nilswagner
,
C.
Coutinho
,
L.
Dalcin
,
G.
McBain
,
A.
Cervone
,
T.
Langlois
,
S.
Peak
,
M.
Bussonnier
,
V. G. A.
lgiraldi
, and
A.
Croucher
, “
nschloe/meshio v1.11.7
” (
2018
).
18.
K.
Goda
, “
A multistep technique with implicit difference schemes for calculating two- or three-dimensional cavity flows
,”
J. Comput. Phys.
30
(
1
),
76
95
(
1979
).
19.
A.
Logg
,
G. N.
Wells
, and
J.
Hake
, “
DOLFIN: A C++/Python finite element library
,” in
Automated Solution of Differential Equations by the Finite Element Method
, Lecture Notes in Computational Science and Engineering Vol. 84, edited by
K. M. A.
Logg
and
G. N.
Wells
(
Springer
,
2012
), Chap. 10.
20.
A.
Logg
and
G. N.
Wells
, “
DOLFIN: Automated finite element computing
,”
ACM Trans. Math. Software
37
(
2
),
1
(
2010
).
21.
H. P.
Langtangen
and
A.
Logg
,
Solving PDEs in Python: The FEniCS Tutorial Volume I
(
Springer
,
2017
), p.
153
.
22.
H.
van Hasselt
,
A.
Guez
, and
D.
Silver
, “
Deep Reinforcement Learning with Double Q-Learning
,”
Proceedings of the AAAI Conference on Artificial Intelligence
30
(
1
), (
2016
), .
23.
Z.
Wu
,
S.
Pan
,
F.
Chen
,
G.
Long
,
C.
Zhang
, and
P. S.
Yu
, “
A comprehensive survey on graph neural networks
,”
IEEE Trans. Neural Networks Learn. Syst.
32
(
1
),
4
24
(
2021
).
24.
F.
Ogoke
,
K.
Meidani
,
A.
Hashemi
, and
A. B.
Farimani
, “
Graph convolutional networks applied to unstructured flow field data
,”
Mach. Learn.: Sci. Technol.
2
(
4
),
045020
(
2021
).
25.
Will
Hamilton
,
Zhitao
Ying
, and
Jure
Leskovec
, “
Inductive representation learning on large graphs
,”
31st Conference on Neural Information Processing Systems (NIPS 2017)
30
,
1024
1034
(
2017
).
26.
T. N.
Kipf
and
M.
Welling
, “
Semi-supervised classification with graph convolutional networks
,” arXiv:1609.02907 (
2016
).
27.
C.
Cangea
,
P.
Veličković
,
N.
Jovanović
,
T.
Kipf
, and
P.
Liò
, “
Towards sparse hierarchical graph classifiers
,” arXiv:1811.01287 (
2018
).
28.
M.
Fey
and
J. E.
Lenssen
, “
Fast graph representation learning with PyTorch geometric
,” in
ICLR Workshop on Representation Learning on Graphs and Manifolds
,
2019
.
29.
Y.
Wang
,
Z.
Cao
, and
A.
Barati Farimani
, “
Efficient water desalination with graphene nanopores obtained using artificial intelligence
,”
npj 2D Mater. Appl.
5
(
1
),
66
(
2021
).
30.
E.
Liang
,
R.
Liaw
,
R.
Nishihara
,
P.
Moritz
,
R.
Fox
,
K.
Goldberg
,
J.
Gonzalez
,
M.
Jordan
, and
I.
Stoica
, "
Abstractions for distributed reinforcement learning
," in
Proceedings of the 35th International Conference on Machine
Learning (JMLR
,
2018
), pp.
3053
3062
.
31.
A.
Ullah
,
M. B.
Zaman
,
M. A.
Bhatti
,
D.
Qasim
,
A.
Hamid
,
Q.
Xiong
, and
A.
Khan
, “
CFD study of drag and lift coefficients of non-spherical particles
,”
J. King Saud Univ., Eng. Sci.
(
2021
).
32.
Y. T.
Shen
and
R.
Eppler
, “
Wing sections for hydrofoils—Part 2: Nonsymmetrical profiles
,”
J. Ship Res.
25
(
3
),
191
200
(
1981
).
33.
D.
Althaus
,
Niedriggeschwindigkeitsprofil
(
Vieweg
,
1996
).
34.
M. S.
Selig
, UIUC airfoil data site, Department of Aeronautical and Astronautical Engineering, University of Illinois at Urbana-Champaign, Urbana, IL, 1996, https://search.library.wisc.edu/catalog/999919007002121.
35.
C.
Lorsung
and
A. B.
Farimani
, BaratiLab/MeshDQN, January 2023, https://github.com/BaratiLab/MeshDQN.

Supplementary Material