Musings and thoughts on how to use observational seismology as an educational tool, or even just a hobby. Linked closely with dentonseismo.co.uk
Earthquake location by backprojection
Get link
Facebook
X
Pinterest
Email
Other Apps
What would happen if time could run backwards as well as forwards ?
Well seismologists can run time backwards in a computer and work out where an earthquake has happened.
We know what time a seismic wave reaches a monitoring station, and we know the speed it travels. If we run time backwards we can then work out the locus of possible origins for the source of the earthquake at each time in the past, for each station this will be a circle of possible origin locations that increases in size as we go back in time. With three or more stations the origin location (and time) of the event can be estimated from the point when all of these possible locations converge on one point.
A simple python program and some data from a recent earthquake in Cornwall illustrates this principle
importmatplotlib.pyplotaspltimportmathimportnumpyasnpfrommatplotlib.patchesimportCircleimportmatplotlib.animationasanimationfrommatplotlib.animationimportFuncAnimation#Writer = animation.writers['ffmpeg']#writer = Writer(fps=20, metadata=dict(artist='Paul Denton'),bitrate=1800)#image_file = background image of cornwall# background plot 20px/kmscale=20img=plt.imread('./corn_map.png')stations=['PZ','CCA1','RL','FL']x=[315,764,946,958]y=[487,330,164,417]#pick times (sec after 16:52pick=[8.430,7.600,9.418,7.880]# Create a figure. Equal aspect so circles look circularfig,ax=plt.subplots(1)ax.set_aspect('equal')# pwave velocity in crust =5.76km/secspeed=5.76#depth=10kmdepth=10.0#set latest possible time for event (directly below closest station)latest_time=min(pick)-depth/speed-0.01# Create a figure. Equal aspect so circles look circularfig,ax=plt.subplots(1)ax.set_aspect('equal')ax.imshow(img)defrun_animation():anim_running=True# section to allow stopping of animation ona key pressdefonClick(event):nonlocalanim_runningifanim_running:anim.event_source.stop()anim_running=Falseelse:anim.event_source.start()anim_running=Truedefupdate(frame_number):#assume 1x fframenumber=10 msecax.clear()ax.imshow(img)# set a test origin time and go backwards in timetime=round(latest_time-(frame_number/100),2)label='time=16:52:'+str(time)# plot time label on animationax.text(100,750,label)foriinrange(4):traveltime=pick[i]-time# travel time to each station for this test originslope=traveltime*speed# slopw distance from station for this test originepidist=math.sqrt(slope*slope-depth*depth)# surface distance for this slope distancesize=epidist*scale# convert surface distance to map scalecirc=Circle((x[i],y[i]),size,color='k',fill=False)# plot a range sircle of all possible locations that match# this test origin time for each stationax.add_patch(circ)fig.canvas.mpl_connect('button_press_event',onClick)# pause animation when a mouse is clickedanim=animation.FuncAnimation(fig,update,frames=200)run_animation()# Show the image#animation.save('cornwall_backprojection.mp4')plt.show()
Since the BBC:microbit has an accelerometer chip on it it seems only natural to turn it into the heart of an educational seismometer. microbit accelerometer data recorded by jAmaseis datalogging software So what steps need to be done 1) install the mbed serial driver to connect your microbit to your (windows) computer using a USB lead 2) write some code to output acceleration data to the serial line on the microbit 3) make sure you have suitable microbit device file for jamaseis 4) connect it all together In detail 1) install the mbed serial driver for windows see https://developer.mbed.org/handbook/Windows-serial-configuration This will create a virtual serial COM port on your computer... you can check this by looking at Computer...properties...device manager (windows7) On my computer the microbit appears as COM23 2) write some code to output acceleration data to the serial line.. you can do this in a browser on the mic...
So an earthquake has happened... you have see some seismograms using the excellent Python Obsy toolkit and some simple scripts... now you want to plot a map or two. Simple location map created in Python using the Folium library import folium # setting the boundaries of the map and choosing a map style m = folium . Map ( location = [ 50.067 , - 5.187 ], zoom_start = 10 , tiles = 'Stamen Terrain' ) # put a marker on the map for the reported BGS earthquake location folium . Marker ( location = [ 50.067 , - 5.187 ], popup = 'quake' , icon = folium . Icon ( color = 'red' )) . add_to ( m ) # next add markers for the locations of all the seismic monitoring stations in Cornwall folium . Marker ( location = [ 50.1867 , - 5.2273 ], popup = 'BGS_CCA1' , icon = folium . Icon ( color = 'green' )) . add_to ( m ) folium . Marker ( location = [ 50.1486 , - 5.0945 ], popup = 'FL_RB30C' , icon = folium . Icon ( color = 'green...
On 8th August 2019 a small earthquake happened in Cornwall, UK. Despite being less than magnitude 3 it caused great excitement locally, and even nationally. At the time this earthquake happened the deep geothermal energy company United Downs had just set up a network of low cost raspberryshake seismometers in local schools as part of their community outreach programme. Deep geothermal well being drilled in Cornwall Raspberryshake citizen seismology stations in Europe These simple, lowcost seismometers easily detected the signal from this earthquake right across the county. Data from these sensors can be downloaded from an online archive using simple Python programs and using the ObsPy Python library from obspy.clients.fdsn import Client from obspy import UTCDateTime import matplotlib.pyplot as plt # station names seislist = [ 'RB30C' , 'RB5E8' , 'RD93E' , 'R82BD' , 'R7FA5' ] # set the data window start...
Comments
Post a Comment