Skip to content

MAGEMin_C Li partitioning ​

Table of contents ​

MineralAcronymK_D BAK_D KO
Alkali-feldsparafs1e-40.01
Amphiboleamp1e-41e-4
Biotitebi0.551.67
Clinopyroxenecpx1e-41e-4
Cordieritecd1.100.44
Garnetg0.091e-4
Hematitehem1e-41e-4
Ilmeniteilm1e-41e-4
Kyaniteky1e-41e-4
Magnetitemt1e-41e-4
Muscovitemu0.110.82
Orthopyroxeneopx1e-41e-4
Plagioclasepl1e-40.02
Quartzq1e-41e-4
Rutileru1e-41e-4
Sillimanitesill1e-41e-4

BA = Ballouard et al., 2023; KO = Koopmans et al., 2024

Batch melting equations ​

To predict the mass content of Li in both the solid and liquid phases, MAGEMin uses trace-element batch melting equations (Shaw, 1970; Hertogen & Gijbels, 1976; Zou, 2001):

and

where and are the mass contents of trace element in the melt and solid in μg/g, respectively, is the initial mass content of element in the bulk rock, is the melt weight fraction, and is the whole-rock bulk partition coefficient defined as:

where is the weight fraction of mineral m/melt, and is the mineral/melt partition coefficient for element in mineral m/melt. The mass content for element in mineral m () is retrieved as:

1. Create a new script ​

shell
code MAGEMin_C_Li_partitioning.jl

2. Initialize ​

Let's first initialize MAGEMin using the world median pelite composition:

julia
using MAGEMin_C, Plots, ProgressMeter
dtb         = "mp"
data        =  Initialize_MAGEMin(dtb, verbose=false);

X           = [0.5922, 0.1813, 0.006, 0.0223, 0.0633, 0.0365, 0.0127, 0.0084, 0.0016, 0.0007, 0.075]
Xoxides     = ["SiO2", "Al2O3", "CaO", "MgO", "FeO", "K2O", "Na2O", "TiO2", "O", "MnO", "H2O"]
sys_unit    = "wt"

P           = 5.0
T           = 700.0

3. Define partition coefficients ​

Let's now define the lithium partition coefficients between minerals and melt using Koopmans et al. (2024) values:

julia
el          = ["Li"]
ph          = ["afs", "amp", "bi", "cpx", "cd", "g", "hem", "ilm", "ky", "mt", "mu", "opx", "pl", "q", "ru", "sill"]
KDs         = ["0.01";  "1e-4";  "1.67"; "1e-4";  "0.44"; "1e-4"; "1e-4"; "1e-4";  "1e-4"; "1e-4"; "0.82"; "1e-4";  "0.02"; "1e-4"; "1e-4"; "1e-4"]
  • Here, KDs is a Matrix of String of size (n_ph, n_el):
KDsel_1el_2...el_m
ph_1KD_1,1KD_1,2...KD_1,m
ph_2KD_2,1KD_2,2...KD_2,m
...............
ph_nKD_n,1KD_n,2...KD_n,m

where n is the total number of phases and m is the total number of trace elements.

4. Define starting mass fraction and partition coefficient database ​

Then, we need to define the starting mass fraction and create the custom partition coefficients database:

julia
C_te        = [400.0]       #starting mass fraction of elements in ppm (ug/g)
KDs_dtb     = create_custom_KDs_database(el, ph, KDs)

5. Perform stable phase equilibrium calculation ​

Let's now compute the stable equilibrium (without trace-element prediction):

julia
out  = single_point_minimization(P, T, data, X=X, Xoxides=Xoxides, sys_in=sys_unit, name_solvus = true)

6. Perform trace-element prediction modelling ​

We can now compute trace-element partitioning by calling the TE_prediction() function, while passing the result of the minimization out, the starting mass fraction C_te, the partition coefficient database KDs_dtb, and the database name dtb as arguments:

julia
out_TE = TE_prediction(out, C_te, KDs_dtb, dtb)

7. Access result of trace-element partitioning ​

Results of trace-element prediction are stored in the out_TE structure:

shell
out_TE.
C0            Cliq          Cmin          Csol
Sat_P2O5_liq  Sat_S_liq     Sat_Zr_liq    bulk_D
bulk_cor_mol  bulk_cor_wt   elements      fapt_wt
liq_wt_norm   ph_TE         ph_wt_norm    sulf_wt
zrc_wt

The melt lithium mass fraction is stored in:

julia
out_TE.Cliq
1-element Vector{Float64}:
 714.3816978649379

The mineral phases hosting Li are listed in:

julia
out_TE.ph_TE
5-element Vector{String}:
 "pl"
 "hem"
 "bi"
 "q"
 "sill"

and the lithium mass fraction of these phases is stored in:

julia
out_TE.Cmin
5×1 Matrix{Float64}:
  14.287633957298759
   0.0714381697864938
1193.0174354344463
   0.0714381697864938
   0.0714381697864938

8. Visualize Li enrichment ​

The variations in lithium mass fractions are best visualized by normalizing to the starting mass out_TE.C0. To achieve this, let's create a bar graph:

First, combine phase names and melt:

julia
labels = [out_TE.ph_TE; "melt"]

Then, combine mineral and melt Li concentrations:

julia
Li_norm = [out_TE.Cmin[:, 1]; out_TE.Cliq[1]] ./ out_TE.C0
  • Note that out_TE.Cmin is a matrix, while out_TE.Cliq is a vector of length 1.
julia
bar(labels, Li_norm,
    ylabel    = "Li norm [Li/Li₀]",
    title     = "Li partitioning at P = $(P) kbar, T = $(T) °C",
    legend    = false,
    xrotation = 45,
    color     = reshape(1:length(labels), 1, :))

hline!( [1.0],
        linestyle   = :dot,
        linecolor   = :black,
        label       = "C0")

This gives:

Julia REPL

  • The horizontal dashed line at 1.0 represents the starting mass fraction.

Exercises ​

E.1. Batch melting ​

  • Using the previous tutorials on batch melting, duplicate this script and modify it to perform Li partitioning prediction between 600 and 1000.0 °C with a step of 2 °C.

    • Remember to pre-allocate the out and out_TE structures as: julia Out_XY = Vector{out_struct}(undef,n_calc) Out_TE_XY = Vector{out_TE_struct}(undef,n_calc)
  • Extract the Li mass fraction in the liquid, normalize it using the initial mass fraction, and visualize the result. This gives:

Julia REPL

  • Perform the same calculation at various pressures (2.0, 4.0, 8.0, and 12.0 kbar). How does pressure control the maximum lithium enrichment of the melt?

E.2. Extract mineral Li enrichment ​

  • Create a function that reads the trace-element output structure Out_TE_XY, the starting Li mass fraction, a Li-bearing mineral name, and returns a vector of Li enrichment:
julia
function get_Li_enrichment(Out_TE_XY, C0, phase)
#... make the function yourself ...
return Li_ratio_phase
end
  • Plot the evolution of the lithium enrichment of melt, biotite, plagioclase, cordierite, and muscovite. This should give something similar to:

Julia REPL

  • Now add as a twinx(), the evolution of the melt fraction in wt

  • What is the relationship between Li enrichment in the melt, biotite and melt fraction?

E.3. Different set of partition coefficients ​

  • Let's now use a different set of partition coefficients. Modify your script to add an option for choosing between KO (Koopmans et al., 2024) and BA (Ballouard et al., 2023)

  • Perform the calculation using BA set of partition coefficients

  • How does this change the maximum Li enrichment in the melt? How do you explain it?

  • Compare Li enrichment prediction between BA and KO sets at various pressures. How important is the choice of partition coefficients?