Seismic Toolbox contains all different seismology algorithm (RTM currently). Algorithms are computationally intensive processes which requires propagating wave in 2D model using time domain finite differences wave equation solvers.
During the imaging process a forward-propagated source wave field is combined at regular time steps with a back-propagated receiver wave field. Traditionally, synchronization of both wave fields result in a very large volume of I/O, disrupting the efficiency of typical supercomputers. Moreover, the wave equation solvers are memory bandwidth bound due to low flop-per-byte ratio and non-contiguous memory access, resulting hence in a low utilization of available computing resources.
Alternatively, approaches to reduce the IO bottleneck or remove it completely to fully utilize the processing power are usually explored and utilized such as the use of compression to reduce the I/O volume. Another approach that eliminates the need for I/O would be to add another propagation in reverse-time to the forward propagated source wave field.
- Features
- Prerequisites
- Setup The Environment
- Docker
- Building & Running
- Advanced Running Options
- Results Directories
- Tools
- Versioning
- Changelog
- License
- An optimized OpenMP version:
- Support the following boundary conditions:
- CPML
- Sponge
- Random
- Support the following stencil orders:
- O(2)
- O(4)
- O(8)
- O(12)
- O(16)
- Support 2D modeling and imaging
- Support the following algorithmic approaches:
- Two propagation, an I/O intensive approach where you would store all of the calculated wave fields while performing the forward propagation, then read them while performing the backward propagation.
- We provide the option to use the ZFP compression technique in the two-propagation workflow to reduce the volume of data in the I/O.
- Three propagation, a computation intensive approach where you would calculate the forward propagation storing only the last two time steps. You would then do a reverse propagation, propagate the wave field stored from the forward backward in time alongside the backward propagation.
- Support solving the equation system in:
- Second Order
- Staggered First Order
- Support manual cache blocking.
- Support the following boundary conditions:
- An optimized DPC++ version:
- Support the following boundary conditions:
- None
- Random
- Sponge
- CPML
- Support the following stencil orders:
- O(2)
- O(4)
- O(8)
- O(12)
- O(16)
- Support 2D modeling and imaging
- Support the following algorithmic approaches:
- Three propagation, a computation intensive approach where you would calculate the forward propagation storing only the last two time steps. You would then do a reverse propagation, propagate the wave field stored from the forward backward in time alongside the backward propagation.
- Support solving the equation system in:
- Second order
- Support the following boundary conditions:
- Basic OpenMp Offload version:
- Support the following boundary conditions:
- None
- Support the following stencil orders:
- O(2)
- O(4)
- O(8)
- Support 2D modeling and imaging
- Support the following algorithmic approaches:
- Two propagation, an I/O intensive approach where you would store all of the calculated wave fields while performing the forward propagation, then read them while performing the backward propagation.
- Three propagation, a computation intensive approach where you would calculate the forward propagation storing only the last two time steps. You would then do a reverse propagation, propagate the wave field stored from the forward backward in time alongside the backward propagation.
- Support solving the equation system in:
- Second order
- Support the following boundary conditions:
-
Clone the basic project
git clone https://github.com/brightskiesinc/Reverse_Time_Migration
-
Change directory to the project base directory
cd Reverse_Time_Migration/
-
To install and download everything you can easily run the
setup.sh
script found in/prerequisites
folder./prerequisites/setup.sh
or refer to the
README.md
file in/prerequisites
folder for more specific installations.
-
CMake
CMake
version 3.5 or higher. -
C++
c++11
standard supported compiler. -
Catch2
Already included in the repository inprerequisites/catch
-
OneAPI
OneAPI for the DPC++ version. -
ZFP Compression
- Only needed with OpenMp technology
- You can download it from a script found in
prerequisites/utils/zfp
folder
-
OpenCV
- Optional
- v4.3 recommended
- You can download it from a script found in
prerequisites/frameworks/opencv
folder
When installing Seismic Toolbox, require its version. For us, this is what major.minor.patch
means:
major
- MAJOR breaking changes; includes major new features, major changes in how the whole system works, and complete rewrites; it allows us to considerably improve the product, and add features that were previously impossible.minor
- MINOR breaking changes; it allows us to add big new features.patch
- NO breaking changes; includes bug fixes and non-breaking new features.
For previous versions, please see our CHANGELOG file.
This project is licensed under the The GNU Lesser General Public License, version 3.0 (LGPL-3.0) Legal License - see the LICENSE file for details