Porosity.get_Cco2_m Method
get Cco2_m(ps_nt)returns the amount of CO₂ in melt
Arguments
ϕ: melt fractionCco2: bulk CO₂ conc.Cco2_sat: saturation limit of CO₂ conc. in melt
Usage
The inputs should be in the form of a NamedTuple
ϕ = 0.05
Cco2 = 1000
Cco2_sat = 38e4
ps_nt = (; ϕ, Cco2, Cco2_sat)
get_Cco2_m(ps_nt)
# output
(Cco2_m = 20000.0,)Porosity.get_Ch2o_m Method
get Ch2o_m(ps_nt)returns the amount of CO₂ in melt and water in the form of NamedTuple
Arguments
ϕ: melt fractionCco2: bulk water conc.D: partition coefficient
Usage
The inputs should be in the form of a NamedTuple
ϕ = 0.05
Ch2o = 1000
D = 0.005
ps_nt = (; ϕ, Ch2o, D)
get_Ch2o_m(ps_nt)
# output
(Ch2o_m = 18264.840182648404, Ch2o_ol = 91.32420091324202)Porosity.get_melt_fraction Method
get_melt_fraction(ps_nt; H2O_suppress_fn = ΔT_h2o_Blatter2022, CO2_suppress_fn= ΔT_co2_Blatter2022)returns the melt fraction that is thermodynamically stable at given water conc. and CO₂ conc. for a given dry solidus temperature and pressure
Arguments
Cco2: bulk CO₂ conc. (ppm), defaults to 0 ppmCco2_sat: saturation limit of melt CO₂ conc. (ppm), defaults to 38 wt %Ch2o: bulk water conc. (ppm), defaults to 0 ppmT: temperature (K)T_solidus: solidus temperature (K)P: Pressure (GPa)D: water partition coefficient between water and olivine, defaults to 0.005
Keyword Arguments
H2O_suppress_fn: function to calculate suppressed solidus due to presence of water, defaults toΔT_h2o_Blatter2022CO2_suppress_fn: function to calculate suppressed solidus due to presence of CO₂, defaults toΔT_co2_Dasgupta2013
Usage
The inputs should be in the form of a NamedTuple
P = [3.0]
T = (1440:10:1480) .+ 273.0
T_solidus = [1450.0] .+ 273
Ch2o = 100.0
Cco2 = 1000.0
ps_nt = (; P, T, T_solidus, Ch2o, Cco2)
get_melt_fraction(ps_nt)
# output
(ϕ = [0.041345720244193085, 0.05481061353960702, 0.072300827427471, 0.09337629457529527, 0.1171677298066955],)Porosity.solidus_Hirschmann2000 Method
solidus_Hirschmann2000(ps_nt)returns pressure-dependent dry solidus (in K)
Arguments
P: Pressure in GPa
Optional Arguments
params: variables that parameterize the solidus
Usage
The inputs should be in the form of a NamedTuple, and the output will be a NamedTuple as well with T_solidus as the only field
P = [3.0, 4.0, 5.0]
ps_nt = (; P)
solidus_Hirschmann2000(ps_nt)References
Marc M. Hirschmann (2000) : Mantle solidus: Experimental constraints and the effects of peridotite composition https://doi.org/10.1029/2000GC000070
sourcePorosity.solidus_Katz2003 Method
solidus_Katz2003(ps_nt)returns pressure-dependent dry solidus (in K)
Arguments
P: Pressure in GPa
Usage
The inputs should be in the form of a NamedTuple, and the output will be a NamedTuple as well with T_solidus as the only field
P = [3.0, 4.0, 5.0]
ps_nt = (; P)
solidus_Katz2003(ps_nt)References
Katz, R. F., Spiegelman, M., & Langmuir, C. H. (2003) : A new parameterization of hydrous mantle melting. Geochemistry, Geophysics, Geosystems, 4(9), 1–19. https://doi.org/10.1029/2002GC000433
sourcePorosity.ΔT_co2_Dasgupta2007 Method
ΔT_co2_Dasgupta2007(ps_nt)updates solidus with the depressed one because of CO₂ in melt
Arguments
Cco2_m: CO₂ conc. in melt (ppm.)T_solidus: Temperature of solidus (K)
Usage
The inputs should be in the form of a NamedTuple
P = [3.0]
T_solidus = [1400.0] .+ 273
Cco2_m = 0:200:1000
ps_nt = (; P, T_solidus, Cco2_m)
ΔT_co2_Dasgupta2007(ps_nt)References
Rajdeep Dasgupta; Marc M. Hirschmann; Neil D. Smith (2007) : Water follows carbon: CO 2 incites deep silicate melting and dehydration beneath mid-ocean ridges, Geology, 2007 https://doi.org/10.1130/G22856A.1
sourcePorosity.ΔT_co2_Dasgupta2013 Method
ΔT_co2_Dasgupta2013(ps_nt)updates solidus with the depressed one because of CO₂ in melt
Arguments
Cco2_m: CO₂ conc. in melt (ppm.)T_solidus: Temperature of solidus (K)
Usage
The inputs should be in the form of a NamedTuple
P = [3.0]
T_solidus = [1400.0] .+ 273
Cco2_m = 0:200:1000
ps_nt = (; P, T_solidus, Cco2_m)
ΔT_co2_Dasgupta2013(ps_nt)References
Dasgupta, R., Mallik, A., Tsuno, K. et al. (2013) : Carbon-dioxide-rich silicate melt in the Earth’s upper mantle. Nature 493, 211–215 (2013). https://doi.org/10.1038/nature11731
sourcePorosity.ΔT_h2o_Blatter2022 Method
ΔT_h2o_Blatter2022(ps_nt)updates solidus with the depressed one because of water in melt
Arguments
Ch2o_m: water conc. in melt (ppm.)T_solidus: Temperature of solidus (K)
Usage
The inputs should be in the form of a NamedTuple
P = [3.0]
T_solidus = [1400.0] .+ 273
Ch2o_m = 0:200:1000
ps_nt = (; P, T_solidus, Ch2o_m)
ΔT_h2o_Blatter2022(ps_nt)References
Blatter D, Naif S, Key K, Ray A (2022) : A plume origin for hydrous melt at the lithosphere-asthenosphere boundary. Nature. 2022 Apr;604(7906):491-494. doi: 10.1038/s41586-022-04483-w
sourcePorosity.ΔT_h2o_Katz2003 Method
ΔT_h2o_Katz2003(ps_nt)updates solidus with the depressed one because of water in melt
Arguments
P: Pressure (GPa)T_solidus: solidus temperature (K)Ch2o_m: melt fraction
Usage
The inputs should be in the form of a NamedTuple, and the output will be a NamedTuple as well with T_solidus as the only field
P = [3.0]
T_solidus = [1400.0] .+ 273
Ch2o_m = 0:200:1000
ps_nt = (; P, T_solidus, Ch2o_m)
ΔT_h2o_Katz2003(ps_nt)References
Katz, R. F., Spiegelman, M., & Langmuir, C. H. (2003) : A new parameterization of hydrous mantle melting. Geochemistry, Geophysics, Geosystems, 4(9), 1–19. https://doi.org/10.1029/2002GC000433
sourcePorosity.Dai_Karato2009 Type
Dai_Karato2009(T, Ch2o_opx)Electrical conductivity model for olivine dependent on temperature and water concentration.
Arguments
T: Temperature of olivine (in K)Ch2o_opx: water concentration in orthopyroxene (in ppm)
References
- Dai, Lidong and Karato, Shun-ichiro (2009), "Electrical conductivity of orthopyroxene: Implications for the water content of the asthenosphere", Proceedings of the Japan Academy, Series B, doi:10.2183/pjab.85.466
Usage
julia> model = Dai_Karato2009(1000 + 273.0, 2e4)
Model : Dai_Karato2009
Temperature (K) : 1273.0
Water concentration in orthopyroxene (ppm) : 20000.0
julia> log_cond = forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : -1.4966847149880984Porosity.Dai_Karato2009Distribution Type
Dai_Karato2009Distribution(T, Ch2o_opx)Electrical conductivity model for olivine dependent on temperature and water concentration.
Arguments
T: Temperature of olivine (in K)Ch2o_opx: water concentration in orthopyroxene (in ppm)
Usage
Refer to the documentation for usage examples.
sourcePorosity.GAL Type
GAL(m)Generalized Archie's law for multiple phases
Usage
References
- Glover, P.W.J (2010), A generalized Archie’s law for n phases
https://doi.org/10.1190/1.3509781Porosity.Gaillard2008 Type
Gaillard2008(T)Electrical conductivity model for melt dependent on Temperature.
Usage
julia> model = Gaillard2008(1000 + 273.0)
Model : Gaillard2008
Temperature (K) : 1273.0
julia> log_cond = forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : 2.2275677836002115Arguments
T: Temperature of melt (should be greater than 1146.8 K)
References
- Gaillard, Fabrice & Malki, Mohammed & Iacono-Marziano, Giada & Pichavant, Michel & Scaillet, Bruno. (2008), "Carbonatite Melts and Electrical Conductivity in the Asthenosphere", Science (New York, N.Y.). 322. 1363-5, doi: 10.1126/science.1164446.
Porosity.Gaillard2008Distribution Type
Gaillard2008Distribution(T)Model Distribution for Gaillard2008[@ref].
Arguments
T: Temperature of melt (in K)
Usage
Refer to the documentation for usage examples.
sourcePorosity.HK2003 Type
HK2003(T, P, dg, σ, ϕ, Ch2o_ol = 0.)Calculate strain rate and viscosity for steady state olivine flow, per Hirth and Kohlstedt (2003), using the three creep mechanisms, i.e., diffusion, dislocation, grain boundary sliding
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : PorosityOptional Arguments
- `Ch2o_ol` : Water concentration in olivine (ppm), defaults to 0 ppm.Keyword Arguments
- `params` : Various coefficients required for calculation.
Coefficients for different mechanisms (stored in `mechs` field):
- `diff` : Diffusion creep
- `disl` : Dislocation creep
- `gbs` : Grain boundary sliding
To investigate coefficients, call `default_params(Val{HK2003})`.
To modify coefficients, check the relevant documentation page. This
will also users to get any particular type of mechanism, eg. `diff` only
by setting the `A` in `disl` and `gbs` to `0f0`.
`params` for `HK2003` holds another important field:
- `melt_enhancement` : TODOUsage
julia> T = collect(1073.0f0:40:1273.0f0);
julia> P = 2 .+ zero(T);
julia> dg = collect(3.0f0:8.0f-1:7.0f0);
julia> σ = collect(7.5f0:1.0f0:12.5f0) .* 1.0f-3;
julia> ϕ = collect(1.0f-2:2.0f-3:2.0f-2);
julia> model = HK2003(T, P, dg, σ, ϕ)
Model : HK2003
Temperature (K) : Float32[1073.0, 1113.0, 1153.0, 1193.0, 1233.0, 1273.0]
Pressure (GPa) : Float32[2.0, 2.0, 2.0, 2.0, 2.0, 2.0]
grain size(μm) : Float32[3.0, 3.8, 4.6, 5.4, 6.2, 7.0]
Shear stress (GPa) : Float32[0.0075000003, 0.0085, 0.009500001, 0.010500001, 0.011500001, 0.0125]
Porosity : Float32[0.01, 0.012, 0.014, 0.016, 0.018, 0.02]
Water concentration in olivine (ppm) : 0.0
julia> forward(model, [])
Rock physics Response : RockphyViscous
Strain rate : Float32[3.152961f-11, 9.076501f-11, 2.643556f-10, 7.560147f-10, 2.093749f-9, 5.5805227f-9]
Viscosity (Pa s) : Float32[2.3787166f17, 9.364843f16, 3.5936449f16, 1.3888621f16, 5.4925405f15, 2.2399335f15]References
- Hirth and Kohlstedt, 2003, "Rheology of the Upper Mantle and the Mantle Wedge: A View from the Experimentalists", Inside the Subduction Factory, J. Eiler (Ed.). https://doi.org/10.1029/138GM06
Porosity.HK2003Distribution Type
HK2003(T, P, dg, σ, ϕ, Ch2o_ol)Model Distribution for HK2003[@ref].
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `Ch2o_ol` : Water concentration in olivine (ppm), defaults to 0 ppm.Usage
Refer to the documentation for usage examples.
sourcePorosity.HS1962_minus Type
HS1962_minusHashim-Strikman lower bound for mixing 2 phases
Usage
m = two_phase_modelType(Yoshino2009, Sifre2014, HS1962_minus())Check out the relevant rock physics documentation.
References
- Paul W. J. Glover (2010), "A generalized Archie's law for n phases", Geophysics 2010; 75 (6): E247–E265, doi: https://doi.org/10.1190/1.3509781
Porosity.HS1962_plus Type
HS1962_plusHashim-Strikman upper bound for mixing 2 phases
Usage
m = two_phase_modelType(Yoshino2009, Sifre2014, HS1962_plus())Check out the relevant rock physics documentation.
References
- Paul W. J. Glover (2010), "A generalized Archie's law for n phases", Geophysics 2010; 75 (6): E247–E265. doi: https://doi.org/10.1190/1.3509781
Porosity.HS_minus_multi_phase Type
Hashim-Strikman lower bound for multiple phases
References
- Berryman, J. G. (1995), Mixture Theories for Rock Properties
https://doi.org/10.1029/RF003p0205Porosity.HS_plus_multi_phase Type
Hashim-Strikman upper bound for multiple phases
References
- Berryman, J. G. (1995), Mixture Theories for Rock Properties
https://doi.org/10.1029/RF003p0205Porosity.HZK2011 Type
HZK2011(T, P, dg, σ, ϕ)Calculate strain rate and viscosity for steady state olivine flow, per Zimmerman and Kohlstedt (2011), using the three creep mechanisms, i.e., diffusion, dislocation, grain boundary sliding
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : PorosityKeyword Arguments
- `params` : Various coefficients required for calculation.
Coefficients for different mechanisms (stored in `mechs` field):
- `diff` : Diffusion creep
- `disl` : Dislocation creep
- `gbs` : Grain boundary sliding
To investigate coefficients, call `default_params(Val{HZK2011})`.
To modify coefficients, check the relevant documentation page. This
will also users to get any particular type of mechanism, eg. `diff` only
by setting the `A` in `disl` and `gbs` to `0f0`.
`params` for `HZK2011` holds another important field:
- `melt_enhancement` : TODOUsage
julia> T = collect(1073.0f0:40:1273.0f0);
julia> P = 2 .+ zero(T);
julia> dg = collect(3.0f0:8.0f-1:7.0f0);
julia> σ = collect(7.5f0:1.0f0:12.5f0) .* 1.0f-3;
julia> ϕ = collect(1.0f-2:2.0f-3:2.0f-2);
julia> model = HZK2011(T, P, dg, σ, ϕ)
Model : HZK2011
Temperature (K) : Float32[1073.0, 1113.0, 1153.0, 1193.0, 1233.0, 1273.0]
Pressure (GPa) : Float32[2.0, 2.0, 2.0, 2.0, 2.0, 2.0]
grain size(μm) : Float32[3.0, 3.8, 4.6, 5.4, 6.2, 7.0]
Shear stress (GPa) : Float32[0.0075000003, 0.0085, 0.009500001, 0.010500001, 0.011500001, 0.0125]
Porosity : Float32[0.01, 0.012, 0.014, 0.016, 0.018, 0.02]
julia> forward(model, [])
Rock physics Response : RockphyViscous
Strain rate : Float32[8.3687815f-13, 2.4096476f-12, 7.02197f-12, 2.0106366f-11, 5.5824817f-11, 1.4951564f-10]
Viscosity (Pa s) : Float32[8.961879f18, 3.5274867f18, 1.3528968f18, 5.222227f17, 2.060016f17, 8.36033f16]References
- Hansen, Zimmerman and Kohlstedt, 2011, "Grain boundary sliding in San Carlos olivine: Flow law parameters and crystallographic-preferred orientation", J. Geophys. Res., https://doi.org/10.1029/2011JB008220
Porosity.HZK2011Distribution Type
HZK2011Distribution(T, P, dg, σ, ϕ)Model Distribution for HZK2011[@ref].
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : PorosityUsage
Refer to the documentation for usage examples.
sourcePorosity.Jones2012 Type
Jones2012(T, Ch2o_ol)Electrical conductivity model for olivine dependent on temperature and water concentration.
Arguments
T: Temperature of olivine (in K)Ch2o_ol: water concentration in olivine (in ppm)
Usage
julia> model = Jones2012(1000 + 273.0, 2e4)
Model : Jones2012
Temperature (K) : 1273.0
Water concentration in olivine (ppm) : 20000.0
julia> log_cond = forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : 0.15504093485137044References
- Jones, A. G., J. Fullea, R. L. Evans, and M. R. Muller (2012), "Water in cratonic lithosphere: Calibrating laboratory-determined models of electrical conductivity of mantle minerals using geophysical and petrological observations", Geochem. Geophys. Geosyst., 13, Q06010, doi:10.1029/2012GC004055.
Porosity.Jones2012Distribution Type
Jones2012Distribution(T, Ch2o_ol)Model Distribution for Jones2012[@ref].
Arguments
T: Temperature of olivine (in K)Ch2o_ol: Water concentration in olivine (in ppm)
Usage
Refer to the documentation for usage examples.
sourcePorosity.MAL Type
MALModified Archie's law for mixing 2 phases
Usage
m = two_phase_modelType(Yoshino2009, Sifre2014, MAL(0.2))Check out the relevant rock physics documentation.
References
- Glover, P. W. J., Hole, M. J., & Pous, J. (2000),
"A Modified Archie’s Law for two conducting phases", Earth and Planetary Science Letters, 180(3–4), 369–383,
doi: https://doi.org/10.1016/S0012-821X(00)00168-0Porosity.Ni2011 Type
Ni2011(T, Ch2o_m)Electrical conductivity model for basaltic melt dependent on Temperature and water content in melt.
Arguments
T: Temperature of melt (should be greater than 1146.8 K)Ch2o_m: water concentration in melt (in ppm)
Usage
julia> model = Ni2011(1000 + 273.0, 2e4)
Model : Ni2011
Temperature (K) : 1273.0
Water concentration in melt (ppm) : 20000.0
julia> log_cond = forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : -2.3578741895190163References
- Ni, H., Keppler, H. & Behrens, H. (2011), "Electrical conductivity of hydrous basaltic melts: implications for partial melting in the upper mantle.", Contrib Mineral Petrol 162, 637–650 (2011), doi: https://doi.org/10.1007/s00410-011-0617-4
Porosity.Ni2011Distribution Type
Ni2011Distribution(T, Ch2o_m)Model Distribution for Ni2011[@ref].
Arguments
T: Temperature of melt (in K)Ch2o_m: Water concentration in melt (in ppm)
Usage
Refer to the documentation for usage examples.
sourcePorosity.Poe2010 Type
Poe2010(T, Ch2o_ol)Electrical conductivity model for olivine dependent on temperature and water concentration.
Arguments
T: Temperature of olivine (in K)Ch2o_ol: water concentration in olivine (in ppm)
Usage
julia> model = Poe2010(1000 + 273.0, 2e4)
Model : Poe2010
Temperature (K) : 1273.0
Water concentration in olivine (ppm) : 20000.0
julia> log_cond = forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : 3.4473300721921056References
- Brent T. Poe, Claudia Romano, Fabrizio Nestola, Joseph R. Smyth (2010), "Electrical conductivity anisotropy of dry and hydrous olivine at 8GPa", Physics of the Earth and Planetary Interiors,Volume 181, Issues 3–4, 2010, Pages 103-111, ISSN 0031-9201, https://doi.org/10.1016/j.pepi.2010.05.003.
Porosity.Poe2010Distribution Type
Poe2010Distribution(T, Ch2o_ol)Model Distribution for Poe2010[@ref].
Arguments
T: Temperature of olivine (in K)Ch2o_ol: Water concentration in olivine (in ppm)
Usage
Refer to the documentation for usage examples.
sourcePorosity.SEO3 Type
SEO3(T)Electrical conductivity model for olivine dependent on temperature.
Arguments
- `T` : Temperature of olivine (in K)Usage
julia> model = SEO3(1000 + 273.0)
Model : SEO3
Temperature (K) : 1273.0
julia> forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : -4.0571856119909375References
- Constable, S (2006), "SEO3: A new model of olivine electrical conductivity", Geophysical Journal International, Volume 166, Issue 1, July 2006, Pages 435–437, https://doi.org/10.1111/j.1365-246X.2006.03041.x
Porosity.SEO3Distribution Type
SEO3Distribution(T)Model Distribution for SEO3[@ref].
Arguments
T: Temperature of olivine (in K)
Usage
Refer to the documentation for usage examples.
sourcePorosity.SLB2005 Type
SLB2005(T, P)Calculate upper mantle shear velocity using Stixrude and Lithgow‐Bertelloni (2005) fit of upper mantle Vs.
Warning
Note that the other parameters (elastic moudli and Vp) are populated with zeros.
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)Keyword Arguments
- `params` : Various coefficients required for calculation.
Does not have any coefficients that can be changed and hence is an empty `NamedTuple`Usage
julia> T = collect(1273.0f0:40:1473.0f0);
julia> P = 2 .+ zero(T);
julia> model = SLB2005(T, P)
Model : SLB2005
Temperature (K) : Float32[1273.0, 1313.0, 1353.0, 1393.0, 1433.0, 1473.0]
Pressure (GPa) : Float32[2.0, 2.0, 2.0, 2.0, 2.0, 2.0]
julia> forward(model, [])
Rock physics Response : RockphyElastic
Elastic shear modulus (Pa) : Float32[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Elastic bulk modulus (Pa) : Float32[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Elastic P-wave velocity (m/s) : Float32[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Elastic S-wave velocity (m/s) : [4478.205990493298, 4463.085990846157, 4447.965991199017, 4432.845991551876, 4417.725991904736, 4402.605992257595]References
- Stixrude and Lithgow‐Bertelloni (2005), "Mineralogy and elasticity of the oceanic upper mantle: Origin of the low‐velocity zone." JGR 110.B3, https://doi.org/10.1029/2004JB002965
Porosity.SLB2005Distribution Type
SLB2005Distribution(T, P)Model Distribution for SLB2005[@ref].
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)Usage
Refer to the documentation for usage examples.
sourcePorosity.Sifre2014 Type
Sifre2014(T, Ch2o_m, Cco2_m)Electrical conductivity model for melt dependent on Temperature, water content and CO₂ content in melt.
Arguments
T: Temperature of melt (should be greater than 1146.8 K)Ch2o_m: water concentration in melt (in ppm)Cco2_m: Co2 concentration in melt (in ppm)
Usage
julia> model = Sifre2014(1000 + 273.0, 2e4, 2e4)
Model : Sifre2014
Temperature (K) : 1273.0
Water concentration in melt (ppm) : 20000.0
CO₂ concentration in melt (ppm) : 20000.0
julia> log_cond = forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : -0.012765453025208906References
- Sifré, D., Gardés, E., Massuyeau, M. et al. (2014), "Electrical conductivity during incipient melting in the oceanic low-velocity zone." Nature 509, 81–85 (2014), doi: https://doi.org/10.1038/nature13245
Porosity.Sifre2014Distribution Type
Sifre2014Distribution(T, Ch2o_m, Cco2_m)Model Distribution for Sifre2014[@ref].
Arguments
T: Temperature of melt (in K)Ch2o_m: Water concentration in melt (in ppm)Cco2_m: CO₂ concentration in melt (in ppm)
Usage
Refer to the documentation for usage examples.
sourcePorosity.UHO2014 Type
UHO2014(T, Ch2o_ol)Electrical conductivity model for olivine dependent on temperature and water concentration.
Arguments
T: Temperature of olivine (in K)Ch2o_ol: water concentration in olivine (in ppm)
References
- Gardés, E., F. Gaillard, and P. Tarits (2014), "Toward a unified hydrous olivine electrical conductivity law", Geochem. Geophys. Geosyst., 15, 4984–5000, doi:10.1002/2014GC005496.
Usage
julia> model = UHO2014(1000 + 273.0, 2e4)
Model : UHO2014
Temperature (K) : 1273.0
Water concentration in olivine (ppm) : 20000.0
julia> log_cond = forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : 1.2727662435353444Porosity.UHO2014Distribution Type
UHO2014Distribution(T, Ch2o_ol)Model Distribution for UHO2014[@ref].
Arguments
T: Temperature of olivine (in K)Ch2o_ol: Water concentration in olivine (in ppm)
Usage
Refer to the documentation for usage examples.
sourcePorosity.Wang2006 Type
Wang2006(T, Ch2o_ol)Electrical conductivity model for olivine dependent on temperature and water concentration.
Arguments
T: Temperature of olivine (in K)Ch2o_ol: water concentration in olivine (in ppm)
Usage
julia> model = Wang2006(1000 + 273.0, 2e4)
Model : Wang2006
Temperature (K) : 1273.0
Water concentration in olivine (ppm) : 20000.0
julia> log_cond = forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : -0.383209519477097References
- Wang, D., Mookherjee, M., Xu, Y. et al. (2006), "The effect of water on the electrical conductivity of olivine", Nature 443, 977–980 (2006), doi: https://doi.org/10.1038/nature05256
Porosity.Wang2006Distribution Type
Wang2006Distribution(T, Ch2o_ol)Model Distribution for Wang2006[@ref].
Arguments
T: Temperature of olivine (in K)Ch2o_ol: Water concentration in olivine (in ppm)
Usage
Refer to the documentation for usage examples.
sourcePorosity.Yang2011 Type
Yang2011(T, Ch2o_cpx)Electrical conductivity model for olivine dependent on temperature and water concentration.
Arguments
T: Temperature of olivine (in K)Ch2o_cpx: water concentration in olivine (in ppm)
References
- Yang, Xiaozhi and Keppler, Hans and McCammon, Catherine and Ni, Huaiwei and Xia, Qunke and Fan, Qicheng (2011), "Effect of water on the electrical conductivity of lower crustal clinopyroxene", Journal of Geophysical Research, doi:https://doi.org/10.1029/2010JB008010
Usage
julia> model = Yang2011(1000 + 273.0, 2e4)
Model : Yang2011
Temperature (K) : 1273.0
Water concentration in clinopyroxene (ppm) : 20000.0
julia> log_cond = forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : 1.0103884511392625Porosity.Yang2011Distribution Type
Yang2011Yang2011Distribution(T, Ch2o_cpx)Electrical conductivity model for olivine dependent on temperature and water concentration.
Arguments
T: Temperature of olivine (in K)Ch2o_cpx: water concentration in olivine (in ppm)
Usage
Refer to the documentation for usage examples.
sourcePorosity.Yoshino2009 Type
Yoshino2009(T, Ch2o_ol)Electrical conductivity model for olivine dependent on temperature and water concentration.
Arguments
T: Temperature of olivine (in K)Ch2o_ol: water concentration in olivine (in ppm)
Usage
julia> model = Yoshino2009(1000 + 273.0, 2e4)
Model : Yoshino2009
Temperature (K) : 1273.0
Water concentration in olivine (ppm) : 20000.0
julia> log_cond = forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : -0.6428765173222217References
- Takashi Yoshino, Takuya Matsuzaki, Anton Shatskiy, Tomoo Katsura (2009), "The effect of water on the electrical conductivity of olivine aggregates and its implications for the electrical structure of the upper mantle, Earth and Planetary Science Letters", Volume 288, Issues 1–2, 2009, Pages 291-300, ISSN 0012-821X, https://doi.org/10.1016/j.epsl.2009.09.032
Porosity.Yoshino2009Distribution Type
Yoshino2009Distribution(T, Ch2o_ol)Model Distribution for Yoshino2009[@ref].
Arguments
T: Temperature of olivine (in K)Ch2o_ol: Water concentration in olivine (in ppm)
Usage
Refer to the documentation for usage examples.
sourcePorosity.Zhang2012 Type
Zhang2012(T, Ch2o_opx)Electrical conductivity model for olivine dependent on temperature and water concentration.
Arguments
T: Temperature of olivine (in K)Ch2o_opx: water concentration in olivine (in ppm)
References
- todo
Usage
julia> model = Zhang2012(1000 + 273.0, 2e4)
Model : Zhang2012
Temperature (K) : 1273.0
Water concentration in orthopyroxene (ppm) : 20000.0
julia> log_cond = forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : -0.045414286402875675Porosity.Zhang2012Distribution Type
Zhang2012Distribution(T, Ch2o_opx)Electrical conductivity model for olivine dependent on temperature and water concentration.
Arguments
T: Temperature of olivine (in K)Ch2o_opx: water concentration in olivine (in ppm)
Usage
Refer to the documentation for usage examples.
sourcePorosity.andrade_analytical Type
andrade_analytical(T, P, dg, σ, ϕ, ρ, f)Calculate anelastic properties stored in RockPhyAnelastic using the Master curve maxwell scaling per McCarthy, Takei and Hiraga (2011)
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `Ch2o_ol` : water concentration in olivine (in ppm), only used when using `HK2003` for viscosity calculations
- `T_solidus` : Solidus temperature (K), only used when using `xfit_premelt` for viscosity calculations
- `f` : frequencyKeyword Arguments
- `params` : Various coefficients required for calculation.
Also holds coefficients and the type of `RockphyElastic` model and `RockphyViscous model` to be used.
To investigate coefficients, call `default_params(Val{xfit_premelt}())`.
To modify coefficients, check the relevant documentation page. This
will also users to pick any particular type of `RockphyElastic` model, defaults to `anharmonic`,
as well as `RockphyViscous` model (for diffusion-derived viscosity), defaults to `HK2003`Usage
Note
Make sure that the dimension of vector f is one more than the other parameters. Check relevant tutorials. Note the transpose on f when making the model in the following eg.
julia> T = [800, 1000] .+ 273.0f0;
julia> P = 2 .+ zero(T);
julia> dg = 4.0f0;
julia> σ = 10.0f-3;
julia> ϕ = 1.0f-2;
julia> ρ = 3300.0f0;
julia> Ch2o_ol = 0.0f0;
julia> T_solidus = 900 + 273.0f0;
julia> f = [1.0f0, 1.0f1];
julia> model = andrade_analytical(T, P, dg, σ, ϕ, ρ, Ch2o_ol, T_solidus, f')
Model : andrade_analytical
Temperature (K) : Float32[1073.0, 1273.0]
Pressure (GPa) : Float32[2.0, 2.0]
grain size(μm) : 4.0
Shear stress (GPa) : 0.01
Porosity : 0.01
Density (kg/m³) : 3300.0
Water concentration in olivine (ppm) : 0.0
Solidus Temperature (K) : 1173.0
Frequency (Hz) : Float32[1.0 10.0]
julia> forward(model, [])
Rock physics Response : RockphyAnelastic
Real part of dynamic compliance (Pa⁻¹) : Float32[1.3498141f-11 1.34976925f-11; 1.4012593f-11 1.4012127f-11]
Imaginary part of dynamic compliance (Pa⁻¹) : Float32[3.2687721f-16 1.5162017f-16; 6.353883f-16 1.8700414f-16]
Attenuation : Float32[2.4216462f-5 1.1233044f-5; 4.534409f-5 1.3345877f-5]
Modulus (Pa) : Float32[7.408428f10 7.4086736f10; 7.136438f10 7.1366754f10]
Anelastic S-wave velocity : (m/s) : Float32[4738.12 4738.1987; 4650.33 4650.4077]
Frequency averaged S-wave velocity (m/s) : Float32[4738.159, 4650.369]References
Andrade, 1910, "On the viscous flow in metals, and allied phenomena", Proceedings of the Royal Society of London, https://doi.org/10.1098/rspa.1910.0050
Cooper, 2002, "Seismic Wave Attenuation: Energy Dissipation in Viscoelastic Crystalline Solids", Reviews in mineralogy and geochemistry, https://doi.org/10.2138/gsrmg.51.1.253,
Lau and Holtzman, 2019, "“Measures of Dissipation in Viscoelastic Media” Extended: Toward Continuous Characterization Across Very Broad Geophysical Time Scales", Geophysical Research Letters, https://doi.org/10.1029/2019GL083529
Porosity.andrade_analyticalDistribution Type
andrade_analyticalDistribution(T, P, dg, σ, ϕ, ρ, f)Model Distribution for xfit_mxw[@ref].
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `Ch2o_ol` : water concentration in olivine (in ppm), only used when using `HK2003` for viscosity calculations
- `T_solidus` : Solidus temperature (K), only used when using `xfit_premelt` for viscosity calculations
- `f` : frequencyUsage
Refer to the documentation for usage examples.
sourcePorosity.andrade_psp Type
andrade_psp(T, P, dg, σ, ϕ, ρ, f)Calculate anelastic properties stored in RockPhyAnelastic using the Andrade model with pseudo-scaling per Jackson and Faul (2010)
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `f` : frequencyKeyword Arguments
- `params` : Various coefficients required for calculation.
Also holds coefficients and the type of `RockphyElastic` model to be used.
To investigate coefficients, call `default_params(Val{andrade_psp}())`.
To modify coefficients, check the relevant documentation page. This
will also users to pick any particular type of `RockphyElastic` model, defaults to `anharmonic`.Usage
Note
Make sure that the dimension of vector f is one more than the other parameters. Check relevant tutorials. Note the transpose on f when making the model in the following eg.
julia> T = [800, 1000] .+ 273.0f0;
julia> P = 2 .+ zero(T);
julia> dg = 4.0f0;
julia> σ = 10.0f-3;
julia> ϕ = 1.0f-2;
julia> ρ = 3300.0f0;
julia> f = [1.0f0, 1.0f1];
julia> model = andrade_psp(T, P, dg, σ, ϕ, ρ, f')
Model : andrade_psp
Temperature (K) : Float32[1073.0, 1273.0]
Pressure (GPa) : Float32[2.0, 2.0]
grain size(μm) : 4.0
Shear stress (GPa) : 0.01
Porosity : 0.01
Density (kg/m³) : 3300.0
Frequency (Hz) : Float32[1.0 10.0]
julia> forward(model, [])
Rock physics Response : RockphyAnelastic
Real part of dynamic compliance (Pa⁻¹) : Float32[1.35194625f-11 1.35077696f-11; 1.4162938f-11 1.4082101f-11]
Imaginary part of dynamic compliance (Pa⁻¹) : Float32[1.259776f-14 5.8473344f-15; 8.712478f-14 4.0431112f-14]
Attenuation : Float32[0.00093182403 0.00043288674; 0.006151603 0.0028710994]
Modulus (Pa) : Float32[7.39674f10 7.403146f10; 7.060549f10 7.1011836f10]
Anelastic S-wave velocity : (m/s) : Float32[4734.381 4736.4307; 4625.538 4638.8296]
Frequency averaged S-wave velocity (m/s) : Float32[4735.406, 4632.1836]References
- Jackson and Faul, 2010, "Grainsize-sensitive viscoelastic relaxation in olivine: Towards a robust laboratory-based model for seismological application", Phys. Earth Planet. Inter., https://doi.org/10.1016/j.pepi.2010.09.005
Porosity.andrade_pspDistribution Type
andrade_pspDistribution(T, P, dg, σ, ϕ, ρ, f)Model Distribution for andrade_psp[@ref].
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `f` : frequencyUsage
Refer to the documentation for usage examples.
sourcePorosity.anharmonic Type
anharmonic(T, P, ρ)Calculate unrelaxed elastic bulk moduli, shear moduli, Vp and Vs using anharmonic scaling
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `ρ` : Density of the rock (kg/m³)Keyword Arguments
- `params` : Various coefficients required for calculation.
Available options are
- `params_anharmonic.Isaak1992`
- `params_anharmonic.Cammarono2003`
Defaults to the ones provided by Isaak (1992), check references.
To investigate coefficients, call `default_params(Val{anharmonic}())`.
To modify coefficients, check the relevant documentation page.Usage
julia> T = collect(1273.0f0:40:1473.0f0);
julia> P = 2 .+ zero(T);
julia> ρ = collect(3300.0f0:200.0f0:4300.0f0);
julia> model = anharmonic(T, P, ρ)
Model : anharmonic
Temperature (K) : Float32[1273.0, 1313.0, 1353.0, 1393.0, 1433.0, 1473.0]
Pressure (GPa) : Float32[2.0, 2.0, 2.0, 2.0, 2.0, 2.0]
Density (kg/m³) : Float32[3300.0, 3500.0, 3700.0, 3900.0, 4100.0, 4300.0]
julia> forward(model, [])
Rock physics Response : RockphyElastic
Elastic shear modulus (Pa) : Float32[7.136702f10, 7.082302f10, 7.027902f10, 6.9735014f10, 6.919102f10, 6.864702f10]
Elastic bulk modulus (Pa) : Float32[1.1894502f11, 1.18038364f11, 1.1713171f11, 1.1622502f11, 1.1531837f11, 1.1441169f11]
Elastic P-wave velocity (m/s) : Float32[8054.7563, 7791.3696, 7548.708, 7324.0913, 7115.3057, 6920.496]
Elastic S-wave velocity (m/s) : Float32[4650.416, 4498.3496, 4358.2485, 4228.5664, 4108.0234, 3995.5503]References
Cammarano et al. (2003), "Inferring upper-mantle temperatures from seismic velocities", Physics of the Earth and Planetary Interiors, Volume 138, Issues 3–4, https://doi.org/10.1016/S0031-9201(03)00156-0
Isaak, D. G. (1992), "High‐temperature elasticity of iron‐bearing olivines", J. Geophys. Res., 97( B2), 1871– 1885, https://doi.org/10.1029/91JB02675
Porosity.anharmonicDistribution Type
anharmonicDistribution(T, P, ρ)Model Distribution for anharmonic_poro[@ref].
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `ρ` : Density of the rock (kg/m³)Usage
Refer to the documentation for usage examples.
sourcePorosity.anharmonic_poro Type
anharmonic_poro(T, P, ρ, ϕ)Calculate unrelaxed elastic bulk moduli, shear moduli, Vp and Vs after applying correction for poro-elasticity using Takei (2002) on anharmonic scaling
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `ρ` : Density of the rock (kg/m³)
- `ϕ` : Porosity of the rockKeyword Arguments
- `params` : Various coefficients required for calculation.
Contains a `p_anharmonic` which have the coefficients for [`anharmonic`](@ref)
calculations.
To investigate coefficients, call `default_params(Val{anharmonic_poro}())`.
To modify coefficients, check the relevant documentation page.Usage
julia> T = collect(1273.0f0:40:1473.0f0);
julia> P = 2 .+ zero(T);
julia> ρ = collect(3300.0f0:200.0f0:4300.0f0);
julia> ϕ = collect(1.0f-2:2.0f-3:2.0f-2);
julia> model = anharmonic_poro(T, P, ρ, ϕ)
Model : anharmonic_poro
Temperature (K) : Float32[1273.0, 1313.0, 1353.0, 1393.0, 1433.0, 1473.0]
Pressure (GPa) : Float32[2.0, 2.0, 2.0, 2.0, 2.0, 2.0]
Density (kg/m³) : Float32[3300.0, 3500.0, 3700.0, 3900.0, 4100.0, 4300.0]
Porosity : Float32[0.01, 0.012, 0.014, 0.016, 0.018, 0.02]
julia> forward(model, [])
Rock physics Response : RockphyElastic
Elastic shear modulus (Pa) : Float32[6.90533f10, 6.8138574f10, 6.723185f10, 6.633203f10, 6.5438487f10, 6.4550883f10]
Elastic bulk modulus (Pa) : Float32[1.1665774f11, 1.1534928f11, 1.1405562f11, 1.127763f11, 1.11511036f11, 1.102595f11]
Elastic P-wave velocity (m/s) : Float32[7953.0596, 7675.5776, 7419.807, 7182.9395, 6962.659, 6757.0347]
Elastic S-wave velocity (m/s) : Float32[4574.4116, 4412.2744, 4262.7188, 4124.1016, 3995.0728, 3874.5107]References
- Takei, 2002, "Effect of pore geometry on VP/VS: From equilibrium geometry to crack", JGR Solid Earth, https://doi.org/10.1029/2001JB000522
Porosity.anharmonic_poroDistribution Type
anharmonic_poroDistribution(T, P, ρ, ϕ)Model Distribution for anharmonic[@ref].
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `ρ` : Density of the rock (kg/m³)
- `ϕ` : Porosity of the rockUsage
Refer to the documentation for usage examples.
sourcePorosity.const_matrix Type
const_matrix(σ)Fixed electrical conductivity model for the phase.
Arguments
σ: Conductivity of the phase
Usage
julia> model = const_matrix(1000.0)
Model : const_matrix
Conductivity (S/m) : 1000.0
julia> log_cond = forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : 3.0Porosity.const_matrixDistribution Type
const_matrixDistribution(σ)Model Distribution for const_matrix[@ref].
Arguments
σ: Conductivity of the phase
Usage
Refer to the documentation for usage examples.
sourcePorosity.eburgers_psp Type
eburgers_psp(T, P, dg, σ, ϕ, ρ, Ch2o_ol, T_solidus, f)Calculate anelastic properties stored in RockphyAnelastic using the Extended Burgers model with pseudo-scaling per Jackson and Faul (2010)
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `Ch2o_ol` : water concentration in olivine (in ppm)
- `T_solidus` : Solidus temperature (K), only used when using `xfit_premelt` for viscosity calculations, when scaling from Jackson and Faul (2010) for maxwell time calculations is not used
- `f` : frequencyKeyword Arguments
- `params` : Various coefficients required for calculation.
Also holds coefficients and the type of `RockphyElastic` model and `RockphyViscous model` to be used.
To investigate coefficients, call `default_params(Val{eburgers_psp}())`.
To modify coefficients, check the relevant documentation page. This
will also users to pick any particular type of `RockphyElastic` model, defaults to `anharmonic`,
as well as `RockphyViscous` model (for diffusion-derived viscosity), defaults to `xfit_premelt`
`params` for `eburgers_psp` holds a few important fields:
- `params_btype` : fitting parameters from Jackson and Faul (2010) to be used, defaults to `bg_only`.
Available options are :
- `bg_only` : multiple sample best high-temp background only fit
- `bg_peak` : multiple sample best high-temp background + peak fit
- `s6585_bg_only` : single sample 6585 fit, HTB only
- `s6585_bg_peak` : single sample 6585 fit, HTB + dissipation peak
- `melt_enhancement` : TODO
- `JF10_visc` : Whether to use scaling from Jackson and Faul (2010) for maxwell time calculations,
otherwise calculate them using the `RockphyViscous` model provide. **Defaults to `true`.**
- `integration_params` : Tells which integration option to be used,
and the number of points (Should not be touched ideally!)
Available options are `quadgk`, `trapezoidal` and `simpson`, defaults to `quadgk`.Usage
Note
Make sure that the dimension of vector f is one more than the other parameters. Check relevant tutorials. Note the transpose on f when making the model in the following eg.
julia> T = [800, 1000] .+ 273.0f0;
julia> P = 2 .+ zero(T);
julia> dg = 4.0f0;
julia> σ = 10.0f-3;
julia> ϕ = 1.0f-2;
julia> ρ = 3300.0f0;
julia> Ch2o_ol = 0.0f0;
julia> T_solidus = 900 + 273.0f0;
julia> f = [1.0f0, 1.0f1];
julia> model = eburgers_psp(T, P, dg, σ, ϕ, ρ, Ch2o_ol, T_solidus, f')
Model : eburgers_psp
Temperature (K) : Float32[1073.0, 1273.0]
Pressure (GPa) : Float32[2.0, 2.0]
grain size(μm) : 4.0
Shear stress (GPa) : 0.01
Porosity : 0.01
Density (kg/m³) : 3300.0
Water concentration in olivine (ppm) : 0.0
Solidus Temperature (K) : 1173.0
Frequency (Hz) : Float32[1.0 10.0]
julia> forward(model, [])
Rock physics Response : RockphyAnelastic
Real part of dynamic compliance (Pa⁻¹) : Float32[1.3524236f-11 1.3499646f-11; 1.42722735f-11 1.413697f-11]
Imaginary part of dynamic compliance (Pa⁻¹) : Float32[2.754988f-14 8.080778f-15; 1.29419f-13 7.1557296f-14]
Attenuation : Float32[0.0020370746 0.00059859187; 0.009067862 0.0050617135]
Modulus (Pa) : Float32[7.394117f10 7.4076004f10; 7.006304f10 7.073561f10]
Anelastic S-wave velocity : (m/s) : Float32[4733.5415 4737.8555; 4607.7354 4629.7983]
Frequency averaged S-wave velocity (m/s) : Float32[4735.698, 4618.7666]References
Faul and Jackson, 2015, "Transient Creep and Strain Energy Dissipation: An Experimental Perspective", Ann. Rev. of Earth and Planetary Sci., https://doi.org/10.1146/annurev-earth-060313-054732
Jackson and Faul, 2010, "Grainsize-sensitive viscoelastic relaxation in olivine: Towards a robust laboratory-based model for seismological application", Phys. Earth Planet. Inter., https://doi.org/10.1016/j.pepi.2010.09.005
Porosity.eburgers_pspDistribution Type
eburgers_pspDistribution(T, P, dg, σ, ϕ, ρ, f)Model Distribution for eburgers_psp[@ref].
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `f` : frequencyUsage
Refer to the documentation for usage examples.
sourcePorosity.multi_phase_model Type
multi_phase_model(m1, m2, m3, m4, m5, m6, m7, m8, mix)
multi_phase_model(m1, ..., mix)Rock physics model Type to combine multiple (upto 8) phases.
Arguments
m1: model corresponding to phase 1m2: model corresponding to phase 2 (optional)m3: model corresponding to phase 3 (optional)m4: model corresponding to phase 4 (optional)m5: model corresponding to phase 5 (optional)m6: model corresponding to phase 6 (optional)m7: model corresponding to phase 7 (optional)m8: model corresponding to phase 8 (optional)mix: mixing type, available options areHS_plus_multi_phase(),HS_minus_multi_phase,GAL(m)
Usage
julia> m = multi_phase_modelType(SEO3, Ni2011, Yang2011, HS_plus_multi_phase);
julia> T = [900.0f0, 1000.0f0] .+ 273;
julia> P = 3.0f0;
julia> ρ = 3300.0f0;
julia> Ch2o_m = 1000.0f0;
julia> Ch2o_cpx = 100.0f0;
julia> ϕ = [0.8f0, 0.1f0];
julia> ps_nt = ps_nt = (; T, P, ρ, Ch2o_m, Ch2o_cpx, ϕ);
julia> model = m(ps_nt)
multi-phase composition using HS_plus_multi_phase()
* m₁ :
Model : SEO3
Temperature (K) : Float32[1173.0, 1273.0]
ϕ : 0.8
* m₂ :
Model : Ni2011
Temperature (K) : Float32[1173.0, 1273.0]
Water concentration in melt (ppm) : 1000.0
ϕ : 0.1
* m₃ :
Model : Yang2011
Temperature (K) : Float32[1173.0, 1273.0]
Water concentration in clinopyroxene (ppm) : 100.0
ϕ : 0.099999964
julia> forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : Float32[-26.768837, -3.9526708]Porosity.multi_phase_modelDistribution Type
multi_phase_modelDistribution(m1, m2, m3, m4, m5, m6, m7, m8, mix)
multi_phase_modelDistribution(m1, ..., mix)Rock physics model Type to combine multiple (upto 8) phases.
Arguments
m1: model distribution corresponding to phase 1m2: model distribution corresponding to phase 2 (optional)m3: model distribution corresponding to phase 3 (optional)m4: model distribution corresponding to phase 4 (optional)m5: model distribution corresponding to phase 5 (optional)m6: model distribution corresponding to phase 6 (optional)m7: model distribution corresponding to phase 7 (optional)m8: model distribution corresponding to phase 8 (optional)mix: mixing type, available options areHS_plus_multi_phase(),HS_minus_multi_phase,GAL(m_GAL)
Usage
TODO
sourcePorosity.multi_phase_modelDistributionType Type
multi_phase_modelDistributionType(m1, m2, m3, m4, m5, m6, m7, m8, mix)
multi_phase_modelDistributionType(m1, ..., mix)Rock physics model Type to combine multiple (upto 8) phases.
Arguments
m1: model distribution type corresponding to phase 1m2: model distribution type corresponding to phase 2 (optional)m3: model distribution type corresponding to phase 3 (optional)m4: model distribution type corresponding to phase 4 (optional)m5: model distribution type corresponding to phase 5 (optional)m6: model distribution type corresponding to phase 6 (optional)m7: model distribution type corresponding to phase 7 (optional)m8: model distribution type corresponding to phase 8 (optional)mix: mixing type, available options areHS_plus_multi_phase,HS_minus_multi_phase,GAL
Usage
multi_phase_modelDistributionType(
SEO3Distribution, Ni2011Distribution, Yang2011Distribution, HS_plus_multi_phase)Porosity.multi_phase_modelType Type
multi_phase_modelType(m1, m2, m3, m4, m5, m6, m7, m8, mix)
multi_phase_modelType(m1, ..., mix)Rock physics model Type to combine multiple (upto 8) phases.
Arguments
m1: model type corresponding to phase 1m2: model type corresponding to phase 2 (optional)m3: model type corresponding to phase 3 (optional)m4: model type corresponding to phase 4 (optional)m5: model type corresponding to phase 5 (optional)m6: model type corresponding to phase 6 (optional)m7: model type corresponding to phase 7 (optional)m8: model type corresponding to phase 8 (optional)mix: mixing type, available options areHS_plus_multi_phase,HS_minus_multi_phase,GAL
Usage
multi_phase_modelType(SEO3, Ni2011, Yang2011, HS_plus_multi_phase)Porosity.multi_rp_model Type
multi_rp_model(cond, elastic, visc, anelastic)Rock physics model to capture multiple rock physics models, usually constructed through multi_rp_modelType[@ref]
Arguments
cond: conductivity rock physics modelelastic: elastic rock physics modelvisc: viscous rock physics modelanelastic: anelastic rock physics model
Usage
m = multi_rp_modelType()(SEO3, anharmonic, Nothing, Nothing)
ps_nt = ps_nt = (;
T=[800.0f0, 1000.0f0] .+ 273, P=3.0f0, ρ=3300.0f0, Ch2o_m=1000.0f0, ϕ=0.1f0)
model = m(ps_nt)
resp = forward(model)Porosity.multi_rp_modelDistribution Type
multi_rp_model(con, elastic, visc, anelastic)Rock physics model to capture multiple rock physics model, susually constructed through multi_rp_modelDistributionType[@ref]
Arguments
cond: conductivity rock physics modelDistributionelastic: elastic rock physics modelDistributionvisc: viscous rock physics modelDistributionanelastic: anelastic rock physics modelDistribution
Usage
m = multi_rp_modelDistributionType()(SEO3Distribution, anharmonicDistribution, Nothing, Nothing)
ps_nt_dist = (; T=product_distribution(Uniform(1200.0f0, 1400.0f0)), P=[3.0f0],
ρ=product_distribution(Uniform(80.0f0, 120.0f0)), ϕ=[0.1f0])
model = m(ps_nt_dist)Porosity.multi_rp_modelDistributionType Type
multi_rp_modelDistributionType(con, elastic, visc, anelastic)Rock physics model distribution type to capture multiple rock physics model distribution
Arguments
cond: conductivity rock physics modeldistribution type, subtype ofAbstractCondModelDistributionTypeelastic: elastic rock physics distribution model type, subtype ofAbstractElasticModelDistributionTypevisc: viscous rock physics distribution model type, subtype ofAbstractViscousModelDistributionTypeanelastic: anelastic rock physics distribution model type, subtype ofAbstractAnelasticModelDistributionType
Usage
Similar to multi_rp_modelDistributionType but instead accepts Distribution or Nothing
multi_rp_modelDistributionType()(SEO3Distribution, anharmonicDistribution, HK2003Distribution, Nothing)Pass Nothing for the types you do not want responses of, eg. above does not compute for the anelastic type
Porosity.multi_rp_modelType Type
multi_rp_modelType(con, elastic, visc, anelastic)Rock physics model type to capture multiple rock physics models
Arguments
cond: conductivity rock physics model type, subtype ofAbstractCondModelelastic: elastic rock physics model type, subtype ofAbstractElasticModelvisc: viscous rock physics model type, subtype ofAbstractViscousModelanelastic: anelastic rock physics model type, subtype ofAbstractAnelasticModel
Usage
multi_rp_modelType()(SEO3, anharmonic, HK2003, Nothing)Pass Nothing for the types you do not want responses of, eg. above does not compute for the anelastic type
Porosity.premelt_anelastic Type
premelt_anelastic(T, P, dg, σ, ϕ, ρ, T_solidus, Ch2o_ol, f)Calculate anelastic properties stored in RockPhyAnelastic using the Master curve maxwell scaling per near-solidus parametrization of Yamauchi and Takei (2016), with optional extension to include direct melt effects of Yamauchi and Takei (2024)
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `Ch2o_ol` : water concentration in olivine (in ppm)
- `T_solidus` : Solidus temperature (K)
- `f` : frequencyKeyword Arguments
- `params` : Various coefficients required for calculation.
Also holds coefficients and the type of `RockphyElastic` model and `RockphyViscous model` to be used.
To investigate coefficients, call `default_params(Val{xfit_premelt}())`.
To modify coefficients, check the relevant documentation page. This
will also users to pick any particular type of `RockphyElastic` model, defaults to `anharmonic`.
`params` for `premelt_anelastic` holds another important field:
- `include_direct_melt_effect` : Whether to include the melt effect of Yamauchi and Takei (2024), defaults to falseUsage
Note
Make sure that the dimension of vector f is one more than the other parameters. Check relevant tutorials. Note the transpose on f when making the model in the following eg.
julia> T = [800, 1000] .+ 273.0f0;
julia> P = 2 .+ zero(T);
julia> dg = 4.0f0;
julia> σ = 10.0f-3;
julia> ϕ = 1.0f-2;
julia> ρ = 3300.0f0;
julia> Ch2o_ol = 0.0f0;
julia> T_solidus = 900 + 273.0f0;
julia> f = [1.0f0, 1.0f1];
julia> model = premelt_anelastic(T, P, dg, σ, ϕ, ρ, Ch2o_ol, T_solidus, f')
Model : premelt_anelastic
Temperature (K) : Float32[1073.0, 1273.0]
Pressure (GPa) : Float32[2.0, 2.0]
grain size(μm) : 4.0
Shear stress (GPa) : 0.01
Porosity : 0.01
Density (kg/m³) : 3300.0
Water concentration in olivine (ppm) : 0.0
Solidus Temperature (K) : 1173.0
Frequency (Hz) : Float32[1.0 10.0]
julia> forward(model, [])
Rock physics Response : RockphyAnelastic
Real part of dynamic compliance (Pa⁻¹) : Float32[1.3508699f-11 1.3501298f-11; 1.7620908f-11 1.6476176f-11]
Imaginary part of dynamic compliance (Pa⁻¹) : Float32[8.801486f-15 2.5916762f-15; 8.878848f-13 6.8378257f-13]
Attenuation : Float32[0.0006515421 0.00019195756; 0.050388142 0.041501287]
Modulus (Pa) : Float32[7.402635f10 7.406695f10; 5.6678855f10 6.0641493f10]
Anelastic S-wave velocity : (m/s) : Float32[4736.267 4737.566; 4144.3228 4286.748]
Frequency averaged S-wave velocity (m/s) : Float32[4736.9165, 4215.535]References
Yamauchi and Takei, 2016, "Polycrystal anelasticity at near-solidus temperatures", J. Geophys. Res. Solid Earth, https://doi.org/10.1002/2016JB013316
Yamauchi and Takei, 2024, "Effect of Melt on Polycrystal Anelasticity", J. Geophys. Res. Solid Earth, https://doi.org/10.1029/2023JB027738
Porosity.premelt_anelasticDistribution Type
premelt_anelasticDistribution(T, P, dg, σ, ϕ, ρ, f)Model Distribution for premelt_anelastic[@ref].
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `f` : frequencyUsage
Refer to the documentation for usage examples.
sourcePorosity.single_phase Type
single_phaseSingle phase only conductivity. Assumes the rock matrix is composed of a single phase only.
sourcePorosity.tune_rp_modelType Type
tune_rp_modelType(fn_list, mtype)Arguments
fn_list: Vector of functions applied to the parameters in the same sequencemtype: model type that will constructed using the given and estimated parameters
Usage
julia> T = (800:200:1200) .+ 273.0;
julia> P = 2.0;
julia> T_solidus = 1000.0 + 273;
julia> ps_nt = (; T=T, P=P, T_solidus=T_solidus);
julia> fn_list = [get_melt_fraction];
julia> m_type = two_phase_modelType(SEO3, Gaillard2008, HS1962_plus);
julia> m = tune_rp_modelType(fn_list, m_type)
Tuning rock physics with function list :
[Porosity.get_melt_fraction]
to obtain the rock physics model of type two_phase_modelType{SEO3, Gaillard2008, HS1962_plus}
julia> model = m(ps_nt)
Two phase composition using HS1962_plus()
* m₁ (solid phase) :
Model : SEO3
Temperature (K) : 1073.0:200.0:1473.0
ϕ : [1.0, 1.0, 0.4594594594594593]
* m₂ (liquid phase) :
Model : SEO3
Temperature (K) : 1073.0:200.0:1473.0
ϕ : [0.0, 0.0, 0.5405405405405407]Porosity.two_phase_model Type
two_phase_model(ϕ, m1, m2, mix)Rock physics model to combine two phases, usually constructed through two_phase_modelType[@ref]
Arguments
ϕ: Vol. fraction of the second phasem1: model corresponding to phase 1m2: model corresponding to phase 2mix: mixing type, available options areHS_1962_plus(),HS1962_minus,MAL(m)
Usage
julia> m = two_phase_modelType(SEO3, Ni2011, HS1962_plus);
julia> T = [900.0f0, 1000.0f0] .+ 273;
julia> P = 3.0f0;
julia> ρ = 3300.0f0;
julia> Ch2o_m = 1000.0f0;
julia> ϕ = 0.1f0;
julia> ps_nt = ps_nt = (; T, P, ρ, Ch2o_m, ϕ);
julia> model = m(ps_nt)
Two phase composition using HS1962_plus()
* m₁ (solid phase) :
Model : SEO3
Temperature (K) : Float32[1173.0, 1273.0]
ϕ : 0.9
* m₂ (liquid phase) :
Model : SEO3
Temperature (K) : Float32[1173.0, 1273.0]
ϕ : 0.1
julia> resp = forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : Float32[-5.800449, -4.128538]Porosity.two_phase_modelDistribution Type
two_phase_modelDistribution(ϕ, m1, m2, mix)Rock physics model distribution to combine two phases, usually constructed through two_phase_modelDistributionType[@ref]
Arguments
ϕ: distribution (or value) of vol. fraction of the second phasem1: model distribution corresponding to phase 1m2: model distribution corresponding to phase 2mix: mixing type, available options areHS_1962_plus,HS1962_minus,MAL(m_MAL)
Usage
m = two_phase_modelType(SEO3Distribution, Ni2011Distribution, HS1962_plus)
ps_nt_dist = (; T=product_distribution(Uniform(1200.0f0, 1400.0f0)),
Ch2o_m=MvNormal([100.0f0], diagm([20.0f0])), ϕ=[0.1f0])
model = m(ps_nt_dist)
resp = forward(model)Porosity.two_phase_modelDistributionType Type
two_phase_modelDistributionType(m1, m2, mix)Rock physics model distribution type to combine two phases.
Arguments
m1: model corresponding to phase 1m2: model distribution type corresponding to phase 2mix: mixing type, available options areHS_1962_plus,HS1962_minus,MAL
Usage
two_phase_modelType(SEO3Distribution, Ni2011Distribution, HS1962_plus)Porosity.two_phase_modelType Type
two_phase_modelType(m1, m2, mix)Rock physics model Type to combine two phases.
Arguments
m1: model type corresponding to phase 1m2: model type corresponding to phase 2mix: mixing type, available options areHS_1962_plus,HS1962_minus,MAL
Usage
two_phase_modelType(SEO3, Ni2011, HS1962_plus)Porosity.xfit_mxw Type
xfit_mxw(T, P, dg, σ, ϕ, ρ, T_solidus, Ch2o_ol, f)Calculate anelastic properties stored in RockPhyAnelastic using the Master curve maxwell scaling per McCarthy, Takei and Hiraga (2011)
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `Ch2o_ol` : water concentration in olivine (in ppm)
- `T_solidus` : Solidus temperature (K), only used when using `xfit_premelt` for viscosity calculations
- `f` : frequencyKeyword Arguments
- `params` : Various coefficients required for calculation.
Available options are `fit1` and `fit2`, defaults to `fit1`, i.e, `params_xfit_mxw.fit1`
Also holds coefficients and the type of `RockphyElastic` model and `RockphyViscous model` to be used.
To investigate coefficients, call `default_params(Val{xfit_premelt}())`.
To modify coefficients, check the relevant documentation page. This
will also users to pick any particular type of `RockphyElastic` model, defaults to `anharmonic`,
as well as `RockphyViscous` model (for diffusion-derived viscosity), defaults to `xfit_mxw`Usage
Note
Make sure that the dimension of vector f is one more than the other parameters. Check relevant tutorials. Note the transpose on f when making the model in the following eg.
julia> T = [800, 1000] .+ 273.0f0;
julia> P = 2 .+ zero(T);
julia> dg = 4.0f0;
julia> σ = 10.0f-3;
julia> ϕ = 1.0f-2;
julia> ρ = 3300.0f0;
julia> Ch2o_ol = 0.0f0;
julia> T_solidus = 900 + 273.0f0;
julia> f = [1.0f0, 1.0f1];
julia> model = xfit_mxw(T, P, dg, σ, ϕ, ρ, Ch2o_ol, T_solidus, f')
Model : xfit_mxw
Temperature (K) : Float32[1073.0, 1273.0]
Pressure (GPa) : Float32[2.0, 2.0]
grain size(μm) : 4.0
Shear stress (GPa) : 0.01
Porosity : 0.01
Density (kg/m³) : 3300.0
Water concentration in olivine (ppm) : 0.0
Solidus Temperature (K) : 1173.0
Frequency (Hz) : Float32[1.0 10.0]
julia> forward(model, [])
Rock physics Response : RockphyAnelastic
Real part of dynamic compliance (Pa⁻¹) : Float32[1.4031399f-11 1.3812445f-11; 1.6433199f-11 1.57985f-11]
Imaginary part of dynamic compliance (Pa⁻¹) : Float32[1.6107535f-13 1.3877004f-13; 5.1549807f-13 3.6455504f-13]
Attenuation : Float32[0.011479636 0.01004674; 0.031369306 0.023075296]
Modulus (Pa) : Float32[7.1264035f10 7.2394826f10; 6.0822508f10 6.3280304f10]
Anelastic S-wave velocity : (m/s) : Float32[4647.0596 4683.783; 4293.141 4379.024]
Frequency averaged S-wave velocity (m/s) : Float32[4665.4214, 4336.0825]References
- McCarthy, Takei, Hiraga, 2011, "Experimental study of attenuation and dispersion over a broad frequency range:
- The universal scaling of polycrystalline materials", Journal of Geophy Research, http://dx.doi.org/10.1029/2011JB008384
Porosity.xfit_mxwDistribution Type
xfit_mxwDistribution(T, P, dg, σ, ϕ, ρ, f)Model Distribution for xfit_mxw[@ref].
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `f` : frequencyUsage
Refer to the documentation for usage examples.
sourcePorosity.xfit_premelt Type
xfit_premelt(T, P, dg, σ, ϕ)Calculate viscosity for steady state olivine flow for pre-melting, i.e., temperatures are just below and above the solidus, per Yamauchi and Takei (2016)
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `T_solidus` : Solidus temperatureKeyword Arguments
- `params` : Various coefficients required for calculation.
Coefficients for different mechanisms (stored in `mechs` field):
- `diff` : Diffusion creep
- `disl` : Dislocation creep
- `gbs` : Grain boundary sliding
To investigate coefficients, call `default_params(Val{xfit_premelt}())`.
To modify coefficients, check the relevant documentation page. This
will also users to get any particular type of mechanism, eg. `diff` only
by setting the `A` in `disl` and `gbs` to `0f0`.Usage
julia> T = collect(1073.0f0:40:1273.0f0);
julia> P = 2 .+ zero(T);
julia> dg = collect(3.0f0:8.0f-1:7.0f0);
julia> σ = collect(7.5f0:1.0f0:12.5f0) .* 1.0f-3;
julia> ϕ = collect(1.0f-2:2.0f-3:2.0f-2);
julia> T_solidus = 1200 + 273 .+ zero(T);
julia> model = xfit_premelt(T, P, dg, σ, ϕ, T_solidus)
Model : xfit_premelt
Temperature (K) : Float32[1073.0, 1113.0, 1153.0, 1193.0, 1233.0, 1273.0]
Pressure (GPa) : Float32[2.0, 2.0, 2.0, 2.0, 2.0, 2.0]
grain size(μm) : Float32[3.0, 3.8, 4.6, 5.4, 6.2, 7.0]
Shear stress (GPa) : Float32[0.0075000003, 0.0085, 0.009500001, 0.010500001, 0.011500001, 0.0125]
Porosity : Float32[0.01, 0.012, 0.014, 0.016, 0.018, 0.02]
Solidus Temperature (K) : Float32[1473.0, 1473.0, 1473.0, 1473.0, 1473.0, 1473.0]
julia> forward(model, [])
Rock physics Response : RockphyViscous
Strain rate : Float32[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Viscosity (Pa s) : Float32[7.6341115f18, 2.2587335f18, 6.6676584f17, 2.024383f17, 6.40973f16, 2.1291828f16]References
- Yamauchi and Takei, 2016, "Polycrystal anelasticity at near-solidus temperatures", J. Geophys. Res. Solid Earth, https://doi.org/10.1002/2016JB013316
Porosity.xfit_premeltDistribution Type
xfit_premeltDistribution(T, P, dg, σ, ϕ, Ch2o_ol)Model Distribution for `xfit_premelt[@ref].
Arguments
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `T_solidus` : Solidus temperatureUsage
Refer to the documentation for usage examples.
source