-
Notifications
You must be signed in to change notification settings - Fork 234
07_adjoint_simulations
Table of Contents
-
Adjoint Simulations
- Adjoint Simulations for Sources Only (not for the Model)
- Adjoint Simulations for Finite-Frequency Kernels (Kernel Simulation)
- References
Adjoint simulations are generally performed for two distinct applications. First, they can be used in point source moment-tensor inversions, or source imaging for earthquakes with large ruptures such as the Lander’s earthquake (Wald and Heaton 1994). Second, they can be used to generate finite-frequency sensitivity kernels that are a critical part of tomographic inversions based upon 3D reference models (Tromp, Tape, and Liu 2005; Qinya Liu and Tromp 2006; Tromp, Komatitsch, and Liu 2008; Q. Liu and Tromp 2008). In either case, source parameter or velocity structure updates are sought to minimize a specific misfit function (e.g., waveform or traveltime differences), and the adjoint simulation provides a means of computing the gradient of the misfit function and further reducing it in successive iterations. Applications and procedures pertaining to source studies and finite-frequency kernels are discussed in Sections 1.1 and 1.2, respectively. The two related parameters in the DATA/Par_file
are SIMULATION_TYPE
(1, 2 or 3) and the SAVE_FORWARD
(boolean).
When a specific misfit function between data and synthetics is minimized to invert for earthquake source parameters, the gradient of the misfit function with respect to these source parameters can be computed by placing time-reversed seismograms at the receivers as virtual sources in an adjoint simulation. Then the value of the gradient is obtained from the adjoint seismograms recorded at the original earthquake location.
-
Prepare the adjoint sources
-
First, run a regular forward simulation (
SIMULATION_TYPE = 1
andSAVE_FORWARD = .false.
). You can automatically set these two variables using theutils/scripts/change_simulation_type.pl
script:utils/scripts/change_simulation_type.pl -f
and then collect the recorded seismograms at all the stations given in
DATA/STATIONS
. -
Then select the stations for which you want to compute the time-reversed adjoint sources and run the adjoint simulation, and compile them into the
DATA/STATIONS_ADJOINT
file, which has the same format as the regularDATA/STATIONS
file.-
Depending on what type of misfit function is used for the source inversion, adjoint sources need to be computed from the original recorded seismograms for the selected stations and saved in a sub-directory called
SEM/
in the root directory of the code, with the formatNT.STA.BX?.adj
, whereNT
,STA
are the network code and station name given in theDATA/STATIONS_ADJOINT
file, andBX?
represents the component name of a particular adjoint seismogram. Please note that the band code can change depending on your sampling rate (see Appendix [cha:channel-codes] for further details). -
The adjoint seismograms are in the same format as the original seismogram (
NT.STA.BX?.sem?
), with the same start time, time interval and record length.
-
-
Notice that even if you choose to time reverse only one component from one specific station, you still need to supply all three components because the code is expecting them (you can set the other two components to be zero).
-
Also note that since time-reversal is done in the code itself, no explicit time-reversing is needed for the preparation of the adjoint sources, i.e., the adjoint sources are in the same forward time sense as the original recorded seismograms.
-
-
Set the related parameters and run the adjoint simulation In the
DATA/Par_file
, set the two related parameters to beSIMULATION_TYPE = 2
andSAVE_FORWARD = .false.
. More conveniently, use the scriptsutils/scripts/change_simulation_type.pl
to modify theDATA/Par_file
automatically (change_simulation_type.pl -a
). Then run the solver to launch the adjoint simulation. -
Collect the seismograms at the original source location
After the adjoint simulation has completed successfully, collect the seismograms from
LOCAL_PATH
.-
These adjoint seismograms are recorded at the locations of the original earthquake sources given by the
DATA/CMTSOLUTION
file, and have names of the formNT.S?????.S??.sem
for the six-component strain tensor (SNN,SEE,SZZ,SNE,SNZ,SEZ
) at these locations, andNT.S?????.BX?.sem
for the three-component displacements (BXN,BXE,BXZ
) recorded at these locations. -
S?????
denotes the source number; for example, if the originalCMTSOLUTION
provides only a point source, then the seismograms collected will start withS00001
. -
These adjoint seismograms provide critical information for the computation of the gradient of the misfit function.
-
Finite-frequency sensitivity kernels are computed in two successive simulations (please refer to Qinya Liu and Tromp (2006) and Tromp, Komatitsch, and Liu (2008) for details).
-
Run a forward simulation with the state variables saved at the end of the simulation
Prepare the
CMTSOLUTION
andSTATIONS
files, set the parametersSIMULATION_TYPE
=
1
andSAVE_FORWARD =
.true.
in theDATA/Par_file
(change_simulation_type -F
), and run the solver.-
Notice that attenuation is not implemented yet for the computation of finite-frequency kernels; therefore set
ATTENUATION = .false.
in theDATA/Par_file
. -
We also suggest you modify the half duration of the
CMTSOLUTION
to be similar to the accuracy of the simulation (see Equation [eq:shortest_period]) to avoid too much high-frequency noise in the forward wavefield, although theoretically the high-frequency noise should be eliminated when convolved with an adjoint wavefield with the proper frequency content. -
This forward simulation differs from the regular simulations (
SIMULATION_TYPE
=
1
andSAVE_FORWARD
=
.false.
) described in the previous chapters in that the state variables for the last time step of the simulation, including wavefields of the displacement, velocity, acceleration, etc., are saved to theLOCAL_PATH
to be used for the subsequent simulation. -
For regional simulations, the files recording the absorbing boundary contribution are also written to the
LOCAL_PATH
whenSAVE_FORWARD = .true.
.
-
-
Prepare the adjoint sources
The adjoint sources need to be prepared the same way as described in the Section [enu:Prepare-the-adjoint].
-
In the case of travel-time finite-frequency kernel for one source-receiver pair, i.e., point source from the
CMTSOLUTION
, and one station in theSTATIONS_ADJOINT
list, we supply a sample program inutils/adjoint_sources/traveltime/xcreate_adjsrc_traveltime
to cut a certain portion of the original displacement seismograms and convert it into the proper adjoint source to compute the finite-frequency kernel.xcreate_adjsrc_traveltime t1 t2 ifile[0-5] E/N/Z-ascii-files [baz]
where
t1
andt2
are the start and end time of the portion you are interested in,ifile
denotes the component of the seismograms to be used (0 for all three components, 1 for East, 2 for North, and 3 for vertical, 4 for transverse, and 5 for radial component),E/N/Z-ascii-files
indicate the three-component displacement seismograms in the right order, andbaz
is the back-azimuth of the station. Note thatbaz
is only supplied whenifile
= 4 or 5. -
Similarly, a sample program to compute adjoint sources for amplitude finite-frequency kernels may be found in
utils/adjoint_sources/amplitude
and used in the same way as described for traveltime measurementsxcreate_adjsrc_amplitude t1 t2 ifile[0-5] E/N/Z-ascii-files [baz]
-
-
Run the kernel simulation
With the successful forward simulation and the adjoint source ready in the
SEM/
directory, setSIMULATION_TYPE = 3
andSAVE_FORWARD = .false.
in theDATA/Par_file
(you can usechange_simulation_type.pl -b
), and rerun the solver.-
The adjoint simulation is launched together with the back reconstruction of the original forward wavefield from the state variables saved from the previous forward simulation, and the finite-frequency kernels are computed by the interaction of the reconstructed forward wavefield and the adjoint wavefield.
-
The back-reconstructed seismograms at the original station locations are saved to the
LOCAL_PATH
at the end of the kernel simulations, and can be collected to the local disk. -
These back-constructed seismograms can be compared with the time-reversed original seismograms to assess the accuracy of the backward reconstruction, and they should match very well.
-
The arrays for density, P-wave speed and S-wave speed kernels are also saved in the
LOCAL_PATH
with the namesproc??????_rho(alpha,beta)_kernel.bin
, whereproc??????
represents the processor number,rho(alpha,beta)
are the different types of kernels.
-
-
Run the anisotropic kernel simulation
Instead of the kernels for the isotropic wave speeds, you can also compute the kernels for the 21 independent components
$C_{IJ},, I,J=1,...,6$ (using Voigt’s notation) of the elastic tensor in the cartesian coordinate system. This is done by settingANISOTROPIC_KL
=
.true.
inDATA/Par_file
before compiling the package. The definition of the parameters$C_{IJ}$ in terms of the corresponding components$c_{ijkl},ijkl,i,j,k,l=1,2,3$ of the elastic tensor in cartesian coordinates follows Chen and Tromp (2007). The 21 anisotropic kernels are saved in theLOCAL_PATH
as 21 files with namesproc??????_c??_kernel.bin
(withproc??????
the processor number). The output kernels correspond to absolute perturbations$\delta C_{IJ}$ of the elastic parameters and their unit is in$s/GPa/km^{3}$ . For consistency, the output density kernels with this option turned on are for a perturbation$\delta\rho$ (and not$\frac{\delta\rho}{\rho}$ ) and their unit is in s / (kg/m$^{3}$) / km$^{3}$. These ‘primary’ anisotropic kernels can then be combined to obtain the kernels for different parameterizations of anisotropy. This can be done, for example, when combining the kernel files from slices into one mesh file (see Section [sec:Finite-Frequency-Kernels]).If
ANISOTROPIC_KL
=
.true.
by additionally settingSAVE_TRANSVERSE_KL
=
.true.
inDATA/Par_file
the package will save anisotropic kernels parameterized as velocities related to transverse isotropy based on the the Chen and Tromp parameters Chen and Tromp (2007). The kernels are saved as relative perturbations for horizontal and vertical P and S velocities,$\alpha_{v},\alpha_{h},\beta_{v},\beta_{h}$ . Explicit relations can be found in appendix B. of Sieminski et al. (2007)
In general, the three steps need to be run sequentially to assure proper access to the necessary files. If the simulations are run through some cluster scheduling system (e.g., LSF), and the forward simulation and the subsequent kernel simulations cannot be assigned to the same set of computer nodes, the kernel simulation will not be able to access the database files saved by the forward simulation. Solutions for this dilemma are provided in Chapter [cha:Scheduler]. Visualization of the finite-frequency kernels is discussed in Section [sec:Finite-Frequency-Kernels].
Chen, Min, and Jeroen Tromp. 2007. “Theoretical and Numerical Investigations of Global and Regional Seismic Wave Propagation in Weakly Anisotropic Earth Models.” Geophys. J. Int. 168 (3): 1130–52. https://doi.org/10.1111/j.1365-246X.2006.03218.x.
Liu, Qinya, and Jeroen Tromp. 2006. “Finite-Frequency Kernels Based on Adjoint Methods.” Bull. Seism. Soc. Am. 96 (6): 2383–97. https://doi.org/10.1785/0120060041.
Liu, Q., and J. Tromp. 2008. “Finite-Frequency Sensitivity Kernels for Global Seismic Wave Propagation Based Upon Adjoint Methods.” Geophys. J. Int. 174 (1): 265–86. https://doi.org/10.1111/j.1365-246X.2008.03798.x.
Sieminski, Anne, Qinya Liu, Jeannot Trampert, and Jeroen Tromp. 2007. “Finite-Frequency Sensitivity of Body Waves to Anisotropy Based Upon Adjoint Methods.” Geophys. J. Int. 171: 368–89. https://doi.org/10.1111/j.1365-246X.2007.03528.x.
Tromp, Jeroen, Dimitri Komatitsch, and Qinya Liu. 2008. “Spectral-Element and Adjoint Methods in Seismology.” Communications in Computational Physics 3 (1): 1–32.
Tromp, Jeroen, Carl Tape, and Qinya Liu. 2005. “Seismic Tomography, Adjoint Methods, Time Reversal and Banana-Doughnut Kernels.” Geophys. J. Int. 160 (1): 195–216. https://doi.org/10.1111/j.1365-246X.2004.02453.x.
Wald, D. J., and T. H. Heaton. 1994. “Spatial and Temporal Distribution of Slip for the 1992 Landers, California Earthquake.” Bull. Seism. Soc. Am. 84: 668–91.
This documentation has been automatically generated by pandoc based on the User manual (LaTeX version) in folder doc/USER_MANUAL/ (Sep 26, 2024)
Development wiki for SPECFEM3D
Development wiki
- Home
- Development plan
- Best Practices
- Using Git for SPECFEM
- Advanced Git Topics
- Versioning Conventions
- Merging Development Branches into Master
User manual
- 01_introduction
- 02_getting_started
- 03_mesh_generation
- 04_creating_databases
- 05_running_the_solver
- 06_fault_sources
- 07_adjoint_simulations
- 08_doing_tomography
- 08b_performing_full_waveform_inversion_FWI_or_source_inversions
- 09_noise_simulations
- 10_gravity_calculations
- 11_graphics
- 12_running_scheduler
- 13_changing_the_model
- 14_post_processing
- 15_informations_for_developers
- A_reference_frame
- B_channel_codes
- C_troubleshooting
- D_license
- authors
- bug_reports
- copyright_and_version
- features
- manual_SPECFEM3D_Cartesian
- notes_and_acknowledgement
- sponsors