News:

alphaMELTS 2.3 standalone & for MATLAB/Python is now open source and available on GitHub (https://github.com/magmasource/alphaMELTS).
alphaMELTS 1.9 is available at the legacy download and information site.
For news of all MELTS software see the MELTS Facebook page.

Main Menu

How to calculate the activity coefficients of oxides in mafic silicate melt

Started by zhudan, September 22, 2022, 05:01:34 PM

Previous topic - Next topic

zhudan

I can't find the activity of oxide of a mafic silicate melt (except aH2O) in any output_file, when using Alphamelts. Please show us how to calculate them. Thanks in advance!

asimow

Unfortunately, calculating the activity of some oxides is not really a well-defined exercise.

For SiO2, TiO2, Al2O3, Fe2O3, CO2, and H2O, these oxides are also components of the MELTS, pMELTS, and rMELTS liquid models and their activities are given in melts-liquid.tbl (you may have to set "output: both" in your .melts file to enable MELTS GUI style output files so that you get melts-liquid.tbl). However, to turn these into activity coefficients you have to decide what mole fraction to use, since gamma = activity/(mole fraction). The mole fraction of, for example, SiO2 molecules among the molecules that represent the liquid in MELTS is *not* the same as the mole fraction of SiO2 on an oxide basis. Probably what you want, though, is activity coefficient relative to an ideal mixture of oxides, in which case go ahead and convert the weight % oxides into mole fractions of oxides (this is not done for you), and divide the activity of SiO2 given in melts-liquid.tbl by mole fraction to get activity coefficient.

The reason this is straightforward for those six oxides is that activity is defined by the relation mu(P,T,X) = mu0(P,T) + R T ln a and for these six (only), we know both mu and mu0 (the chemical potential of the pure liquid oxide at the P and T of interest).

For the other oxides (Cr2O3, FeO, MnO, MgO, CoO, NiO, CaO, Na2O, K2O, P2O5), the liquid model represents these as non-oxide mineral-like molecules (MgCr2O4, Fe2SiO4, MnSi0.5O2, Mg2SiO4, CoSi0.5O2, NiSi0.5O2, CaSiO3, Na2SiO4, KAlSiO4, Ca3(PO4)2) and we only have mu and mu0 for these molecules, not for the oxides. It is straightforward to compute mu for the oxides because the liquid is in equilibrium and so, for example, mu(CaO) + mu(SiO2) = mu(CaSiO3). But the same statement is not true for the end members: mu0(CaO) + mu0(SiO2) ≠ mu0(CaSiO3), because pure CaO, SiO2, and CaSiO3 liquids are NOT in equilibrium with each other. That means MELTS *does not know* the standard state chemical potential of CaO and therefore cannot convert the chemical potential of CaO into activity of CaO.

My advice is try to be satisfied with, for example, activity and activity coefficient of CaSiO3 and figure out how to avoid needing activity coefficient of CaO. If you really want this you have to introduce an external (probably not MELTS-compatible) function for standard state chemical potential of pure CaO liquid.

OK, that was pretty heavy. If you need further explanation please ask.

We do our best job of this calculation in the MATLAB and python versions of melts, rather than in alphaMELTS proper.

zhudan

Hi Paul,
when I add a line, "Output: both" in the morb.melts file for example, Alphamelts always shown "Error during input file read, offending record: 'output: bot' ", when Alphamelts reading the melts file. Thanks in advance.

Paula

"Output: both" is for alphaMELTS 2 and alphaMELTS for MATLAB/Python only.

If you're on alphaMELTS 1.9 then have a look at menu option 14 - "Write thermodynamic output for all phases".

zhudan