Skip to content
Porosity.get_Cco2_m Method
julia
get Cco2_m(ps_nt)

returns the amount of CO₂ in melt

Arguments

  • ϕ : melt fraction

  • Cco2 : bulk CO₂ conc.

  • Cco2_sat : saturation limit of CO₂ conc. in melt

Usage

The inputs should be in the form of a NamedTuple

julia
ϕ = 0.05
Cco2 = 1000
Cco2_sat = 38e4
ps_nt = (; ϕ, Cco2, Cco2_sat)
get_Cco2_m(ps_nt)

# output

(Cco2_m = 20000.0,)
source
Porosity.get_Ch2o_m Method
julia
get Ch2o_m(ps_nt)

returns the amount of CO₂ in melt and water in the form of NamedTuple

Arguments

  • ϕ : melt fraction

  • Cco2 : bulk water conc.

  • D : partition coefficient

Usage

The inputs should be in the form of a NamedTuple

julia
ϕ = 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)
source
Porosity.get_melt_fraction Method
julia
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 ppm

  • Cco2_sat : saturation limit of melt CO₂ conc. (ppm), defaults to 38 wt %

  • Ch2o : bulk water conc. (ppm), defaults to 0 ppm

  • T : 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_Blatter2022

  • CO2_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

julia
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],)
source
Porosity.solidus_Hirschmann2000 Method
julia
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

julia
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

source
Porosity.solidus_Katz2003 Method
julia
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

julia
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

source
Porosity.ΔT_co2_Dasgupta2007 Method
julia
Δ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

julia
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

source
Porosity.ΔT_co2_Dasgupta2013 Method
julia
Δ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

julia
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

source
Porosity.ΔT_h2o_Blatter2022 Method
julia
Δ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

julia
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

source
Porosity.ΔT_h2o_Katz2003 Method
julia
Δ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

julia
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

source
Porosity.Dai_Karato2009 Type
julia
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
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.4966847149880984
source
Porosity.Dai_Karato2009Distribution Type
julia
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.

source
Porosity.GAL Type
julia
GAL(m)

Generalized Archie's law for multiple phases

Usage

References

julia
- Glover, P.W.J (2010), A generalized Archie’s law for n phases
https://doi.org/10.1190/1.3509781
source
Porosity.Gaillard2008 Type
julia
Gaillard2008(T)

Electrical conductivity model for melt dependent on Temperature.

Usage

julia
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.2275677836002115

Arguments

  • 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.
source
Porosity.Gaillard2008Distribution Type
julia
Gaillard2008Distribution(T)

Model Distribution for Gaillard2008[@ref].

Arguments

  • T : Temperature of melt (in K)

Usage

Refer to the documentation for usage examples.

source
Porosity.HK2003 Type
julia
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

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity

Optional Arguments

julia
- `Ch2o_ol` : Water concentration in olivine (ppm), defaults to 0 ppm.

Keyword Arguments

julia
- `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` : TODO

Usage

julia
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
source
Porosity.HK2003Distribution Type
julia
HK2003(T, P, dg, σ, ϕ, Ch2o_ol)

Model Distribution for HK2003[@ref].

Arguments

julia
- `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.

source
Porosity.HS1962_minus Type
julia
HS1962_minus

Hashim-Strikman lower bound for mixing 2 phases

Usage

julia
m = two_phase_modelType(Yoshino2009, Sifre2014, HS1962_minus())

Check out the relevant rock physics documentation.

References

source
Porosity.HS1962_plus Type
julia
HS1962_plus

Hashim-Strikman upper bound for mixing 2 phases

Usage

julia
m = two_phase_modelType(Yoshino2009, Sifre2014, HS1962_plus())

Check out the relevant rock physics documentation.

References

source
Porosity.HS_minus_multi_phase Type

Hashim-Strikman lower bound for multiple phases

References

julia
- Berryman, J. G. (1995), Mixture Theories for Rock Properties
 https://doi.org/10.1029/RF003p0205
source
Porosity.HS_plus_multi_phase Type

Hashim-Strikman upper bound for multiple phases

References

julia
- Berryman, J. G. (1995), Mixture Theories for Rock Properties
 https://doi.org/10.1029/RF003p0205
source
Porosity.HZK2011 Type
julia
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

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity

Keyword Arguments

julia
- `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` : TODO

Usage

julia
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
source
Porosity.HZK2011Distribution Type
julia
HZK2011Distribution(T, P, dg, σ, ϕ)

Model Distribution for HZK2011[@ref].

Arguments

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity

Usage

Refer to the documentation for usage examples.

source
Porosity.Jones2012 Type
julia
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
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.15504093485137044

References

  • 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.
source
Porosity.Jones2012Distribution Type
julia
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.

source
Porosity.MAL Type
julia
MAL

Modified Archie's law for mixing 2 phases

Usage

julia
m = two_phase_modelType(Yoshino2009, Sifre2014, MAL(0.2))

Check out the relevant rock physics documentation.

References

julia
- 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(34), 369383, 
doi: https://doi.org/10.1016/S0012-821X(00)00168-0
source
Porosity.Ni2011 Type
julia
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
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.3578741895190163

References

  • 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
source
Porosity.Ni2011Distribution Type
julia
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.

source
Porosity.Poe2010 Type
julia
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
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.4473300721921056

References

  • 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.
source
Porosity.Poe2010Distribution Type
julia
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.

source
Porosity.SEO3 Type
julia
SEO3(T)

Electrical conductivity model for olivine dependent on temperature.

Arguments

julia
- `T` : Temperature of olivine (in K)

Usage

julia
julia> model = SEO3(1000 + 273.0)
Model : SEO3
Temperature (K) : 1273.0

julia> forward(model, [])
Rock physics Response : RockphyCond
log₁₀ conductivity (S/m) : -4.0571856119909375

References

source
Porosity.SEO3Distribution Type
julia
SEO3Distribution(T)

Model Distribution for SEO3[@ref].

Arguments

  • T : Temperature of olivine (in K)

Usage

Refer to the documentation for usage examples.

source
Porosity.SLB2005 Type
julia
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

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)

Keyword Arguments

julia
- `params` : Various coefficients required for calculation. 
Does not have any coefficients that can be changed and hence is an empty `NamedTuple`

Usage

julia
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
source
Porosity.SLB2005Distribution Type
julia
SLB2005Distribution(T, P)

Model Distribution for SLB2005[@ref].

Arguments

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)

Usage

Refer to the documentation for usage examples.

source
Porosity.Sifre2014 Type
julia
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
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.012765453025208906

References

  • 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
source
Porosity.Sifre2014Distribution Type
julia
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.

source
Porosity.UHO2014 Type
julia
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
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.2727662435353444
source
Porosity.UHO2014Distribution Type
julia
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.

source
Porosity.Wang2006 Type
julia
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
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.383209519477097

References

  • 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
source
Porosity.Wang2006Distribution Type
julia
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.

source
Porosity.Yang2011 Type
julia
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
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.0103884511392625
source
Porosity.Yang2011Distribution Type
julia
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.

source
Porosity.Yoshino2009 Type
julia
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
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.6428765173222217

References

  • 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
source
Porosity.Yoshino2009Distribution Type
julia
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.

source
Porosity.Zhang2012 Type
julia
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
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.045414286402875675
source
Porosity.Zhang2012Distribution Type
julia
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.

source
Porosity.andrade_analytical Type
julia
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

julia
- `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` : frequency

Keyword Arguments

julia
- `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
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

source
Porosity.andrade_analyticalDistribution Type
julia
andrade_analyticalDistribution(T, P, dg, σ, ϕ, ρ, f)

Model Distribution for xfit_mxw[@ref].

Arguments

julia
- `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` : frequency

Usage

Refer to the documentation for usage examples.

source
Porosity.andrade_psp Type
julia
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

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `f` : frequency

Keyword Arguments

julia
- `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
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
source
Porosity.andrade_pspDistribution Type
julia
andrade_pspDistribution(T, P, dg, σ, ϕ, ρ, f)

Model Distribution for andrade_psp[@ref].

Arguments

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `f` : frequency

Usage

Refer to the documentation for usage examples.

source
Porosity.anharmonic Type
julia
anharmonic(T, P, ρ)

Calculate unrelaxed elastic bulk moduli, shear moduli, Vp and Vs using anharmonic scaling

Arguments

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `ρ` : Density of the rock (kg/m³)

Keyword Arguments

julia
- `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
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

source
Porosity.anharmonicDistribution Type
julia
anharmonicDistribution(T, P, ρ)

Model Distribution for anharmonic_poro[@ref].

Arguments

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `ρ` : Density of the rock (kg/m³)

Usage

Refer to the documentation for usage examples.

source
Porosity.anharmonic_poro Type
julia
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

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `ρ` : Density of the rock (kg/m³)
- `ϕ` : Porosity of the rock

Keyword Arguments

julia
- `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
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

source
Porosity.anharmonic_poroDistribution Type
julia
anharmonic_poroDistribution(T, P, ρ, ϕ)

Model Distribution for anharmonic[@ref].

Arguments

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `ρ` : Density of the rock (kg/m³)
- `ϕ` : Porosity of the rock

Usage

Refer to the documentation for usage examples.

source
Porosity.const_matrix Type
julia
const_matrix(σ)

Fixed electrical conductivity model for the phase.

Arguments

  • σ : Conductivity of the phase

Usage

julia
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.0
source
Porosity.const_matrixDistribution Type
julia
const_matrixDistribution(σ)

Model Distribution for const_matrix[@ref].

Arguments

  • σ : Conductivity of the phase

Usage

Refer to the documentation for usage examples.

source
Porosity.eburgers_psp Type
julia
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

julia
- `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` : frequency

Keyword Arguments

julia
- `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
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

source
Porosity.eburgers_pspDistribution Type
julia
eburgers_pspDistribution(T, P, dg, σ, ϕ, ρ, f)

Model Distribution for eburgers_psp[@ref].

Arguments

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `f` : frequency

Usage

Refer to the documentation for usage examples.

source
Porosity.multi_phase_model Type
julia
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 1

  • m2 : 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 are HS_plus_multi_phase(), HS_minus_multi_phase, GAL(m)

Usage

julia
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]
source
Porosity.multi_phase_modelDistribution Type
julia
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 1

  • m2 : 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 are HS_plus_multi_phase(), HS_minus_multi_phase, GAL(m_GAL)

Usage

TODO

source
Porosity.multi_phase_modelDistributionType Type
julia
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 1

  • m2 : 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 are HS_plus_multi_phase, HS_minus_multi_phase, GAL

Usage

julia
multi_phase_modelDistributionType(
    SEO3Distribution, Ni2011Distribution, Yang2011Distribution, HS_plus_multi_phase)
source
Porosity.multi_phase_modelType Type
julia
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 1

  • m2 : 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 are HS_plus_multi_phase, HS_minus_multi_phase, GAL

Usage

julia
multi_phase_modelType(SEO3, Ni2011, Yang2011, HS_plus_multi_phase)
source
Porosity.multi_rp_model Type
julia
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 model

  • elastic : elastic rock physics model

  • visc : viscous rock physics model

  • anelastic : anelastic rock physics model

Usage

julia
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)
source
Porosity.multi_rp_modelDistribution Type
julia
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 modelDistribution

  • elastic : elastic rock physics modelDistribution

  • visc : viscous rock physics modelDistribution

  • anelastic : anelastic rock physics modelDistribution

Usage

julia
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)
source
Porosity.multi_rp_modelDistributionType Type
julia
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 of AbstractCondModelDistributionType

  • elastic : elastic rock physics distribution model type, subtype of AbstractElasticModelDistributionType

  • visc : viscous rock physics distribution model type, subtype of AbstractViscousModelDistributionType

  • anelastic : anelastic rock physics distribution model type, subtype of AbstractAnelasticModelDistributionType

Usage

Similar to multi_rp_modelDistributionType but instead accepts Distribution or Nothing

julia
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

source
Porosity.multi_rp_modelType Type
julia
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 of AbstractCondModel

  • elastic : elastic rock physics model type, subtype of AbstractElasticModel

  • visc : viscous rock physics model type, subtype of AbstractViscousModel

  • anelastic : anelastic rock physics model type, subtype of AbstractAnelasticModel

Usage

julia
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

source
Porosity.premelt_anelastic Type
julia
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

julia
- `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` : frequency

Keyword Arguments

julia
- `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 false

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
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

source
Porosity.premelt_anelasticDistribution Type
julia
premelt_anelasticDistribution(T, P, dg, σ, ϕ, ρ, f)

Model Distribution for premelt_anelastic[@ref].

Arguments

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `f` : frequency

Usage

Refer to the documentation for usage examples.

source
Porosity.single_phase Type
julia
single_phase

Single phase only conductivity. Assumes the rock matrix is composed of a single phase only.

source
Porosity.tune_rp_modelType Type
julia
tune_rp_modelType(fn_list, mtype)

Arguments

  • fn_list : Vector of functions applied to the parameters in the same sequence

  • mtype : model type that will constructed using the given and estimated parameters

Usage

julia
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]
source
Porosity.two_phase_model Type
julia
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 phase

  • m1 : model corresponding to phase 1

  • m2 : model corresponding to phase 2

  • mix : mixing type, available options are HS_1962_plus(), HS1962_minus, MAL(m)

Usage

julia
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]
source
Porosity.two_phase_modelDistribution Type
julia
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 phase

  • m1 : model distribution corresponding to phase 1

  • m2 : model distribution corresponding to phase 2

  • mix : mixing type, available options are HS_1962_plus, HS1962_minus, MAL(m_MAL)

Usage

julia
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)
source
Porosity.two_phase_modelDistributionType Type
julia
two_phase_modelDistributionType(m1, m2, mix)

Rock physics model distribution type to combine two phases.

Arguments

  • m1 : model corresponding to phase 1

  • m2 : model distribution type corresponding to phase 2

  • mix : mixing type, available options are HS_1962_plus, HS1962_minus, MAL

Usage

julia
two_phase_modelType(SEO3Distribution, Ni2011Distribution, HS1962_plus)
source
Porosity.two_phase_modelType Type
julia
two_phase_modelType(m1, m2, mix)

Rock physics model Type to combine two phases.

Arguments

  • m1 : model type corresponding to phase 1

  • m2 : model type corresponding to phase 2

  • mix : mixing type, available options are HS_1962_plus, HS1962_minus, MAL

Usage

julia
two_phase_modelType(SEO3, Ni2011, HS1962_plus)
source
Porosity.xfit_mxw Type
julia
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

julia
- `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` : frequency

Keyword Arguments

julia
- `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
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:
  1. The universal scaling of polycrystalline materials", Journal of Geophy Research, http://dx.doi.org/10.1029/2011JB008384
source
Porosity.xfit_mxwDistribution Type
julia
xfit_mxwDistribution(T, P, dg, σ, ϕ, ρ, f)

Model Distribution for xfit_mxw[@ref].

Arguments

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `ρ` : Density (kg/m³)
- `f` : frequency

Usage

Refer to the documentation for usage examples.

source
Porosity.xfit_premelt Type
julia
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

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `T_solidus` : Solidus temperature

Keyword Arguments

julia
- `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
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

source
Porosity.xfit_premeltDistribution Type
julia
xfit_premeltDistribution(T, P, dg, σ, ϕ, Ch2o_ol)

Model Distribution for `xfit_premelt[@ref].

Arguments

julia
- `T` : Temperature of the rock (K)
- `P` : Pressure (GPa)
- `dg`: Grain size (μm)
- `σ` : Shear stress (GPa)
- `ϕ` : Porosity
- `T_solidus` : Solidus temperature

Usage

Refer to the documentation for usage examples.

source