Coder Social home page Coder Social logo

sgrubas / nes Goto Github PK

View Code? Open in Web Editor NEW
35.0 4.0 4.0 47.99 MB

Neural Eikonal Solver: framework for modeling traveltimes via solving eikonal equation using neural networks

Home Page: https://sgrubas.github.io/NES/

License: MIT License

Python 0.43% Jupyter Notebook 99.57%
caustics eikonal-equation eikonal-solver physics-informed-neural-networks traveltime neural-eikonal-solver

nes's Introduction

Neural Eikonal Solver

Neural Eikonal Solver (NES) is framework for solving factored eikonal equation using physics-informed neural network, for details see our paper: early arXiv version and published final version. NES can simulate traveltimes of seismic waves in complex inhomogeneous velocity models.

Description

See quick introduction on Google Colab

NES has two solvers:

  1. One-Point NES (NES-OP) is to solve conventional one-point eikonal (NES-OP tutorial)

$$\Vert \nabla \tau(\textbf{x}) \Vert = \frac{1}{v(\textbf{x})}$$

  1. Two-Point NES (NES-TP) is to solve generalized two-point eikonal (NES-TP tutorial)

$$\Vert \nabla_r T(\textbf{x}_s, \textbf{x}_r) \Vert = \frac{1}{v(\textbf{x}_r)}$$

$$\Vert \nabla_s T(\textbf{x}_s, \textbf{x}_r) \Vert = \frac{1}{v(\textbf{x}_s)}$$

So far, NES outperforms all existing neural-network based solutions. Table shows average performance results on a smoothed part of Marmousi model (NES-OP vs. PINNeik and NES-TP vs. EikoNet). RMAE is relative mean-absolute error with respect to the reference solution (second-order factored Fast Marching Method). The tests were performed on GPU Tesla P100-PCIE.

Solver RMAE, % Training time, sec Network size
NES-OP (ours) 0.2 240 7856
PINNeik 12.4 330 4061
NES-TP (ours) 0.4 300 51308
EikoNet 5.4 9600 7913249

For detailed comparisons see our colab notebooks EikoNet and PINNeik.

Installation

pip install git+https://github.com/sgrubas/NES.git

Quick example

import NES

Vel = NES.velocity.MarmousiSmoothedPart()
Eik = NES.NES_TP(velocity=Vel)
Eik.build_model()
h = Eik.train(x_train=100000, epochs=1000, batch_size=25000)

grid = NES.utils.RegularGrid(Vel)
Xs = grid((5, 5)); Xr = grid((100, 100))
X = grid.sou_rec_pairs(Xs, Xr)
T = Eik.Traveltime(X)

2D examples of NES-OP

Isochrones of solutions. RMAE is shown above each figure. The NES solutions are white dashed isochrones, the reference solutions are black isochrones.

0.06% 0.12%

0.42% 0.28%

0.33% 0.34%

Citation

If you find NES useful for your research, please cite our paper and this repo:

@article{grubas2023NES,
title = {Neural Eikonal solver: Improving accuracy of physics-informed neural networks for solving eikonal equation in case of caustics},
journal = {Journal of Computational Physics},
volume = {474},
pages = {111789},
year = {2023},
issn = {0021-9991},
doi = {https://doi.org/10.1016/j.jcp.2022.111789},
url = {https://www.sciencedirect.com/science/article/pii/S002199912200852X},
author = {Serafim Grubas and Anton Duchkov and Georgy Loginov},
keywords = {Physics-informed neural network, Eikonal equation, Seismic, Traveltimes, Caustics}
}

@article{grubas2023NESpython,
title = {Neural Eikonal Solver},
journal = {GitHub},
url = {https://github.com/sgrubas/NES},
doi = {10.5281/zenodo.12588346},
year = {2023},
author = {Serafim Grubas and Anton Duchkov and Georgy Loginov}
}

Future plans

  • Anisotropic eikonal
  • Ray tracing
  • Wave amplitudes
  • Earthquake localization
  • Traveltime tomography

Developers

Serafim Grubas ([email protected])
Nikolay Shilov
Anton Duchkov
Georgy Loginov

nes's People

Contributors

serafimgrubas avatar sgrubas avatar shilov-nikolay-jr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

nes's Issues

About anisotropic eikonal equation

Hi,

thank you for the great work! I have noticed the "anisotropic eikonal" in the future plan. Do you have a plan about it? Looking forward!

Best

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.