Replies: 1 comment
-
Hi I appreciate your interest in JUDI. At the time, elastic capabilities are fairly limited and only supported simulation of pressure data to generate realistic-looking datasets for inversion. Adding support for wavefield modeling would be a bit involved, and unfortunately, I do not have much time to spend on it right now, but I will add it to the list of requested features. Cheers |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hello:
I have recently been experimenting with forword elastic modeling using JUDI. I have been carefully reading your tutorials listed in the JUDI documentation.
I have generated a seismic record using the forward elastic modeling operator. However, when I try to retrieve the full wavefield from the forward elastic modeling operator, I encounter an error message like this.
"ERROR: LoadError: PyError ($(Expr(:escape, :(ccall(#= /home/anaconda3/envs/JUDI/share/julia/packages/PyCall/1gn3u/src/pyfncall.jl:43 =# @pysym(:PyObject_Call), PyPtr, (PyPtr, PyPtr, PyPtr), o, pyargsptr, kw))))) <class 'AttributeError'>
AttributeError("'tuple' object has no attribute 'data'")
File "/home/anaconda3/envs/JUDI/share/julia/packages/JUDI/gmRbz/src/pysource/interface.py", line 116, in forward_no_rec
return u.data, getattr(I, "data", None)"
According to the error message, there is no attribute 'data' in 'u'. So the question I want to ask is, how can I retrieve full wavefield from the elastic modeling operator?
The code looks like this:
`
using JUDI, PyPlot
Grid
n = (120, 100) # (x,z)
d = (10., 10.)
o = (0., 0.)
Velocity [km/s]
v = ones(Float32, n) .* 1.4f0
v[:, 50:end] .= 5f0
vs = ones(Float32, n) .* 1.2f0
vs[:, 50:end] .= 4f0
rho = ones(Float32, n)
Squared slowness
m = (1f0 ./ v).^2
Model structure:
model = Model(n, d, o, m; rho=rho, vs=vs)
Set up source geometry
nsrc = 1 # no. of sources
xsrc = convertToCell([600f0])
ysrc = convertToCell([0f0])
zsrc = convertToCell([20f0])
Modeling time and sampling interval
time = 600f0 # ms
dt = 4f0 # ms
Set up source structure
src_geometry = Geometry(xsrc, ysrc, zsrc; dt=dt, t=time)
Source wavelet
f0 = 0.01f0 # kHz
wavelet = ricker_wavelet(time, dt, f0)
q = judiVector(src_geometry, wavelet)
Setup operators
A_inv = judiModeling(model)
Ps = judiProjection(src_geometry)
u = A_inv*Ps'*q
`
Finally, I would like to thank you again for the Tutorials you wrote in Devito and JUDI, they have been immensely helpful to me.
Beta Was this translation helpful? Give feedback.
All reactions