daniel-koehn / GERMAINE

2D frequency-domain acoustic/SH/TE-mode FD modelling and full waveform inversion (FWI) code
GNU General Public License v3.0
28 stars 25 forks source link

Questions about the conversion of time domain data to frequency domain data #3

Open chenzhaoxingxin opened 3 years ago

chenzhaoxingxin commented 3 years ago

Hello, Dear Daniel.I downloaded and learned the program you released. You wrote it in great detail, which is very helpful for our study. In the application, I have a question to ask you. I found that the seismic record generated by the program is in frequency domain. If my actual seismic record is in time domain, is there any program that can change it into frequency domain data suitable for FWI stage of the program? Thank you again for sharing the program and your contribution. Looking forward to your reply.

Daryubel commented 8 months ago

I have a similar problem. From the tutorial the FD used for the FWI seems to be source-receiver domain, and a regular FFT on the TD data won't work. I wonder if you have found a solution to this @chenzhaoxingxin .

daniel-koehn commented 6 months ago

Hi everybody,

Very good question, I have not applied GERMAINE to field data, yet. Therefore, I have no script to convert time-domain to frequency domain data. However, for this Radar TE modelling/FWI tutorial ...

https://danielkoehnsite.wordpress.com/wp-content/uploads/2018/10/koehn_etal_2017_germaine_te_fwi.pdf

... I created a few Jupyter notebooks to convert frequency domain data to time domain data, e.g. on page 55, 60 or 67, to compare them with analytical solutions in the time-domain. So, in theory if you reverse the steps described in the notebooks, you should be able to transform time-domain data to the frequency domain.

As a first step, it might be a good idea to use the available scripts to model frequency domain data for the initial model, convert it to the time-domain and compare it with the field data.

Best regards,

Daniel

Daryubel commented 2 months ago

Hi Dear Daniel,

Thank you for your reply. I've been learning your program, and your suggestion is immensely helpful in our goal of field data implementation. So for last few weeks I've been trying to recreate the FD2TD result from your script in the tutorial. I encountered some mismatches in the conversion, I cannot recreate the TD radargram from the FD binary file for the 2_cross model using the script. I tried to fix the parameters defined in the notebook according to the simulation configuration, but I didn't get the same result as in your tutorial.

For your reference here's what I get: image with these configurations that I believe to be aligning with the simulation configuration:

clip = 1e-3   # data clip (Blackman-Harris)
nsrc = 1      # number of shots
ntr = 117     # number of receivers
shotno = 1    # extract FDFD data for shot shotno

# number of frequencies nf and frequency interval df
FC_low = 50e6
FC_high = 200e6

nf = 40
df = (FC_high - FC_low) / (nf-1)
nfnsrc = nf * nsrc

# TD parameters
TmaxTD = 150e-9       # maximum time TD
TmaxFD = 0.25 / df    # maximum time FD
dt = TmaxFD / nf      # time sampling FD

# maximum time sample of FD2TD corresponding to TmaxTD
nmaxFD = int(TmaxTD / dt)

# define time samples in time and frequency domain
tFD = np.arange(0.0, TmaxTD, dt)
offset = np.arange(0, ntr, 1)

Also, I didn't quite understand the shuffling operation:

tmp1 = FD2TD[:,0:29]
tmp2 = FD2TD[:,30:57]
tmp3 = FD2TD[:,58:87]
tmp4 = FD2TD[:,88:117]

FD2TD = None

tmp = np.concatenate((tmp1.T, tmp4.T, np.flipud(tmp2.T), np.flipud(tmp3.T)))
FD2TD = tmp.T

Is there something I missed in the FD2TD operation? Thank you again! Expecting your answer.