Melt

To obtain the list of implemented diffusion parameters for melt, use:

For major element diffusion, the multicomponent diffusion matrix for basaltic melt can be calculated using the following function:

GeoParams.MaterialParameters.ChemicalDiffusion.Melt.Melt_multicomponent_major_Guo2020_SiO2_basalticFunction
Melt_multicomponent_major_Guo2020_SiO2_basaltic()

Multicomponent diffusion data of major elements in basaltic melt. Calibrated using 18 diffusion couple experiments for SiO2–TiO2–Al2O3–FeO–MgO–CaO–Na2O–K2O basaltic melt compositions and data from Guo and Zhang (2018). SiO2 is here the dependent variable. This contains the invariant eigenvectors and the diagonal matrices containing the pre-exponential factors and activation energies of the eigenvalues to compute the diffusion matrix at a given temperature. It is supposed here that the eigenvectors are not temperature dependent but eigenvalues are. When computing the diffusion matrix, the order of the species is TiO2, Al2O3, FeO, MgO, CaO, Na2O, K2O. From Guo and Zhang (2020) (https://10.1016/j.chemgeo.2020.119700).

source

For this particular case, to initiate the parameters, use SetMulticompChemicalDiffusion:

    melt_multicomponent = Melt.Melt_multicomponent_major_Guo2020_SiO2_basaltic
    melt_multicomponent = SetMulticompChemicalDiffusion(melt_multicomponent)

The function compute_D can be used as usual to calculate the diffusion coefficients but will in this case return a static matrix of diffusion coefficients for the major elements in the melt:

    D = compute_D(melt_multicomponent, T=1000C)
7×7 SMatrix{7, 7, Quantity{Float64, 𝐋²·⁰ 𝐓⁻¹·⁰, Unitful.FreeUnits{(m²·⁰, s⁻¹·⁰), 𝐋²·⁰ 𝐓⁻¹·⁰, nothing}}, 49} with indices SOneTo(7)×SOneTo(7):
  1.03519e-13 m²·⁰ s⁻¹·⁰   8.93006e-13 m²·⁰ s⁻¹·⁰  -1.95924e-12 m²·⁰ s⁻¹·⁰  …  -5.84922e-12 m²·⁰ s⁻¹·⁰   8.53056e-12 m²·⁰ s⁻¹·⁰   2.43836e-12 m²·⁰ s⁻¹·⁰
  4.41504e-14 m²·⁰ s⁻¹·⁰   5.07365e-15 m²·⁰ s⁻¹·⁰   1.91304e-13 m²·⁰ s⁻¹·⁰      1.16129e-12 m²·⁰ s⁻¹·⁰  -1.31307e-12 m²·⁰ s⁻¹·⁰  -4.16234e-13 m²·⁰ s⁻¹·⁰
 -2.91173e-13 m²·⁰ s⁻¹·⁰  -1.74973e-13 m²·⁰ s⁻¹·⁰   2.62782e-12 m²·⁰ s⁻¹·⁰      2.77994e-12 m²·⁰ s⁻¹·⁰  -5.25369e-12 m²·⁰ s⁻¹·⁰  -1.49885e-12 m²·⁰ s⁻¹·⁰
 -4.8815e-13 m²·⁰ s⁻¹·⁰    2.53181e-12 m²·⁰ s⁻¹·⁰  -3.84208e-12 m²·⁰ s⁻¹·⁰     -1.54711e-11 m²·⁰ s⁻¹·⁰   2.16066e-11 m²·⁰ s⁻¹·⁰   5.19873e-12 m²·⁰ s⁻¹·⁰
  6.67519e-13 m²·⁰ s⁻¹·⁰  -1.47328e-12 m²·⁰ s⁻¹·⁰  -5.84858e-13 m²·⁰ s⁻¹·⁰      8.55322e-12 m²·⁰ s⁻¹·⁰  -7.44916e-12 m²·⁰ s⁻¹·⁰  -2.12405e-12 m²·⁰ s⁻¹·⁰
 -4.89738e-13 m²·⁰ s⁻¹·⁰   2.07724e-12 m²·⁰ s⁻¹·⁰  -2.8383e-12 m²·⁰ s⁻¹·⁰   …  -1.10541e-11 m²·⁰ s⁻¹·⁰   1.78501e-11 m²·⁰ s⁻¹·⁰   4.10209e-12 m²·⁰ s⁻¹·⁰
 -2.59574e-13 m²·⁰ s⁻¹·⁰   7.36022e-13 m²·⁰ s⁻¹·⁰  -5.65377e-13 m²·⁰ s⁻¹·⁰     -2.34514e-12 m²·⁰ s⁻¹·⁰   3.67054e-12 m²·⁰ s⁻¹·⁰   3.13608e-12 m²·⁰ s⁻¹·⁰

Additionally, the function compute_λ can be used directly to compute the diagonal matrix of the eigenvalues. This can be useful in the case when the diffusion matrix wants to be diagonalized:

GeoParams.MaterialParameters.ChemicalDiffusion.compute_λFunction
compute_λ(data::MeltMulticompDiffusionData; T=1K, kwargs...)

Computes the diagonal matrix of eigenvalues [m^2/s] from the diffusion data data at temperature T [K] from a structure of type MeltMulticompDiffusionData. This is useful if the system needs to be diagonalized. If T is provided without unit, the function assumes the unit is in Kelvin and outputs the eigenvalues without unit based on the value in m^2/s. The output is a static matrix of size n-1 x n-1 where n is the number of components.

source

For trace-, self- or interdiffusion parameters for melt, the following functions are implemented: