BG15(Tb,Pb,dFdP,JM,JS,Inc)

BG15.m
4/27/15, 4:11 PM
function [XM_OUT,XOW_OUT,BAI,BAI3,Ts,T,CumFrac,IncFrac,Fc] = ...
BG15(Tb,Pb,dFdP,JM,JS,Inc)
%==========================================================================
% BG15 Model for MORB melting in the spinel and plagioclase fields
%
% Inputs:
%
Tb - Real temperature (i.e., adiabatic gradient must be added) (∫C)
%
Pb - Pressure (kbars)
%
Note: Tb & Pb must be vectors of the same length (both values
%
should be either constant or monotonically decreasing as if
%
ascending along an adiabat).
%
dFdP - Melt productivity (melt fraction/kbar). Can either be
%
specified either as a single value or vector of length Tb & Pb.
%
JM, JS - Indices for mantle composition and mode, respectively.
%
1 - HZ prim (KG93)
%
2 - HZ dep 1 (KG93)
%
3 - Workman & Hart DMM (EPSL05)
%
4 - HZ dep 2
%
5,6 - WH DMM minus 1%, 2% melt, respectively
%
7 - MM3 (Baker & Stolper 1994; Baker et al., 1995)
%
8 - Kushiro (1996)
%
9 - HZ in CMAS
%
Inc - melt fraction extracted at each step (value between 0.01-1;
%
where 1 = complete melt extraction (i.e., fractional
%
melting); 0.01 = batch melting. Note that a value of
%
exactly 0 will result in spurious results in BAI.)
%
Also, Inc only has meaning for calculations with multiple
%
melt steps.
%
% Outputs:
%
XM_OUT - Mantle mode [Aug, Opx, Oliv, Plag, Sp]
%
XOW_OUT - Mantle composition [SiO2,TiO2,Al2O3,Cr2O3,FeO,MgO,CaO,
%
K2O,Na2O] (wt%)
%
BAI - Pooled melt composition at top of 1-D column (wt%)
%
BAI3 - Incremental melts [SiO2,TiO2,Al2O3,Cr2O3,FeO,MgO,CaO,K2O,
%
Na2O] (wt%)
%
Ts - Solidus temperature (C)
%
T - Temperature corrected for latent heat of melting based on the
%
amount of melt extracted at each step (C)
%
CumFrac, IncFrac - cumulative and incrmental melt fraction
%
Fc - max(CumFrac)
%
% Example of batch melting with HZ dep 1 mantle composition:
%
[XM,XOW,BAI,BAI3,Ts,T,CumFrac,IncFrac,Fc] = ...
%
BG15([1350,1340],[12,11],dFdP,2,2,0.01);
% Example of incremental batch melting with 90% melt extraction at each
%
step using the HZ dep 1 mantle composition:
%
[XM,XOW,BAI,BAI3,Ts,T,CumFrac,IncFrac,Fc] = ...
%
BG15([1350,1340],[12,11],dFdP,2,2,0.9);
%
%
% BG15 Version 1.0
% Mark Behn & T.L. Grove [JGR, Submitted, January 2015]
%==========================================================================
%% Initialization Sequence
Page 1 of 11
BG15.m
4/27/15, 4:11 PM
% Define Oxide Weights
%[SiO2,TiO2,Al2O3,Cr2O3,FeO,MgO,MnO,CaO,K2O,Na2O,Fe2O3,P2O5];
FK = [60.0840,79.8988,101.9612,151.9902,71.8464,40.3044,70.9374,56.0794,...
94.2036,61.9790,159.6920,141.945];
%Mantle Mode [Aug, Opx, Oliv, Plag, Sp]
ZMS(1,:) = [0.19,0.28,0.50,0,0.03];
ZMS(2,:) = [0.182,0.28,0.508,0,0.0295];
ZMS(3,:) = [.13,.28,.57,0,.02];
ZMS(4,:) = [0.182,0.28,0.508,0,0.0295];
ZMS(5,:) = [.13,.28,.57,.00,.02];
ZMS(6,:) = [.13,.28,.57,.00,.02];
ZMS(7,:) = [.13,.28,.57,0,.02];
ZMS(8,:) = [.13,.28,.57,0,.02];
ZMS(9,:) = [0.19,0.28,0.50,0,0.03];
%HZ prim
%HZ dep 1
%WH DMM
%HZ dep 2
%WH DMM
%WH DMM
%MM3
%Kushiro
%HZ in CMAS
ZMP(1,:)
ZMP(2,:)
ZMP(3,:)
ZMP(4,:)
ZMP(5,:)
ZMP(6,:)
ZMP(7,:)
ZMP(8,:)
ZMP(9,:)
%HZ prim
%HZ dep 1
%WH DMM
%HZ dep 2
%WH DMM
%WH DMM
%MM3
%Kushiro
%HZ in CMAS
=
=
=
=
=
=
=
=
=
[.13,.26,.54,.07,0];
[.128,.261,.546,.065,0.0];
[.128 .261 .546 .065 0.0];
[.128,.261,.546,.065,0.0];
[.128 .261 .546 .065 0.0];
[.128 .261 .546 .065 0.0];
[.128,.261,.546,.065,0.0];
[.128,.261,.546,.065,0.0];
[.13,.26,.54,.07,0];
%Melting reaction [Aug, Opx, Oliv, Plag, Sp]
YMP = [.31,0.16,-0.06,0.59,0]; %Plag
YMS = [0.97,0.25,-0.30,0.00,0.08]; % Spin (init); P-dependent spinel
%
reaction is defined below
%Mantle Composition [SiO2,TiO2,Al2O3,Cr2O3,FeO,MgO,CaO,K2O,Na2O] wt%;
% 1 - HZ prim (KG93)
ZO(1,:) = [46.161,0.182,4.08,0.47,7.573,37.946,3.224,0.032,0.333];
% 2 - HZ dep 1 (KG93)
ZO(2,:) = [46.331,0.174,3.935,0.47,7.659,38.452,3.193,0.0074,0.281];
% 3 - WH DMM (EPSL05)
ZO(3,:) = [44.71,0.13,3.98,0.57,8.18,38.73,3.17,0.006,0.28];
% 4 - HZ dep 2
ZO(4,:) = [46.313,0.161,3.639,0.47,7.670,38.890,3.101,0.003,0.223];
% 5 - WH DMM (EPSL05) - 1% melt (calculated from BG15)
ZO(5,:) = [44.812,0.124,3.864,0.471,8.229,39.124,3.136,1.6849e-06,0.24];
% 6 - WH DMM (EPSL05) - 2% melt (calculated from BG15)
ZO(6,:) = [44.758,0.118,3.722,0.474,8.252,39.399,3.082,1.5208e-09,0.195];
% 7 - MM3 (Baker & Stolper 1994; Baker et al., 1995)
ZO(7,:) = [45.5,0.11,3.98,0.68,7.18,38.3,3.57,0,0.31];
% 8 - Kushiro 1996
ZO(8,:) = [43.7,0.25,2.75,.28,1.38*.9+8.81,37.22,3.26,.14,.33];
% 9 - HZ in CMAS
ZO(9,:) = [46.381,0.0,4.099,0,0,42.395,3.559,0,0];
% Choose Mantle Mode and Composition to be used.
XO = ZO(JM,:); XOW = XO;
XMS = ZMS(JS,:); XMP = ZMP(JS,:);
Page 2 of 11
BG15.m
4/27/15, 4:11 PM
%Define Partition Coefficients (Note: some will be updated based on
%
pressure below).
DMS = [0.22,4.3,0.001,0.25;0.14,5.00,0.001,0.06;0.02,1.45,0.001,0.001;...
0.14,75.00,0.001,0.001];
DMP = [.001,.15,1.315,.625,2.70,.42;.001,.04,.20,.75...
3.7,.19;.001,.001,.03,1.35,5.20,.03;.271,1.0,...
1.32,.04,.05,.001;.001,.001,.018,1.230,2.70,.135]';
% Additional parameters
LH=4e5;
%Latent Heat
Cp=1e3;
%Specific heat
% Initialize dFdP array
if length(dFdP)==1
dFdP = ones(1,length(Pb))*dFdP;
end
% Initialize melt fraction
MeltFrac = zeros(1,length(Pb));
%Array for melt fractions
for i = 1:length(Pb)
if length(Pb) == 1
MeltFrac(i) = dFdP;
else
if i == 1
MeltFrac(i) = -(Pb(i+1)-Pb(i)).*dFdP(i);
else
if Pb(i)-Pb(i-1)==0
MeltFrac(i) = .002;
else
MeltFrac(i) = -(Pb(i)-Pb(i-1)).*dFdP(i);
end
end
end
end
% Initialize BAI, BIW, and BAI3 arrays that will hold melt compositions
BAI = zeros(1,9);
%Accumulated Melt (cation units)
BIW = zeros(1,9);
%Incremental Melt (wt%)
BAI3 = zeros(length(Pb),9);
%Incremental Melt (cation units)
% Calculate initial pyroxene modes in spinel field based on P-dependent
%
cpx-opx join
Pyx = XMS(1) + XMS(2);
XMS(1) = (XO(7)-2.*Pyx)./(15-0.17*Pb(1));
XMS(2) = Pyx-XMS(1);
% Define mantle mode arrays
XOW_OUT = zeros(length(Pb),length(XOW));
XM_OUT = zeros(length(Pb),length(XMS));
XOW_OUT(1,:) = XOW;
XM_OUT(1,:) = XMS;
Page 3 of 11
BG15.m
4/27/15, 4:11 PM
T = zeros(1,length(Pb));
Ts = zeros(1,length(Pb));
%Array for corrected temperature
%Array for solidi
%% Iteration Sequence
Frac = 0;
melton = 0;
if length(Pb) <= 2
melton = 1;
end
% Melt fraction is set to 0 at first step
% Flag to determine whether melting is turned on.
% Note that usually melting is turned off to start,
%
but for special cases with a single melt step
%
it is turned on for the initial step.
CumFrac = zeros(1,length(Pb));
cumFrac = 0;
IncFrac = zeros(1,length(Pb));
% Calculate melting looping through all pressures (P)
for ii = 1:length(Pb)
if melton == 0
Frac = 0;
elseif melton == 1
Frac = MeltFrac(ii);
end
% Calculate P-dependent melting reaction [Aug, Opx, Oliv, Plag, Sp]
YMS(1) = 0.0016*Pb(ii)^2 + 0.0006*Pb(ii) + 0.5;
YMS(2) = -0.0022*Pb(ii)^2 - 0.0223*Pb(ii) + 0.9365;
YMS(3) = 0.0015*Pb(ii)^2 - 0.008*Pb(ii) - 0.3414;
YMS(4) = 0;
YMS(5) = 0.0024*Pb(ii) + 0.0738;
YMS = YMS./sum(YMS);
% Calculate bulk composition of mantle
for i = 1:9
XOW(i) = (XOW(i) - Frac.*BIW(i))./(1-Frac);
end
%XOW(XOW<=0) = 0;
%Check to ensure no oxide is exhausted in residue and reset residue
% and melt
ineg = find(XOW<0);
BIW(ineg) = BIW(ineg) + (XOW(ineg)./Frac).*(1-Frac);
XOW(ineg) = 0;
for i = 1:9
XOW(i) = (1-Inc).*Frac.*BIW(i)+(1-(1-Inc)*Frac)*XOW(i);
end
XOW = 100.*XOW./sum(XOW);
% Estimage Mg# of melt from Sp Lherz as function of FeO, MgO, F, Phase
% Proportions and mineral-melt Fe-Mg Kds
%Re-order elements in original KG92 formulation for BG15_Mgnum routine:
% [K,Na,Ca,Fe,Mg,Ti,Si,Al]
iXOW = [XOW(8),XOW(9),XOW(7),XOW(5),XOW(6),XOW(2),XOW(1),XOW(3)];
Page 4 of 11
BG15.m
4/27/15, 4:11 PM
%Original Fe-Mg KD values from KG92
% XOlK = 0.3;
%Olivine Fe-Mg Kd
(0.30)
% XCpxK = 0.28;
%Cpx Fe-Mg Kd
(0.98*XOlK = 0.294)
% XOpxK = 0.27;
%Opx Fe-Mg Kd
(0.96*XOlK = 0.288)
% XSpK = 0.42;
%Spinel Fe-Mg Kd (1.52*XOlK = 0.456)
if Pb(ii) >= 9 %Choose between spinel and plag field
XOlK = 0.31509+0.0062362*(Pb(ii)/10);
%Olivine Fe-Mg Kd
XCpxK = 0.27652+0.021516*(Pb(ii)/10);
%Cpx Fe-Mg Kd
XOpxK = 0.27262+0.042031*(Pb(ii)/10);
%Opx Fe-Mg Kd
%XSpK = 1.05210-0.311430*(Pb(ii)/10);
%Spinel Fe-Mg Kd
XSpK = 0.6;
%Spinel Fe-Mg Kd
XMG = BG15_Mgnum(Frac,XMS,YMS,XOlK,XCpxK,XOpxK,XSpK,iXOW);
else
XOlK = 0.23701+0.0527690*(Pb(ii)/10);
%Olivine Fe-Mg Kd
XCpxK = 0.24015+0.030003*(Pb(ii)/10);
%Cpx Fe-Mg Kd
XOpxK = 0.21347+0.039536*(Pb(ii)/10);
%Opx Fe-Mg Kd
XSpK = 0.456; %Spinel Fe-Mg Kd (This value is not used but
% required as a place-holder.
XMG = BG15_Mgnum(Frac,XMP,YMP,XOlK,XCpxK,XOpxK,XSpK,iXOW);
end
% Calculate Mg# of olivine in residual
XMGOL = (XMG/(XOlK*(1-XMG)))./(1+(XMG/(XOlK*(1-XMG))));
% Define
DMS(1,1)
DMS(1,4)
DMS(2,1)
DMS(2,4)
P-dependent coefficients in D
= 22.570*(Pb(ii)^(-1.53));
= -0.440+0.557*log10(Pb(ii));
= 0.926*(Pb(ii)^(-0.565));
= -0.151+0.166*log10(Pb(ii));
matrix
% Dticpx
% Dnacpx
% Dtiopx
% Dnaopx
%Spinel field
XCS = (DMS'*[XMS(1:3),XMS(5)]')'; %bulk partition coefficient in solid
XPS = (DMS'*[YMS(1:3),YMS(5)]')'; %bulk partition coefficient in melt
%Plag field
XCP = (DMP*XMP')';
XPP = (DMP*YMP')';
%bulk partition coefficient in solid
%bulk partition coefficient in melt
% Calculate concentration of oxide in melt
%Spinel
XLFS(1) = XOW(2)/(XCS(1)+Frac*(1-XPS(1)));
XLFS(2) = XOW(4)/(XCS(2)+Frac*(1-XPS(2)));
XLFS(3) = XOW(8)/(XCS(3)+Frac*(1-XPS(3)));
XLFS(4) = XOW(9)/(XCS(4)+Frac*(1-XPS(4)));
%Plagioclase
XLFP(1) = XOW(8)/(XCP(1)+Frac*(1-XPP(1)));
XLFP(2) = XOW(9)/(XCP(2)+Frac*(1-XPP(2)));
XLFP(3) = XOW(7)/(XCP(3)+Frac*(1-XPP(3)));
XLFP(4) = XOW(5)/(XCP(4)+Frac*(1-XPP(4)));
XLFP(5) = XOW(6)/(XCP(5)+Frac*(1-XPP(5)));
XLFP(6) = XOW(2)/(XCP(6)+Frac*(1-XPP(6)));
(wt%)
%Ti
%Cr
%K
%Na
%K
%Na
%Ca
%Fe
%Mg
%Ti
% Caculate Ca content in melt
% Plag (based on Appendix A.4 KG92)
DMP(3,1) = 1.07+0.09*XLFP(2);
%Dcacpx
Page 5 of 11
BG15.m
4/27/15, 4:11 PM
DMP(3,2) = .16+0.021*XLFP(2);
%Dcaopx
XCP(3) = DMP(3,:)*XMP';
XPP(3) = DMP(3,:)*YMP';
XLFP(3) = XOW(7)/(XCP(3)+Frac*(1-XPP(3))); %Ca
%Spinel Field
if Pb(ii)<=23
DCA = 1.6 - 0.0196*Pb(ii)+0.071*(1-XMG);
PCA = 24.49-0.469*Pb(ii)-12.92*(1-XMG);
QCA = PCA/DCA; %Ca content (XLFS)
else % for later development with garnet melting
DCA = 1.6 - 0.0196*23+0.071*(1-XMG);
PCA = 24.49-0.469*23-12.92*(1-XMG);
QCA = PCA/DCA;
end
% Calculate NaK# wt, Mg# mol, assign wt% TiO2, K2O, Na/Na+Ca wt
if Pb(ii) >= 9
%Spinel Field
WNA=(XLFS(3)+XLFS(4))/(XLFS(3)+XLFS(4)+QCA); %NaK# = (Na + K) / (Na + K +
Ca)
WNACA=XLFS(4)/(XLFS(4)+QCA); %Na# = Na / (Na + Ca)
% assign wt.% TiO2 and K2O
WT=XLFS(1);
WK=XLFS(3);
else
%Plag Field
WNA=(XLFP(1)+XLFP(2))/(XLFP(1)+XLFP(2)+QCA);
WNACA=XLFP(2)/(XLFP(2)+QCA);
% assign wt.% TiO2 and K2O
WT=XLFP(6);
WK=XLFP(1);
end
% Calculate mineral components and T (V. 8 MIT+CMASN)
%
Coefficients from Till et al. [2012]
if Pb(ii) >= 9
%Spinel Field
Ts(ii)=1212.+11.99*Pb(ii)-97.33*(1-XMG)-87.76*WNA+3.44*WT-4.58*WK;
S(1)=.123+.0085*Pb(ii)+.203*(1-XMG)-.268*WNA-.019*WT+.012*WK; %Olivine
S(2)=.180+.0005*Pb(ii)+.075*(1-XMG)-.264*WNA+.007*WT+.012*WK; %CPX
S(3)=.554-.0043*Pb(ii)-.192*(1-XMG)+.949*WNA-.007*WT-.041*WK; %Plag
S(4)=.143-.0046*Pb(ii)-.085*(1-XMG)-.416*WNA +.020*WT+.018*WK; %Qtz
else
%Plag Field
Ts(ii)=1216.+10.44*Pb(ii)-72.83*(1-XMG)-194.9*WNA+24.08*WT-1.55*WK;
S(1)=.132+.0069*Pb(ii)+.173*(1-XMG)-.261*WNA-.009*WT+.010*WK; %Olivine
S(2)=.238-.0051*Pb(ii)-.065*(1-XMG)-.097*WNA+.004*WT-.013*WK; %CPX
S(3)=.408+.0146*Pb(ii)-.136*(1-XMG)+.630*WNA+.014*WT-.028*WK; %Plag
S(4)=.222-.0164*Pb(ii)-.029*(1-XMG)-.272*WNA -.009*WT+.031*WK; %Qtz
end
% Save mantle mode
if Pb(ii) >= 9;
XM_OUT(ii,:) = XMS;
Page 6 of 11
BG15.m
4/27/15, 4:11 PM
else
XM_OUT(ii,:) = XMP;
end
XOW_OUT(ii,:) = XOW;
% CHECK FOR MELTING
T(ii) = Tb(ii) - ((cumFrac).*LH./Cp);
if isnan(Ts(ii)) == 1;
Ts(ii) = Ts(ii-1);
end
if T(ii)<Ts(ii)
melton = 0;
Frac = 0;
BAI3(ii,:) = zeros(1,9);
cumFrac = cumFrac+Frac;
CumFrac(ii) = cumFrac;
else
melton = 1;
Frac = MeltFrac(ii);
S = S./sum(S);
TA = zeros(1,8);
TA(1) = S(4);
TA(3) = S(3);
TA(4) = S(1);
TA(5) = S(2);
% Renormalize Ol, Cpx, Plag, Qtz to 1.0
%Qtz
%Plag
%Olivine
%Cpx
% Recalculate to mole components
TA(1)=TA(1);
%Qtz
TA(2)=TA(2)/4.; %Albite
TA(3)=TA(3)/4.; %Anorthite
TA(4)=TA(4)/2.; %Olivine
TA(5)=TA(5)/3.; %Cpx
TA(6)=TA(6)/1.5; %TiO2-bearing mineral?
TA(7)=TA(7)/4.; %K-bearing mineral?
TA(8)=TA(8)/6.; %??
TA = TA./sum(TA);
%Recalculate albite & anorthite contents in plag component
TPL=TA(2)+TA(3); %plag
XBRT=2.*WNACA/61.979;
%ratio1 of KG92
XNRT=(1.-WNACA)/56.0794; %ratio2 of KG92
XNA=XBRT/(XBRT+XNRT);
TA(2)=XNA*(TPL+TA(5)); %albite
TA(3)=TPL-TA(2); %anorthite
GP(9)=TA(7);
%K2O (cation frac)
GP(10)=TA(2);
%Na2O (cation frac)
% Transform from molar to cation fraction
GP(3)=2.*TA(3)+TA(2)+TA(7); %Al2O3
GP(8)=TA(5)+TA(3);
%CaO
GP(2)=TA(6); %TiO2
GP(5)=(1.-XMG)*(2.*TA(4)+TA(6)+TA(5)); %FeO
Page 7 of 11
BG15.m
4/27/15, 4:11 PM
GP(6)=XMG*(2.*TA(4)+TA(6)+TA(5)); %MgO
GP(1)=TA(1)+TA(4)+2.*TA(5)+2.*TA(3)+3.*TA(7)+3.*TA(2); %SiO2
GP(4)=0.0; %Cr2O3
GP(7)=0.0; %MnO
GP(11)=0.0; %Fe2O3
GP(12)=0.0; %P2O5
GP = GP./sum(GP);
% Transform from cation fraction to mole %
GN(1)=GP(1);
%SiO2
GN(2)=GP(2);
%TiO2
GN(3)=0.5*GP(3);
%Al2O3
GN(4)=GP(4);
%Cr2O3
GN(5)=GP(5);
%FeO
GN(6)=GP(6);
%MgO
GN(7)=GP(7);
%MnO
GN(8)=GP(8);
%CaO
GN(9)=0.5*GP(9);
%K2O
GN(10)=0.5*GP(10); %Na2O
GN(11)=0.5*GP(11); %Fe2O3
GN(12)=0.5*GP(12); %P2O5
GN = 100.*GN./sum(GN);
% Calculate composition in wt%
CN = 100.*GN.*FK./sum(GN.*FK);
% Add Ti, Cr, & K
CN(2) = WT;
if Pb(ii)>=9
CN(4) = XLFS(2);
else
CN(4) = XLFP(2);
end
CN(9) = WK;
CN = 100.*CN./sum(CN);
%Ti
%Cr
%Cr
%K
% Transform to mole fraction
GN = 100.*(CN./FK)./sum(CN./FK);
% Recaculate molar oxides with addition of ilmenite and orthoclase
% components
GN(1)=GN(1)+6.*GN(9); %SiO2 = SiO2 + 6 Or
GN(3)=GN(3)+GN(9);
%Al2O = Al2O3 + Or
GN(5)=GN(5)+(1.-XMG)*GN(2); %FeO + (1-Mg#)*Ilm
GN(6)=GN(6)+XMG*GN(2); %MgO + Mg# * Ilm
GN = 100.*GN./sum(GN);
%Recalculate composition in wt%
CN = GN.*FK;
CN = 100.*CN./sum(CN);
% Rearrange to remove MnO, Fe2O3, P2O5 from saved melt composition
BIW = CN;
BIW(7) = CN(8); %cao
BIW(8) = CN(9); %k2o
BIW(9) = CN(10); %na2o
Page 8 of 11
BG15.m
4/27/15, 4:11 PM
% Add incremental melts
BAI=BAI+(1-max(CumFrac))*Frac*Inc.*BIW(1:9);
% Track composition at each depth
%[SiO2,TiO2,Al2O3,Cr2O3,FeO,MgO,CaO,K2O,Na2O]
BAI3(ii,:)=100*BIW(1:9)./sum(BIW(1:9));
% Calculate cumulative melt fraction
cumFrac = cumFrac+Frac;
CumFrac(ii) = cumFrac;
IncFrac(ii) = Frac;
end
% Calculate new phase proportions in residue based on melting reaction
for i=1:5
XMS(i)=(XMS(i)-Frac*YMS(i));
XMP(i)=(XMP(i)-Frac*YMP(i));
if XMS(i) <= 0.; XMS(i) = 0.0; end
if XMP(i) <= 0.; XMP(i) = 0.0; end
end
XMS = XMS./sum(XMS);
XMP = XMP./sum(XMP);
% Convert remaining Sp to Plag at P = 9 kbar
if Pb(ii) == 9
XMP(4) = 1.5*XMS(5);
XMP(5) = 0;
XMP(1) = XMS(1) - XMS(5);
XMP(2) = XMS(2) - XMS(5);
XMP(3) = XMS(3) + 1.5*XMS(5);
end
% If plag exhausted correct melting reaction
if XMP(4) == 0
YMP(1) = 0.66;
YMP(2) = -0.02;
YMP(3) = 0.36;
YMP(4) = 0;
YMP(5) = 0;
end
end
BAI = 100.*BAI./sum(BAI);
Fc = max(CumFrac);
iFc = find(CumFrac == Fc);
if length(iFc) > 1
CumFrac(iFc(2:end)) = 0;
end
%% Additional Subroutines
function [RT4BIS] = BG15_Mgnum(FL,XM,YM,XOlK,XCpxK,XOpxK,XSpK,XO)
%==========================================================================
% This is a modified version of the rtbis routine found in
% Numerical Recipes. Its purpose is to be an elegant root finder
Page 9 of 11
BG15.m
4/27/15, 4:11 PM
% This version is modified to estimate the mg# of melt from mantle
% assumed to consist of pl or sp lherz as function of F (extent of melt)
% and depends on ol/melt KD and cpx/melt, opx/melt, and sp/melt KDs
% and phase proportions in mantle and on bulk mgo and feo
%
% FL is melt fraction (WT), X1 and X2 are guesses of mgnum of melt, XACC is
% tolerance, XOlK, XCpxK, XOpxK, XSpK are the ol/melt cpx/melt, opx/melt,
% and sp/melt KDs, repsectively, XM(5) is vector of phase proportions (WT)
% MMGNUM is function that solves for melt mgnum
%
% This version of the RT4BIS subroutine from Kinzler & Grove 92 takes XO,
%
XM, YM, and FL in weight fractions. Note that the order of elements in
%
XO is [K,Na,Ca,Fe,Mg,Ti,Si,Al] as in the original KG92 routines.
% An important component are the assumptions that go into the ol,px,&sp
%
composition in FUNC1-FUNC4 in the MMGNUM subroutine.
% This routine is valid in both the plag & spinel fields because plag will
%
not affect the Mg-Fe partitioning (i.e., XMM(4) does not come into the
%
final calculation of Mg#)
% M. Behn & T. Grove 11/13/12
% M. Behn adjusted Ca/Mg+Fe for cpx from 25 (KG92) to 40 (K97) 11/14
%==========================================================================
XACC = 1e-5;
X1 = 0.80;
X2 = 0.68;
JMAX=40;
% Use melt fraction (FL), initial phase proportions (XM) and melt
% reaction (YM) to estimate phase proportions at end of melting (all
% in wt. units)
SUM=0.0;
for I = 1:5
XMN(I)=XM(I)-FL*YM(I);
if XMN(I) <= 0.0; XMN(I)=0.0; end
SUM=SUM+XMN(I);
end
for I = 1:5
XMN(I)=XMN(I)/SUM;
end
% convert wt. fraction FL to cation fraction FLM
FLM=0.0002+0.926*FL;
% convert wt.% FeO (XO(4)) and MgO (XO(5)) in mantle to CATION %
XFEOM=100*(XO(4)/71.846)/((2*XO(1)/94.201)+(2*XO(2)/61.979)+...
(XO(3)/56.794)+(XO(4)/71.846)+(XO(5)/40.311)+(XO(6)/79.89)...
+(XO(7)/60.0848)+(2*XO(8)/101.961));
XMGOM=100*(XO(5)/40.311)/((2*XO(1)/94.201)+(2*XO(2)/61.979)+...
(XO(3)/56.794)+(XO(4)/71.846)+(XO(5)/40.311)+(XO(6)/79.89)...
+(XO(7)/60.0848)+(2*XO(8)/101.961));
F=MMGNUM(X1,FLM,XMGOM,XFEOM,XMN,XOlK,XCpxK,XOpxK,XSpK);
if F < 0
Page 10 of 11
BG15.m
4/27/15, 4:11 PM
RT4BIS=X1;
DX=X2-X1;
else
RT4BIS=X2;
DX=X1-X2;
end
for J = 1:JMAX
DX=DX*.5;
XMID=RT4BIS+DX;
FMID=MMGNUM(XMID,FLM,XMGOM,XFEOM,XMN,XOlK,XCpxK,XOpxK,XSpK);
if FMID < 0; RT4BIS=XMID; end
if abs(DX) < XACC | FMID == 0; return; end
end
function FUNC = MMGNUM(MGNUM,FLM,XMGOM,XFEOM,XMN,XOlK,XCpxK,XOpxK,XSpK);
% Mg number of melt from LHERZOLITE mantle function
% MGNUM is the Mg# of MELT
% FLM is melt fraction (CATION FRACTION)
% XOlK,XCpxK,XOpxK,XSpK are KDs for oliv/melt, cpx/melt, opx/melt, &
%
sp/melt
% XM is vector containing phase proportions (WT. FRACTION)
% at end of FL melt production
% XMGOM is MGO (CATION MOLE FRACTION) IN bulk mantle prior to melting
% XFEOM IS FEO (CATION MOLE FRACTION) IN bulk mantle prior to melting
MGNM(1)=MGNUM/(MGNUM+XCpxK*(1-MGNUM));
MGNM(2)=MGNUM/(MGNUM+XOpxK*(1-MGNUM));
MGNM(3)=MGNUM/(MGNUM+XOlK*(1-MGNUM));
MGNM(5)=MGNUM/(MGNUM+XSpK*(1-MGNUM));
% Divison by 1.5 below is to correct everything to 4 oxygens (cpx & opx
% both have 6 oxygens).
SUM=XMN(1)*100/(MGNM(1)*216.56/1.5+(1-MGNM(1))*248.095/1.5)+...
XMN(2)*100/(MGNM(2)*200.792/1.5+(1-MGNM(2))*263.862/1.5)+...
XMN(3)*100/(MGNM(3)*140.707+(1-MGNM(3))*203.777)+...
XMN(4)*100/275.012+XMN(5)*100/(MGNM(5)*142.272+(1-MGNM(5))*173.807);
XMM(1)=(XMN(1)*100/(MGNM(1)*216.56/1.5+(1-MGNM(1))*248.095/1.5)/SUM);
XMM(2)=(XMN(2)*100/(MGNM(2)*200.792/1.5+(1-MGNM(2))*263.862/1.5)/SUM);
XMM(3)=(XMN(3)*100/(MGNM(3)*140.707+(1-MGNM(3))*203.777)/SUM);
XMM(4)=(XMN(4)*100/275.012/SUM);
XMM(5)=(XMN(5)*100/(MGNM(5)*142.272+(1-MGNM(5))*173.807)/SUM);
% Note that plagioclase (here the 4th component XMM(4)) does not have Fe or
% Mg its structure -- so it does not factor into the calculation of Mg#
% below.
FUNC1=XMM(3)*(66.7*MGNUM/(MGNUM+XOlK*(1-MGNUM)));
FUNC2=XMM(2)*(50.*MGNUM/(MGNUM+XOpxK*(1-MGNUM)));
FUNC3=XMM(1)*(40.*MGNUM/(MGNUM+XCpxK*(1-MGNUM)));
FUNC4=XMM(5)*(33.33*MGNUM/(MGNUM+XSpK*(1-MGNUM)));
FUNC=XMGOM-(1-FLM)*(FUNC1+FUNC2+FUNC3+FUNC4);
FUNC=FUNC/(XMGOM+XFEOM-(1-FLM)*(66.67*XMM(3)+50.0*XMM(2)...
+40.0*XMM(1)+33.33*XMM(5)));
FUNC=FUNC-MGNUM;
Page 11 of 11