Elastic Full Waveform Inversion for Subsurface Flow Problems Using Intrusive Automatic Differentiation
35 Stars
Updated Last
1 Year Ago
Started In
April 2019

FwiFlow: Wave and Flow Inversion with Intrusive Automatic Differentiation

Quick Install Documentation
using Pkg; Pkg.add("FwiFlow")


  • GPU-accelerated FWI module with checkpointing schemes;
  • AMG-accelerated implicit pressure-implicit saturation scheme;
  • Time Fractional Partial Differential Equations


We treat physical simulations as a chain of multiple differentiable operators, such as discrete Laplacian evaluation, a Poisson solver, and a single implicit time-stepping for nonlinear PDEs. They are like building blocks that can be assembled to make simulation tools for new physical models.

Those operators are differentiable and integrated within a computational graph so that the gradients can be computed automatically and efficiently via analyzing the dependency in the graph. Also, independent operators run in parallel, thanks to the graph-based parallelization mechanism of TensorFlow. With the gradients, we can perform gradient-based PDE-constrained optimization for inverse problems.

FwiFlow is built on ADCME, a powerful static-graph-based automatic differentiation library for scientific computing (with TensorFlow backend). FwiFlow implements the idea of Intrusive Automatic Differentiation.


The following examples are for inversion

Full-waveform Inversion Two Phase Flow FWI-Two Phase Flow Coupled Inversion
Time Fractional PDE

Research Papers

  1. Dongzhuo Li (co-first author), Kailai Xu (co-first author), Jerry M. Harris, and Eric Darve. Coupled Time‐Lapse Full‐Waveform Inversion for Subsurface Flow Problems Using Intrusive Automatic Differentiation, Water Resources Research, 56(8), p.e2019WR027032 (https://doi.org/10.1029/2019WR027032).
  2. Kailai Xu (co-first author), Dongzhuo Li (co-first author), Eric Darve, and Jerry M. Harris. Learning Hidden Dynamics using Intrusive Automatic Differentiation.


The TorchFWI package, which shares the elastic FWI part, can be found here. It may be helpful if one wants to experiment with PyTorch.
An older version of this repository can be found here. It contains all scripts to recreate results in paper 1.


MIT License Copyright (c) 2019 Dongzhuo Li and Kailai Xu

Used By Packages

No packages found.