Skip to content

Commit

Permalink
Initial Electrical Conductivity Methods
Browse files Browse the repository at this point in the history
  • Loading branch information
sammykojo committed Nov 21, 2023
1 parent dde50af commit 3b0746e
Show file tree
Hide file tree
Showing 8 changed files with 677 additions and 0 deletions.
56 changes: 56 additions & 0 deletions vbr/vbrCore/functions/DK2014.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
function [ VBR ] = DK2014( VBR )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% [ VBR ] = DK2014( VBR )
%
% experimental results on the electrical conductivity in
% hydrated olivine single crystals measured under a broader temperature range
%
% Parameters:
% ----------
% VBR the VBR structure
%
% Output:
% ------
% VBR the VBR structure, with VBR.out.electric.DK2014_ol structure
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% read in eletric parameters
ele = VBR.in.electric.DK2014_ol;
T = VBR.in.SV.T; % K (Temperature)
Ch2o = VBR.in.SV.Ch2o; % ppm (water content)
P = VBR.in.SV.P; % GPa (Pressure)

% Low Temperature Conduction
S1 = ele.S_1; % S/m
Va_1 = ele.Va_1; % cc/mol (activation volume)
H1 = ele.H_1 + Va_1.*P; % kJ/mol
R = ele.R_1; % kJ/(mol*K)

% High Temperature Conduction
S2 = ele.S_2; % S/m
Va_2 = ele.Va_2; % cc/mol (activation volume)
H2 = ele.H_2 + Va_2.*P; % kJ/mol

ch2o_o = ele.ch2o_o; % ppm, experimental reference water content
r = ele.r; % unitless

% calculate arrhenius relation for each conduction mechanism
esig_1 = arrh_dry(S1,H1,R,T);
esig_2 = arrh_dry(S2,H2,R,T);

% summation of conduction mechanisms
esig = esig_1 + esig_2; % S/m
esig = ((Ch2o./ch2o_o).^r).*esig;

% store in VBR structure
DK2014_ol.esig_i = esig_1;
DK2014_ol.esig_h = esig_2;
DK2014_ol.esig = esig;
VBR.out.electric.DK2014_ol = DK2014_ol;
end

function sig = arrh_dry(S,H,k,T)
exponent = -(H)./(k.*T);
sig = (10^S).*exp(exponent);
end
50 changes: 50 additions & 0 deletions vbr/vbrCore/functions/SEO3.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
function [ VBR ] = SEO3( VBR )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% [ VBR ] = SEO3( VBR )
%
% Standard Electrical Olivine 3 model based on point defects in a dunite
% from temperature for anhydrous olivine
%
% Parameters:
% ----------
% VBR the VBR structure
%
% Output:
% ------
% VBR the VBR structure, with VBR.out.electric.yosh2009_ol structure
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% read in eletric parameters
ele = VBR.in.electric.SEO3_ol;
T = VBR.in.SV.T; % K (Temperature)

% calculate oxygen fugacity from SV.T
fO2 = OxF(T); % Pa

% calculation of conductivity
sig = SEO3_ne(T, fO2);

% store in VBR structure
SEO3_ol.sig = sig;
VBR.out.electric.yosh2009_ol = SEO3_ol;
end

function fO2 = OxF(T)
qfm = -24441.9./(T) + 13.296; %revised QFM-fO2 from Jones et al 2009
fO2 = 10.^qfm;
end

function sT = SEO3_ne(T, fO2)
e = 1.602e-19;
k = 8.617e-5;
kT = k*(T);
bfe = (5.06e24)*exp((-0.357)./kT);
bmg = (4.58e26)*exp((-0.752)./kT);
ufe = (12.2e-6)*exp((-1.05)./kT);
umg = (2.72e-6)*exp((-1.09)./kT);
concFe = bfe + (3.33e24)*exp((-0.02)./kT).*fO2.^(1/6);
concMg = bmg + (6.21e30)*exp((-1.83)./kT).*fO2.^(1/6);
sT = concFe.*ufe*e + 2*concMg.*umg*e;
return
end
66 changes: 66 additions & 0 deletions vbr/vbrCore/functions/UHO2014.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
function [ VBR ] = UHO2014( VBR )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% [ VBR ] = UHO2014( VBR )
%
% Review of experimental hyrous conductivity of Olivine evaluated with
% water concentration correction (Withers, 2012)
%
% Parameters:
% ----------
% VBR the VBR structure
%
% Output:
% ------
% VBR the VBR structure, with VBR.out.electric.UHO2014_ol structure
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% read in eletric parameters
ele = VBR.in.electric.UHO2014_ol;
T = VBR.in.SV.T; % K (Temperature)
Ch2o = VBR.in.SV.Ch2o; % ppm (water content)
P = VBR.in.SV.P; % GPa (Pressure)

% Vacancy Conduction
Sv = ele.S_v; % S/m
Va_v = ele.Va_v; % cc/mol
Hv = ele.H_v + Va_v.*P; % kJ

% Polaron Conduction
Sp = ele.S_p; % S/m
Va_p = ele.Va_p; % cc/mol
Hp = ele.H_p + Va_p.*P; % kJ

% Hydrous Conduction
Sh = ele.S_h; % S/m
Va_h = ele.Va_h; % cc/mol
Hh = ele.H_h + Va_h.*P; % kJ
R = ele.R_h; % kJ/(mol*K)
a = ele.a_h; % unitless
r = ele.r_h; % unitless

% calculate arrhenius relation for each conduction mechanism
esig_v = arrh_dry(Sv,Hv,R,T);
esig_p = arrh_dry(Sp,Hp,R,T);
esig_h = arrh_wet(Sh,Hh,R,T,Ch2o,a,r);

% summation of conduction mechanisms
esig = esig_v + esig_p + esig_h; % S/m

% store in VBR structure
UHO2014_ol.esig_i = esig_v;
UHO2014_ol.esig_h = esig_p;
UHO2014_ol.esig_p = esig_h;
UHO2014_ol.esig = esig;
VBR.out.electric.UHO2014_ol = UHO2014_ol;
end

function sig = arrh_dry(S,H,k,T)
exponent = -(H)./(k.*T);
sig = (10^S).*exp(exponent);
end

function sig = arrh_wet(S,H,k,T,w,a,r)
exponent = -(H-a.*(w.^(1/3)))./(k.*T);
sig = (10^S).*(w.^r).*exp(exponent);
end
88 changes: 88 additions & 0 deletions vbr/vbrCore/functions/poe2010.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
function [ VBR ] = poe2010( VBR )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% [ VBR ] = poe2010( VBR )
%
% calculates the electrical conductivity in single crystal San Carlos
% olivine (Fo90 ) at 8 GPa were determined by complex impedance spectroscopy.
%
% Parameters:
% ----------
% VBR the VBR structure
%
% Output:
% ------
% VBR the VBR structure, with VBR.out.electric.poe2010_ol structure
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% read in eletric parameters
ele = VBR.in.electric.poe2010_ol;
T = VBR.in.SV.T; % K (Temmperature)
Ch2o = VBR.in.SV.Ch2o; % ppm (water content)
P = VBR.in.SV.P; % GPa (Pressure)

% hydrous 100 axis
S_H100 = ele.S_H100; % S/m
Va_H100 = ele.Va_H100; % cc/mol
H_H100 = ele.H_H100 + Va_H100.*P; % eV
a_H100 = ele.a_H100; % unitless
r = ele.r_H100; % unitless
k = ele.k_H100; % eV/(mol*K)

% hydrous 010 axis
S_H010 = ele.S_H010; % S/m
Va_H010 = ele.Va_H010; % cc/mol
H_H010 = ele.H_H010 + Va_H010.*P; % eV
a_H010 = ele.a_H010; % unitless

% hydrous 001 axis
S_H001 = ele.S_H001; % S/m
Va_H001 = ele.Va_H001; % cc/mol
H_H001 = ele.H_H001 + Va_H001.*P; % eV
a_H001 = ele.a_H001; % unitless

% Anhydrous params
S_A100 = ele.S_A100; % S/m
Va_A100 = ele.Va_A100; % cc/mol
H_A100 = ele.H_A100 + Va_A100.*P; % eV

S_A010 = ele.S_A010; % S/m
Va_A010 = ele.Va_A010; % cc/mol
H_A010 = ele.H_A010 + Va_A010.*P; % eV

S_A001 = ele.S_A001; % S/m
Va_A001 = ele.Va_A001; % cc/mol
H_A001 = ele.H_A001 + Va_A001.*P; % eV

% calculate hydrous arrhenius relation for each crystal axis
esig_H100 = arrh_wet(S_H100,H_H100,k,T,Ch2o,a_H100,r);
esig_H010 = arrh_wet(S_H010,H_H010,k,T,Ch2o,a_H010,r);
esig_H001 = arrh_wet(S_H001,H_H001,k,T,Ch2o,a_H001,r);
esig_H = geomean(esig_H001,esig_H010,esig_H100);

% calculate anhydrous arrhenius relation for each crystal axis
esig_A100 = arrh_dry(S_A100,H_A100,k,T);
esig_A010 = arrh_dry(S_A010,H_A010,k,T);
esig_A001 = arrh_dry(S_A001,H_A001,k,T);
esig_A = geomean(esig_A001,esig_A010,esig_A100);


% summation of conduction mechanisms
esig = esig_H + esig_A; % S/m

% store in VBR structure
poe2010_ol.esig_H = esig_H;
poe2010_ol.esig_A = esig_A;
poe2010_ol.esig = esig;
VBR.out.electric.poe2010_ol = poe2010_ol;
end

function sig = arrh_dry(S,H,k,T)
exponent = -(H)./(k.*T);
sig = (10^S).*exp(exponent);
end

function sig = arrh_wet(S,H,k,T,w,a,r)
exponent = -(H-a.*(w.^(1/3)))./(k.*T);
sig = (10^S).*(w.^r).*exp(exponent);
end
70 changes: 70 additions & 0 deletions vbr/vbrCore/functions/sun2019.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
function [ VBR ] = sun2019( VBR )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% [ VBR ] = sun2019( VBR )
%
% Hydrogen-Deuterium Interdiffusion on single crystal San Carlos Olivine
%
% Parameters:
% ----------
% VBR the VBR structure
%
% Output:
% ------
% VBR the VBR structure, with VBR.out.electric.sun2019_ol structure
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% read in eletric parameters
ele = VBR.in.electric.sun2019_ol;
T = VBR.in.SV.T; % K (Temperature)
Ch2o = VBR.in.SV.Ch2o; % ppm (water content)
P = VBR.in.SV.P; % Pa (Pressure)

k = ele.k_i; % eV/(mol*K)
% Ionic Conduction
Si = ele.S_i; % S/m
Va_i = ele.Va_i; % cc/mol
Hi = ele.H_i + Va_i.*P; % eV

% Hopping Conduction
Sh = ele.S_h; % S/m
Va_h = ele.Va_h; % cc/mol
Hh = ele.H_h + Va_h.*P; % eV

% Hydrogen Diffusion
Sd = ele.S; % (m^2)/s
Va = ele.Va; % cc/mol
Hd = ele.H + Va.*P; % kJ/mol
R = ele.R; % kJ/(mol*K)
a = ele.a; % unitless
r = ele.r; % unitless

k_B = ele.k_B; % J/K (Nernst-Eistien constant)
q = ele.q; % C (Elementary charge)

% calculate arrhenius relation for each conduction mechanism
esig_i = arrh_dry(Si,Hi,k,T);
esig_h = arrh_dry(Sh,Hh,k,T);
D = arrh_wet(Sd,Hd,R,T,Ch2o,a,r);
esig_p = (D.*Ch2o.*(q^2))./(k_B*T);

% summation of conduction mechanisms
esig = esig_i + esig_h + esig_p; % S/m

% store in VBR structure
sun2019_ol.esig_i = esig_i;
sun2019_ol.esig_h = esig_h;
sun2019_ol.esig_p = esig_p;
sun2019_ol.esig = esig;
VBR.out.electric.sun2019_ol = sun2019_ol;
end

function sig = arrh_dry(S,H,k,T)
exponent = -(H)./(k.*T);
sig = (10^S).*exp(exponent);
end

function sig = arrh_wet(S,H,k,T,w,a,r)
exponent = -(H-a.*(w.^(1/3)))./(k.*T);
sig = (10^S).*(w.^r).*exp(exponent);
end
Loading

0 comments on commit 3b0746e

Please sign in to comment.