Full waveform inversion (FWI) is a technique used in studying underground structures through seismic data. It helps create a detailed image of what’s beneath the Earth’s surface. However, implementing FWI can be tough due to its complex math and high computational demands. To make it easier, we made ShaVi-1.0, a 2D acoustic FWI tool. It uses OpenMP API to handle computations and has a user-friendly interface for easy use on regular computers.
ShaVi-1.0’s core code is in C language, designed so users can adjust parts as needed. The Graphical User Interface (GUI), made in Python, comes with handy features like real-time plotting and updates on the process status. It also has message and warning boxes for a smooth experience. The GUI includes a toolbox for generating acquisition geometry and plotting source-receiver locations. This GUI not only makes using the tool easier but also lets you analyze results in real-time.
git clone https://github.com/vatsvikki/ShaVi-1.0.git
cd <path_to_repository>/packages
pip install -r dependencies.txt
Navigate to the src
folder and compile the main.c
gcc main.c -lm -fopenmp -o ../bin/fwi
An executable file named fwi
will be generated in the bin
folder.
Execute the ShaVi-1.0.py
file to launch the interface by following the command below:
For Windows OS:
python ShaVi_win-1.0.py
For Linux OS:
python ShaVi_linux-1.0.py
This Command will launch the interface of Shavi-1.0 as shown in figure.
The package consists of four primary windows and buttons to interact with the package, as marked in the figure of interface, each offering distinct utilities to enhance the user’s implementation experience. These windows are outlined below:
To commence the inversion process, crucial data (seismic information, initial model, and source signature) in ".txt" format is supplied by navigating through the designated path.
This interface provides real-time visualization of both initial and inverted models, enabling users to track inversion progress.
It incorporates a progress bar indicating the process's completion percentage and provides information on receivers, sources, and the objective function, offering valuable insights into the inversion process's convergence rate.
In this package, Window 4 functions as a tool to plot the 1D velocity-depth profile for both initial and inverted models, enabling a comparative analysis. Input the horizontal distance on the model's axis in Window 4 to select the profile location. Refresh the "inverted model" button in Window 2 to update and visualize the chosen profile.
This package includes a user-friendly menu bar, augmenting its functionality. Users can seamlessly generate the parameter file using the dedicated "Parameters" and "Acquisition Geometry" tools.
Initial Model: Generates a visual representation of the starting point for inversion.
Inverted Model: Plots the evolving subsurface structure during the inversion process.
Progress (Hourglass): Updates real-time information on the inversion process status.
Run: Initiates computational procedures for the inversion process.
Save: Manually saves the inverted velocity model; auto-saved for convenience.
Restart: Resets the inversion process for adjustments or a fresh start.
Quit: Closes the package interface, concluding the session.
For user support, a dedicated help section in the menu bar offers a tutorial video for step-by-step guidance, enhancing the user experience and promoting effective utilization of the software's capabilities.
Synthetic geological models — Three Blocks, Marmosui, and Overthrust — are employed in test cases with different dimensions and specified source and receiver configurations.
The Three-Block model serves as a straightforward test case for evaluating this package. The model’s dimensions are 500 x 1000 meters, as illustrated in figure, partitioned into small square grids with dimensions of 10 meters each. This model features three low-velocity blocks, each with a velocity of 1800 m/s, situated at different depths, having a uniform background velocity of 2000 m/s. The recovery process for this true model, commences with an initial model, depicted in figure.
Note: The peak frequency of the observed data and source signature is 10 Hz.
The necessary data for the inversion process is located in the folder labeled "test/case_1_block_model". Details of every file are given in the following table.
Data | File name |
---|---|
Observe Data | observe.txt |
Initial Model | initial_model_block.txt |
Source Signature | source_amp.txt |
Source Locations | source.txt |
Receiver Locations | receiver.txt |
Parameters | parameter.txt |
Refer to the manual for detailed information on data specifications.
Refer to the manual for detailed information on data specifications.
We're excited to invite you to contribute the ShaVi-1.0.
-
Fork the Repository
-
Clone Your Fork
-
Create a Branch
-
Make Changes
-
Commit Changes
-
Push Changes
-
Submit a Pull Request: Open a Pull Request on the original repository. Provide a clear description of your changes, and we'll review it.
- Code improvements or bug fixes
- New features or enhancements
- Documentation updates
- Bug reports or issue discussions
For assistance regarding the package, our team is available to address your inquiries and technical needs.
You can contact us at [email protected] or [email protected]
Vikas, Roy, S., & Ghosal, D. (2024). ShaVi-1.0: An interface enabled open source 2D acoustic full waveform inversion package. Computers & Geosciences, 187, 105592. https://doi.org/10.1016/j.cageo.2024.105592
@article{Vikas2024, author = {Vikas and Roy, Subhajit and Ghosal, Dibakar}, doi = {10.1016/j.cageo.2024.105592}, file = {:C:/Users/VIKAS/AppData/Local/Mendeley Ltd./Mendeley Desktop/Downloaded/Vikas, Roy, Ghosal - 2024 - ShaVi-1.0 An interface enabled open source 2D acoustic full waveform inversion package.pdf:pdf}, journal = {Computers & Geosciences}, pages = {105592}, title = {{ShaVi-1.0: An interface enabled open source 2D acoustic full waveform inversion package}}, volume = {187}, year = {2024} }