Inverse problems in granular flows, such as landslides and debris flows, involve estimating material parameters or boundary conditions based on target runout profile. We propose a novel differentiable graph neural network simulator (GNS) by combining reverse mode automatic differentiation (AD) of graph neural networks with gradient-based optimization for solving inverse problems in granular flows. This repository shows provides examples of solving inverse problems using the proposed method (AD-GNS).
git clone --recurse-submodules https://github.com/geoelements/gns-inverse-examples.git
Note that this project submodules this GNS.
- SSH to TACC LS6 GPU node.
- Set up a virtualenv:
source build_venv.sh
- Check tests run successfully.
- Start your virtual env:
source start_venv.sh
This example demonstrates single parameter inverse of determining material property
(friction angle (
To run the inverse analysis, the data
and simulator
files should be located
in ./inverse_friction/
directory. We shared these files here.
To carry out the inverse,
python3 inverse_friction/inverse.py --input_path="inverse_friction/data/<scenario>/<configuration>"
-
We provide four different inverse analysis scenarios,
short_phi21
,short_phi42
,tall_phi21
,tall_phi42
, which can be entered in<scenario>
in the above command line. -
We also provide two differentiation methods for conducting gradient-based optimization: reverse-mode automatic differentiation (AD), which is our proposed approach, and finite differentiation (FD). The differentiation methods can be specified by changing the option in the configuration file, or simply use
config_ad.json
orconfig_fd.json
files provided ininverse_friction/data/
. These config file names can be entered in<configuration>
in the above command line.
- Optimization history for
short_phi21
. The target is$\phi=21\degree$ :
Real-world inverse problems are complex as they include
multiple parameters for optimization. This example demonstrates
multi-parameter inverse of evaluating the initial boundary conditions.
The objective is to determine the initial boundary condition, i.e., x-velocities (
Similar to inverse_friction
, to run the inverse analysis,
the data
and simulator
files should be located
in ./Inverse_velocity/
directory. We shared these files here.
To carry out the inverse,
python3 inverse_velocity/inverse.py --input_path="inverse_velocity/config.toml"
- Optimization history:
- MPM simulation results of the final deposit from the optimized velocities and target velocities:
- Trajectories
Our AD-GNS can be used for designing engineering structures, which involves optimizing the design parameters of structural systems to achieve a specific functional outcome. This example demonstrate the use of AD-GNS in the design of the debris-resisting baffles to achieve a target runout distance. Our inverse analysis aims to optimally position the baffles to halt granular flow within a predefined area.
Similar to the previous cases, to run the inverse analysis,
the data
and simulator
files should be located
in ./Inverse_barrier/
directory. We shared these files here.
To carry out the inverse,
python3 inverse_velocity/inverse.py --input_path="inverse_barrier/config.json"
- Optimization history:
- MPM simulation results of final deposit from the inferred baffle locations and its flow toe centroid compared to the target: