Diffuse wave-field correlation in space: An instantaneous time-reversal mirror for Green's function retrieval
Description
Spectral element simulations of a diffuse linear elastic wavefield in 2D using 30000 Dirac Delta sources (A Dirac pulse emitted at the first time step of the simulation).
The time-domain wave propagation simulation was performed using the SALVUS package by Mondaic.
Details on the software can be found in Afanasiev 2019 [1]. The diffuse field is achieved by 30000 randomly distributed elastic point forces with random orientation and strength. The time-series of wave propagation is used for the numerical experiment in 'Diffuse wave-field correlation in space: An instantaneous time-reversal mirror for Green's function retrieval' - Aichele, Müller, van-Manen.
The medium closely mimics soft tissue, with a compression wave velocity of 1500 m/s, shear wave velocities of 1 and 2 m/s and a density of 1000 kg/m3.
The repository also contains the results of a simulation with a single Delta source for pedagogic purposes.
The source positions for the diffuse field are saved in the file SrcList. csv which can be loaded with:
import pandas as pd
# Load CSV into Pandas DataFrame
SrcListLoad = pd.read_csv("SrcList.csv")
The simulation configuration for Salvus is free from attenuation and defined in the following:
mc = sn.ModelConfiguration(
background_model=None, volume_models="noAtt"
)
center_frequency = 300.0
p += sn.SimulationConfiguration(
name=simulation_name,
max_frequency_in_hertz=center_frequency * 2.0,
elements_per_wavelength=2.5,
model_configuration=mc,
event_configuration=sn.EventConfiguration(
wavelet=sn.simple_config.stf.Delta(
#center_frequency=center_frequency
),
waveform_simulation_configuration=sn.WaveformSimulationConfiguration(
end_time_in_seconds=0.025,
receiver_sampling_rate_in_time_steps=10000, # output every xth for receivers
time_step_in_seconds=2.5e-8, # fix the timestep -- > 0.25 ms
# This is to tell the simulation to actually
# simulate with attenuation or not.
),
),
)
The results are saved as displacements in m at a time sampling of dt=2.5e-4 s.
You can load the time-series of displacement in Matlab: load('Deltaevent_030000.mat').
The displacements are saved in vz_vx with the dimensions: space, space, polarization of displacement, time.
A small Matlab example script to load and show the data can be found under LoadAndShowExampleScript.m
[1]Afanasiev, Michael, Christian Boehm, Martin van Driel, Lion Krischer, Max Rietmann, Dave A May, Matthew G Knepley, and Andreas Fichtner. “Modular and Flexible Spectral-Element Waveform Modelling in Two and Three Dimensions.” Geophysical Journal International 216, no. 3 (March 1, 2019): 1675–92. https://doi.org/10.1093/gji/ggy469.