Modeling Marine Magnetic Anomalies

Modeling Marine Magnetic
Anomalies
SHELBY JONES
HANNA ASEFAW
1
Outline
①  Magnetic Acquisition
②  Goal of our Project
③  Derivation
⑤  Real Applications
¡  Pacific Antarctic Ridge
¡  Mid-Atlantic Ridge
⑥  Limitations
④  Our MATLAB Process
2
Magnetic Acquisition
—  MORB (Mid-Ocean
Ridge Basalts) contain
magnetic grains
—  As basalt cools, the
magnetizations within
the magnetic grains
align themselves with
the magnetic field
¡ 
Latitudinal dependence
Magnetic Acquisition 3
Magnetic Acquisition
Magnetic Acquisition 4
Goal of Our Project
Modeled Magnetic
Profile
Observed Seafloor
Magnetic Profile
Goal 5
Goal of Our Project
—  C = constant
—  µ0 = magnetic permeability
—  k = wavenumbers
¡  k = (-nx/2 : nx/2 - 1) / L
¡  L = spreading rate * total time
—  z = depth = 3000m
—  θ = skewness
—  p(k) = Fourier of
geomagnetic timescale
Goal 6
Goal of Our Project
—  C = constant
—  µ0 = magnetic permeability
—  k = wavenumbers
¡  k = (-nx/2 : nx/2 - 1) / L
¡  L = spreading rate * total time
—  z = depth = 3000m
—  θ = skewness
—  p(k) = Fourier of
geomagnetic timescale
Goal 6
Step 1: Calculate the Scalar of the Anomaly |A|
—  Ideal towed magnetometer measures:
—  Most magnetometers measure scalar field
—  On Earth, Be ≅ 50,000nT while ΔB ≅ 300nT
Derivation 7
Step 2: Account for Seafloor Spreading
—  Define scalar potential (U) and magnetization (M)
—  Define:
Derivation 8
Step 2: Account for Seafloor Spreading
—  Potential satisfies Laplace’s equation above source
layer and Poisson’s equation within source layer
Derivation 9
Step 2: Account for Seafloor Spreading
—  2nd terms can be eliminated because source does not vary
in the y-direction thus derivative = 0
Derivation 10
Step 2: Account for Seafloor Spreading
—  Boundary Conditions:
—  Basic Double Fourier Transform:
—  Applied to this problem:
¡ 
In the x direction:
¡ 
In the z direction (use identity):
Derivation 11
Step 2: Account for Seafloor Spreading
—  Fourier Transform Result
—  Solve for U(k)
—  Inverse Fourier using Cauchy Residue Theorem
Derivation 12
Step 2: Account for Seafloor Spreading
—  To solve integral, calculate the poles of the integrand
¡ 
Factor:
¡ 
Solve over closed loops:
Derivation 13
Step 2: Account for Seafloor Spreading
—  Combine integrands and drop ksubscripts:
—  To simplify: assume the spreading ridge is located at
Earth’s magnetic pole, the dipolar field lines will be
parallel to the z-axis, thus no x-component
Derivation 14
Step 3: Calculate the magnetic anomaly
—  Recall:
—  Substitute with evaluated U:
—  Recall:
—  Since only the z-component of Earth’s magnetic field
is non-zero due to our assumptions, the anomaly
simplifies to:
*
Derivation 15
Step 3: Calculate the magnetic anomaly
—  Take into account upward continuation
*
Derivation 16
Main function
%
% specify data files
%
pacificAntarcticRise = 'pacificAntarctic.xydm';
midAtlanticRidge = 'midAtlanticRidge.xydm’
spreadCSkewErMAR = spreadCSkewEr(midAtlanticRidge, polarity, time, 1318);
spreadCSkewErPA = spreadCSkewEr(pacificAntarcticRise, polarity, time, 5418);
Our MATLAB Process 21
spreadCSkewEr()
—  Parameters – datafile, polarity, time, ridgeAxis
¡  Datafile – file the contains the observed magnetic anomalies
¡  Polarity – matrix with geomagnetic timescale field polarities
¡  Time – matrix with geomagnetic timescale
¡  ridgeAxis – location of the ridge axis
—  Output
¡  Figure 1: Observed Magnetic Anomalies across the ridge
¡  Figure 2: Fourier transform of magnetic timescale & observed
¡  Figure 3: Overlay of observed and modeled
¡  Figure 4: Overlay of observed and modeled
¡ 
Returns a solution [spreadingRate, Constant, skewness, rootError)
Our MATLAB Process 22
Figure 1: Observed Magnetic Anomalies across the ridge
function spreadCSkewEr = spreadCSkewEr(anomalyFile, polarity, time, axisPoint)
location = inputname(1);
%
% load the observed anomaly data
%
anomalyFile = importdata(anomalyFile);
distance = anomalyFile(:,3);
magobs = anomalyFile(:,4);
%
% plot distance from ridge and magnetic anomaly
%
figure(1)
subplot(2,1,1); plot(distance, magobs);
xlabel('Distance (km)')
ylabel('Magnetic Anomaly (n tesla)')
title(['Observed Magnetic Anomalies across the ', location]);
%
% plot near ridge magnetic anomalies
%
[totalTimescaleDatapoints,mdat]=size(time./2);
vectorTime=2048;
halfVectorTime=vectorTime/2;
subsetTime = time((totalTimescaleDatapoints/2-halfVectorTime+1):
(totalTimescaleDatapoints/2+halfVectorTime),1)';
subsetPolarity = polarity((totalTimescaleDatapoints/2-halfVectorTime+1):
(totalTimescaleDatapoints/2+halfVectorTime),1)';
[sizex, sizey] = size(distance);
subsetDistance = distance((axisPoint-halfVectorTime+1):(axisPoint+
halfVectorTime),1)';
subsetAnomalies = magobs((axisPoint-halfVectorTime+1):(axisPoint+
halfVectorTime),1)';
subplot(2,1,2); plot(subsetDistance, subsetAnomalies);
xlabel('Distance (km)')
ylabel('Magnetic Anomaly (n tesla)')
title(['Observed Magnetic Anomalies across the ', location]);
Our MATLAB Process 23
Figure 2: Fourier Transform magnetic timescale and
observed anomalies
%
%
%Fourier Transform of the Observed Magnetic Anomalies across the Pacific-Antarctic Rise
%
%
dataAnomaly = fftshift(fft(subsetAnomalies));
figure(2)
subplot(2,1,1); plot(k,real(dataAnomaly));
xlabel('k');
title(['Anomalies Observed across the ', location]);
axis([-60, 60,-2 * 10^5, 1*10^5 ])
%
% Fourier Transform of the magnetic timescale p(k)
%
%
fourierTimescale = fftshift(fft(subsetPolarity));
%
%
% Model based on the geomagnetic timescale
%
%
constant= 3 *10^-11;
spreadingRate = 40000;
theta = -130;
skewness = theta * pi/180 ;
k2 = k./(spreadingRate*dt);
modelAnomaly = abs(k2).*(fourierTimescale).* exp(abs(k2).* DEPTH * -2 * pi).*
exp(sign(k2).* 1i * skewness) * constant* MAGPERM * 2 * pi;
subplot (2, 1, 2); plot(k, modelAnomaly);
xlabel('k');
title('Anomalies modeled from the Magnetic Timescale');
Our MATLAB Process 24
Figure 3: overlay of model and observed (k)
figure(3)
plot(k, dataAnomaly,k, modelAnomaly);
legend([location, ' observed anomaly'],
'Timescale generated anomaly');
xlabel('k');
Our MATLAB Process 25
Figure 4: overlay of model and observed
%
% overlay of inverse fourier dataAnomaly and modelAnomaly
%
%
model= ifft(fftshift(modelAnomaly));
figure(4)
plot(subsetDistance./dt*2, subsetAnomalies, subsetTime, model)
legend([location, ' observed anomaly'], 'Timescale generated
anomaly');
Our MATLAB Process 26
%
%calculate the Root Mean Square Error
%
rootError = calcRMSE(subsetAnomalies, model);
Our MATLAB Process 27
Root Mean Square Error
%
% takes two matrices and calculates the RMSE
%
function deviation = calcRMSE (model, observed)
How well the model suits the
observed data
[y, dataPointsModel] = size(model);
[z, dataPointsObserved] = size (observed);
sum = 0;
if dataPointsModel >= dataPointsObserved
totalPoints = dataPointsObserved;
else
totalPoints = dataPointsModel;
end
for i = 1:totalPoints
sum = sum + (abs(model(1,i)^2 - observed(1,i))^2);
end
deviation = sqrt(sum/totalPoints);
We tried to minimize
RMSE
Our MATLAB Process 28
Return a solution
spreadCSkewEr = [spreadingRate, CONSTANT,
theta, rootError];
spreadCSkewErMAR = spreadCSkewEr(midAtlanticRidge, polarity, time, 1318);
spreadCSkewErPA = spreadCSkewEr(pacificAntarcticRise, polarity, time, 5418);
Our MATLAB Process 29
Calculating our c, skewness, and rmse
%
%calculates the ideal skewness theta, constant combinations based on the
%observed Anomaly
%
function skewConst = skewnessConstant (fourierTimescale, observedAnom, inC, rangeC, skew, spreading, rangeSpread )
c = 0; constant = 0; theta = 0; skewness=0; currentRMSE = 0; j = 1;
currentLeast = Inf;
dt = 20;
nx = 2048;
magPerm = 4 * pi * 10 * exp(-7);
nx2 = nx/2;
depth = 3000.;
for spreadingRate = (spreading-rangeSpreading):spreading:(spreading+rangeSpreading)
L = spreadingRate * dt;
k = ((-nx2): (nx2 - 1))/(spreadingRate *dt);
for c = (inC-rangeC):10000:(inC+rangeC)
for theta = (skew-10):skew:(skew:+10)
skewness = theta* pi / 180.;
modelAnom = abs(k).*(fourierTimescale').* exp(abs(k).* depth * -2 * pi).* exp(sign(k).* 1i * skewness) * constant * magPerm * 2 * pi;
rmse = calcRMSE(modelAnom, observedAnom);
if rmse < currentRMSE
skewConst = [spreadingRate, c, theta, currentRMSE];
currentRMSE = rmse;
end
end
end
end
Our MATLAB Process 30
Main function
%
% specify data files
%
pacificAntarcticRise = 'pacificAntarctic.xydm';
midAtlanticRidge = 'midAtlanticRidge.xydm’
spreadCSkewErMAR = spreadCSkewEr(midAtlanticRidge, polarity, time, 1318);
spreadCSkewErPA = spreadCSkewEr(pacificAntarcticRise, polarity, time, 5418);
Our MATLAB Process 31
Mid-Atlantic Ridge
C = 4 *10^-11;
Spreading rate = 22000 m/myr
Θ (skewness) = -50
RMSE = 193
Real Application 32
Pacific-Antarctic Ridge
C = 1.2 * 10^-10
Spreading rate = 46,000 m/myr
Θ (skewness) = 3º
RMSE =259
Real Application 33
Limitations
—  We assume:
¡  Constant spreading rate
¡  Symmetry across the ridge
¡  Stationary ridge
Limitations 34