  We develop a PyTorch-based Graph Network Simulator (GNS) that learns physics
and predicts the flow behavior of particulate and fluid systems. GNS
discretizes the domain with nodes representing a collection of material points
and the links connecting the nodes representing the local interaction between
particles or clusters of particles. The GNS learns the interaction laws through
message passing on the graph. GNS has three components: (a) Encoder, which
embeds particle information to a latent graph, the edges are learned functions;
(b) Processor, which allows data propagation and computes the nodal
interactions across steps; and (c) Decoder, which extracts the relevant
dynamics (e.g., particle acceleration) from the graph. We introduce
physics-inspired simple inductive biases, such as an inertial frame that allows
learning algorithms to prioritize one solution (constant gravitational
acceleration) over another, reducing learning time. The GNS implementation uses
semi-implicit Euler integration to update the next state based on the predicted
accelerations. GNS trained on trajectory data is generalizable to predict
particle kinematics in complex boundary conditions not seen during training.
The trained model accurately predicts within a 5\% error of its associated
material point method (MPM) simulation. The predictions are 5,000x faster than
traditional MPM simulations (2.5 hours for MPM simulations versus 20 s for GNS
simulation of granular flow). GNS surrogates are popular for solving
optimization, control, critical-region prediction for in situ viz, and
inverse-type problems. The GNS code is available under the open-source MIT
license at https://github.com/geoelements/gns.
