All Projects → lidongzh → FwiFlow.jl

lidongzh / FwiFlow.jl

Licence: MIT license
Elastic Full Waveform Inversion for Subsurface Flow Problems Using Intrusive Automatic Differentiation

Programming Languages

julia
2034 projects
shell
77523 projects

Projects that are alternatives of or similar to FwiFlow.jl

MASA
Method of Manufactured Solutions Repository
Stars: ✭ 46 (+91.67%)
Mutual labels:  automatic-differentiation
Tensors.jl
Efficient computations with symmetric and non-symmetric tensors with support for automatic differentiation.
Stars: ✭ 142 (+491.67%)
Mutual labels:  automatic-differentiation
Tensorial.jl
Statically sized tensors and related operations for Julia
Stars: ✭ 18 (-25%)
Mutual labels:  automatic-differentiation
omd
JAX code for the paper "Control-Oriented Model-Based Reinforcement Learning with Implicit Differentiation"
Stars: ✭ 43 (+79.17%)
Mutual labels:  automatic-differentiation
JUDI.jl
Julia Devito inversion.
Stars: ✭ 71 (+195.83%)
Mutual labels:  fwi
Fortran-Tools
Fortran compilers, preprocessors, static analyzers, transpilers, IDEs, build systems, etc.
Stars: ✭ 31 (+29.17%)
Mutual labels:  automatic-differentiation
Aerosandbox
Aircraft design optimization made fast through modern automatic differentiation. Plug-and-play analysis tools for aerodynamics, propulsion, structures, trajectory design, and much, much more.
Stars: ✭ 193 (+704.17%)
Mutual labels:  automatic-differentiation
YaoBlocks.jl
Standard basic quantum circuit simulator building blocks. (archived, for it is moved to Yao.jl)
Stars: ✭ 26 (+8.33%)
Mutual labels:  automatic-differentiation
Causing
Causing: CAUsal INterpretation using Graphs
Stars: ✭ 47 (+95.83%)
Mutual labels:  automatic-differentiation
Scientific-Programming-in-Julia
Repository for B0M36SPJ
Stars: ✭ 32 (+33.33%)
Mutual labels:  automatic-differentiation
AdFem.jl
Innovative, efficient, and computational-graph-based finite element simulator for inverse modeling
Stars: ✭ 62 (+158.33%)
Mutual labels:  automatic-differentiation
MultiScaleArrays.jl
A framework for developing multi-scale arrays for use in scientific machine learning (SciML) simulations
Stars: ✭ 63 (+162.5%)
Mutual labels:  automatic-differentiation
MissionImpossible
A concise C++17 implementation of automatic differentiation (operator overloading)
Stars: ✭ 18 (-25%)
Mutual labels:  automatic-differentiation
admc
Infinite order automatic differentiation for Monte Carlo with unnormalized probability distribution
Stars: ✭ 17 (-29.17%)
Mutual labels:  automatic-differentiation
FWI
RTM
Stars: ✭ 30 (+25%)
Mutual labels:  fwi
Tullio.jl
Stars: ✭ 231 (+862.5%)
Mutual labels:  automatic-differentiation
cgdms
Differentiable molecular simulation of proteins with a coarse-grained potential
Stars: ✭ 44 (+83.33%)
Mutual labels:  automatic-differentiation
AbstractOperators.jl
Abstract operators for large scale optimization in Julia
Stars: ✭ 26 (+8.33%)
Mutual labels:  automatic-differentiation
autodiffr
Automatic Differentiation for R
Stars: ✭ 21 (-12.5%)
Mutual labels:  automatic-differentiation
xcfun
XCFun: A library of exchange-correlation functionals with arbitrary-order derivatives
Stars: ✭ 50 (+108.33%)
Mutual labels:  automatic-differentiation

FwiFlow: Wave and Flow Inversion with Intrusive Automatic Differentiation

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

Highlights

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

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.

Applications

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.

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.
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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].