News:

alphaMELTS 1.9 is available at the download and information site.
alphaMELTS 2 standalone & for MATLAB/Python are available on request
(see the Version 2 tab on the download site for more details).
For news of all MELTS software see the MELTS Facebook page.

Main Menu

Phase diagram mode

Started by grantmcox, September 26, 2013, 11:04:59 AM

Previous topic - Next topic

grantmcox

Have been trying to generate a phase diagram for the following bulk composition. While I can successfully track Garnet, Ol, CPX I can not get alphamelts to track the liquid at F=0.005 or at the liquidus (F=0.995). Have tried going up pressure, down pressure and changing the size of the delta P steps but with no luck. Normally I have found that tracking the liquid in phase diagram mode is the easiest.


The composition being used is:
Initial Composition: SiO2 49.5
Initial Composition: TiO2 0.93
Initial Composition: Al2O3 15.46
Initial Composition: FeO 10.05
Initial Composition: MnO 0.16
Initial Composition: MgO 11.85
Initial Composition: CaO 9.77
Initial Composition: K2O 0.31
Initial Composition: Na2O 1.90
Initial Composition: P2O5 0.08
Log fO2 Path: FMQ-1

And the environment settings are:

ALPHAMELTS_MAXP 40000
ALPHAMELTS_MINT 500
ALPHAMELTS_MAXT 2400
ALPHAMELTS_VERSION pMELTS
ALPHAMELTS_DELTAP -10
ALPHAMELTS_DELTAT 0
ALPHAMELTS_MINP 10
ALPHAMELTS_MODE isentropic

Does anyone have any suggestions?

On a related issue in phase diagram mode I have never been able to track plagioclase, I have been forced to run multiple isobaric calculations to track this phase boundary, is there some trick to tracking plagioclase in phase diagram mode?

Cheers
Grant

Paula

Hi Grant,

It's not the main issue but in alphaMELTS to get 'FMQ-1' you actually have to enter:

Log fO2 Path: FMQ
Log fO2 Delta: -1.0

In a future version of alphaMELTS I'll make it read all melts_files lines that the graphical user interface accepts (including "Log fO2 Path: COH", which isn't included in alphaMELTS at the moment). Note that in the GUI it still needs to be:

Log fO2 Path: -1FMQ

"FMQ-1" is interpretted as "FMQ" by the input routines as they process each line until 'successful' but don't generally check for anything spurious after. Unless a line is ignored or causes an error, alphaMELTS prints the whole line as having been successfully read. It would be better to print only the characters that have been converted to values but that's something I'll implement another time...

Another thing is that MnO is not calibrated in the pMELTS liquid so shouldn't be included as an oxide. K2O and P2O5 are calibrated but there few solid phases in MELTS / pMELTS that incorporate K or P. So it is often more helpful to treat these as trace elements for mantle melting type calculations. Anyway, even with K and P as oxides I could not reproduce the problem with calculating the liquidus (as F=0.995) for P >= 1 GPa. For F=1 I had to use the 'troublesome phases' option but then it worked fine.

I did have trouble calculating the (effective) solidus curve, whether K and P were input as oxides or as trace elements. That's not really all that surprising as the bulk composition is out of the calibrated range. The experimental dataset used to calibrate pMELTS was predominately for peridotites. pMELTS works well for silica-deficient pyroxenites too (e.g. MIX1G) but I think the composition given here plots on the silica-excess side of the thermal divide. I may well have made a mistake though - I hate norm calculations! For F=0.1, with K and P as trace elements, pMELTS predicts the silica content of the melt is ~50 wt% at 1 GPa but close to 80 wt% at 4 GPa. Mineral phases are garnet, cpx, and quartz / coesite so we are definitely out of pMELTS' comfort zone.

When pMELTS was calibrated, the standard state properties of the liquid end members were adjusted to make things work better in the region of interest (specifically 'with the goal of minimizing the temperature dependence of model residuals both globally and for individual mineral-liquid pairs'). As the enthalpy of the TiO2 liquid end member was reduced this affected the stability of rutile. This, and other adjustments, are not problematic for compositions that pMELTS is intended for. But for silica-excess pyroxenites (e.g. G2) there can be an artefact that the melt becomes increasingly rich in TiO2 at low melt fractions. It is difficult it to find the solidus and the results would not be meaningful anyway. So unfortunately there is not much advice I can offer other than to stick to high melt fractions or, better, avoid using this composition in pMELTS.

For tracking plagioclase, I don't recall any particular tricks but it's not something I've tried much. I did have to make a grid, a bit like you describe, to calculate lines of constant aH2O (the blue lines) in the plagioclase field of the pHMELTS solidus surface. (Paul's original figure in the pHMELTS paper was for Hart & Zindler's bulk composition; this was an update using Workman & Hart.) At the time I thought it was just that phase diagram mode is more difficult at low pressures, because there is lots of exsolution etc. going on, rather than a specific issue with plagioclase. Have you tried searching in pressure instead of temperature? Anyway, if you send me a composition and set of conditions that you know doesn't work then I'd be happy to have a go.

Cheers,
Paula

P.S. As as aside to other users, if you copy and paste the composition and environment settings from above and try to run the calculation you may encounter a failure message "Error in redlichKwong(). Bad exit value!". The message is coming from the routines that handle the properties of H2O in the melt (although this particular composition is anhydrous) but the underlying problem is that the initial pressure and temperature have not been set... Add suitable lines to the melts_file or set them manually; either way, you will need to read the melts_file again to clear the error before using options 2, 3 or 4.

phil_kennedy

Hi Paula,
I'm having a similar problem, except that when I change Mn, K and P to trace elements as you suggest the program cannot produce a solidus curve (F=0.1), whereas it can when they are left as oxides.
The reason I changed them in the frst place to trace elements was to get rid of the annoying whitlockite phase.

Here's my composition that did work:
Initial Composition: SiO2 47.99
Initial Composition: TiO2 2.06
Initial Composition: Al2O3 13.39
Initial Composition: Fe2O3 1.28
Initial Composition: FeO 7.80
Initial Composition: MgO 14.87
Initial Composition: CaO 10.39
Initial Composition: Na2O 1.77
Initial Composition: MnO 0.15
Initial Composition: K2O 0.08
Initial Composition: P2O5 0.21
Initial Temperature: 1500
Initial Pressure: 20000
log fo2 Path: None

And here's the composition that didn't work:
Initial Composition: SiO2 47.99
Initial Composition: TiO2 2.06
Initial Composition: Al2O3 13.39
Initial Composition: Fe2O3 1.28
Initial Composition: FeO 7.80
Initial Composition: MgO 14.87
Initial Composition: CaO 10.39
Initial Composition: Na2O 1.77
Initial Trace: Mn 1161.69
Initial Trace: K 663.53
Initial Trace: P 916.40
Initial Temperature: 1500
Initial Pressure: 20000
log fo2 Path: None

Finally here's my settings:
ALPHAMELTS_MODE          isentropic
ALPHAMELTS_DELTAP -100
ALPHAMELTS_MAXP 20000
ALPHAMELTS_MINP 5000
ALPHAMELTS_DELTAT        0
ALPHAMELTS_MINT        1000
ALPHAMELTS_MAXT      1500
ALPHAMELTS_OLD_SPINEL true
ALPHAMELTS_CELSIUS_OUTPUT true
ALPHAMELTS_SAVE_ALL true

If you can shed any light on the matter I would be very grateful, otherwise I could just leave them as oxides and hope for the best!
Thanks,
Phil

Paula

#3
Hi Phil,

Sorry for the delayed reply (pre-AGU build up). I had a go running the files you posted. I see what you mean about the trace element version not working.

As you are using pMELTS, the oxide version should not include MnO. K2O and P2O5 can be used though. Putting K as a trace element makes little difference. Feldspar is stable at F=0.1 for much of the pressure range so some K goes into that. The K2O content is low enough that it isn't exerting too much leverage on the feldspar stability (e.g. compare Cr2O3 and spinel). Making K a trace element won't help with getting rid of whitlockite. So I would tend to leave it as an oxide if it seems to be working.

Putting P as a trace element, it ran for several iterations before crashing. I'm not quite sure what's happening but it seems to be something to do with the routine that detects phase saturation. If you look at the Phase_mass_tbl.txt output for the version with P as P2O5 (leave K as K2O but make sure MnO has been deleted) you can see that the algorithm is failing to detect opx saturation. You can tell it is having problems because, when opx is finally added to the assemblage, a lot (~4g) comes in at once and there is a slight kick in the P-T curve. For P as a trace element there will be subtle differences in the saturation surfaces versus P as P2O5. Olivine is stabilised in the P-trace-element run but this probably only happens because the saturation routine is failing for opx. It's probably not a coincidence that the P-trace-element run crashes at the same pressure that the P-as-P2O5 run suddenly adds lots of opx to the assemblage.

The whitlockite phase is kind of annoying, though it's really just there to provide an anhydrous calcium phosphate phase. In nature, where things are not truly anhydrous or fluorine- or chlorine-free etc., the accessory mineral would usually be apatite. So you can think of it as apatite or, if you want to get rid of it, you can add a 'Suppress: whitlockite' line to your melts file. That will run fine, though it doesn't fix the underlying problem that alphaMELTS is not detecting opx when it should. Rhyolite-MELTS has faster and more reliable routines for detecting general and specific phases, including pyroxenes (see Ghiorso 2013). After the AGU Fall meeting I'll be incorporating those routines into the next version of alphaMELTS (see the Library tab on the alphaMELTS website).

Sorry not to be of more help.

Cheers,
Paula

phil_kennedy

Hi Paula,

First of all thanks for the reply and time you took on my problem!

I'm using alphaMELTS for my masters project, investigating the effect of differing alkali compositions on the crystallized product. (I was trying to reproduce the results of Green and Ringwood 1966 to get to grips with the program),  Do you think pMelts is suitable enough, or should I wait for the next version?

Thanks again,

Phil

Paula

Hi Phil,

Given the time-frame for your project, I would stick to the current alphaMELTS. I will be going on leave towards the end of January 2014 so, whilst I will endeavour to get a beta version of alphaMELTS 2 / libalphaMELTS out by then, I can't promise to support it well for the few months I am off. The first libalphaMELTS version should be capable of the kind of calculations you are describing (without trace elements but those don't affect the results anyway). It's a major rewrite though, so there are bound to be some early bugs that will take a while to work through.

There are some workarounds for the phase-saturation problems, although they are a bit of a pain. For the Green & Ringwood example, keeping the P as P2O5 and optionally suppressing whitlockite looks like it works well enough. If that kind of approach doesn't work for a particular calculation or you find that a 'wrong' phase tends to join the assemblage (like the olivine in the P-as-a-trace-element example) then you can try something like the following:


  • Make sure ALPHAMELTS_SAVE_ALL is set to true.
  • Suppress the 'wrong' phase (olivine in this example).
  • Set ALPHAMELTS_MINP to be slightly lower than the pressure where the correct phase (opx in this example) actually comes in.
  • Do initial calculation, turn on phase diagram mode etc. as normal and then set it going with option 4.
  • When it stops, choose option 2. Set ALPHAMELTS_DELTAP to a positive value and ALPHAMELTS_MAXP to the approximate pressure where the correct phase should come in. Obviously, this is going to take a little trial and error.
  • Run option 4 again. The correct phase will usually stay in the assemblage fine.
  • Choose option 2 again. Reset ALPHAMELTS_DELTAP to a negative value and ALPHAMELTS_MINP to the value you really want.
  • Use option 8 to 'unsuppress' the wrong phase, in case it should join the assemblage at lower pressures.
  • Run option 4 a final time.

You'll need to edit the output files a bit to remove the extra lines. You can also use the same kind of procedure for melting and crystallisation, though if it an open system then things are a little more complicated. For example, for a fractional crystallisation run you might try something like this:


  • Make sure ALPHAMELTS_SAVE_ALL is set to true.
  • Initially set ALPHAMELTS_MINT to be approximately the temperature where the correct phase should come in. Obviously, this is going to take a little trial and error.
  • Do initial calculation as normal and then set it going with option 4.
  • When it stops, choose option 2 and reset ALPHAMELTS_MINT to the value you really want. It's important that you do this before the next bit or you'll be cursing later.
  • Alternate between options 2 and 3 to reduce the temperature in reasonably small steps until the correct phase joins the assemblage. No solids are fractionated during a single, option 3, calculation.
  • Alternate between options 2 and 3 to increase the temperature to a value just lower than the initial ALPHAMELTS_MINT value. The correct phase will usually stay in the assemblage fine.
  • Use option 8 to 'unsuppress' the wrong phase, in case it should join the assemblage at lower temperatures.
  • Run option 4 a second time. It will start removing solids after each equilibrium calculation.

Alternatively, you could try the Rhyolite-MELTS graphical user interface, which also includes pMELTS. The improved routines for detecting phase saturation are used in the GUI for both the Rhyolite-MELTS and pMELTS models. If you are on Windows then you could try the VirtualBox version of alphaMELTS as it comes with Rhyolite-MELTS; see the alphaMELTS download site for more information.

Best,
Paula

phil_kennedy

Thanks again for the support! You're right it's probably best I stick to pMelts with the time I have.

I have one final question if you'll put up with me(!):

Currently I am trying to track the multiple saturation point of Ol/Opx/Cpx up pressure with the addition of olivine (at a constant Mg#). Is there a way to do this using amoeba or something else? The only other way I can think of is manually performing phase calculations for each slightly different composition?

Many thanks! (you'll be getting a dedicated acknowledgement section)


Paula

Hi Phil,

Sorry again for the delay in replying. I'm not sure whether I'm quite understanding what you are trying to do but I don't think amoeba will be able to do it directly. It's fairly easy to automate multiple similar calculations in alphaMELTS with a batch_file and / or a table_file though. You can probably use the reverse fractionation mode to calculate the compositions you need (but the Mg# of the olivine would evolve as you add more, which might not be what you want). You can speed up the search for the multiple saturation point by setting ALPHAMELTS_METASTABLE_ISOGRAD to true for the phase diagram bit. If you let me know a bit more what you are trying then hopefully I can give a better answer.

Cheers,
Paula