The theory for this section is based on this paper:
Zhou, X.-Y., Chang, X., Wang, Y.-B., Wen, X.-T., You, J.-C., & Sun, C. (2022). Non-artifact vector P- and S-wave separation for elastic reverse time migration. Petroleum Science, 19(6), 2695–2710. https://doi.org/10.1016/j.petsci.2022.08.006
One can separate the P- and S-wave components of a wavefield by
taking the divergence and the curl of the displacement field. An easy way to do
this in Salvus is to output the gradient-of-displacement and then use the
components from the resulting tensor to construct the divergence and curl
manually.
The following is an example demonstrating such a wavefield separation:
where the indices of ui represent which component of the output field to
select.
To get the divergence of the displacement field (P-wave component), simply apply
∇⋅u=∂xux+∂yuy=u0+u3.
Similarly, to get the curl of the displacement field (S-wave component), use
∇×u=∂xuy−∂yux=u2−u1.
Practical Advice
The wavefield which is computed during a Salvus simulation can be opened using the WavefieldOutput.
Note that the regularly gridded wavefield output has dimensions [n_time_slices, n_components, n_x, n_y]. The subscripts for u effectively represent which dimension in the wavefield output should be extracted along axis=1.
For example, the divergence of the wavefield output could be obtained using something anaologous to