Home

Awesome

FwiFlow: Wave and Flow Inversion with Intrusive Automatic Differentiation

Quick InstallDocumentation
using Pkg; Pkg.add("FwiFlow")

Highlights

Philosophy

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.

<p align="center"> <img src="docs/src/assets/op.png" width="50%"> </p>

Applications

The following examples are for inversion

<img src="docs/src/assets/marmousi_inv.png" width="270"><img src="docs/src/assets/flow.png" width="270"><img src="docs/src/assets/diagram.png" width="270">
Full-waveform InversionTwo Phase FlowFWI-Two Phase Flow Coupled Inversion
<img src="docs/src/assets/frac.png" width="270">
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.

Misc

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

LICENSE

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