SeisFlows Development Log: New Functions to SeisFlows
SeisFlows is an open source FWI package developed by Ryan Modrak.
For more information, please refer to Introduction
What I have done:
-
seisflows/plugins/adjoint.py
-Avoid dividing zero when mute near-offset data in envelope inversion. -
seisflows/tools/signal.pyseisflows/preprocess/base.py
-Apply tapered mask to shot gather, muting body waves and later waves to preserve surface wave only. -
seisflows/workflow/migration.pyseisflows/solver/base.py
-Fix some bugs in RTM. The original code failed to get correct adjoint source. -
seisflows/solver/base.py
-Allow to use different STATION file for different SOURCE. The naming rule must be the same. The station name must be STATIONS_(shot_index). Add a new parameter 'PAR.USER_DEFINE_STATION' to control this feature. Remember to set use_existing_STATIONS=.true. when you use this option. You can ignore 'PAR.USER_DEFINE_STATION' if you use a fixed receiver array in synthetic test. This fixed receiver array can be defined either by STATIONS file under specfem2d-master/DATA or parameters in Par_file. -
Add script to create mask model and plot misfit curves
-
Add matlab scripts to convert SEGY data to SU format for SeisFlows. And Output geometry files
-
Add scripts to generate simple specfem2d binary model
-
We can use the latest SPECFEM2D instead of the specified version
d745c542 -
seisflows/preprocess/base_mbpf.py
-Apply a moving bandpass filter strategy to obtain adjoint source -
Use GPU version SPECFEM2D in SeisFlows, but I found that only kappa, mu and rho kernel are non-zero. Thus, kernel parameters are kappa and mu, model parameters are vp and vs. Another issue is cuda memory error when I use the devel version of specfem2d, but it is fine with master version
-
Fixed some bugs in Tikhonov regularization, but the inversion results are not as good as gradient smoothing, need more tests
After steps 4&6, SeisFlows can be used for real data.
Unsolved problems:
Future work:
-
Test double difference adjoint tomography (DONE)
-
Convert 3D seismic data to 2D. code
-
How to submit the job to cluster
SeisFlows examples
The example links are not available now. You may find SeisFlows examples in my GitHub repositories:
SeisFlows Examples
Two layer model - Kernel tests
Foothill model - Body/surface wave FWI tests
Marmousi model - Body/surface wave FWI tests
Foothill model-GPU - Foothill model test by using GPU
I will upload more examples in the future.
How to generate 2D model for SeisFlows
step 1: convert mdl model to SEP model
step 2: run SEM forward modeling to generate ascii model
step 3: convert ascii model to gll model by using a fortran script
Project layout
mkdocs.yml # The configuration file.
docs/
index.md # The documentation homepage.
... # Other markdown pages, images and other files.