Passive-Source Reverse Time Migration Velocity-Model-Inversion
Passive-Source Reverse Time Migration Velocity-Model-Inversion (PSRTM_inv) This repository contains the source code for the paper: "Wave-equation-based Velocity Model Inversion in the Angle Domain for Passive-Source Reverse Time Migration". **You can obtain the corresponding source code by unzipping the code.zip file.** This code can be run directly to reproduce the imaging and velocity inversion results from Section 3.3 for the case where the velocity model is underestimated. 1. Overview Passive-source reverse time migration (PSRTM) is a powerful technique for imaging complex subsurface structures. However, its accuracy is critically dependent on a precise background velocity model. A significant challenge has been the lack of a dedicated velocity model inversion method for PSRTM, especially for the P-wave velocity component. This code implements a complete P-wave velocity model inversion workflow for PSRTM. The methodology is based on the principle that a correct velocity model will produce kinematically flat angle-domain common-image gathers (ADCIGs). The workflow formulates an objective function to quantify the flatness of the gathers and uses its gradient for iterative model refinement. This allows the P-wave velocity model to be updated seamlessly with each migration step, enabling the construction of an accurate background P-wave velocity model even from a simple homogeneous initial state. The core functionalities of this code include: Imaging, gradient calculation and velocity inversion for PSRTM. P-wave velocity model inversion using a nonlinear conjugate gradient (NLCG) optimization method. Robust reference trace selection and gradient illumination compensation to ensure accurate gradient calculation. 2. Requirements and Usage 2.1. Prerequisites Compilers: A C/C++ compiler (gcc/g++) and the NVIDIA CUDA compiler (nvcc) are required. The code is designed to be compiled and run on a Linux-based system. Hardware: A single NVIDIA GPU is required for acceleration. Python Libraries: The Python scripts require the following libraries. You can install them using pip: numpy pandas matplotlib obspy Dependencies: This project relies on the OPTIM optimization package. Please ensure it is correctly placed, as the execution script calls it. OPTIM: https://github.com/beyondTaoLei/optim 2.2. Configuration Before running the code, you may need to adjust the configuration parameters to match your system and inversion setup. GPU Settings: The default GPU settings are configured in the **run.sh** script. GPU Compute Capability: The default is set to 8.0 (-gencode arch=compute_80,code=sm_80). If you are using a different GPU architecture, please modify this flag in "**run.sh**" to match your card's compute capability. GPU ID: The default GPU device ID is 0. If you wish to use a different GPU, please change the corresponding parameter in "**run.sh**". Inversion Parameters: The main optimization parameters for the inversion are defined in json/fwi/optim.json. The specific commands executed by the optimization framework are located in json/fwi/cmd.sh. 2.3. How to Run The entire compilation and execution workflow is managed by a shell script. To run the program, simply execute: sh run.sh Or in the slurm job management system, you can run the command: sbatch run.sh This script will: Compile the C/C++/CUDA source code using gcc/g++ and nvcc. Invoke the inversion process through the pnlcg.py script, which calls the OPTIM optimization package. 3. Directory Structure The repository is organized as follows: . ├── PSRTM_src/ # Source code for imaging and gradient calculation. ├── PSRTM_test/ # Source code for determining the update step length using a parabolic fitting method. ├── gradient/ # Output directory for the calculated gradient. ├── hgradient/ # Output directory for the conjugate gradient direction. ├── image/ # Output directory for migration imaging results. ├── misfit/ # Output directory for misfit calculation results. ├── model/ # Directory for initial and inverted velocity models. ├── seis_record/ # Input directory for the observed seismic data. ├── seisplatform/ # Directory containing the OPTIM optimization package. ├── json/ # Directory for input parameters for the optimization. │ └── fwi/ │ ├── cmd.sh │ └── optim.json └── run.sh # Main execution script. 4. Citation If you use this code in your research, please cite the original paper: Hu, N., Lei, T., He, M., Zhao, Y., Li, H., & Zhang, W., 2025. Wave-equation-based Velocity Model Inversion in the Angle Domain for Passive-Source Reverse Time Migration. Journal of Geophysical Research: Solid Earth, N/A, N/A. Lei, T., Zhang, W., Lu, Y. & Yang, L., 2025. OPTIM: A Python-based optimization framework for geophysical problems. Computers & Geosciences, 201, 105930. 5. Contact For any questions regarding the code or the methodology, please contact the first author: Nan Hu: [email protected]
Institutions
- Harbin Institute of Technology (CN)
- Southern University of Science and Technology (CN)
Publication Details
- Journal
- Zenodo (CERN European Organization for Nuclear Research)
- Published
- 2025-07-25
- DOI
- https://doi.org/10.5281/zenodo.16423178
- Primary Topic
- Genetic factors in colorectal cancer
- Type
- article
- Field-Weighted Citation Impact
- 0.00