程序代写代做 graph html Exercise: Magnetic Anomalies

Exercise: Magnetic Anomalies
Outcome Use the distribution of magnetic anomalies around the Reykjanes Ridge to estimate seafloor spreading rate.
Introduction Hess (1962) proposed a bold model of seafloor spreading that evolved rather quickly into a more complete model of plate tectonics. According to the plate tectonic model, the Earth¡¯s surface is broken into a number of rigid lithospheric plates that ride on convection currents in the plastic asthenosphere. The midocean ridges are divergent boundaries underlain by upwelling asthenosphere. New lithosphere forms at these boundaries. Old oceanic lithosphere descends back into the deeper layers of the Earth in subductions zones marked by ocean trenches. Continental lithosphere has densities that prevent it from being subducted. Finally, plates slide past one another along transform faults.
These model generated much interest because it was a radical departure from previous models of the Earth¡¯s surface that held the continents as fixed. Acceptance of the model, however, relied on the emergence of new supporting data. The pattern of magnetic anomalies on the seafloor provided the most convincing new evidence in support of the plate tectonic model.
The ability to tow magentometers over the seabed was developed in the 1950s. These surveys revealed a curious striping of magnetic anomalies (Fig. 1). Frederick Vine and Drummond Matthews (1963) proposed that the striping was caused by formation of new seafloor at ocean ridges combined with episodic reversal of the Earth¡¯s magnetic field. These scientists argued that molten material upwelling at midocean ridges contained iron-rich minerals that oriented themselves to be parallel to Earth¡¯s magnetic field lines. When the Earth¡¯s field is configured as today, with the magnetic north pole situated near the geographic north pole, minerals in the molten rock orient themselves such that they angle down toward the pole in the northern hemisphere. When the rocks cool and solidify, these mineral positions are locked in place. Their presence and orientation adds a small amount to Earth¡¯s magnetic field strength.
Episodically the Earth¡¯s magnetic field reverses, so the magnetic north pole is located near the geographic south pole. When minerals lock in their orientation to this field, they counteract by a small amount the pull of Earth¡¯s magnetic field. This small deviation is measureable and produces a measured magnetic field that is slightly weaker than average.
Vine and Matthews proposed that seafloor formed during periods of ¡°normal¡± polarity like today¡¯s has a stronger magnetic field strength, and seafloor formed during periods of ¡°reversed¡± polarity has a weaker magnetic field strength. If we substract average field strength from observed field strength, then we have calculated magnetic anomalies. These anomalies will be negative over seafloor formed during reversed polarity epochs, and they will be positive over seafloor formed during normal polarity epochs.
Vine and Matthews hypothesis generated much interest, but is was criticized because at the time there was no known ridge that could be a spreading centre in the Northeast Pacific. Scientists wanted to see data around a ridge that fit Hess¡¯ (1962) model of a spreading centre. Your job is to write code to produce such data for the Reykjanes Ridge south of Iceland. The Reykjanes Ridge is part of the mid-Atlantic Ridge, which was a proposed spreading centre at the time. You have 4 main tasks:
Tasks
1. Produce a map of magnetic anomalies over the Reykjanes Ridge.
2. Plot a transect of anomalies perpendicular to the Ridge.
3. Corrleate zero crossing points of the transect with polarity reversals in the magnetic time scale. 4. Find slope of line to calculate spreading rate.
1. Open an R script.
2. Load necessary libraries
# Load necessary libaries
library(oce) # Provides plotting functions
1

Figure 1: Magnetic Anomalies in the North East Pacific
3. Load the data frame
4. Reformat the data from plotting.
5. Extract values for longitude and latitude.
6. Set some limits on lon, lat, and magnetic anomalies.
library(RColorBrewer) library(marmap) library(png)
# Provides attractive colour palettes
# Provides tool to sample a transect of gridded data
# Provides tools to generate and save .png figures
# Load the data frame. It is named nT.
load(“/Users/Paul/Documents/OCEA 4110/data/ReykjanesMagAnomDataFrame.RData”)
# Reformat the data for plotting. In order to use the transect function
# in the marmap library, the data need to be reformatted as a “bathy” object.
# the as.bathy() function takes our 3 columns of data in nT, which are longitude, # latitude, and value and reformats them as a matrix, much like the matrix()
# command did in the Isostasy Exercise.
mag <- as.bathy(nT) # The as.bathy() command give our matrix "mag" row and column names that # that correspond to longitude and latitude, respectively. Let's pull these # names out and convert them to numbers rather than characters. lon <- as.numeric(rownames(mag)) lat <- (as.numeric(colnames(mag))) 2 # Determine the lon and lat limits of the data. This information will be # used in plotting. The floor() and ceiling() commands round down and up, # respectively, to the nearest integer. lonLim<-c(floor(min(lon)),ceiling(max(lon))) latLim<-c(floor(min(lat)),ceiling(max(lat))) # Specify the limits of the magnetic anomalies. magLim <- c(-250,250) 7. Open a file to which to print your figure. 8. Set some margins. 9. Set and draw your colour palette. g", # Open a file that will save your figure. png(filename = "/Users/Paul/Documents/OCEA 4110/figures/ReykjanesMagneticAnomaliesClass.pn width=6,height=6,units="in",pointsize=16, bg="transparent",res = 200) # Set some margins. You can read up on the general par() command # and the many things it controls. par(mar=rep(3,4)) # Set your colour palette. # colorbrewer2.org is a website that provides attractive and accessible # colour schemes for plotting. Their palettes are available with the # RColorBrewer package that you loaded at the top. # This command is generating 10 colours from the RdYlBu (red/yellow/blue) # palette, and it reverses them so red is high and blue is low. col=rev(brewer.pal(10,"RdYlBu")) # Use drawPalette() from the oce package to draw your colour palette. drawPalette(magLim,zlab="total intensity anomaly (nT)",col=col) 10. Get and plot coastline data. 11. Plot anomaly data. 12. Define and plot a transect across the ridge. # Get coastline data supplied with oce data(coastlineWorld) # Plot coastlines for the part of the Earth covered by the data. mapPlot(coastlineWorld, longitudelim=lonLim, latitudelim=latLim, projection="+proj=merc +lat_ts=47", cex = 1.5,col='gray') # Plot up the gridded magnetic anomaly data. mapImage(lon,lat,mag,zclip=FALSE,col=col,zlim=magLim, missingColor=NA,filledContour=T,debug=2) # Specify the coordinates of a transect across the ridge. tr_lon<-c(-29.8,-25.2) # longitudes of transect tr_lat <- c(62.2, 60.5) # latitudes of transect # Draw the transect mapLines(tr_lon,tr_lat,col="limegreen",lwd = 2) 3 13. Put on some labels. 14. Draw plate boundaries. # Put a title at the top. mtext("Magnetic Anomaly (nT)", side = 3,line = 0.25, cex = 1.5) # Indicate data source at the bottom. mtext("Data source: http://geomag.org/models/emag2.html", side = 1, line = 2, cex = 0.75) # Now draw plate boundaries in the region. # The lons and lats of plate boundaries are stored in a comma separated file (.csv) # Read that file with read.table. The file is available on Brightspace. pb <- read.table("/Users/Paul/Documents/Blue Planet/R/data/PlateBoundariesNew.csv", sep=",",na.strings="-999") # The file holds plate boundaries, separated by NA. # This for loop cranks through all of the records, stopping each time an NA is # encountered. At that point the line is drawn (if it is in the bounds of the # plot). Then, the start index is reset, and the code looks for the next # NA value, indicating the end of that plate's boundary. start_i <- 1 for (i in 1:dim(pb)[1]){ if(is.na(pb[i,1])==TRUE){ stop_i<-i-1 lon<-pb[start_i:stop_i,1] lat<-pb[start_i:stop_i,2] mapLines(lon, lat,col="black",lwd = 3) start_i<-i+1 } } 15. Close the figure file. 16. Extract anomaly values along transect. 17. Adjust the transect so that 0 km is situated at the maximum positive anomaly. 18. Make a second figure. # Close the file to which the figure was written. dev.off() # Get anomalies along the designated transect with get.transect() function. tsect <- get.transect(mag, tr_lon[1], tr_lat[1],tr_lon[2] ,tr_lat[2], distance=TRUE) # Specify the centre point of the transect on ridge. # Calculate by finding the position of the maximum positive anomaly. i.max <- which.max(tsect[,4]) tsect.centre <- tsect[i.max,3] # km # Shift transect values, so 0 km is at the position of the maximum anomaly. tsect[,3] <- tsect[,3] - tsect.centre # Make another plot of the transect # Specify plot dimensions. 4 plotht <- 10 plotwd <- 2*plotht # Open file for figure. png(filename="/Users/Paul/Documents/OCEA 4110/figures/ReykjanesMagAnomalyTransectClass.png width=plotwd, height=plotht, units="cm", pointsize=16, bg="white", res=200) 19. Plot the transect. 20. Find the zero crossings. ", # Plot the transect. plot(tsect[,3], tsect[,4], ylim=c(-100,350), axes=TRUE, type="l", xlab="kilometres", ylab="total intensity anomaly (nT)") # Draw a horizontal line at mag = 0. abline(0,0) # Automate the finding of zero crossings. # sign() returns the sign of a vector of numbers: 1 for positive, 0 for 0, # -1 for negative. # diff() returns the differences between neighbouring values in a vector. # Any change of sign in the vector will produce a non-zero value for diff. # By finding where the non-zero values lie, we will identify zero crossings. sc = diff(sign(tsect[,4])) isc <- which(sc != 0) # Store zero crossings in a variable. zero.x <- tsect[isc,3] 21. Close the figure file. Spreading Rate Calculations The dates of polarity reversals have been determined with radiometric dating. Table 1 provides dates for the start and end of normal polarity chrons 1-4. # Close the file holding the figure. dev.off() Chron 1 2 3 4 Prepare an R script that does the following: end (My) NA 1.77 4.18 7.432 start (My) 1.22 3.58 7.375 9.942 1. Convert negative zero crossing distances from the ridge to positive distances (1 pt). 2. Assign an age to each zero crossing (1 pt). 3. Make a data frame containing distances of zero crossings in one column and ages in another (1 pt). 4. Plot the data. Age should be on the x axis (1 pt). 5. Fit a line to the data (1 pt). 6. Extract the slope of the line (1 pt). 7. Convert the slope to units of cm/yr. Use comments to explain your calculation (1 pt). 5