# Geologic model make a density and S wave velocity model density = 2650*np.ones(shape) # botucatu density[0:int(600/dz), :] = 2120 # bauru density[int(600/dz):int(600/dz)+int(120/dz), :] = 2750 # basalt flow 1 density[int(600/dz)+int(120/dz):int(600/dz)+int(240/dz), :] = 2540 # basalt flow 2 pvel = 3200*np.ones(shape) # botucatu pvel[0:int(600/dz), :] = 2181 # bauru pvel[int(600/dz):int(600/dz)+int(120/dz), :] = 4800 # basalt flow 1 pvel[int(600/dz)+int(120/dz):int(600/dz)+int(240/dz), :] = 3540 # basalt flow 2 svel = 1600*np.ones(shape) # botucatu svel[0:int(600/dz), :] = 1166 # bauru svel[int(600/dz):int(600/dz)+int(120/dz), :] = 2611 # basalt flow 1 svel[int(600/dz)+int(120/dz):int(600/dz)+int(240/dz), :] = 1900 # basalt flow 2 mu = wavefd.lame_mu(svel, density) lamb = wavefd.lame_lamb(pvel, svel, density) # Make a wave source from a gauss derivative that vibrates in the z direction only # (removes the shear component amplitude equals zero, simulating a default seismic acquisition) sources = [[wavefd.GaussSource(2000, 0, area, shape, 0.0, 5.)], # x source or shear source [wavefd.GaussSource(2000, 0, area, shape, 100.0, 25.)]] # z source or z compressional source # Get the iterator for the simulation dt = wavefd.maxdt(area, shape, np.max(pvel)) duration = 3.0 maxit = int(duration/dt) stations = [[2200+i*dx, 0] for i in range(220)] # x, z coordinate of the seismometers snapshot = int(0.004/dt) # Plot a snapshot of the simulation every 4 miliseconds print "dt for simulation is ", dt print "max iteration for simulation is ", maxit
""" Seismic: 2D finite difference simulation of elastic SH wave propagation """ import numpy as np from matplotlib import animation from fatiando import gridder from fatiando.seismic import wavefd from fatiando.vis import mpl # Set the parameters of the finite difference grid shape = (150, 150) area = [0, 60000, 0, 60000] # Make a density and S wave velocity model density = 2400 * np.ones(shape) velocity = 3700 mu = wavefd.lame_mu(velocity, density) # Make a wave source from a mexican hat wavelet sources = [wavefd.MexHatSource(30000, 15000, area, shape, 100, 1, delay=2)] # Get the iterator for the simulation dt = wavefd.maxdt(area, shape, velocity) duration = 20 maxit = int(duration / dt) stations = [[50000, 0]] # x, z coordinate of the seismometer snapshot = int(0.5 / dt) # Plot a snapshot of the simulation every 0.5 seconds simulation = wavefd.elastic_sh(mu, density, area, dt, maxit, sources, stations, snapshot, padding=50, taper=0.01) # This part makes an animation using matplotlibs animation API fig = mpl.figure(figsize=(14, 5))
Seismic: 2D finite difference simulation of elastic P and SV wave propagation """ import numpy as np from matplotlib import animation from fatiando import gridder from fatiando.seismic import wavefd from fatiando.vis import mpl # Set the parameters of the finite difference grid shape = (200, 200) area = [0, 60000, 0, 60000] # Make a density and S wave velocity model density = 2400 * np.ones(shape) pvel = 6600 svel = 3700 mu = wavefd.lame_mu(svel, density) lamb = wavefd.lame_lamb(pvel, svel, density) # Make a wave source from a mexican hat wavelet that vibrates in the x and z # directions equaly sources = [[wavefd.MexHatSource(30000, 40000, area, shape, 10000, 1, delay=1)], [wavefd.MexHatSource(30000, 40000, area, shape, 10000, 1, delay=1)]] # Get the iterator for the simulation dt = wavefd.maxdt(area, shape, pvel) duration = 20 maxit = int(duration / dt) stations = [[55000, 0]] # x, z coordinate of the seismometer snapshot = int(0.5 / dt) # Plot a snapshot of the simulation every 0.5 seconds simulation = wavefd.elastic_psv(lamb, mu,
""" Seismic: 2D finite difference simulation of elastic SH wave propagation """ import numpy as np from matplotlib import animation from fatiando import gridder from fatiando.seismic import wavefd from fatiando.vis import mpl # Set the parameters of the finite difference grid shape = (150, 150) area = [0, 60000, 0, 60000] # Make a density and S wave velocity model density = 2400 * np.ones(shape) velocity = 3700 mu = wavefd.lame_mu(velocity, density) # Make a wave source from a mexican hat wavelet sources = [wavefd.MexHatSource(30000, 15000, area, shape, 100, 1, delay=2)] # Get the iterator for the simulation dt = wavefd.maxdt(area, shape, velocity) duration = 20 maxit = int(duration / dt) stations = [[50000, 0]] # x, z coordinate of the seismometer snapshot = int(0.5 / dt) # Plot a snapshot of the simulation every 0.5 seconds simulation = wavefd.elastic_sh(mu, density, area, dt, maxit,