This page lists recent changes and bugs in Perple_X. If a bug is indicated for a program that you do not use, then you need not concern yourself with the bug, i.e., the programs are independent.

When bugs are found the Windows version of Perple_X is updated immediately. LINUX versions of Perple_X that are updated daily by an automatic script are available from a remote site. LINUX and OSX versions at this site are updated as indicated by the date in the relevant archive file name.

Known Current Problems

SPECIAL COMPONENT ERROR: Perple_X thermodynamic data files may identify certain components as special, typically H2O and CO2. Such components are associated with an internal equation of state selected by the user. If a thermodynamic data file specifies more than one special component, and the user elects to calculate phase relations of a system consisting entirely of any special component other than the first special component, Perple_X will terminate with the error message **error ver013** ##### is an incorrect component name, valid names are: ...", where ##### are blank characters. E.g., it is not possible to calculate a phase diagram for pure CO2 if H2O is the first special component a#Oct_8_15nd CO2 is the second. A workaround solution to this problem is to specify an additional component in the problem definition file and set its amount to zero.  

PSTABLE on OSX: eliminated? The version of PSTABLE compiled with the INTEL fortran compiler for OSX crashes with a segmentation fault if it is used to plot 2d tables generated with WERAMI. Workaround solutions to this problem are to use: 1) MatLab or PyWerami plotting scripts; 2) the GNU fortran OSX version; 3) the WINDOWS version with a WINDOWS emulator; or 4) some other plotting program (e.g., Excel).

POSTSCRIPT PLOTTING: Perple_X generates encapsulated PostScript that includes fonts that are no longer supported on some graphics programs. If you view Perple_X PostScript output with Ghostview/Ghostscript you may need to downgrade the Ghostscript standard font package (e.g., to version 6.00; TC Chust, LMU). If you don't want to work out how to do this, and use WINDOWS, then install the Ghostview/Ghostscript versions archived here. If you encounter problems importing Perple_X postscript into Adobe Illustrator or CorelDraw, then the workaround-solution from JC Schumacher (Bristol) may be helpful (see also font). Perple_X PostScript images can be redrafted in Idraw, a program installed with the Ivtools free software package.

HOLLAND AND POWELL'S "EQUIPARTITION" CONSTRAINT: In older THERMOCALC pyroxene, talc, amphibole and chlorite models, Holland and Powell imposed the constraint that Fe/(Fe+Mg) must be identical on certain sites with otherwise differing chemistry. This constraint is not imposed in the Perple_X derivatives of these models [Omph(HP), Chl(HP), Amph(DPW), Gt(WHP), T, etc.]. As a consequence stability fields calculated for Fe-bearing systems involving these phases with THERMOCALC and Perple_X are not identical. The THERMOCALC "equipartition" constraint is not implemented in Perple_X because the constraint is thermodynamically inconsistent (Holland & Powell JMG, 2007). This situation poses a metaphysical dilemma for Perple_X users, specifically: whether it is preferable to implement the existing models as calibrated, even though they are not thermodynamically consistent (as done in THERMOCALC) or to implement only those components of the model which are consistent at the risk of losing the fidelity of the original model calibration (as done in Perple_X). Equipartition affects configurational entropy and has its maximum effect when a solution is iron-rich, whereupon it causes configurational entropy changes of ~1 J/K per-mol-affected-site. Thus, for temperatures of ~1000 K, equipartition may change the Gibbs energy of a solution on a kJ-per-mol-affected-site order of magnitude, whether such a discrepancy is significant depends on the magnitude of the other parameter uncertainties relative to this value. Computed phase relations illustrating the magnitude of the discrepancy are at comparison. The equipartition dilemma will gradually be resolved with the introduction of new models derived without assuming equipartition [e.g., Omph(GHP), cAmph(DP), oAmph(DP), Bio(TCC)].

UNIX/LINUX/OSX: Data files at this site are usually stored in DOS format, these files may not translate well onto UNIX operating systems because of carriage return/line feed characters, sometimes visible as "^M" characters. In such cases, UNIX users must convert Perple_X data files to UNIX format (see README_UNIX_USERS.txt). Be sure to check that the last line of any converted Perple_X data file terminates with a carriage return (if you have doubts, then add a blank line at the end of converted files).

Nov 24, Various Modifications/Corrections:

1) VERTEX bug: a bug has been eliminated that caused calculations of Schreinemakers diagrams to fail if the calculation specified both saturated phase and mobile components.

2) C-O-H solution model (COHF) for modeling graphite/diamond precipitation: brief instructions for the use of this model are at

3) Eskol(C) solution model excess function corrected in solution_model.dat.

Oct 30, Various Modifications/Corrections:

1) VERTEX/MEEMUM bug: a poorly handled error corrupted memory causing subsequent optimizations to fail. The error was indicated by the message "I am gonna crash and die, but why?". VERTEX/MEEMUM now have an error trap that prevents subsequent optimizations from failing.

2) WERAMI/MEEMUM bug: the name(s) of the ordered species was omitted in species fraction output. The error has been corrected.

3) VERTEX Print File Output: for convexhull optimization calculations (unconstrained minimization) the title for the list of saturated composants was omitted. The title has been reinstated.

4) HP11ver_metal.dat: H2 and O2 have been added as special components permitting the use of fluid saturation constraints with this data base. 

Oct 8, Perple_X 6.7.2, sup92ver.dat format error: The numeric code used to indicate the type of heat capacity transition used for phases in the SUPCRT data base file (sup92ver.dat) was set incorrectly. The code (formerly type = 1) has been corrected (type = 2 or type = 3, as appropriate). The error was introduced with the 6.6.+ version of Perple_X (ca 12/2010).

Aug 18, Perple_X 6.7.2, cr_hp02ver.dat corrections:

Modifications to cr_hp02ver.dat on July 13 propagated two typographical errors in Ziberna et al. (2013, CMP). The errors have been corrected in the 6.7.2 versions of cr_hp02ver.dat and solution_model.dat. 

The errors are:

1) The excess free energy knorringite-pyrope interaction term in the CrGt solution model is indicated as 30 kJ/mole, but should be 3 kJ/mol. This typographical error was corrected in an erratum (Ziberna et al., CMP, 2014) to Ziberna et al. (CMP, 2013). The error had the consequences that the CrGt solution model was destabilized and predicted immiscibility at plausible mantle temperatures.

2) Ziberna et al. (CMP, 2013) indicate that the composition of the Cr-Cpx endmember (ccrts) is MgCr2SiO6, consistent with the composition indicated by Klemme at al. (2009). However, the original data compilation gives the composition of ccrts as CaCr2SiO6. The MgCr2SiO6 stoichiometry stabilizes clinopyroxene at the expense of spinel resulting in phase equilibria that are inconsistent with Klemme et al. (2009) and Ziberna et al. (2013); computations with the CaCr2SiO6 stoichiometry reproduce the published phase relations.

Jul 15, Perple_X 6.7.2, bugs: 1) a typo that caused a misaligned common block has been corrected (July 14). The typo was introduced into the code on July 1. The error had the potential to cause a segmentation fault hard crash. 2) an error similar to (1), but specific to FLUIDS was corrected July 15. 3) a format error in the option banner caused MEEMUM to crash, corrected July 15.  

Jul 13, Perple_X 6.7.2, Various modifications:

WERAMI/MEEMUM now optionally (species_output) output solution compositions in terms of the solution model species and/or endmembers.

The perplex_option.dat composition keyword has been replaced by two keywords (composition_phase, composition_system) permitting the user to specify different units for system and phase compositions. The prompts for the incorporation of a constant in the terms of user-defined compositions in WERAMI has been made optional (composition_constant).

The cr_hp02ver.dat thermodynamic data file has been updated to be consistent with the changes suggested in Ziberna et al. (2013, CMP). Duplicate entries have been eliminated from the hp11ver.dat and metal_mix.dat 6.7.2 thermodynamic data files. The solution model code (KSMOD) for mixed-species ideal vapor (ideal_gas) in solution_model.dat has been changed from 27 (special model) to 0 (normal model).

Jun 9, Perple_X 6.7.2 Version: corrects the bugs added yesterday (I hope).

Jun 7, Perple_X 6.7.2 Version: The data file format (i.e., 6.7.2 data files) for this version includes features that cannot be read by earlier versions.

Perple_X 6.7.2 adds a new option, solution_names, to perplex_option.dat, which allows the user to specify abbreviations and full names for solution models. Because the abbreviations and full names are used only for output the abbreviation (e.g., Gt) and full_name (e.g., garnet) for a solution model need not be unique, unlike solution model names (e.g., Gt(CGT), Gt(HP), Gt(B)).

A reason for using abbreviations (or full names) rather than solution model names is to make Perple_X output more compact and/or readable. A reason for NOT using abbreviations is the users choice of solution models is not apparent from Perple_X output.

Full names, if present in the solution model file, are used by BUILD to provide the user with a sorted list of solution models (e.g., all models identified by the full name 'garnet' are listed as a group).

Abbreviations and full names have been added to the 6.7.2 version of solution_model.dat and are indicated by the keywords abbreviation and full_name after the solution model name. Abbreviations must be < 7 characters and full names must be < 23 characters, neither may include blank characters. There are no other rules for abbreviations or full names, they may be changed or added for the users convenience.

May 17, Machine precision bug: Perple_X 6.6.7 (2/2012) added code intended to compute the smallest number distinguishable from zero by addition on a users computer. The resulting threshold was too optimistic for testing matrix inversion singularity. The threshold has been increased by an order of magnitude.

The bug was a source of numerical instability that caused Perple_X to crash or generate erratic results. The bug was detected in the calculation of a Schreinemakers projection (convexhull optimization) it is unlikely that the bug affected other types of calculations.

Apr 11:

Adaptive optimization change: the change made on March 4, 2015 that allowed Perple_X to refine compositions around stoichiometric endmembers has been undone. In principle it is desirable to allow Perple_X to refine compositions around stoichiometric endmembers, but the March 4 version was not robust.

Typos in the hp11_solutions.dat solution model file: Felix Gervais corrected typos in the St(W), Bi(W), and Opx(W) solution models. The typo in the St(W) model have caused Perple_X to underestimate Mn-solubility in staurolite; the typos in the Bi(W) and Opx(W) caused Perple_X programs to crash.

Apr 3:


Symptom: typically the bug resulted in strips of pressure-temperature conditions where no data was output, e.g., a strip roughly coincident with the alpha/beta quartz transition in a calculation where quartz was stable.

When: The bug was introduced in the 6.7.0 version of Perple_X on June 2, 2014 and persisted into the 6.7.1 version. Calculations made with these versions VERTEX need not be repeated to eliminate the problem, i.e., it suffices to reprocess old calculations with the new version of WERAMI. 

Cause: an error trap prevented the programs from outputting data if the Poisson ratio of a phase was negative. In principle, this behavior is desirable, however in some circumstances it results in suppression of valid data. Specifically, in the various Holland & Powell data bases (the hpha02ver.dat file is an exception), shear moduli are computed from empirical functions, whereas bulk moduli are computed from the thermodynamic EoS (provided "explicit_bulk_modulus" is false in perplex_option.dat). If the thermodynamic EoS invokes the Landau model to describe order-disorder phenomena (e.g., as is the case for ilmenite and quartz in Holland & Powell data bases), then the resulting bulk modulus of a phase drops rapidly near the disordered limit,  but empirical functions almost invariably do not account for the corresponding effect in the shear modulus. Thus, the negative Poisson ratio that may result from this behavior reflects a failing of the empirical shear modulus function and, although it is indicative of problematic seismic wavespeeds, it is not indicative of a failing in the isostatic EoS. For this reason the error trap has been made optional (poisson_test in perplex_option.dat), with the default setting being that the error trap is disabled (poisson_test = F). 

The option poisson_test should only be used for applications where the integrity of calculated seismic wavespeeds is a primary concern.

Pitzer & Sterner fluid EoS (PSEoS) Bug: This equation of state failed to converge for CO2-bearing fluids at high pressure (p > 6 GPa) due to a poor starting guess for the molar volume of CO2. The failure has been corrected. 

Mar 5, Various Modifications/Corrections:

1) Debye integral (Jan 18): the Debye integral polylog function was formerly expressed by a series approximation fit to a maximum temperature of five times the Debye temperature. The polylog function is now evaluated explicitly. This change permits evaluation of the Debye integral at any temperature and extends the range of temperatures over which the mantle thermodynamic data bases (sfo05ver.dat, stx07ver.dat, stx08ver.dat, and stx11ver.dat) compiled by Lars Stixrude and coworkers can be used. 

2) RKCOH6 Fluid Eos #27 added (Jan 26): this EoS permits calculations for unbuffered systems in which a ternary COH fluid is a possible phase. RKCOH6 is a hybrid of the MRK, HSMRK (Kerrick and Jacobs 1981), and Pitzer & Sterner (PSEoS, 1994) equations of state. The MRK is used to compute fluid species activities and the HSMRK and PSEoS are used for pure species fugacities (see below).

3) Hybrid Fluid EoS (#2, #7, #9, #10, #11, #16-#20, #27) (Jan 26): the default pure fluid EoS used in Perple_X hybrid EoS for H2O and CO2 has been changed from CORK (Holland & Powell 1998) to PSEoS (Pitzer & Sterner 1994). HSMRK is used, as before, for CH4 and MRK for all other pure species. 

4) hp11_solutions.dat, hp11ver.dat: various corrections and additions have been made by Mark Caddick, Felix Gervais, and Pierre-Henry Trapy to the hp11_solutions.dat solution model file. The models have been successfully benchmarked by comparison with the calculations in White et al. (JMG, 2014). The changes include some make definitions that have been added to the thermodynamic data file hp11ver.dat. 

5) FLUIDS (Mar 4): the H2/O2 independent potential prompt has been suppressed.

6) CALPHAD Cp function (Mar 4): the default isobaric heat capacity function has been modified to include the T^3 term often used in CALPHAD compliant thermodynamic data. The tag for the T^3 coefficient is "c8".

7) Adaptive optimization (Mar 4): formerly solution compositions corresponding to a stoichiometric endmember were not refined and only one metastable stoichiometric compound was included in the list of nearly stable phases considered during iteration. Stoichiometric endmember compositions are now refined and two metastable stoichiometric compounds are added to the list of nearly stable phases. These changes stabilize calculations in highly degenerate systems, but will have little or no effect for typical problems.

8) Chemical potential bug (Mar 5): a bug, which prevented WERAMI and MEEMUM from outputting chemical potentials for calculations involving only stoichiometric compounds or in which adaptive minimization was turned off, has been corrected. 

Dec 10, Various Modifications/Corrections:

WERAMI: expressions for user defined compositional variables may now include constants (Dec 10).

WERAMI/MEEMUM: if explicit_bulk_modulus was set to true, then MEEMUM/WERAMI did not output the correct temperature and pressure derivatives of elastic moduli.  This error did not affect moduli or wavespeed calculations by MEEMUM/WERAMI (Nov 27). 

VERTEX/WERAMI/PSSECT: a bug that caused the x- and y-node grid parameters to be interchanged in 2-d gridded minimization calculations has been corrected (Nov 16).

VERTEX: the default solvus tolerance for composition phase diagram calculations was widened (Oct 17).

hpha02ver.dat: the elastic moduli of the following minor solution endmembers: rieb, fanth, grun, ged, fcel, ma, pa, mnbio, ames, afchl, mnchl, mft, usp talc: fta, tats and chr were changed to match the corresponding major endmember (Nov 27). See for additional information. 

hp02ver.dat: the eos flag of gaseous endmembers was changed so that the endmember equation of state defaults to an ideal gas rather than to no equation of state (Nov 26). 

Sep 18, WERAMI Bug and Perple_X 6.7.1:

WERAMI BUG: a bug that led WERAMI to output incorrect molar phase compositions was caused by an error trap that was intended to shut off interpolation if a physical property of a stable phase was judged incorrect. The error trap reset physical properties correctly, but did not reinitialize phase compositions with the result that the molar formula unit for phases affected by the bug was multiplied by a factor between 1 and 2. Activation of the error trap was indicated by the obscure console message:

"turned off at : #1 #2 #3"

where #1 = temperature (K), #2 = pressure (bar) and #3 = log10(P) at which the error trap was activated. It is likely that the error trap was activated most frequently at low pressure-temperature conditions. The bug would have been manifest by erratic molar phase compositions. The bug did not have any significant effect if the perplex_option.dat "composition" keyword was set to "wt" and the bug did not occur if the "interpolation" keyword was set to "off".

The bug was introduced into the code August 28, 2013 and has been present in all versions of Perple_X generated since that date. The bug has been corrected in the Perple_X 6.7.1 (see August 13 description)revision put on line as of this date. This revision also has an improved algorithm to compute the finite difference increments used to estimate physical properties. This improvement should stabilize the calculation of physical properties, effectively eliminating the conditions the error trap was intended to identify. Additionally, the error trap has been eliminated because, for most purposes, the benefit of resolving phase compositions by interpolation outweighs the irritation caused by missing 2nd and 3rd order physical properties. 

Aug 14, Paralyzer Upgrade: see

Aug 13, Perple_X 6.7.1 BETA (test) Version: Previous versions of Perple_X rejected solution phase endmembers that consisted entirely of constrained components (i.e., saturated components, saturated phase components, and/or mobile components) from phase equilibrium calculations. For example: (1) the H2O endmember of hydrous silicate melt models was eliminated (resulting in an anhydrous model) if H2O was specified as a saturated component or saturated phase component or if phase relations were computed as a function the chemical potential, activity, or fugacity of H2O; and (2) in a calculation as function of the chemical potentials (or actvities, and/or fugacities) of MgO and SiO2, the enstatite endmember of orthopyroxene would be rejected resulting in an unrealistic model for orthopyroxene solution. The 6.7.1 revision eliminates this restriction. 

Saturation surfaces in phase diagrams as a function of the chemical potential (or activity or fugacity) of mobile components: a saturation surface marks the conditions at which a phase (or collection of phases) that consist entirely of mobile components becomes stable. Phase equilibria at chemical potentials higher than those of the saturation surface are metastable, e.g., in calculations as a function of the chemical potentials of H2O and CO2, the saturation surface marks the conditions at which an H2O-CO2 fluid becomes stable. Former versions of Perple_X did not automatically compute saturation surfaces, in 6.7.1 the saturation surface is computed automatically in unconstrained minimization (typically used for the calculation of Schreinemakers projections) calculations, but it is not computed in constrained minimization (typically used for calculation of sections by gridded minimization) calculations. A simple means of locating the saturation surface for a constrained minimization calculation is to compute the saturation surface by unconstrained minimization and superimpose this result on the diagram obtained by constrained minimization.

WARNING #1: Because 6.7.1 involved changes to old, chaotic, portions of the Perple_X code, there is a high probability that the changes have introduced new bugs. To emphasize this probability, the current version is identified as a BETA (i.e., test) version. You should not use this version if you do not feel confident that you are capable of recognizing spurious results.

WARNING #2: In unconstrained minimization calculations as a function of chemical potentials it is essential that the minimum values of the independent chemical potentials for a calculation must lie within (i.e., below) the saturation surface. If this is not done, Perple_X will halt with an error message indicating that it could not trace any stable phase equilibria. If the conditions on the saturation surface are not known a priori, this problem can be avoided by making an initial exploratory calculation with low minimum values of the independent chemical potentials.

WARNING #3: Because 6.7.1 permits solution endmembers in the constrained component composition space (CCCS), component saturation constraints may lead to unintended and/or thermodynamically inconsistent results and should be used with caution. As a general rule, users should not saturate with respect to a component if, at the physical conditions of interest: (1) the range of stable compositions for a solution may extend from the thermodynamic composition space into the CCCS; or (2) stable solution behavior may occur within the CCCS. Example of caveat (1): if H2O is specified as a saturated component, then, at conditions at which the water endmember of a silicate melt model becomes the stable H2O composant, the amount of the melt phase may become infinite. The reason for this behavior is that the melt can only have the chemical potential of the pure water endmember if all other melt endmembers are infinitely dilute and, because the saturation constraint implies the existence of an infinite H2O reservoir, any silicate component that is soluble in water will be dissolved entirely in the melt. Caveat (2): solution behavior entirely within the CCCS is permitted, but only if the component saturation hierarchy is specified in such a way that all compositions of a solution project onto the composition of a single saturated component. For example, for the component saturation hierarchy O2-TiO2-FeO ilmenite-hematite is a possible solution because, after projection through O2 and TiO2, ilmenite-hematite solution lies entirely in the FeO subcomposition; whereas for the component saturation hierarchy O2-FeO-TiO2 retention of the ilemenite-hematite solution is potentially inconsistent because after projection through O2, the solution spans the FeO-TiO2 subcomposition. Perple_X cannot identify inconsistent component saturation constraints and therefore does not warn the user of potential inconsistencies. 

Bugs Eliminated in 6.7.1:

PSSECT - if PSSECT was instructed to display only phase fields containing a particular phase assemblage X-Y-Z, where X, Y and Z represent distinct phases and immiscibility occurred in one or more of these phases, then it would also display any phase field containing a subset of the requested phases provided. For example, it would  display phase fields such as X-X-Y and X-X-Z, where the two occurrences of X were immiscible compositions of the solution phase X.

Calculations with both mobile and saturated components - in calculations involving both mobile and saturated components, Perple_X did not project phases in the saturated component space through the mobile components. The error had the consequence that for such calculations Perple_X did not necessarily identify the phases determined by the component saturations constraints as a function of the chemical potential of a mobile component. For example, if Al2O3 was specified as a saturated component, H2O specified as a mobile component, and corundum and diaspore allowed as possible phases in the saturated component space, Perple_X did not correct the free energy of diaspore for the chemical potential of water. The failure to make this correction led to an excessive stability field for diaspore relative to corundum.

Jul 2, 2014, Perple_X 6.7.0 bug: A coding error in the 6.6.9 revision that persisted into the 6.7.0 revision caused VERTEX/MEEMUM to halt calculations involving Stixrude & Lithgow-Bertelloni's (2011) Garnet solution model (i.e., model type flag 5). The error has been corrected.

Jun 2, 2014, Perple_X 6.7.0 bug: A coding error in the 6.7.0 revision caused, or had the potential to cause, VERTEX/MEEMUM to stop calculations involving solutions with two or more ordered species. The programs halted with the error message:

**error vertex** unspecified error ier=999
real= #.#####
i= ######
char= unanticpated correlation between ordered species

The error has been corrected.

May 5, 2014, Perple_X 6.7.0: This revision includes minor modifications necessary to accommodate the order-disorder solution models of White et al. (JMG 32:261-286, 2013). Most of these solution models, which are calibrated for the Holland & Powell (2011) data base (hp11ver.dat), are entered in the solution model file hp11_solutions.dat. The chlorite (Chl(W)) and orthopyroxene (Opx(W)) models of White et al. (2013) have also been added to the default solution model file solution_model.dat

Mar 7, 2014, Perple_X 6.6.9: This revision modifies the way solution models with missing endmembers are reformulated in Perple_X. The modification was necessary to correct a bug that caused incorrect results if the Diener et al. (2007, 2012) amphibole models (cAmph(DP), cAmph(DP2), oAmph(DP), oAmph(DP2)) were used to compute phase relations in the MgO-FeO-SiO2-H2O system (this bug only occurred in calculations that did not include additional amphibole components, e.g., for calculations in the CaO-MgO-FeO-SiO2-H2O system phase relations were computed correctly for the MgO-FeO-SiO2-H2O subsystem). The 6.6.9 version can be used with 6.6.7 and 6.6.8 data files and MatLab scripts. The 6.6.9 revision includes various minor modifications:

* Redlich-Kister and Margules polynomials can now be read in their original form from the solution model file, formerly these polynomials had to be expanded as ordinary polynomials.

* FLUIDS now outputs partial molar volumes.

* FRENDLY now can be used to compute properties along an arbitrary path.

* EoS flags 100-120 can now be set to compute the properties of pure molecular fluids in the C-O-H-N-S-Si system.

* the polynomial coefficients used for this high pressure MgO-SiO2-H2O Komabayashi & Omori (PEPI 156:89-107, 2006) data base are now read with EoS flag 13.

* A solution model (Chl(LWV): Lanari, Wagner & Vidal, CMP 2014 167:968) that accounts for the sudoite substitution in chlorite has been added to solution_model.dat.

* The enthalpy of ordering for the scapolite solution model (Scap) of BK Kuhn (ETH dissertation, 2004) has been corrected to match the phase relations computed in that work.

Nov 6, 2013, CTRANSF bug: CTRANSF did not output transition data to the transformed thermodynamic data file (ctransf.dat). This correction is important if you use CTRANSF to generate thermodynamic data files.

Oct 29, 2013:

* The Atg model for antigorite has been replaced by Atg(PN) in the solution model file solution_model.dat, Atg(PN) accounts for Tschermaks exchange in antigorite as described by Padrón-Navarta et al.(2013, Lithos). The model requires a make definition for the atgts endmember in the thermodynamic data file, the make definition has been added to both hp02ver.dat and hp04ver.dat. The original Atg model can be recovered by excluding the atgts endmember.

* An example of calculations with the H2O-CO2-NaCl fluid equation of state of Aranovich et al. (2011) has been added to the examples folder.

* A bug has been corrected that caused Perple_X programs to crash while reading the perplex_option.dat file if a numeric value for an option was immediately followed by a comment character (i.e., "|").

Oct 6, 2013:

1) Compiled MatLab plotting scripts for Perple_X: Compiled versions of MatLab Perple_X plotting scripts, which can be used without purchasing MatLab, are available at:

To use the compiled scripts you must download the free "Matlab Runtime Compiler" as described in "README_what_you_need_to_download.txt" file in the above archive. 

NOTE: at present the only compiled script is "Perple_X_plot.exe" and this only runs on 64-bit WINDOWS systems. Other scripts will be made available as requested. 

2) FRENDLY bug: a bug that caused FRENDLY to compute erratic trajectories for the equilibrium coordinates of a user specified reaction has been corrected.

Jul 18, 2013, OSX Apps for Perple_X: John Schumacher has contributed a set of OSX Apps that automate some simple, but often confusing, tasks involved in running Perple_X. The scripts and documentation are at:

Jul 11, 2013, kel04ver.dat: the program used to translate the Kelsey et al. (2004) version of the Holland & Powell (1998) data base (kel04ver.dat) from Perple_X 07 format to Perple_X 6.6.6 format incorrectly set the EoS flag for molecular volatile species to 3 instead of 1. As a consequence it was not possible to use this data file for calculations involving volatiles. The error has been corrected.

Jun 26, 2013, Sapp(TP): An O/D solution model for Mg-Fe2+-Fe3+-Al-Si sapphirine (Taylor-Jones & Powell 2010, JMG 28:615-633)added to solution_model.dat. Sapp(TP) requires the kel04ver.dat version of the Holland & Powell data base. 

Jun 19, 2013, Ilm(WPH) error: the make definitions for the oilm and dilm endmembers used in the Ilm(WPH) model were taken directly from THERMOCALC; however, in THERMOCALC certain adjustments are made internally when the Landau O/D model is stripped from the ilm endmember and these adjustments are not made automatically by Perple_X. Accordingly, these adjustments (see the make definition commentary for details) have been added to the make definitions specified in hp02ver.dat, hp04ver.dat and hp11ver.dat.

NOTE: the ilm and ilm_nol endmembers must be excluded from calculations with the Ilm(WPH) model and the ilm_nol, oilm and dilm must be excluded from calculations without the Ilm(WPH) model.

Jun 16, 2013:

Ilm(WPH) error: The A-site configurational entropy model for Ilm(WPH) specified in solution_model.dat did not count Ti. The corrected configurational entropy model increases the stability of the Ilm(WPH) model. 

Pitzer & Sterner (1994) H2O-CO2 EoS (#14): The activity expressions for impure CO2 and H2O in the Pitzer & Sterner internal EoS were incorrect.

Jun 4, 2013:

Pitzer & Sterner (1994) H2O-CO2 EoS (#14): The fluid compositional variable for this H2O-CO2 fluid EoS was named "X(H2)" rather than "Y(CO2)" in some Perple_X programs. The error was cosmetic, i.e., the programs computed fluid properties as though the variable was Y(CO2).

WERAMI/MEEMUM composition output format: the number of characters allowed for phase compositions has been increased so that weight compositions do not overflow the format specifier (resulting in **** characters) in output from MEEMUM or WERAMI (Mode 1). 

May 30, 2013, hpha02ver.dat: the model for the anomalous seismic properties of quartz in the vicinity of the alpha/beta 1 bar transition has been modified so that the anomaly translates in temperature with increasing pressure along the alpha/beta transition. For non-seismic models, the hpha02ver.dat data base is identical to hp02ver.dat, the hpha02ver.dat data base is intended primarily for calculations of seismic wave speeds in crustal rocks, but may also be appropriate for shallow mantle rocks. See the thermodynamic data file description for additional information.    

Apr 29, 2013:

WERAMI bug: the April 22 modification of WERAMI introduced a bug that caused erratic behavior if the composition of a phase was queried at conditions at which the phase was not stable. The error has been corrected.

The MatLab plotting script perple_x_plot has been modified so that the X-Y-Z variables of a 3-dimensional plot can be chosen arbitrarily. Use of this script requires that the spreadsheet keyword in perplex_option.dat be set to true. The old version of perple_x_plot does not have this requirement and persists as perple_x_simple_plot.

Apr 22, 2013. WERAMI, simplified compositional criteria: In WERAMI mode 2 calculations of individual phase properties: if WERAMI encounters a condition at which two or more phases are predicted to be stable from a single solution model, then the user is asked to specify compositional criteria to identify the phase of interest. In previous versions the user was asked to specify the range of a user defined compositional variable. This method is robust, but tedious, because if two or more phases lie within the specified range, then the user must redefine the range. In the present version of WERAMI the user may instruct the program to identify the phase of interest as the phase with the lowest or highest value of a user defined compositional variable.

Other Modifications: two keywords, finite_difference_p and fd_expansion_factor, have been added to the list of keywords recognized in the Perple_X computational option file. The new keywords allow advanced users to fine-tune physical property calculations.

Feb 6, 2013. VERTEX/MEEMUM bug: a bug that caused VERTEX/MEEMUM to compute rough phase boundaries and/or spurious solvi has been corrected. The correction should: i) obviate the need for the "reach_increment_switch all" setting in perplex_option.dat, i.e., the default "reach_increment_switch on" setting should be adequate for most purposes; and ii) reduce the necessity for large reach_increment values.

A detailed explanation of the change follows:

Prior to the 6.6.8 version, the default compositional range for a solution phase during the auto-refine (i.e., final) stage of a calculation with VERTEX or MEEMUM was set to the range found during the exploratory stage of the calculation widened by a factor specified by the reach_factor keyword. In the 6.6.8 version, reach_factor was eliminated so that the compositional range found during the exploratory calculation was used without modification in the auto-refine stage. Because of the finite precision compositional determined during the exploratory stage, it is possible that the increase in precision during the auto-refine stage may cause the computed composition of a solution to lie beyond the limits determined during the exploratory stage. Under most circumstances VERTEX automatically widens the limits after such a problem occurs; however the rate of widening may not be rapid enough to completely eliminate the consequences of the problem (this is particular true in cases where a splitting script is being used to run a calculation in small segments). In the modification described here, the compositional ranges specified at the outset of the auto-refine stage are set to the range determined during the exploratory stage widened by twice the precision of the exploratory stage compositions.  

Feb 4, 2013 (Jan 31, 2013)*. WERAMI output bug: output options 25 (all modes), 36 (custom property list) and 38 (all properties) can only be selected as the sole output option for a calculation in WERAMI. If one of these options was chosen in conjunction with other options, then WERAMI would cease prompting for additional options and write a table containing only the data implied by the latter option (i.e., 25, 36 or 38). Unfortunately the column headers included any properties chosen prior to the last option, thus, the column headers were inconsistent with the column data. In the current version of WERAMI, options 25, 36 and 38 can only be chosen exclusively and the user is warned accordingly. 

*This bug was corrected without notice on Jan 31, the bug is not present in versions of Perple_X time stamped on, or after, Jan 31.

Jan 17, 2013. LINUX/OSX gfortran version bugversions of Perple_X compiled with GNU Fortran had a bug that caused VERTEX, PSSECT, WERAMI, and MEEMUM to behave erratically. The error was caused by the use of an uninitialized logical variable that was introduced with the program UNSPLT (Dec 29, 2012). The error did not affect versions of Perple_X compiled with the Intel Fortran compiler (e.g., versions for WINDOWS at this site). 

Jan 13, 2013. Minor modifications: 

extrapolation keyword: the extrapolation keyword has been eliminated from the list of keywords recognized in perplex_option.dat.

PSTABLE: the program now informs the user if there is no data within the specified contour range. The use of an uninitialized variable has been corrected, this error may have caused a segmentation fault on the OSX Intel Fortran version.

VERTEX/WERAMI/MEEMUM: floating point error traps have been added or modified to increase the numerical stability, particularly in the OSX/LINUX versions, of optimizations done by MEEMUM and VERTEX. In cases of poorly behaved thermodynamic models, the traps also make the output generated by WERAMI less erratic.

Jan 4, 2013, WERAMI "all properties" output bug: the table header written for the "all properties" output option (#36) incorrectly identified the properties listed in the 28th to final columns of the table. The 28th column should have been identified as the heat capacity ratio and the remaining column headers shifted one position to the right, additionally the headers for the volumetric and gravimetric modes were interchanged.

Dec 29, 2012: Various Modifications:

composition keyword: the composition keyword specified in perplex_option.dat now controls whether the amounts of system components are output by the program WERAMI in molar units or as weight fractions (percent).

pause_on_error keyword: pause_on_error is a new keyword read from perplex_option.dat, it may be either T (true) or F (false). If pause_on_error is true and an anticipated error occurs during the execution of a Perple_X program, the program will pause before terminating. This keyword should be set to false if Perple_X is being run via a script.

FLUIDS program bugs: 1) A bug that prevented EoS 14 (H2-H2O fluids) from being used to generate tabulated results has been corrected. 2) A bug that caused the indicated value of the molar volume, for several C-O-H-S fluid EoS, to drift from the correct value during the calculation of tabulated output has been corrected (the error was introduced on Oct 15, 2012). 

UNSPLT program added: UNSPLT (unsplit) is a program that assembles a set of output files for a phase diagram section (to be analyzed with WERAMI and PSSECT) from a series of files generated from piecewise calculations of the section (done by VERTEX). The splitting of a complex phase diagram section calculation into segments can reduce the cumulative calculation time by 1-3 orders of magnitude. More importantly, splitting calculations permits higher compositional resolution, which, in turn, improves the resolution of phase boundaries. It is anticipated that UNSPLT will be used in conjunction with scripts (python, MatLab, etc.) that automatically split, and execute, phase diagram calculations. A MatLab script for this purpose, that includes its own unsplitting function, has been written by Mark Caddick (VT) and will be made public shortly.

Nov 24, 2012, this notice/revision replaces the the Nov 23 version and, I hope, puts an end to various problems that began with my attempts to respond to the "wacka boom" warning, ca Oct 17. 

Important changes for calculations with order-disorder models: order-disorder (aka speciation) solution models (e.g., Omph(GHP), Amph(DP), Bio(TCC), Ep(HP)) generate several sources of numerical instability. Perple_X has separate routines for solution models with a single o-d parameter and multiple o-d parameters, these routines have been modified so they behave consistently in the event of numerical instability. This version is strongly recommended for calculations with o-d solution models. Specifically the changes are:

1) Formerly, if a multiple o-d parameter failed to converge, the fully disordered state was assumed for subsequent calculations. However, such failures are most likely at low temperature when the solution is near the fully ordered state. On failure, Perple_X uses an estimate of the ordered state. In single o-d parameter solution models the fully ordered state is known and has been used in the event of a failure since the Nov 8 revision.

2) The derivatives of the configurational entropy of a solution with respect to a species are infinite if the species is absent. These derivatives are used to guide the search for the stable configuration of o-d solution models. For multiple o-d parameter models this was done in a numerically stable manner, however in the single o-d parameter models the first and second derivatives were given the same value, resulting in an excessive search step-size that caused numerical instability. 

3) When speciation calculations fail to converge they may initiate further numerical instabilities that optimization to fail. This version of Perple_X writes convergence statistics and warnings to the console to alert users of this problem. Additionally, in the event of convergence problems, the user can now remedy the problem by increasing the maximum number of iterations permitted during a speciation calculation (speciation_max_it in perplex_option.dat). 

Nov 22, 2012, changes in perplex_option.dat: On October 19 2012, two keywords in the on-line version of perplex_option.dat were changed. Specifically

site_check was changed from T to F

reach_increment_switch was changed from on to all

If you liked the results you obtained with earlier versions and are now getting less satisfactory results, then change site_check back to true.

The change in site_check may have significant consequences for calculations involving THERMOCALC solution models that invoke "equipartition", e.g., Amph(DPW). In general such models yield results that are closer to THERMOCALC results if site_check is false. The change in reach_increment_switch should lead to slightly better resolution of phase boundaries. For additional information on these keywords refer to perplex_options.html.

Nov 12, 2012, VERTEX/MEEMUM/WERAMI bug: If an order-disorder calculation for a solution model with a single order-disorder parameter failed to converge, then VERTEX/MEEMUM/WERAMI would adopt the speciation predicted by the failed calculation. The use of this essentially randomly chosen speciation destabilized the finite difference estimators used to compute the physical properties of the corresponding phase. Most commonly, speciation calculations fail at low temperature where the solution is fully ordered, accordingly the aforementioned programs now adopt the fully ordered speciation if a 1-dimensional speciation calculation does not converge. 

Nov 8, 2012, VERTEX bugs:

1) If the number of stoichiometric phases considered in a calculation was the maximum permitted value (parameter k22), then thermodynamic data for the k22'th phase were corrupted if the calculation involved make definitions. k22 has been increased from 240 to 250, the code has been modified to prevent use of k22'th address.

2) An error trap has been added to prevent the cryptic "wacka boom" diagnostic that is triggered by order-disorder solution models in the low-temperature fully ordered state. At such conditions, round-off error may lead to a negative site fraction.

Oct 24, 2012: The sources for version 6.6.8 had inconsistent common block definitions (cxt11, cst313, and cst319 in files vertex.f and meemum.f), these inconsistent definitions may have caused erratic behavior and/or segmentation faults (i.e., a hard crash). 

Oct 23, 2012 X(O)-X(C) fluid EoS #20: FLUIDS and BUILD have been corrected to prompt for the choice of a sulfur fugacity buffer with this equations of state. 

Oct 21, 2012, Thermodynamic data file errors:

b89ver.dat: the volumetric equation of state coefficients b2->b7 were mislabeled, respectively, b1->b6. The error was not present in the more recent version of this data base (ba96ver.dat).  

hp02ver.dat and hp04ver.dat: the make definition for the "tbi" endmember of the TiBio(HP) solution model for biotite had incorrect stoichiometry, tbi was phl - fo + ru - q, it should be phl - fo + ru + q. The error has profound consequences for Ti-solubility predicted by the TiBio(HP) model, and probably explains why this model performed poorly in calculations with Perple_X

Oct 15, 2012: An incorrect type declaration in Oct 12 version (see below) of the source (fluids.f) for FLUIDS caused a G77 FORTRAN compiler error, the error did not affect the WINDOWS version of FLUIDS.

Oct 10, 2012, FLUIDS tabulated output bug: In tabulated output, FLUIDS output species fugacities shifted one column to the left relative to the variable names indicated in the header row (i.e., the first species fugacity was written in the column reserved for the atomic fraction of Si).

The error was, most probably, introduced into the code on, or after, April 5, 2012.

Oct 5, 2012: adds underflow/overflow trap for x ln x term in the Bragg-Williams routine (below), necessary for 32 bit computers. 

Oct 4, 2012: the routines used to evaluate the Landau and Bragg-Williams order-disorder models as implemented by Holland & Powell (2011) have been corrected. In the case of the Landau model the bug influenced results at all p-T conditions, but was only significant at high pressures (~100 kb). In the Bragg-Williams routine the bug influenced results only if the fully ordered phase was stable (i.e., at low T), at such conditions Perple_X returned the free energy of the fully disordered phase rather than that of the ordered phase. 

Jul 25, 2012, Perple_X 6.6.8: This revision cleaned up the way heat-capacity and lambda-type phase transitions are managed internally and, from a user perspective, should have no significant consequences. The 6.6.8 version can be used with 6.6.7 data files and MatLab scripts. The 6.6.8 version has not been tested extensively, users should be particularly wary of potential bugs related to the aforementioned transitions. The revision has been put on-line because it includes minor modifications that may be useful, specifically:

PSSECT - in graphical output, the 6.6.8 version marks the conditions of failed optimizations in red.

hard_limits option - previous versions implemented this option haphazardly, the option is now implemented strictly. The hard_limits option is particularly useful in situations where a user wishes to use replicates of a solution model to represent specific compositional ranges of the solution phase. To use this option effectively, the endmember flag of any endmembers that do not lie within the restricted compositional range of the model should be set to a non-zero value. 

Opx(HP) - this solution model has been modified to account for ferric iron solution after White, Powell and Clark (JMG 20:41, 2002). The model is in the solution model file solution_model.dat and requires a make definition for the "mots" endmember in the thermodynamic data file. The make definition has been added to hp02ver.dat and hp04ver.dat thermodynamic data files. 

Jun 12, 2012:  

Jun 12: Perple_X has been modified to permit reformulation, in the event of missing endmembers, of reciprocal solution models with no dependent endmembers. Reciprocal solution models without dependent endmembers are irrational, but are sometimes used in petrology (so-called "non-ideal reciprocal" solution models) and metallurgy (usually in association with "sub-lattice" solution models). 

Jun 12: Solution model type code 30 has been reserved for a reciprocal solution with no dependent endmembers and internal EoS. The EoS codes 610-622 have been reserved for stoichiometric endmember phases. 

Jun 6: An error trap that caused VERTEX to stop execution if a compositionally degenerate phase assemblage was identified during unconstrained minimization has been replaced by a warning (**warning ver068**). 

Jun 6: Compile-time parameters k1 and k21 have been increased to 1e6 and 1.7e6, respectively. 

May 31, 2012: A new runtime option keyword reach_increment_switch allows users to control how the reach_increment and global_reach_increment keywords are implemented in VERTEX and MEEMUM. If reach_increment_switch is set to "on" (the default and recommended value), then reach increments are applied only in the auto-refine stage of calculations with VERTEX. If reach_increment_switch is set to "off", then VERTEX and MEEMUM ignore all reach increment specifications. If reach_increment_switch is set to "all", reach increments are implemented in both the exploratory and auto-refine stages of calculations with VERTEX. 

May 21, 2012:

The versions placed on-line yesterday (May 20) were inadvertently compiled with the source that contained the COHSN speciation bug mentioned below. The error was corrected May 21, 15:37 GMT.

C-O-H-S-N fluid speciation bug: The WINDOWS versions of Perple_X placed on-line, and time-stamped, April 17 and April 24, 2012 had a dimensional error that caused nonsensical results (NaN's) for calculations involving C-O-H-S-N fluid speciation.

reach_increment modification: The reach_increment and global_reach_increment keyword values are now applied only during the auto-refine stage of calculations with VERTEX. This change has the effect of simultaneously reducing the memory required during the exploratory stage of the calculations and permitting larger reach increments during the auto-refine stage.

PMELTS endmember revision: The free energies for the foGL, faGL, qGL, coGL, woGL, and kalGL endmembers of the PMELTS model in the thermodynamic data file hp02ver.dat have been revised to match the 1 bar liquidus temperatures given by Ghiorso et al. (G3, 2002, Table B3). Formerly the endmember properties had been adjusted to match equilibria at more moderate temperatures (1000-1500 K). The former version of the endmember data is in hp02ver.dat_with_pre_may_2012_pmelt_endmembers.dat.

Apr 17, Minor changes and bugs: 

1d phase fractionation file name bug: a bug that caused the record of the amount of a phase removed during fractionation calculations to be written to a file with a default FORTRAN name (e.g., fort.31) rather than a name created from the phase name and dat suffix has been corrected. The error occurred only if more than one phase was being fractionated in a calculation.

silicate liquid/vapor/fluid equation of state: a Redlich-Kwong equation of state and speciation model for high temperature silicate fluids has been added to the list of internal equations of state in Perple_X.

adaptive_minimization_keyword_group_discussion: the discussion of this group of keywords has been augmented by a second example that provides a better illustration of problems related to spurious and stepped solvi than provided by the first example. 

Lacaze & Sundman Fe-Si-C alloy model: the Lacaze & Sundman (Metal. Trans 22A:1991-2211, 1990) model for Fe-Si-C phases has been added to Perple_X. The model reserves solution model type code 29 for the BCC phase order-disorder model and the EoS codes 610-620 for stoichiometric and endmember phases. 

Ideal gas solution model: an ideal gas model (intended for high temperature silicate vapor) has been added to the list of solution models supported by Perple_X. The model is identified by solution model type code 28.

Mar 26, minor changes and bugs:  

1) The final_resolution keyword has been modified to take two values, the first value specifies the target resolution for the exploratory stage of adaptive minimization calculations, while the second value specifies the target resolution for the final stage of the calculation. By using a low target resolution (e.g., 0.02 mol) the time required for the exploratory stage is reduced substantially with negligible consequences for the final result. NOTE: To maintain backward compatibility, the on-line version of perplex_option.dat specifies a single value for the final_resolution keyword (if only one value is specified, it is applied to both stages of an adaptive minimization calculation). Thus, to exploit the option, the file must be edited to specify two values for the keyword.

2) Bug for calculations along a path when the path coordinates were input from a file (as in 1-d phase fractionation calculations): as a consequence of this bug output from VERTEX could not be analyzed with PSSECT or WERAMI because the programs did not switch to the nodal coordinates specified in the path coordinate file (this bug was introduced into the 6.6.6 code on 10/25/2011). The bug has been corrected.

3) odCcMS(EF) - Carbonate order-disorder solution model from Franzolin, Schmidt and Poli (2011) CMP 161:213-227, DOI: 10.1007/s00410-010-0527-x has been added to solution_model.dat. This model requires the make definitions for ordered ankerite (oank) and ordered dolomite (odo_ef) that have been added to the thermodynamic data file hp02ver.dat

4) Tests with the Omph(GHP) and Omph(GHP1) solution models for clinopyroxene indicate that accurate resolution of the solvi predicted by these models requires reach_increment values of 6-8. 

Mar 7, K21 parameter value: The parameter K21, which limits the number of compositions that can be considered during adaptive minimization (**error ver058**) has been increased from 0.5e6 to 1e6. 

Feb 29, Seismic Wave Speed Bug, Perple_X 6.6.7/6.6.6: If the explicit_bulk_modulus keyword was set to true (the default is false) and calculations were being done with any of the Stixrude et al. data bases, the bulk moduli of solution phases may have been set to an arbitrary number (typically near zero). This error was caused by the use of an uninitialized variable as a trap for the presence of explicit function for the bulk modulus, the error occurred if the variable was non-zero. As many operating systems and compilers initialize memory, the error did not occur in many circumstances; however, the error did occur in the Feb 17 32-bit 6.6.7 WINDOWS version of Perple_X on WINDOWS 7 OS. The error was introduced into the code in the 6.6.6 version (July 6, 2011).

WINDOWS parallel versions: The WINDOWS versions of Perple_X designated parallel to indicate that they are compiled to exploit parallel computing on a multiple CPU computer, were in fact compiled with the single CPU option. The error has been corrected.   

Feb 17, Perple_X 6.6.7: previous versions of Perple_X were sometimes unable to accurately locate phase field boundaries involving phases related by a solvus. This problem was particularly prominent with the recent Diener et al. (2007, 2011) amphibole models, but also occurred sporadically with simpler models such as the Fuhrman & Lindsley (1988) feldspar model or the Aranovich et al. (2011) NaCl-H2O-CO2 fluid model. Most commonly the problem was manifest in phase diagram sections by spurious (false) patchy multiphase solvi within larger fields in which only two or one compositions of the solution was stable. The problem also sometimes caused highly irregular phase boundaries between fields in which the number of immiscible phases increased or decreased. To resolve the problem, the iteration scheme for adaptive minimization (Connolly 2009) has been revamped in the 6.6.7 version of Perple_X. If used with its default settings the 6.6.7 version will function almost identically to the 6.6.6 version, to exploit the enhanced capabilities of 6.6.7 version it is necessary to implement the reach_increment solution model keyword as described in the adaptive minimization keyword group discussion.

What you need to know

The significance of the iteration keyword in perplex_option.dat has changed. To use an old version option file with 6.6.7 change the iteration keyword values to "3 4".

To improve the resolution of phase relations involving a solution that exhibits immiscibility (e.g., amphibole, white mica, feldspar) the optional keyword reach_increment must be added to the solution model as specified in the solution model file. 

What you should know

The runtime option keywords have been iteration, seismic_output, final_resolution, and global_reach_increment have been added or modified. The first value of the former version of the iteration keyword has been eliminated, the number of iterations during adaptive minimization is now determined by computing the number of iterations necessary to achieve compositional precision better than the value of the final_resolution keyword. The optimal values of the iteration keyword are almost certainly 3 and 4, i.e., changing these values is unlikely to improve performance. 

A new keyword reach_increment is optionally read from the solution model file. 

What you might want to know

The silicate melt models melt(HP) and pMELTS(G) have been extended to include, respectively, Zr and Ti solution. The Zr extension of the melt(HP) model is described by Kelsey & Powell (2010) JMG 29:151-166 and entails additional solution models for garnet (ZrGt(KP)) and rutile (ZrRu). The addition of Ti to the pMELTS(G) model follows from  Ghiorso et al. (2002) G3 3:5, except that the properties of liquid TiO2 have been adjusted to match the 1 bar melting point given by Ghiorso et al. (2002) with the properties of rutile furnished by Holland & Powell (1998, 2002 revision). 

What you don't need to know

Perple_X now uses an internal routine to compute machine precision.

Perple_X requires significantly less memory for adaptive minimization if the first value of the iteration keyword is reduced to 2, this has the consequence that it is possible to use finer values of initial_resolution.

The runtime option keywords auto_refine_slop and reach_factor have been eliminated.

The WINDOWS versions of Perple_X are now compiled with the INTEL fortran compiler. Both 32- and 64-bit, and parallel and non-parallel processing, versions are available. The parallel versions probably should NOT be used with Mark Caddick's Paralyzer script.

Eliminated bugs

The 6.6.7 version eliminates a bug that caused FRENDLY to write inconsistent output to the thermodynamic data file.

Jan 14:

FRENDLY: a bug that prevented FRENDLY from creating or modifying entries in thermodynamic data files has been corrected.

VERTEX/MEEMUM/WERAMI: a trap to test for valid initial guesses on volume was to restrictive and caused VERTEX/MEEMUM/WERAMI to reject valid guesses and fail to converge. As a consequence the relevant phase would be rejected from the computation or assigned bad_number properties. This error occurred only with the Stixrude & Bukowinski (solid, 1993), Stixrude and Lithgow-Bertelloni (solid, 2005), and Stixrude et al. (melt, 2009) equations of state, typically at pressures in excess of 80 GPa.

Dec 18:

VERTEX/MEEMUM/WERAMI: Corrects a bug that prevented VERTEX/MEEMUM from outputting the amounts of the phases determined by saturated components in calculations for constrained bulk compositions. As a consequence of this bug, PSSECT did not include saturated phases in phase field labels. A related bug that prevented both MEEMUM and WERAMI from outputting the chemical potentials of saturated components has also been corrected.

WERAMI, in computational mode 3 (properties along a 1d path): if a linear profile was specified, then WERAMI computed a profile at the initial value of the dependent variable regardless of the specified endpoints for the profile. The bug has been corrected. 

hp11ver.dat: the thermodynamic data of Holland & Powell (TC-DS61, JMG, 2011) has been formatted for Perple_X in the file hp11ver.dat. WARNING! Most of the thermocalc solution models are not consistent with this data base. Do not use this data base unless you are sure you understand the potential consequences of this inconsistency. For most purposes the hp02ver.dat data file remains the best choice for calculations with Thermocalc solution models. 

Nov 21, WERAMI bug: Corrects a bug that prevented WERAMI from outputting properties for a single phase under option #36 (all properties).

Nov 1, Diener et al. (2011) revised models: The revised (Diener et al. 2011) versions of the Diener et al. (2007) models for ortho- and clino-amphibole [oAmph(DP) and cAmph(DP)] and the Green et al. (2007) omphacite model [Omph(GHP)] have been added to solution_model.dat. The revised models are named oAmph(DP2), cAmph(DP2), and Omph(GHP2). The oAmph(DP2) model requires new make definitions for the Mg-orthopargasite and gedrite endmembers, these endmembers have been named "mpa2" and "ged_dqf2" to avoid conflict with the "mpa" and "ged_dqf" make definitions for the original oAmph(DP) model. The new endmembers have been added to the thermodynamic data files hp02ver.dat and hp04ver.dat. The new endmembers are more stable than the original endmembers, therefore the new endmembers should be excluded from calculations that use the original model.

White et al. (2000) Ilm(WPH) ilmenite model correction/revision: The make definitions for this model were specified in terms of the "ilm" endmember rather than "ilm_nol" (the "ilm" endmember less the contribution of its Landau order-disorder free energy). The new/revised make definitions for "ilm_nol", "oilm" and "dilm" have been added to the thermodynamic data files hp02ver.dat and hp04ver.dat. Additionally, the pnt-ilm interaction term has been added to solution_model.dat. The cited source for this model (White et al. 2000) does not (?) provide interaction parameters, apparently these were first published by White et al. (2005).

Oct 24-26:

Oct 26, FRENDLY, Bug #1: FRENDLY did not output thermodynamic properties for entities with no, or negative, volume. The bug has been corrected.

Oct 26, FLUIDS, Bug #2: if tabulated fluid properties were requested for H2O-CO2 mixtures, then FLUIDS would output properties computed by the MRK EoS, regardless of the EoS actually chosen. The bug has been corrected.

Oct 24, FLUIDS, Bug #1: a bug that caused FLUIDS to crash if tabulated fluid properties were requested for H2O-CO2 mixtures has been corrected.

Oct 24, Smye et al. (2010) make definitions: the make definitions for "fmu" and "mncar" required for the mica [Mica(SGH)] and  carpholite [Carp(SGH)] models of Smye et al. (JMG, 2010, 28:753-768) have been corrected in thermodynamic data files hp02ver.dat and hp04ver.dat.

Oct 24, Gt(WPPH) garnet model: the Gt(WPPH) model for garnet, added to solution_model.dat on 9/20/11, from White et al. (JMG, 2005, 23:579-602) was formulated incorrectly in terms of andradite rather than khoharite, the model has been corrected. This model requires a make definition for "kho", which has been added to thermodynamic data files hp02ver.dat and hp04ver.dat.

Oct 24, Gt(WPH) garnet model:  the original source for the Gt(WPH) model for garnet is JMG, 2007, 25:511-527; not White et al. (JMG, 2001) as previously indicated. The parameter values for used for this model in Perple_X are not from the White et al. (2007) paper, but rather the Thermocalc "preferred" values as of April 2010. NOTE: the more recent Smye et al. (2011) models [Mica(SGH),  Carp(SGH), and Ctd(SGH)]are calibrated in terms of the Gt(WPPH) model for garnet.

Oct 14, Parameter errors in the Diener et al. (2007) clinoamphibole model [cAmph(DP)]: The DQF increments in the make definitions of the tschermaks (ts_dqf, was 10 kJ, corrected to 15 kJ) and glaucophane (gl_dqf, was 15 kJ, corrected to 3 kJ) endmembers of the cAmph(DP) model have been corrected in the hp02ver.dat and hp04ver.dat thermodynamic data files. The errors were such that Perple_X predicted low glaucophane contents and high tschermaks contents relative to the correct model.

Oct 8, WERAMI solvus compositional criterion bug: A coding error caused WERAMI to behave erratically if users elected to discriminate between immiscible phases using a compositional criterion in computational modes 2-4. Specifically the error sometimes caused WERAMI: 1) to request that the user redefine or add new criteria when none were necessary; or 2) to output no data at conditions where a phase that met the specified criteria was in fact stable.

The bug is not present in Perple_X 07.

Sep 28, Maximum number of make definitions: The make definitions added to hp04ver.dat on September 20 increased the number of definitions beyond the compile-time limit, causing the run-time error:

"**error ver055** too many make definitions, increase parameter K16 (30) and recompile".

The maximum number of definitions (parameter K16 in perplex_parameters.h) has been increased to 40. If you encounter this error, then an alternative to recompiling Perple_X is to delete unused definitions from the thermodynamic data file.

Sep 20: Models from Smye et al. (JMG, 2010, 28:753-768) for Mn-Mg-Fe2+-Al-Fe3+ solution in mica [Mica(SGH)],  carpholite [Carp(SGH)], chloritoid [Ctd(SGH)] and garnet [Gt(WPPH)] have been added to solution_model.dat. The requisite make definitions have been added to thermodynamic data files hp02ver.dat and hp04ver.dat.

Aug 26 (Perple_X 6.6.6):

PSTABLE: the error trap for NaNs in PSTABLE did not function, as a consequence PSTABLE generated invalid PostScript from WERAMI output files if WERAMI encountered missing data and the bad_number keyword was set to NaN.

kel04ver.dat: the Kelsey et al. (2004) version of the Holland & Powell (1998) data base (kel04ver.dat) has been updated to include the make definitions necessary for the Bio(TCC) solution model.

Aug 13 (Perple_X 6.6.6):

MEEMUM has been modified to read, at the users option, auto-refine data generated by VERTEX. Auto-refine data should only be used in MEEMUM if the MEEMUM calculation is being done within the range of physical conditions considered in the VERTEX calculation. The benefit of using the auto-refine data is that the MEEMUM calculations are done at the resolution of the auto-refined VERTEX calculation.

WERAMI options 25 (all_modes) and 36 (all_properties) were accidentally suppressed in the initial 6.6.6 version of Perple_X. The options have been reinstated.

Jul 6, Perple_X 6.6.6 has replaced Perple_X 07.

Jun 27, Perple_X WERAMI bug: LINUX/OSX versions compiled with the gfortran compiler did not output data because of an un-initialized variable (nodata, routine getloc, file olib.f).

Jun 22, Perple_X MatLab Script: the script perple_x_extract_o_bat.m to has been added to the Matlab script repository. Given a table generated with WERAMI, FRENDLY or FLUIDS that defines Z(X,Y), the script returns the X-Y path at which Z has a specified value. The output of this script can be used to extract (with WERAMI) or compute (with VERTEX) physical properties along the corresponding path (e.g., an adiabat, isochore, or isopleth).

June 20, Perple_X FLUIDS - the programs COHSRK, SPECIES, COHSCONT and SATSURF, which provided interfaces to the internal equations of state for C-O-H-N-S-NaCl fluids used by Perple_X, have been renovated and replaced by a single program named FLUIDS. FLUIDS can be used to: 1) sample fluid properties and speciation at arbitrarily specified conditions (formerly the function of COSHRK); 2) to tabulate properties as a function of a single variable (e.g., bulk composition or oxygen fugacity, formerly the function of SPECIES); and 3) to tabulate properties as a function of two variables (e.g., fluid speciation as a function of pressure and temperature, formerly the function of COHScont). In the latter modes, FLUIDS outputs tab format files that can be plotted with PSTABLE or Perple_X_plot (MatLab), output for 2D tables can also be plotted with PyWERAMI. Caution: tabulation calculations in FLUIDS have only been tested for COH fluids as a function of P-T-X(O), carefully check the output for other problem configurations.

Seismic Velocity Tutorial: the seismic_velocity_tutorial, which illustrates a generic calculation phase diagram section calculation, has been updated for Perple_X

WERAMI: a bug caused WERAMI to write extra columns in output generated in modes 2-4 if the "modes of all phases" property choice (#25) was selected.

Jun 16, Perple_X The high pressure melt equation of state used by Stixrude et al. (EPSL 278:226-232) is now supported.

Jun 1-2, Perple_X bugs

Jun 2, Perple_X_plot MatLab Script: 2-dimensional tables (i.e., 3-dimensional data) could not be plotted if the tables were not square.

Jun 2, FRENDLY: 2-dimensional tabulated data were output in the wrong orientation to be plotted by PSTABLE or Perple_X_plot.

Jun 1, PSTABLE: a bug prevented PSTABLE from plotting 1-dimensional tab files.

Jun 1, WERAMI: a bug prevented WERAMI from constructing 1-dimensional sections parallel to the y-axis of a 2-dimensional plot.

May 29, Perple_X WERAMI bug: WERAMI was unable to distinguish fluids from solids, as a consequence fluid properties were included in all aggregate properties.

Modification: the names of the auto-refine files *_auto_refine.dat and *_auto_refine_true_or_false.dat, where * denotes the project name, have been changed to *.arf and *.tof. WARNING: to use the current versions of WERAMI and PSSECT with results calculated with an older version of VERTEX it is necessary to rename the auto-refine files.

May 24, Data file error and modifications:

hp02ver.dat error: the shear modulus used for biotite endmembers was the modulus for rutile from Sobolev & Babeyko (1994), rather than Sobolev & Babeyko's value for biotite. This error did not affect phase equilibrium calculations.

solution_model.dat modifications: 1) the ternary feldspar model of Benisek et al. (CMP, 2010) has been added as feldspar_B. 2) The white mica solution model Mica(CF) (extended from Chaterjee & Froese, 1975) has replaced the models MuPa and KN-Phen

May 5-Apr 19 Perple_X bugs

May 5, WERAMI: partially corrects a bug that prevented WERAMI from implementing user specified compositional criteria to distinguish coexisting phases related by a solvus in computational mode #2. This correction works provided properties are requested for only one immiscible phase, if properties are to be compiled for two or more immiscible phases, then the properties should be compiled in separate tab files.

May 2, WERAMI (Windows version only): corrects a bug caused if missing data was indicated by NaN's.

Apr 23, VERTEX/MEEMUM: corrects a bug that caused erratic behavior if made entities were rejected from the saturated component composition space. This bug was/is probably present in Perple_X 07.

Apr 21, VERTEX/MEEMUM: a coding error caused Perple_X to incorrectly reformulate solution models with missing endmembers in certain cases; specifically, when a solution model with two chemical mixing sites was reformulated so as to eliminate the second chemical mixing site (e.g., the reformulation of the Gt(WPH) garnet model as a model with no mixing on the B-site). This error caused wildly erratic behavior that was obvious in plotted output. The bug was introduced in the revision (Jan 21) as a correction for problems caused by solution model reformulations that eliminated the first chemical mixing site of a multisite solution.

Apr 20, PSTABLE: 1) The WINDOWS version crashed if missing data was indicated by NaN's; 2) In all versions: contour plots were rotated 90o relative to the indicated axes; and the y-axis name was replaced by the z-variable name.

Apr 19, VERTEX/MEEMUM: the program crashed if the amount of a saturated component was specified. WERAMI: in mode 2 calculations in which the composition of a phase was requested, WERAMI did not necessarily report the composition of the specified phase.

Apr 11 Perple_X bug:

PSSECT and WERAMI: the bug correction of Mar 31 was incomplete, the programs crashed if the bad_number keyword was set to NaN and VERTEX failed to compute chemical potentials for an assemblage for calculations involving > 6 components.

Mar 31 Perple_X bugs:

PSSECT and WERAMI: both programs crashed if the bad_number keyword was set to NaN and VERTEX failed to compute chemical potentials for an assemblage.

PyWERAMI and Perple_X_plot: both programs oriented 3d data relative to the plot axes incorrectly (rotated 90o and flipped vertically).

Mar 29 Perple_X MAJOR revision:

WERAMI modifications: WERAMI has been modified so that the user can extract any number of properties in a single calculation. This modification required changing the format of WERAMI output files. The new version of WERAMI outputs a common format for tabulated data from both 1- and 2-dimensional calculations. The format is indicated by the "tab" file type suffix and can be processed with PyWerami, PSTABLE (Perple_X), Perple_X_plot (MatLab) or spreadsheet programs (e.g. Excel). Because of the extensive nature of the revisions users should be wary of bugs.

FRENDLY renovation: FRENDLY has been modified to use the same computational routines as WERAMI, as a result it now outputs a wider and more accurate palette of physical properties, this palette includes adiabatic moduli, seismic velocities and relevant temperature-pressure derivatives. If the user opts to tabulate the properties, the resulting table can be plotted or processed with the same programs as indicated above for WERAMI. An unfortunate consequence of the renovation is that FRENDLY is marginally less friendly than it once was.

PSTABLE: PSTABLE is a new Perple_X program that replaces PSCONTOR, in contrast to PSCONTOR, PSTABLE can plot both 1- and 2-dimensional tabulated data. Data from 2-dimensional tables is contoured, data from 1-dimensional tables is plotted as 2-d curves.

Perple_X_plot: The collection of MatLab plotting scripts for displaying 3-d data formerly included with Perple_X has been replaced by a single script named Perple_X_plot. Perple_X_plot has the same functionality as PSTABLE, but makes nicer plots, offers more options, and is capable of handling missing data.

bad_number keyword: the bad_number keyword set in perplex_option.dat has been modified to accept the value NaN (not-a-number). The advantage of setting bad_number to NaN is that advanced plotting programs such as MatLab and, to a certain extent, PyWerami (i.e., in contour mode) treat NaNs as missing data. For example, if phase composition is contoured as a function of pressure and temperature with bad_number set to NaN the data will be only contoured where the phase is stable. In contrast, if bad_number is set to zero, zeroes will be reported for the composition in fields where the phase is not stable; additionally the zero values usually imply a range of composition that is much greater than the true range and consequently the default contour interval chosen by a contouring program will resolve the data well. PSTABLE is not capable of treating missing data and replaces NaNs with zeroes; thus there is no advantage to setting bad_number to NaN unless the data is to be processed with MatLab or PyWerami.

spreadsheet keyword: the spreadsheet keyword set in perplex_option.dat instructs WERAMI to include the independent variables of a 2-d table as columns in tab file output. This option creates larger output files, but is useful if the tab file is to be imported into a spreadsheet program.

new solution model type (jsmod=5): the version allows solutions with arbitrarily defined dependent endmembers, this model type is necessary to implement Fe- and Ca-majorite substitutions in garnet as done in Stixrude & Lithgow-Bertelloni (2011, see below).

Corrected Bugs:

*Fractionation calculations: A bug introduced in the revision that prevented VERTEX from outputting the amount of the fractionated phase removed from the system has been corrected.

*Temperature derivative of aggregate shear wave velocity: the temperature derivative of VRH averaged shear wave velocity was incorrect because the harmonic component of the VRH average was omitted. The error did not affect calculated shear wave velocities.

*sfo05ver.dat file for 6.6: the sfo05ver.dat file had an incorrect transition flag for quartz that caused Perple_X to crash.

Mar 1, BUILD bug, Perple_X 07/ A bug prevented the Feb 23 versions of BUILD in Perple_X 07 and from reading the current default solution model file (solution_model.dat).

Feb 23 Perple_X revision: This revision reinstates the option (value3 of the iteration keyword in perplex_option.dat) that allowed users to control the number of metastable phases considered during adaptive optimization (this option was eliminated in where value3 was set internally to 3). Increasing this parameter may improve the resolution of phase boundaries, but also increases computation time. For most purposes value3 = 3 is adequate, value3 = 3; the current default is value3 = 4; to avoid complications created by old copies of the perplex_option.dat if value3 is >7 or <3, it is automatically reset to 4.

Feb 22

Perple_X 07/ revision: This revision corrects a bug that caused Perple_X to incorrectly predict a narrow solvus along the FeSi-MgAl join for biotite and orthopyroxene models. The correction also requires a modification of the solution model data file, therefore it is necessary to use the updated version of the solution model file solution_model.dat  with the new version, for Perple_X 07 this file can be found at 07_solution_models and for Perple_X this file can be found at files. The error had relatively minor consequences for the stability fields of biotite and orthopyroxene as illustrated by biotite stability fields in the h296 test calculation before and after the revision. The solution models Bio(HP), TiBio(HP), TiBio(WHP) and E(SG) have been eliminated from the solution model file.

The NCFMAS whole mantle thermodynamic model of Stixrude & Lithgow-Bertelloni (GJI, 2011) is implemented in Perple_X The data is in the files stx11ver.dat and stx11_solution_model.dat. Input files and calculations done to verify the implementation are at stixrude_JGI_2011.

The stx11ver.dat file should be used with the solution models:

Pl Sp O Wad Ring Opx Cpx Pv Ppv CF C2/c Wus  Aki Gt

Feb 7, Perple_X revision: Perple_X's optimization algorithm has been modified to stabilize calculations in which the amount of a component is zero (a common occurrence in fractionation calculations or in calculations as a function of bulk composition). This revision also corrects a problem that caused Perple_X to report that optimizations had failed, when the optimizations had in fact completed successfully.

Feb 1: The Jan 21-31 versions of Perple_X 07 were compiled with inconsistent sources. As a consequence the program VERTEX terminated incorrectly with the error message "**error ver180** too many pseudocompounds...".

Jan 21, Perple_X 07/6.6.5 revision and bugs: Perple_X's algorithm for detecting phase boundaries has been modified again, the modification has no effect on the location of phase boundaries, but the new algorithm is faster and uses less memory than the previous revision (Jan 9).  To use the current versions efficiently the solvus_tolerance keyword should be set to "aut" (i.e., automatic). The new versions no longer read the third value of the iteration keyword, i.e., this value is specified in old versions of  perplex_option.dat, but it has no influence on computational results. The 6.6.5 beta version is roughly 50% faster than the 07 version of Perple_X, but produces essentially identical results.

The Jan 9 versions ran slowly on computers with limited RAM because the memory allocation was doubled to permit high resolution calculations (i.e., small values of initial_resolution), in the current version the memory allocation has been restored to its pre-Jan 9 configuration. If you would like a copy of Perple_X configured for high resolution (large memory) problems, please contact me.

The current revision eliminates the following bugs:

Perple_X 07/6.6: a coding error introduced into Perple_X 07 ca Aug, 2008, led to incorrect initialization of speciation calculations for solutions with one ordered species (e.g., Talc, Bio(HP), Omph(HP), Opx(HP)). Fortuitously, the error had only minor consequences for the absolute stability of the solutions in question, but it did cause extraneous solvi. This error was corrected in 6.6.4.

Perple_X 6.6.0-6.6.3: a coding error caused Perple_X to incorrectly reformulate solution models with missing endmembers in certain cases; specifically, when a solution model with two chemical mixing sites was reformulated so as to eliminate the first chemical mixing site (e.g., the reformulation of the oAmph(DP) amphibole model as a model for solution along the anthophyllite-gedrite join). This error was corrected in 6.6.4.

Jan 9, Perple_X revision and chaos: An unfortunate feature of Perple_X's current minimization algorithm (Connolly 2009) is that parameter choices that improve the resolution of solvi degrade the resolution of normal phase boundaries. Changes introduced on Dec 19, 2010 did in fact lead to a major improvement in Perple_X's ability to resolve solvi, but did so at the expense of normal phase boundaries. The present revisions to both Perple_X 07 and Perple_X 6.6.3 provide a more balanced approach with the ancillary benefit that they make Perple_X significantly more efficient. The new versions read the same input files as their predecessors, but the computational option file settings should be edited as described below.

What you need to do to run the new versions effectively: the optimal run-time option settings have changed. Because these settings would cause serious problems in older versions of Perple_X the default run-time option file perplex_option.dat has not been updated, therefore you must update the run-time option file as follows:

*Change "solvus_tolerance 0.1" to "solvus_tolerance aut".

*Change "iteration 4 3 10" to "iteration 4 3 3". The first two values of the iteration keyword may be adjusted as in previous versions, but there is no obvious benefit to setting the third value > 3, and reducing to < 3 degrades resolution of phase boundaries. The third value will be eliminated in future versions if further testing verifies that values > 3 do not improve resolution.

Additionally, to use the beta 6.6.3 version download an updated solution model file (i.e., solution_model.dat) or correct an earlier solution model file by deleting all solution models with model_type_flag = 1.

Perple_X 6.6.3 replaces the short-lived, bug-ridden, 6.6.2 revision. For a summary of additional recent changes to the 6.6 version see the Dec 30, 2010 update.

Dec 30, Perple_X 6.6.2: Revisions to the (still) beta 6.6 version:

*WARNING: code to read microscopic format solution models has been eliminated in the 6.6.2 version. Because obsolete microscopic format solution models are present in most previous solution model files the 6.6.2 version cannot be used with these files. The obsolete microscopic models have been eliminated from the current versions of solut_07.dat, solut_08.dat, solut_09.dat and solution_model.dat. To use other solution model files delete all solution models with model_type_flag = 1.

*The run-time option solvus_tolerance is now specified in terms of the composition space of the solution rather than that of the system. This has the advantage that the tolerance is implemented consistently for all solution phases and that it is independent of the component stoichiometry.

*solvus_tolerance can be specified automatically (solvus_tolerance = aut).

*Perple_X programs VERTEX, MEEMUM, and WERAMI have been modified to output only the run-time options relevant for the requested calculation. This modification makes it easier for users to identify relevant option settings. If option_list_files = T, then the option values are echoed to a text file.

*The keywords auto_refine_file, option_list_files, and pseudocompound_file that control the output of non-essential information have been added to the list of run-time options.

*MEEMUM has been modified to echo its console output to a print file if a print file has been requested in the project definition file (i.e., the file created with BUILD).

Dec 19, Major improvement in Perple_X 07/6.6: Since their inception Perple_X 07 and the beta 6.6 version have been plagued by problems, typically manifest by irregular phase boundaries, treating immiscible phases. Previously, such problems could only be resolved by using costly high resolution or by creating replicate solution models for each continuous compositional range of an immiscible solution. These problems have now been eliminated by a change in the code that has the additional positive effect that the code is faster.

A remaining problem is that the interpretation of the solvus_tolerance used to test for immiscibility is dependent on stoichiometry of the solution phase in question, this means that the interpretation of the solvus_tolerance is also dependent on the components chosen for a calculation. This problem will be eliminated in the next revision. 

Dec 5, Perple_X 6.6 bug: a bug that prevented this version from using chemical potentials, fugacities or activities as computational variables has been eliminated.

Dec 1:

Gt(GCT) - Ganguly et al. (1996) garnet: The grossular-pyrope-spessartine-almanidine garnet solution model of Ganguly, Cheng & Tirrone (1996, Contrib Mineral Petrol 126:137-151) has been added to the solution model file solution_model.dat. The implementation has been verified by reproducing the solvi shown in Fig 9 of Ganguly et al. The Gt(GCT) model replaces the GrPyAlSp(G) garnet model, which used a preliminary unpublished parameterization. Maple script garnet_jiba_96.mws.

Pitzer & Sterner (1994) H2O-CO2 EoS (#14): The equations of state for H2O and CO2 proposed and parameterized by Pitzer & Sterner (1994, J Chem Phys 101:3111-3116) has been added to Perple_X as internal equation of state #14. Excess properties for H2O-CO2 mixtures using this EoS are computed with the van Laar model parameter from Holland & Powell (2003, Contrib Mineral Petrol 145:492-501). Maple script pitzer_eos.mws.

Perple_X 6.6 bug: A bug that caused the programs CTRANSF and ACTCOR to crash has been eliminated.

Nov 18, minor bugs:

Graphite buffered COHS MRK fluid EoS (#7): A typographical error in an expression for the CCO equilibrium constant caused any program using the "Graphite buffered COHS MRK fluid" equation of state to crash due to floating point overflow. The typo was introduced into the code ca. September, 2005.

COHSRK/SPECIES: The value output as log(fO2) with fluid EOS choices

   7 - f(O2/CO2)-f(S2) Graphite buffered COHS MRK fluid

   8 - f(O2/CO2)-f(S2) Graphite buffered COHS hybrid-EoS fluid

  24 - f(O2/CO2)-N/C   Graphite buffered COHN MRK fluid

was fO2 rather than log(fO2).

Perple_X 6.6.1: VERTEX refused problem definition files (i.e., BUILD files) generated by versions of Perple_X created before December 21, 2008. VERTEX now reads these files.

Oct 15: Sapp(KWP) sapphirine model: (Corrects typo entered for the same problem Oct 12) The site populations assumed for the Sapp(KWP) model did not correspond to those assumed by Kelsey et al. (J. metamorphic Geol. 2004 22: 559-578). Specifically, Mg_Fe_Al disorder was assumed on 5 octahedral MA sites rather than one M3 site and Si_Al disorder was assumed on 4 tetrahedral sites rather than a single T site. The corrected model will reduce the stability field predicted for sapphirine. The corrected model is in the solution_model.dat solution model file, earlier solution model files have not been corrected.

Jan 20:

White Mica Models: A minor error (the "size" term for potassic endmembers has been corrected from 0.67 to 0.63) has been corrected in mica models Mica(CH1) and Mica(CH2) (Coggon & Holland, JMG, 2002); the models have been expanded to include Ti-substitution after Auzanneau et al. (CMP, 2010); and they have been renamed Mica(CHA) and Mica(CHA1) in the solution model file solut_09.dat. Mica(CHA) is the non-reciprocal (inexpensive) version of the solution model, whereas Mica(CHA1) is the reciprocal version, see commentary in the solution model for additional information. The complete models require a make definition for the Ti-phengite endmember (tip), this definition has been added to the hp02ver.dat data file. To use the Coggon & Holland model without considering Ti eliminate or exclude the tip endmember.

Anderson-Gruneisen keyword: The default value for the Anderson-Gruneisen keyword in Perple_X has been changed to "True". This has a minor effect on phase relations computed with the Holland & Powell (JMG, 1998) data base in that the temperature derivative of the bulk modulus is computed as a function of the isobaric expansivity rather than using the empirical values supplied by Holland & Powell.

Solution model glossary: The solution model glossary page has been updated.

Jan 1:

Perple_X plot options: Perple_X PostScript plotting programs (PSSECT, PSVDRAW, PSCONTOR, PSCONTOR_REL, PSPTS) have been modified to read options from a file named perplex_plot_option.dat. The keywords in this file are described at Perple_X plot options. Most users need not concern themselves with these options; however, the font keyword may be helpful to Mac users who experience problems importing Perple_X PostScript into Adobe products.

WERAMI bug: A bug that caused numerical instability in the finite difference operators used by WERAMI to compute thermodynamic properties at pressures below ~500 bar has been corrected.

Nov 11 T_melt keyword: The T_melt keyword specifies a temperature threshold below which the endmembers of any melt solution model in use are arbitrarily destabilized. This keyword is useful in cases where thermodynamic data for melt endmembers do not extrapolate well to low temperature (e.g., the H&P melt endmember for water, h2oL, is more stable than water fluid at low temperature and/or high pressure). Such problems not only result in incorrect phase relations, but also slow calculations by exaggerating the range of stable melt compositions. The disadvantage of using this keyword is that it may lead to an arbitrary "solidus", e.g., a boundary at T=T_melt where h2oL or melt becomes stable with respect to water.

Oct 13 site_check keyword: by setting the site_check keyword to F (false) users can instruct VERTEX/MEEMUM to allow solution compositions that imply negative site fractions. This option is of dubious merit, but when implemented it generates results that tend to be more similar to those obtained in THERMOCALC using solution models that assume equipartition.

Sep 29 more VERTEX bugs: Holland & Powell solution models based on the illegitimate "equipartition" assumption give rise to physically impossible negative site fractions when the equipartition assumption is not imposed (and it is not imposed in Perple_X). Prior to April 21, 2009, VERTEX did not reject compositions with negative site fractions, but after April 21 the program was modified to reject the compositions. The bug reported here is that although the post-April 21 version rejected these compositions during the initial set up of a problem, it was able to restore the compositions during adaptive minimization. This bug not only allowed negative site fractions, but also had the potential to cause irregular phase boundaries because the program permitted different compositional ranges at different computational levels. An unrelated, but similar, problem existed in the imposition of the hard_limits keyword, which is now implemented consistently at all levels of the program.

Sep 25 VERTEX bug: A coding error had the potential to cause VERTEX to artificially restrict the compositional range of order-disorder non-reciprocal solution models (e.g., Omph(GHP), Omph(HP)), as a consequence the stability fields for the corresponding phases were sometimes underestimated. The nature of the coding error was such that error appeared depending on the sequence in which the solution models were specified in the problem description file (i.e., the "BUILD" file).

The bug described here has been in the Perple_X source code since sometime between April 4 and July 23, 2009. Versions of VERTEX generated between April 4, 2009 and September 25, 2009, should be updated to the current version.

Jul 8 Component transformation bug: If a component transformation was specified in the problem definition file created by BUILD, VERTEX and WERAMI did not compute the correct molar weight of the new component. This error had the consequence that VERTEX did not correctly convert bulk compositions entered in terms of weight fractions to molar fractions and that WERAMI did not compute correct values for any properties (e.g., density, mass composition, seismic velocity) involving the mass of the transformed component. Calculations done with VERTEX and WERAMI using component transformations made with CTRANSF were not affected by the bug.

Jun 11: If a "fluid" was present in a phase assemblage Perple_X previously used the Voigt average (arithmetic mean) to compute elastic moduli of the fluid-solid aggregate regardless of the VRH keyword. This practice led to inconsistencies because Perple_X identifies some phases as fluids by the equation of state used to describe them, whereas others (e.g., melts) are treated identically to solids. Perple_X now strictly implements VRH averaging regardless of whether fluids are present, i.e., in the case that a fluid has no shear modulus the harmonic component of the average is zero and the aggregate shear modulus is the Voigt average multiplied by its VRH weighting factor.

This change only affects programs MEEMUM and WERAMI.

Apr 21:

PSSECT: was modified by George Helffrich (Bristol) to place phase field labels at the barycenter of the respective fields. Additionally if the same assemblage is stable in more than one field of a phase diagram section, then each field is labeled. The keyword replicate_label allows users to control how far apart replicate phase fields must be before they are labeled.

Perple_X: A theoretical estimator derived by George Helffrich (Bristol) for the temperature derivative of the bulk modulus based on the Anderson-Gruneisen parameter can be used in conjunction with thermodynamic data bases that assume the Murnaghan equation of state. This estimator is used if the keyword Anderson-Gruneisen is true.

Mar 5 (replaces Mar 4 update where WERAMI bug III was diagnosed incorrectly):

Spinel, Sp(WPH) renamed and corrected as Sp(WPC) (Mar 5): The solution model Sp(WPH) for usp-mt-herc-mt spinel in Perple_X data files was formulated incorrectly and incorrectly attributed to White, Powell and Holland (JMG, 2007). The correct attribution is White, Powell and Clark (JMG, 2002), the model formulation and name have been corrected accordingly in solut_09.dat.

Ilmenite, Ilm(WPH) (Mar 5): The solution model Ilm(WPH) in solut_09.dat for Fe2+-Fe3+-Ti ilmenite after after White, RW, Powell, R, Holland, TJB & Worley, BA (2000) has been extended for Mg-Mn solution. The model requires make definitions for oilm and dilm endmembers, these have been added to hp02ver.dat.

Pumpellyite, Massonne & Willner (2008) (Mar 4): A molecular solution model for ferric-ferrous-magnesian pumpellyite Pu(MW) (Massone & Willner, EJM, 2008) has been added to solut_09.dat. The model requires the ferrous and ferric pumpellyite endmembers fpum and ffpu, these have been added to hp02ver.dat.

WERAMI modification I (Feb 23): The spreadsheet output option "36 - output all properties of a phase or system" for computational modes 2-4 has been modified to permit output of all properties of ALL phases in a single calculation. If this output option is selected, then at each sampling point WERAMI writes N+1 rows of output to the spreadsheet, the first row corresponds to 36 properties of the system, and the remaining N rows correspond to properties of the stable phases of the system at the indicated conditions, e.g.,

Name              T(K)         P(bar)      V,J/bar        H,J         gamma T      Ks,bar       Gs,bar      v0,km/s     ...
System          800.003      10001.5      152.744     0.115760E+07  1.07802     0.118035E+07  716329.      5.96322      ...
O(stx)          800.003      10001.5      4.42295      38493.3      1.15227     0.126136E+07  746999.      6.18618      ...
Sp(stx)         800.003      10001.5      16.0584      434579.      1.27932     0.195877E+07  997470.      7.33279      ...
Opx(stx)        800.003      10001.5      12.7257      122700.     0.943009      998831.      680567.      5.47059      ...
Cpx(stx)        800.003      10001.5      13.3189     -78173.1      1.06873     0.112432E+07  624483.      5.86877      ...
System          1155.56      10001.5      154.806     0.331968E+07  1.10423     0.109521E+07  669056.      5.78278      ...
O(stx)          1155.56      10001.5      4.48439      101613.      1.18133     0.119655E+07  695008.      6.05694      ...

The format is described at: WERAMI_OUTPUT_TABLE_FORMATS.

WERAMI modification II (Feb 26): An output option "38 - Multiple property output for system and phases" has been added for computational mode 2 (it may not function correctly for modes 3 and 4). In this mode the user specifies a list of physical properties these are then output for the system and its stable phases at each grid point. The resulting file is intended for user designed programs, it cannot be processed with other Perple_X programs. Details of the file format and examples of processing programs are at: WERAMI_MULTIPLE_PROPERTY_GRID_FORMAT.

WERAMI bug I (Mar 4): shear wave velocity temperature derivatives computed for any of the Mie-Gruneisen EoS formulations implemented in Perple_X were incorrect because the finite difference estimator used to compute the T-derivative of the adiabatic shear modulus of individual phases was incorrect by a factor of two. The error did not affect calculated shear wave velocities.

WERAMI bug II (Mar 4): Aggregate seismic properties were not output if a fluid phase (a phase with no shear modulus) was stable.

WERAMI bug III (Mar 5): Bulk densities were output in units of g-bar/J rather than kg/m3 if all of the following conditions were simultaneously true: 1) a phase with negative expansivity was stable (negative expansivities are anomalous, but are predicted by the Holland & Powell Landau model for the alpha/beta quartz transformation); 2) a fluid was stable; and 3) density of the solid aggregate was requested (the default). For calculations in silicic water-rich bulk compositions, the inconsistent density units resulted in a region of seemingly anomalous density coincident with the alpha/beta quartz transition.

stx08ver.dat data file (Feb 23): The parameters for the whole mantle data base from Xu et al. (EPSL, 2008) in file stx08ver.dat have been changed from the rounded off values given in the Xu et al. (2008) paper to the values, courtesy of Lars Stixrude, used in the calculations shown by Xu et al. (2008). This change has little or no consequence for phase equilibria that do not involve the post-perovskite phase, but for equilibria involving post-perovskite at 5000 K the rounded off parameters caused a discrepancy of ~10 GPa in the location of the mg-perovskite = mg-post-perovskite phase boundary.

stx08ver.dat data warning: Although the parameters in the Xu et al. (EPSL, 2008) data base predict a reasonable high-pressure stability field for post-perovskite in the MgO-SiO2 system, they also predict an additional low-pressure high temperature field for mg-ppv that is almost certainly erroneous. This low pressure stability field for mg-ppv, together with the strong stabilization of the fe-ppv endmember predicted by the parameterization, leads to implausible phase relations for Mg-Fe-Al-Si post-perovskite. Therefore the Xu et al. data should not be used to calculate phase relations involving the post-perovskite phase.

Dec 21, Perple_X modifications:

The name of the Perple_X option file, formerly perplex_option.dat, is now specified in the problem definition file generated by BUILD. This modification facilitates the use of option files that are customized for particular calculations (e.g., perplex_option_for_solvi.dat).

The keyword closed_c_space can now be specified in the Perple_X option file. For gridded minimization calculations as function of compositional variables closed_c_space controls whether the variables define a closed or open composition space. Formerly, Perple_X used a closed composition space for calculations with one variable and an open composition space for calculations with two variables.

The cumulative_modes keyword is no longer read from the Perple_X option file, instead the option is set interactively if a user elects to extract the modes of all phases using WERAMI.

BUILD now checks if endmember phases defined by make definitions are consistent with the components specified for a given problem. This information is used to eliminate irrelevant phases from the lists of excludable phases and solution phases.

Dec 12, PMELTS bug: the configurational entropy model of Nichols (CMP, 74:211, 1980) used in PMELTs was coded incorrectly in Perple_X. The error resulted in large configurational entropies at, and near, the composition of water. As a consequence, the model predicted excessive stability for hydrous melt compositions and erroneous miscibility gaps between aqueous fluid and silicate melt.

Nov 20. A bug that prevented VERTEX from calculating of the carbon saturation surface and carbonation equilibria as a function of oxygen chemical potential, fugacity or activity has been corrected.

Nov 12, The NCFMAS whole mantle thermodynamic model of Xu et al. (EPSL, 2008) has been implemented and verified for Perple_X. The data is in the files stx08ver.dat and solut_08.dat. The Xu et al. garnet model required minor changes to Perple_X, therefore to use the data it is essential to use a current version of the programs. An input file and information used to verify the implementation, courtesy of Wenbo Xu, are at

The stx08ver.dat file should be used with the solution models:

   Pl(stx8) Sp(stx8)  O(stx8)  Wad(stx8) Ring(stx8) Opx(stx8) Cpx(stx8)

   Pv(stx7) Ppv(stx8) CF(stx8) C2/c(stx) Wus(stx7)  Aki(stx8) Gt(stx8)

The citations for the stx8, stx7 and stx models are Xu et al. (EPSL, 2008), Stixrude & Lithgow-Bertelloni (EPSL, 2007) and Stixrude & Lithgow-Bertelloni (JGR, 2005), respectively. Refer to the original papers or Perple_X_solution_model_glossary for additional information on these models.

The error values in stx08ver.dat are from Stixrude & Lithgow-Bertelloni (EPSL, 2007) and are not the errors cited by Xu et al., if you update these values, then I would greatly appreciate a copy of the updated file.

Sep 26:

Bio(TCC) solution model: this KFMASHTO biotite model from Tajcmanova et al. (2009) is a reformulation of the biotite [TiBio(WPH)] model of White et al. (2007). The reformulation assumes a different site occupancy for Ti in biotite. The model was parameterized using a data base of experimental and natural phase equilibria and excess parameters from Holland & Powell (2007). Compared to previous biotite models, Bio(TCC) appears to significantly improve predictions of both the Al-content of KFMASH biotite and the Ti-content of KFMASHTO biotite. The model has been entered in solut_08.dat and requires make definitions for titanian (tbit) and ferric (fbit) endmembers that have been entered in the thermodynamic data files hp02ver.dat and hp04ver.dat, a Mn-bearing version of the model is in the solut_09.dat solution model file.

WERAMI/VERTEX modifications: various I/O bugs involved in the processing of 2-d phase fractionation calculations have been eliminated (8/31/08).

Aug 11:

oAmph(DP) solution model error: the enthalpies of formation for ammo1 and ammo2 did not include the DQF correction for grunerite. The enthalpies have been corrected in solut_08.dat and the implementation has been verified by comparison with THERMOCALC.

ACTCOR/CTRANSF modification: the data file translation programs ACTCOR and CTRANSF did not copy the "make" definitions from the original data file to the translated file. The programs have been modified to copy the definitions (6/18/08).

PSVDRAW modification: PSVDRAW has been modified to permit more graphical options for composition diagrams (7/17/08).

Jul 15, WERAMI divide-by-zero error II: the computation of aggregate temperature and pressure derivatives of elastic shear moduli, introduced on May 24, caused a divide-by-zero error if a phase with constant volume was stable (notably, fictive composants such as "na2o").

Jun 16, cAmph(DP) solution model errors: i) the enthalpies of formation for cammo1 and cammo2 did not include the DQF corrections for grunerite and cummingtonite; ii) the site fraction definition for z(Mg,M1) did not include magnesio-riebeckite. The enthalpies, site fraction, and site population limits have been corrected in the solution model file solut_08.dat, the implementation has been verified by comparison with THERMOCALC.

Jun 9, WERAMI divide-by-zero error: the computation of aggregate temperature and pressure derivatives of elastic shear moduli, introduced into the code on May 24, caused a divide-by-zero error if the temperature or pressure derivative of the elastic shear modulus of a stable phase was zero (e.g., the Holland & Powell melt model "melt(HP)").

May 24, WERAMI/VERTEX modifications:

WERAMI has been modified to allow extraction of all physical properties and the complete chemistry of a phase or system in a single table (choice #36 in computational modes 2-4, the format is described at: WERAMI_OUTPUT_TABLE_FORMATS). Additionally, the temperature and pressure derivatives of adiabatic elastic moduli and seismic velocities are now output.

VERTEX: use of the initial_resolution keyword for Schreinemakers-type phase diagram projections is convenient, but had the unfortunate consequence that phase compositions were frequently compositionally degenerate. Among other problems, this degeneracy made it difficult for VERTEX to reliably classify univariant phase equilibria. VERTEX now applies a part-per-mil perturbation to the increment specified by the initial_resolution keyword to avoid compositional degeneracies.

Apr 12, WERAMI/VERTEX bugs (bugs 1-3 fixed Apr 9, bug 4 fixed Apr 11):

1) Component transformations: a bug introduced after Feb 29 caused VERTEX to incorrectly implement component transformations (e.g., for AFM diagram calculations) specified in the computational option file generated by BUILD.

2) Error reading old solution model files: the version of Perple_X introduced on Mar 31 could not read the previous version of the solution model file (solut_07.dat, i.e., all solution models were rejected).

3) Ferric iron in Omph(GHP): the site population limits for this models in solution model file solut_08.dat were incorrect for calculations with ferric iron.

4) WERAMI: a bug introduced on, or after, March 31 caused WERAMI to calculate incorrect thermodynamic properties.

5) Ferric iron in cAmph(DP), oAmph(DP): a coding error caused VERTEX to generate invalid site populations for these models during calculations with ferric iron.

Mar 31, Major Perple_X 07 revision:

1) Multiple order-disorder parameter solution models [Omph(GHP), cAmph(DP), oAmph(DP)]: recent (e.g., Green et al. 2007, Diener et al. 2007) THERMOCALC models derived without assuming equipartition have been implemented in Perple_X. The initial implementation of these models in Perple_X (Oct 30) was unsuccessful because the non-linear solver in Perple_X did not use site population constraints to restrict the speciation problem. These site population constraints are now, thanks to R. Powell, explicitly included in multiple order-disorder solution models (in a section preceded by the keyword "begin_limits") in a new version of the solution model file, solut_08.dat. Previous versions of Perple_X cannot read the new solution model file format, whereas the new version of Perple_X can read old versions of the solution model file (e.g., solut_07.dat), but automatically rejects multiple order-disorder solution models present in the old format (i.e., without site population limits). The multiple order-disorder models increase computation times by at least an order of magnitude.

2) The Diener et al. (2007) amphibole models require make definitions for magnesio-riebeckite and ortho-magnesio-pargasite endmembers. The definitions for these endmembers present in previous versions of the thermodynamic data files hp02ver.dat and hp04ver.dat have been corrected.

3) Two new keywords may be specified in perplex_option.dat: linear_model and order_check. By setting linear_model to off, slightly smoother phase boundaries are computed by gridded minimization at the cost of longer computation time and larger file size (for 2-d calculations the increase in time and size is less than a factor of 2). The order_check parameter permits the resolution of phase transitions caused by non-convergent ordering in a solution phase.

Feb 29, Perple_X 07 modifications:

1)  The "modes of all phases" property (introduced Jan 23) choice in WERAMI has been modified to allow the user to choose the path variable used for plotting results along a 1-dimensional path.

2) The initial guess used to solve the high pressure equations of state used for the stx07ver.dat (Stixrude and Lithgow-Bertelloni, GJI 2005) and sfo05ver.dat (Stixrude and Bukowinski, JGR 1990) data bases has been improved. The improved guess accelerates convergence. Because slow convergence was used as a criteria for failed optimizations the modification also reduces the number of failed optimizations.

Feb 4, Perple_X 07 bugs:

1) WERAMI did not tabulate modes correctly for the "modes of all phases" property (introduced Jan 23) choice if immiscibility occurred in one or more solutions. The error has been corrected. However, when immiscible solutions occur WERAMI does not use compositional criteria to sort the phases; i.e., if a solution is present as phases A and B, then WERAMI tabulates the phase modes in two columns, but the mode of A may be listed in the first column in some rows, and in the second column in other rows. This problem can be circumvented by extracting the modes of the phases individually (property choice #7).

2) VERTEX/MEEMUM did not read the values of the iteration keyword specified in perplex_option.dat, but rather used the default values of "4 3 10". This bug was introduced Aug 24 and has been corrected.

Jan 23, Perple_X 07 modifications and bugs:


1) WERAMI has been modified to permit the simultaneous extraction of the abundances of all phases found to be stable in a calculation. The resulting data can be plotted as absolute or cumulative modes (see Example #24).

2) Four new keywords may be specified in perplex_option.dat: cumulative_modes, T_stop, hard_limits, and zero_bulk.

3) The high pressure data base and solution models of Stixrude & Lithgow-Bertelloni (EPSL 2007) has been implemented, and verified, in Perple_X with the files stx07ver.dat and solut_07.dat. The endmember data should be used in conjunction with solution models: C2/c(stx), Opx(stx), Gt(stx), Cpx(stx7), Aki(stx7), Wus(stx7), Pv(stx7), Sp(stx7), O(stx7), Wad(stx7), Ring(stx7), Ppv(og). The models Pv(fab), Sp(stx), O(stx), Wad(stx), Ring(stx), Aki(fab) designed for the earlier sfo05ver.dat high pressure data base should not be used in conjunction with stx07ver.dat.


1) Various minor bugs were identified by use of a stricter (Intel) compiler. Most of these were unlikely to affect the Windows version of Perple_X, but were potentially problematic on UNIX/LINUX operating systems.

2) A bug that caused WERAMI to incorrectly implement user defined compositional criteria to distinguish the immiscible phase of interest has been corrected.

Dec 22, Chemical potentials: Perple_X 07 has been modified to optionally output the dependent thermodynamic potentials (typically chemical potentials) computed during gridded minimization calculations. The option is set by the dependent_potentials keyword in perplex_option.dat.

Minor bugs: Various bugs introduced in the Dec 18 version removed.

Dec 19 (also 18), Various bugs introduced in the Dec 18 version removed.

Dec 18: activity/fugacity variables built into Perple_X 07: fugacities and activities can now be specified as computational variables in addition to chemical potentials. Minor bugs: 1) solution model reformulation errors that caused VERTEX to terminate have been eliminated. 2) I/O errors associated with the use of the sup92/3ver.dat data files have been eliminated.

Dec 11, minor VERTEX 07 changes: 1) 2d-fractionation calculations: A bug that prevented such calculations from being run with "auto_refine" has been removed. 2) Constrained minimization: a bug that occasionally caused VERTEX to crash (array bounds or segmentation fault) has been removed. 3) Solvus_tolerance: a routine (solvs1) for testing immiscibility was using non-normalized phase compositions, as a consequence VERTEX may have indicated immiscibility when the phases were in fact miscible.

Dec 2, minor Perple_X 07 modification: Perple_X now permits specification of an arbitrary fractionation path. When this option is used, WERAMI and PSSECT plot/recover data using nodal coordinates (i.e., n, where n is the nth set of coordinates defining the path). This option can also be used to compute phase relations along an arbitrary path without fractionation.

Nov 20, Minor solution model corrections: various minor corrections have been made to the solut_07.dat models Gt(WHP), Melt(HP) and TiBio(WHP) to make the models consistent with the White et al (JMG, 2007) calculations.

Nov 14, Minor Perple_X 07 changes:

Various changes for 1d-fractionation calculations: 1) If pressure was chosen as a dependent path variable VERTEX failed to set the pressure correctly, the error has been corrected. Fractionation calculations in automatic auto_refine mode may not have fractionated the correct phase in the auto_refine cycle of the calculation if phases were eliminated after the exploratory stage of the calculation, the error has been corrected. 2) Fractionation calculations may completely deplete a component from the composition of a system, this tends to destabilize subsequent calculations, VERTEX has been modified to warn users when this occurs.

Parameter changes: As a result of the increased number of make definitions specified in hp02ver.dat after the Oct 30 revision, it became possible to specify problems which exceeded array dimensions specified by parameters K10 (200) and K16 (20), these parameters have been increased to 220 and 30, respectively.

hp04ver.dat: the tcds55 version of the thermocalc data file has been converted to Perple_X format (hp04ver.dat).

Oct 30, Major Perple_X 07 revision: Perple_X 07 has been revised to make the source code more transparent and to accommodate the multiple species solution models that Holland & Powell have begun implementing to replace their previous "equipartition" models. Although this version of Perple_X includes some of these new models (i.e., Omph(GHP), oAmph(DHP), cAmph(DHP)), the Omph(GHP) model can only be used for restricted model compositions. It is probable that similar restrictions apply for the amphibole models. Therefore the new models should not be used unless they are verified by comparison with published calculations. Despite this problem, the new version has been put on-line because it functions correctly with earlier solution models and eliminates several bugs associated with the "auto_refine" option introduced on Aug 24. Additionally this version eliminates an inconsistency in the resolution of speciation calculations that contributed to irregular phase boundaries.

There is a minor change to the solution model file format in the new version, therefore old versions of Perple_X 07 cannot read the current version of solut_07.dat.

Sep 14, LINUX/OSX chaos: Linux and OSX are less forgiving environments for Perple_X, which, unfortunately, is developed on XP. Over the last 10 days attempts to compile Linux and OSX versions of Perple_X have identified a number of bugs related to unitialized variables and several partially corrected versions of Perple_X were placed on-line.

minor Perple_X 07 autorefine bugs: A bug that caused VERTEX to crash in auto_refine "auto" mode if no solutions were found to be stable has been removed. A bug that caused VERTEX to behave erratically in auto_refine "auto" mode if calculations involved a compound formation model has been removed.

Sep 3 (also Sep 1), minor Perple_X 07 bugs removed:

The Aug 24 revision introduced a bug in VERTEX that suppressed the interactive prompts necessary to run phase fractionation calculations.

Sep 3: The Jul 11 revision introduced a bug in WERAMI that caused the program to crash during processing of results from a failed minimization for one-dimensional gridded minimization and phase fractionation calculations.

The Aug 24 revision changed the way non-linear subdivision was implemented with the result that VERTEX generated more pseudocompounds and caused memory problems with complex solution models. The previous implementation has been restored.

The Aug 24 reformulation of the "casmelt" model in solut_07.dat caused I/O problems on Mac OSX operating systems (apparently VERTEX/BUILD are unable to read the plus sign in FORTRAN floating point notation, as in E+00, but can read the data if the superfluous plus sign is removed, i.e., E00.

Aug 28, WERAMI 07 modification:

an error trap that prevented the output of seismic velocities if the expansivity of a phase was negative has been removed. This change has been made because the "Landau" order-disorder model of Holland & Powell (1998) may result in negative effective expansivities. Although physical properties at conditions where expansivity is negative are dubious it is still possible to compute positive elastic modulii and seismic velocities from the equation of state. These properties are now output rather than zeroed as was previously the case.

Aug 24, Perple_X 07 revision: Perple_X 07 has been modified so that the exploratory and auto-refine stages of a calculation can be done in a single execution of VERTEX. This option is controlled by the auto_refine keyword in the perplex_option.dat file. To activate this automated mode, the value of the auto_refine keyword must be changed from "manual" (the default) to "automatic".

The format of the auto_refine keyword has been changed, therefore older versions of perplex_option.dat are incompatible with the current version of Perple_X 07.

The new version of Perple_X 07 also allows a number of new keywords in the perplex_option.dat file that control options for non-adaptive minimization calculations (i.e., composition, mixed variable, and Schreinemakers diagrams). As a consequence, the use of old input files generated with BUILD may lead to unexpected results because the options specified in the input file are overridden by those specified in perplex_option.dat.

Two programming errors (undefined array indexes) that caused VERTEX to crash have been removed and the make definition of "fbi" in the thermodynamic data file hp02ver.dat has been corrected.

Jul 24 (also Jul 21,23), WERAMI 07 bug: changes in various error traps allowed floating point errors that had the potential to cause WERAMI to crash.

Jul 12, 2007 pMELTS model reformulation: The implementation of the pMELTS(G) model (Ghiorso et al., G3 3:5, 2002) in Perple_X followed the formulation (equations 1 and 2) of Ghiorso et al. (2002) verbatim. However, consideration of the basis of the model outlined in Nichols (CMP, 74:211, 1980) and the subsequent, and supposedly identical, MELTS model description (Ghiorso & Sack, CMP:197, 1995) suggests that equations 1 and 2 of Ghiorso et al. are incorrect. Accordingly, Perple_X 07 has been modified to use the earlier formulation of Nicholls (1980) and Ghiorso & Sack (1995). This modification reduces the excessive stability field for hydrous silicate melts predicted by earlier Perple_X implementations of pMELTS.

Jul 11, 2007 Perple_X 07 modifications: graphical output for 1d gridded minimization and phase fractionation calculations generated by PSSECT has been changed from a mock-2d plot to a 1d strip. Various prompts concerning 1d calculations have been modified (simplified) in BUILD, PSSECT and WERAMI. The internal variable structure used for 1d calculations in VERTEX has been simplified, a modification that may cause problems in VERTEX if old 1d-calculation input files are used in the present version of VERTEX.

Jun 23, 2007 Perple_X 07

bug: a bug that sometimes caused VERTEX to incompletely reinitialize "auto-refine" data has been corrected. The bug was introduced in the June 12 version of VERTEX.

modifications (introduced June 22):

Grid and path keywords: grid and path parameters for gridded minimization and phase fractionation calculations are now specified by keywords (x_nodes, y_nodes, grid_levels, 1d_path) in the perplex_option.dat file rather than in the problem definition file generated by BUILD. For each keyword two values are supplied. These values are used for the exploratory and auto-refine stages, respectively, of calculations in VERTEX.

auto_refine keyword: the structure and meaning of this keyword has changed. The keyword is now associated with two values auto_refine_factor_I and auto_refine_factor_II that specify the increase in resolution between exploratory and auto-refine stages of calculations in VERTEX, respectively, with and without adaptive minimization. auto_refine_slop is now interpreted as a fraction of the observed compositional range rather than as an absolute increment.

Jun 13, 2007 Perple_X 07 modifications/bugs:

On June 12 a faulty version of VERTEX was included in the Windows program archive

Auto_refine modification: The auto_refine file format has been modified, auto_refine files generated with the previous version of VERTEX cannot be read by the current Perple_X 07 programs. The option has been modified so that the auto_refine_XXX.dat file is not rewritten after the initial execution unless the user explicitly requests this by suppressing auto_refine when VERTEX is run. Although the auto_refine_XXX.dat is not modified, the user-friendly text version auto_refine_XXX.txt is rewritten after each calculation (this file has no influence on the auto_refine option).

VERTEX bug: a bug that caused optimization to fail in one component systems has been removed.

WERAMI bug/modification: a bug that caused WERAMI to generate nonsense phase compositions if the "weight %" option was specified in perplex_option.dat has been corrected. Various I/O simplifications and corrections have been made for data recovery from 1-dimensional diagrams (e.g., calculations along a geotherm or 1-d phase fractionation).

PSSECT bug: a bug has been removed that prevented phase field restrictions from being implemented correctly.

May 30, 2007 Minor WERAMI 07 bug: In mode 3 & 4 calculations, WERAMI 07 did not generate the "c"-plot file normally used to create graphical output, the error has been corrected in the WINDOWS version of Perple_X 07.

May 14, 2007 Major modification to Perple_X 07: Perple_X 07 has lurched forward again. The most important change is that the auto refine option has been introduced for non-adaptive minimization calculations (i.e., for the calculation of Schreinemaker's-type diagrams, composition diagrams, and mixed variable diagrams). This change permits the use of a single solution model file (e.g., solut_07.dat) for all the types of calculations possible in Perple_X.

Other changes in this version are:

1) The "_07" suffix has been removed from the names of the Perple_X 07 programs.

2) Formerly in Schreinemaker's-type diagram calculations VERTEX did not distinguish between the different types of high variance psuedounivariant equilibria not did it test for immiscibility. These deficiencies have been remedied.

3) BUILD has been modified to allow users to specify what type of high variance equilibria they wish to calculate in Schreinemaker's type diagrams.

4) An 07 version of PSVDRAW has been introduced that permits the user to selectively plot pseudo-univariant equilibria of different variance.

5) In adaptive minimization calculations, VERTEX now automatically relaxes the compositional limits of a solution model if it encounters an internal limit (i.e., XMAX < 1 or XMIN > 0).

6) Dimensioning for the number of static pseudocompounds (k1=750,000) and adaptive pseudocompounds (k21=1,500,000) has been increased to facilitate calculations with melt models. This may require users to increase the allocation of virtual memory on their computers to ca 2 Gb.

7) A number of the examples for Perple_X 06 have been reformulated and tested for Perple_X 07, the examples are in the Perple_X 07 directory.

8) An inconsistency in solvus testing (with no known effect) has been removed.

Apr 19, 2007 VERTEX 07 bug: Gridded minimization calculations were not possible for problems without solution phases. The bug has been corrected.

Apr 18, 2007 VERTEX 07 bug: In auto_refine mode (see Apr 17 update below), if all solution phases were stable in the initial calculation, then during refinement VERTEX would terminate with an error message indicating that the auto_refine file was inconsistent. The bug has been corrected.

Apr 17, 2007 Major modification to Perple_X 07: Perple_X 07 has lurched forward again. The struggle in Perple_X 07 has been to find the optimal balance between efficiency and accuracy by tuning the various parameters set in the Perple_X option file. This struggle has been complicated by the fact that parameter choices that work well for simple systems do not work well for systems with minor element solution (e.g., Mn or Cr) or many-dimensional solutions (e.g., silicate melt models). In the Mar 21 update modifications (stretching transformations and parameter choices) were introduced to alleviate this problem, but the modifications were costly in terms of efficiency. This update introduces an auto refine option that recovers, if not increases, the efficiency of the original version and at the same time allows for much greater accuracy. The downside to the update is that, at least in the current version, the option requires that VERTEX be run two times for a given problem. An initial "exploratory" calculation is used to establish which solutions are stable and to estimate the range of stable solution compositions. The second calculation is then used to refine these compositions. It is not essential to change the iteration parameters between the initial and refined calculations, but by changing these so that the initial calculation is done with "cheap" values (e.g., 3 2 1) it is possible to obtain extraordinary efficiency. The challenge is then to find the cheapest values that still provide reasonable estimates (the program does in fact generate warnings during refinement if the estimates are bad). The auto_refine option includes an auto_refine_factor that automatically (optionally) increases compositional resolution during the refinement calculation; thus it is no longer necessary to modify the initial resolution keyword as suggested for the Mar 21 update.

Apr 11, 2007 Severe error Perple_X 07: A programming error caused VERTEX_07, MEEMUM and WERAMI_07 to incorrectly compute excess properties of solution models using Holland & Powell's Van Laar formulation (i.e., the solution models Mica(CH1), Mica(CH2) and Amph(DPW)). These properties have surprisingly little effect on the resulting phase relations, but the error sometimes caused the programs to behave erratically (i.e., output with NaNs from WERAMI for unrelated properties).

Mar 21, 2007 Perple_X 07: A number of modifications have been made to improve the resolution of minor element solution (the "Caddick" effect) and solvus phase relations, the modifications include introduction of a non-linear subdivision scheme and related modifications to the solution model file solut_07.dat. Additionally, the default parameters have been changed in response to user feedback. The new values slow execution and require more memory but produce a closer approximation to finished results. To make lower quality calculations modify the initial_resolution and iteration keywords in the Perple_X option file. The new version of solut_07.dat cannot be read by earlier versions of Perple_X.

MacOSX and Windows binaries updated.

Mar 5, 2007:

Perple_X 07: The expression for the compositional resolution of adaptive minimization calculations on the perplex_option web page was wrong by a factor of 2; this had the consequence that the accuracy of adaptive minimization calculations actually deteriorated on the 1st iteration if the second iteration parameter was assigned its default value (2). The program has been modified so that the value of second iteration parameter cannot be decreased below 3.

Perple_X 07/06: OSX archives have been updated.

Feb 28, 2007, Perple_X 07 phase fractionation bugs: Various bugs in phase fractionation calculations have been corrected.

Feb 26, 2007:

Linux 07 archive: Perple_X 07 has been compiled for LINUX.

BUILD 06/07 bug: BUILD did not include "made" phases in its internal phase list, as a consequence "made" phases could not be excluded from calculations.

Feb 25, 2007, WERAMI 07: In mode 2 calculations for individual phases, an uninitialized variable caused WERAMI 07 to output the last known value of the property of interest at any conditions where the phase was not stable. As a consequence of this error contour plots of the data had contours running parallel to the x-axis in x-y regions where the phase of interest was not stable.

Feb 22, 2007, Miscellanea:

Perple_X 07:

BUILD 07: The erroneous prompts and warnings concerning fluid phase components have been eliminated

VERTEX 07: This version is roughly an order of magnitude faster than the previous 07 version. With this modification, the 07 and 06 versions are comparable in terms of speed when the 07 version is run in non-adaptive mode.

VERTEX 07: The current version accepts solution models that specify non-cartesian subdivision schemes, this change increases the backwards compatibility of the 07 version with older solution model files.

Solut_07.dat: Several additional "microscopic" formulation models have been converted to the macroscopic formulation required by the 07 version.

MacOSX and Windows 07 binaries have been updated.

Perple_X 06/05: the LINUX archives have been updated.

Feb 9, 2007, MEEMUM bug: MEEMUM reported incorrect compositions for pure phases, these were also used to back-calculate bulk compositions, which were therefore also incorrect for assemblages involving pure phases.

MacOSX and Windows binaries updated.

Feb 8, 2007

MEEMUM: The program MEEMUM has been added to Perple_X 07, MEEMUM reads the computational option file generated by BUILD for variable and data definitions and then permits the user to interactively specify the composition and other variables for free energy minimization calculations.

BUILD 07: Error traps have been added to warn users of potential errors associated with the use of saturated phase components as either thermodynamic, saturated or mobile components.

VERTEX 07: A bug prevented the "initial_resolution" parameter from being implemented correctly, with the result that VERTEX used the resolutions specified in the solution model file for the first iteration of adaptive minimization calculations.

MacOSX and Windows binaries updated.

Feb 2, 2007

BUILD 07: BUILD has been updated for the 07 version of Perple_X. This update eliminates some irrelevant prompts, additionally it permits users to specify saturated phase components (usually H2O and CO2) as saturated components. The default solution model file name for BUILD 07 has changed from newest_format_solut.dat to solut_07.dat.

VERTEX 07: Two keywords, "initial_resolution" and "reach_factor", have been to the list recognized in the perplex_option.dat file. These options allow users greater control over adaptive minimization. In particular, for adaptive minimization calculations the initial_resolution keyword permits users to over-ride the resolution specified in the solution model file for individual solution models with a single global parameter.

VERTEX 07: A bug has been removed that caused errors in calculations with saturated components.

MacOSX and Windows binaries have been updated.

Jan 19, 2007

WERAMI 06/07 bug: a bug that potentially caused integer overflow during interpolation has been corrected.

Perple_X 07: bugs that caused errors in VERTEX/WERAMI/PSSECT if "zero mode" testing was turned off have been corrected. Additionally a memory problem that caused the OSX versions of WERAMI/PSSECT to crash has been corrected.

newest_format_solut.dat 07: several additional solution models in the 07 version of newest_format_solut.dat have been converted to macroscopic format.

Dec 23, 2006 (MAJOR) VERTEX 07 bug: The default compression options specified by BUILD 06 caused VERTEX 07 to generate incorrect output during the grid refinement stage of multilevel gridded minimization calculations. The current version of VERTEX 07 ignores the 06 compression option.

Dec 18, 2006 VERTEX 07 bug: VERTEX 07 assigned a default value of zero to the max_iteration keyword for solution models, consequently the removal of the keyword from the solution models in newest_format_solut.dat (Dec 13) caused the program to make no iterative refinements. The current version of the program now initializes the max_iteration keyword to 99, thus if this keyword is not specified in the solution model file (as is currently the case) the number of iterative refinements for a solution model is dictated by the first value of the iteration keyword in perplex_option.dat (default=4).

Dec 13, 2006 Format error in newest_format_solut.dat: Solution models in the version of newest_format_solut.dat included with Perple_X 07 made use of an optional (and probably useless) "max_iteration" keyword that cannot be read by Perple_X 06 programs (notably BUILD). The keyword has been commented out in the current version of newest_format_solut.dat.

Dec 11, 2006

Perple_X 07: a beta version of Perple_X 07 is available. Perple_X 07 uses adaptive minimization to achieve a major increase in speed and accuracy as compared to previous versions of Perple_X.

Minor VERTEX 06 bugs: bugs have been removed that under certain conditions caused VERTEX 06 (and its predecessors) to generate pseudocompounds beyond the limits specified in the solution model file.

Nov 22, 2006, VERTEX bugs: 1) The version of VERTEX 06 created June 28 had a bug that caused the program to potentially calculate incorrect properties for entities created by a "make" definition involving a "DQF" correction. 2) A bug that caused VERTEX reduce the configurational entropy of non-reciprocal solutions with independent mixing on a single identisite formatted for the (old) microscopic formulation (the "San" model being a case in point) by a factor of 1/R (the universal gas constant) has been removed. The second bug is (and remains) present in earlier versions of VERTEX (i.e., Perple_X 04, 05).

The Windows and Mac OSX binaries have been recompiled.

Sep 9, 2006:

OSX Perple_X 06: the version of Perple_X 06 put on line July 7 called a g2c library that is not included with the standard OSX distribution. The current version has been recompiled, courtesy of Eric Goergen (UMN), to circumvent this problem.

New OSX Perple_X 06 Scripts: Dave Hirsch ( has provided scripts to automate several aspects of Perple_X calculations, these include a script that takes a build file, runs vertex and psvdraw to make pseudosection plots without user interaction.

Aug 17, 2006, VERTEX 06 bugs: 1) The version of VERTEX 06 created June 28 had a bug that caused the program to calculate incorrect shear modulii for phases created by "make" definitions. This bug also sometimes caused the program to crash. 2) A second bug prevented made entities from being excluded from calculations if they were entered in the excluded phase list. The Windows and Mac OSX binaries have been recompiled.

Jul 6-7, 2006:

Minor bugs in Perple_X 06: uninitialized variables in the version of Perple_X 06 created Jun 28 had the potential to cause FRENDLY and VERTEX, particularly on UNIX/LINUX based OSs, to crash or generate incomprehensible output. The affected source files are rlib.f and frendly.f; the Windows and Mac OSX binaries have been recompiled.

Modifications: the implementation of the Stixrude and Lithgow-Bertelloni GJI 05 EoS has been modified to include the highest order term in the finite-strain model expansion for the adiabatic shear modulus (function gstxgi, rlib.f). The Stixrude and Lithgow-Bertelloni data file (slb05ver.dat) has been updated with the published version of the parameters, the previous version used values from a preprint.

Jun 28, 2006, Major modification:

Perple_X 06 has been modified to read "make" definitions entered in the header section of the thermodynamic data files (e.g., hp02ver.dat). Make definitions define new thermodynamic entities as a linear combination of the data for the existing entities within the thermodynamic data file. For example, to define an entity that gives the chemical potential of oxygen as buffered by the assemblage quartz-fayalite-magnetite, the make definition in hp02ver.dat is

           qfm = 2 mt + 3 q -3 fa

Once entered in the thermodynamic data file made entities function within Perple_X identically to real entities. Make definitions must be within a section of the header preceded by the keyword


and followed by the keyword


Make definitions also allow a correction to the Gibbs energy as a linear combination of the form

           Gdqf = a + b*T(K) + c*P(bar)

where the coefficients a, b and c are constants specified in the make definition. For additional information on the formatting of make definitions refer to the comments in the header section of the current version of hp02ver.dat.

Because the new version of Perple_X 06 has not been tested thoroughly, the previous working versions of Perple_X 06 are in zip archives named by adding the prefix "Old_" to original archive name.

Perple_X 05 and earlier versions of Perple_X 06 in order to distinguish the "end" keyword of the header section in thermodynamic data files from the "end_makes" keyword. Earlier versions of Perple_X must be either recompiled with the current version of tlib.f or used with data files that do not include a make definition section. The versions of Perple_X 05 for Windows and OSX have been recompiled, users of other old versions should use the data files in the archive The new version of Perple_X 06 is currently available for Windows and OSX.

Minor errors: 1) The header sections of hp02ver.dat and cr_hp02ver.dat had incorrect formula weights for ZrO2 and Cr2O3. 2) The solution model "GrPyAlSp(B)" had inconsistent subdivision ranges. Both errors have been corrected in the latest version of newest_format_solut.dat.

May 15, 2006, Solution model errors in newest_format_solut.dat:

Mica(CH1) - The ordering of the endmembers in the original version of the model was inconsistent with the site populations, the ordering has been corrected as indicated in the model comments.

Opx(HP) - The version of Opx(HP) created on April 24 for modeling shallow mantle conditions was modified from the original model by assigning a temperature dependence of -16 J/K-mol to W(mgts-en) and W(mgts-opx), this modification causes Opx to be too stable at granulite facies conditions. The original Opx(HP) model has been restored, and the model for shallow mantle conditions has been renamed CrOpx(HP).

Apr 24, 2006:

Perple_X 06 BUILD bug: under certain conditions, the modifications made April 5 caused BUILD to prompt twice for the range of the independent variable. This bug was corrected "correctly" in the version of BUILD placed on-line at 5:59 PM, April 26.

Chrome data: Cr-solution models for garnet (CrGt), spinel (CrSp), eskolaite (Esk(C)), clinopyroxene (cCpx(HP)), orthopyroxene (Opx(HP)) have been added to newest_format_solut.dat, and the thermodynamic data base of Holland and Powell (1998, rev. 2002) has been augmented by the appropriate endmembers in the cr_hp02ver.dat data file. The data and models are as yet undocumented and are the result of a Workshop organized by Nina Simon at the University of Oslo to construct a minimal thermodynamic model for shallow mantle phase relations/physical properties.

Apr 5, 2006: The following changes/corrections have been made to the Perple_X 06 versions of BUILD and VERTEX (XP and OSX, the LINUX versions have not been updated).

BUILD changes: has been modified to eliminate unnecessary prompts for variable choices.

VERTEX bugs: 1) a bug that caused VERTEX to crash during phase fractionation calculations with a mixed-volatile saturated phase has been corrected. 2) an error trap has been modified to allow VERTEX to recover from a bug (ver088) that sometimes occurs in one-component gridded minimization calculations.

Mar 30, 2006

Bugs: 1) The solution models Mica(CH1) and Mica(CH) in newest_format_solut.dat had incorrect tetrahedral site occupancies. 2) An unitialized counter had the potential to cause PSCONTOR to terminate incorrectly with an error message about the number of contour segments on UNIX/OSX/LINUX machines (the affected source is pscontor.f).

Changes: 1) WERAMI 06 has been modified to compute seismic velocities from VRH aggregate elastic properties, rather than as the VRH average of the velocities. 2) WERAMI 06 has been modified to allow the user to change computational modes without restarting the program. 3) A script to contour the ratio of values from two different WERAMI output files has been added to the matlab plotting scripts archive.

Linux archive update: The current versions of Perple_X have been recompiled for LINUX and are available in a ZIP archive (, LINUX_README). WARNING: the archive was created before bug #2, above, was corrected.

Mar 8, 2006 WERAMI 06 bug: an error in routine SOLTST (plib.f) caused immiscible phase selection (see Jan 24 update) in WERAMI 06 to behave erratically.

The error has been corrected in the Windows XP and Mac OSX versions of Perple_X 06. The error has not been corrected in the LINUX versions of Perple_X.

Affected programs: WERAMI 06

Mar 7, 2006 VERTEX bug: an error in routine GPHASE (rlib.f) caused VERTEX to locate invariant points in phase diagram projections incorrectly for calculations involving non-reciprocal solutions with ordering.

The error has been corrected in the Windows XP and Mac OSX versions of both Perple_X 05 and Perple_X 06. The error has not been corrected in the LINUX versions of Perple_X. Contact me if you would like a copy of the corrected Perple_X 06 sources.

Affected sources: rlib.f

Affected programs: vertex

Feb 10, 2006, Solution model error and additions in newest_format_solut.dat:

Amph(DPW) - the W(gl ftr), W(gl mfets) and W(ftr mfets) interaction parameters were an order of magnitude too high.

New models - 1) ideal extensions of the Cpx(HP) and Omph(HP) models to include cats and acmite solution have been added as cCpx(HP) and cOmph(HP). 2) an ideal orthoamphibile model has been added as o-Amph.

Jan 24, 2005:

WERAMI_06: WERAMI has been added to Perple_X 06. The advantage of the 06 version of WERAMI is that in mode 2 calculations, the user can specify compositional criteria that WERAMI uses to choose which phase of an immiscible pair is to be used for plotting (previously the properties of immiscible phases were averaged).

The Mac_OSX, LINUX and XP archives for Perple_X 06 have been updated.

Dec 31, 2005: An error in function DSCONF (rlib.f) caused VERTEX to calculate the speciation of solutions with ordered compound formation (i.e., the Holland & Powell models for Omph(HP), Bio(HP), Opx(HP)) incorrectly. The error has been corrected in the WINDOWS and MAC version of Perple_X 05 and Perple_X 06.

Nov 30, 2005: Several solution models have been added to newest_format_solut.dat, these include reciprocal amphibole and mica models recently published by Holland, Powell, and coworkers. These models require special versions of BUILD and VERTEX that are currently available as Perple_X_06. The latest version of Perple_X 05 can read the new solution model file, but reciprocal Van Laar models are approximated as reciprocal regular solutions.

Scripting: some hints on how to run multiple jobs and process data automatically with WINDOWS and UNIX scripting facilities are at FAQ.

Affected Perple_X 06 programs: vertex, build

Affected Perple_X 05 programs: vertex, build

Affected Perple_X 05 sources: rlib.f

Affected datafiles: newest_format_solut.dat

Nov 17, 2005

WERAMI modification: WERAMI has been modified to simplify mode 3 input.

Mac OSX archive update: The current version of Perple_X has been recompiled for OSX and is available as a ZIP archive (, README_UNIX_USERS).

Nov 15, 2005 Minor bugs:

An error in routine SPECIP (source vertex.f) potentially caused VERTEX to calculate incorrect values for the free energy of reciprocal solutions with ordered compound formation and more than one dependent endmember.

An error in routine SRTBLK (source vertex.f) potentially caused VERTEX to classify assemblages involving immiscible phases incorrectly. As a consequence PSDRAW would not distinguish the affected assemblages.

Affected sources: vertex.f

Affected programs: vertex

Aug 14, 2005, Mac OSX archive update: The current version of Perple_X has been recompiled for OSX and is available as a ZIP archive (, README_UNIX_USERS).

Jun 2, 2005 VERTEX/WERAMI/PSVDRAW phase fractionation bug: modifications made in February to VERTEX/WERAMI for 2-d phase fractionation caused PSVDRAW and WERAMI to crash for 1-d phase fractionation calculations.

Affected sources: plib.f, vertex.f

Affected programs: werami, psvdraw, vertex

May 23 2005 WERAMI bug/sup93ver.dat error

WERAMI bug: WERAMI did not renormalize average molar compositions output to the console for mode 1 calculations involving a single solution pseudocompound.

sup93ver.dat: the sup93ver.dat file had unit conversion errors on most, if not all, data entered in the Pokrovski ('92->'93) revision. An older version of the SUPRCT data set, sup92ver.dat, has been added and should be used instead of the more recent sup93ver.dat.

Affected sources: plib.f

Affected programs: werami

Affected data files: sup92ver.dat, sup93ver.dat

May 15, 2005 VERTEX bug: a modification introduced (~March 7) to prevent compression of data obtained at the lowest grid level of gridded minimization calculations in fact made it impossible to turn compression off. As a consequence of compression, processing of calculations with WERAMI was done using single-node extrapolation methods that are inaccurate for large pressure-temperature intervals. Additionally, compression reduced the quality of multiple-node interpolation and extrapolation.

Affected sources: vertex.f

Affected programs: vertex

May 2, 2005: WERAMI has been modified to permit extraction of Poisson's ratio and molar volume.

Affected sources: plib.f

Affected programs: werami

Apr 21, 2005, bugs and modifications:

VERTEX Modification: routine DPHASE (vertex.f) has been modified to make more tests and attempts to correct the finite difference estimators that are used by WERAMI to compute seismic velocities.

WERAMI bug: for mode 2-4 calculations of individual phase properties, WERAMI interchanged the Gruneisen thermal parameter with the bulk modulus.

FRENDLY bug: a prompt for data entry that indicated an incorrect functional form for expansivity ("2*b2" rather than "b2", when b8<0) has been corrected.

sfo05ver.dat: a whole mantle data base (primarily from Stixrude & Lithgow-Bertelloni JGR 05) for phase equilibrium and seismic velocity calculations has been added to Perple_X, see example #23.

Affected sources: vertex.f, plib.f, frendly.f

Affected programs: vertex, werami, frendly

Apr 7, 2005, bugs and modifications:

VERTEX bug: in gridded minimization calculations VERTEX, did not initialize a counter for phase assemblages consisting entirely of true compounds. The incorrect value of this counter had the potential to cause PSVDRAW and WERAMI to crash while reading the VERTEX output.

VERTEX change: the default solvus tolerance has been increased to 0.1 to prevent spurious solvi in calculations with low resolution solution models.

WERAMI/PSVDRAW bug: WERAMI and PSVDRAW crashed for gridded minimization calculations along a geothermal gradient with chemical potentials or saturated phase composition as a variable.

BUILD change: BUILD has been modified to prevent users from specifying a fluid phase as a solution if they have already specified that the system is fluid saturated.

Affected sources: vertex.f, plib.f, build.f

Affected programs: vertex, build, werami, psvdraw

Mar 29, 2005

WERAMI bug 1: WERAMI did not output correct molar formula weights if the compositional averaging option was turned on.

WERAMI bug 2: WERAMI may not have output correct physical properties for the "solid only" component of assemblages including both solid and fluid phases.

affected source files: plib.f

affected programs: werami

Mar 23, 2005, Mac OSX archive/POLYGON update: The current version of Perple_X has been recompiled for OSX and is available as a ZIP archive (, README_UNIX_USERS). The OSX archive now includes the program POLYGON compiled with g95 via fink/sourceforge

Mar 16, 2005, bugs and modifications:

bad version: a bad version of the Perple_X sources and Windows programs was placed on this web site yesterday (March 15) at ~ 17:00 GMT.

perplex_option.dat: the files werami_option.dat and vertex_option.dat have been replaced by a comprehensive file perplex_option.dat that controls certain run-time options in PSVDRAW, VERTEX and WERAMI. The options include a new zero_mode option which is useful for fractionation calculations and calculations as a function of bulk composition.

WERAMI bug: a bug that had the potential to cause WERAMI to output incorrect seismic velocities for systems in which a fluid phase is present has been corrected.

MU_2_F bug: a file format problem that on certain operating systems caused MU_2_F to generate files that could not be read by PSVDRAW has been corrected.

Mar 11, 2005, bugs and modifications:

PSVDRAW 1: a misaligned common block ("opts") in sources plib.f and psvdraw.f apparently resulted in corrupt PostScript files that could not be read by some PostScript interpreters (most notably Ghostview).

PSVDRAW 2: an out of bounds array reference in subroutine psbtxt (psvdraw.f) had the potential to cause PSVDRAW to crash if volumetric modes were included in phase field labels.

WERAMI: routine seismo (plib.f) has been modified to make more stringent tests for the validity of seismic properties. The routine now assigns the bad_number value to all seismic properities if a suspect value is detected. NOTE that bad-numbers will only be output directly if  interpolation is turned off, if interpolation is on, bad_numbers may be averaged with valid values on output.

VERTEX: routines gstixr (rlib.f), dphase (vertex.f) and shearm (vertex.f) have been modified to stabilize the finite difference operators used to estimate seismic properties. Additionally the series expansion of the polylog terms to evaluate the Debeye thermal energy has been extended to allow accurate (1 part in 1 million) evaluation to Theta/T = 5.

newest_format_solut.dat: the subdivision schemes of TrTsPg, GlTrTsPg and GlTrTs  have been made finer to avoid conflicts with the default solvus tolerance specified in "vertex_option.dat".

Mar 5, 2005, BUILD: a programming error (for the n+1th time) caused the program to set default grid refinement mode to be to determine "all" phase boundaries. This had the consequence that VERTEX was orders of magnitude slower than if the parameters were set correctly.

Mar 3, 2005, minor bugs/modifications:

BUILD: a programming error (for the nth time) caused the program to set the option for "true" vs "all" phase boundaries to be the opposite of the users choice. This had the consequence that the default computational mode subsequently used by VERTEX was orders of magnitude slower than if the parameters were set correctly.

VERTEX: has been modified so that if two or more solutions models specify endmember flags for the same endmembers, the flags are set consistently (if possible). In the previous version, the last model read during input determined the value of the endmember flags (these define which solution model the endmember "belongs" to).

newest_format_solut.dat: the subdivision schemes of Do(AE) and Cc(AE) have been changed to avoid conflicts with the default solvus tolerance specified in "vertex_option.dat".

hp02ver.dat: the "odo" endmember has been reintroduced to permit use of the oCcM(HP) model for Ca-Mg carbonate.

Feb 24, 2005, VERTEX/WERAMI bugs:

VERTEX Bug: A programming error in routine moduli (vertex.f) caused VERTEX to output incorrect shear moduli for assemblages that included solution phases described by speciation models if the thermodynamic data base included ad hoc shear modulus data (i.e., as in hp02ver.dat, but not in stx04ver.dat). This error was, and remains, present in the Perple_X 04 code.

WERAMI Bug: A programming error in routine seismo (plib.f) caused WERAMI to output incorrect physical properties for assemblages in which a true phase was represented by a single pseudocompound (a common occurence). This error was not present in the Perple_X 04 code.

Feb 22, 2005, Perple_X 05: A major revision of the Perple_X programs has begun. The relatively stable former version can be copied from Perple_X 04. The following changes have been made in the initial phase of the revision:

WERAMI modification 1: WERAMI now (optionally) uses an interpolation/extrapolation algorithm to recover properties from 2-dimensional gridded minimization calculations.

VERTEX/WERAMI/PSVDRAW modification 2: Solvus testing has been restored within VERTEX for gridded minimization calculations. This obviates the necessity of using two solution models to describe a single immiscible solution (e.g., AbPl and AnPl to represent Pl(h)). Testing for immiscible or multiple simulataneously stable compositions solutions is done by comparing the distance between pseudocompounds representing the same phase. If this distance exceeds tolerance solvus_tolerance specified in the file "vertex_option.dat" the pseudocompounds are considered to represent distinct phases. The solvus_tolerance must be greater than the compositional resolution of the pseudocompounds. See example #22 for an illustration of problems caused by solvus testing.

BPLOT file format modification: The format of the "b"-plot file generated by VERTEX has been changed. This means that all Perple_X programs that read the current version of this file (PSVDRAW, WERAMI, MU_2_F), cannot read the earlier version generated by Perple_X 04.

Jan 24, 2005, Linux archive update: The current version of Perple_X has been recompiled for LINUX and is available as a ZIP archive (, LINUX_README).

Jan 18, 2005, VERTEX bug: changes made on Oct 26, 2004 caused VERTEX to terminate with an "unspecified error" message for polygonalized pseudosection calculations. The error (routine NEWASS, file vertex.f) has been corrected.

affected source files: vertex.f, rlib.f, build.f

affected programs: vertex, build

Dec 26, 2004:

TiBio(HP): the White et al. (JMG 2000, 18:497-511) model for Ti-biotite has been added to the solution model file "newest_format_solut.dat", use of this model requires the "tbi" endmember which has been added to thermodynamic data file "hp02ver.dat".

BUILD: if a carriage return was entered in response to the BUILD prompt for grid refinement mode, BUILD did not set the parameters to mode 2 (compression off) as indicated by the prompt text, but rather to mode 1 (compression on) (source build.f).

VERTEX: an error has been corrected that caused output problems for gridded minimization calculations involving assemblages consisting entirely of stoichiometric compounds (routine BLKMAT, source vertex.f).

IBM_PC and Mac_OSX programs have been updated.

affected data files: newest_format_solut.dat, hp02ver.dat

affected source files: vertex.f, rlib.f, build.f

affected programs: vertex, build

Dec 17, 2004, VERTEX seismic velocity bug: The version of VERTEX created on Oct 30 interchanged the temperature and pressure derivatives of the adiabatic shear modulus for calculations done with Holland & Powell's data base (hp02ver.dat or seismo.dat); as a consequence of the error shear moduli were typically less than zero with the result that WERAMI did not compute compressional or shear wave velocities. The error has been corrected (routine SHEARM, source vertex.f). The error did not effect seismic velocity calculations with stx04ver.dat.

affected files: vertex.f

affected programs: vertex

Nov 23, 2004, Mac OSX archive update: The current version of Perple_X has been recompiled for OSX and is available as a ZIP archive (, README_UNIX_USERS).

Nov 19, 2004, Solution model errors: O(HP) - the interaction term W(fo-fa) was incorrectly specified as 4.2 kJ, the correct value is 8.4 kJ. M(HP) - this solution model was modified on Nov 5 to include Mn-carbonate, at that time the interaction term W(sid-mag) was incorrectly set to 33 kJ, the correct value is 4 kJ, additionally both the new and old models were left in the solution model file newest_format_solut.dat. These errors have been corrected in the current version of newest_format_solut.dat.

Nov 9, 2004:

WERAMI modification - WERAMI now looks for a file named "werami_option.dat", if this file is present the file is scanned for keywords that control various output options. The keywords are

average - this keyword controls whether pseudocompounds that represent a single true phase are homogenized to a single phase.

composition - this keyword controls whether phase compositions are output in molar units or as weight percentages.

proportions - this keyword controls whether the relative proportions of phases (i.e., modes) are determined on the basis of weight or volume.

VERTEX bug - a bug that caused VERTEX to print incorrect values for dependent chemical potentials for phase equilibria computed by constrained minimization has been corrected (routine PRTPOT, source vertex.f).

affected files: plib.f, psvdraw.f, vertex.f, werami.f

affected programs: vertex, werami

Nov 4, 2004, Administrative errors:

newest_format_solut.dat - a version of newest_format_solut.dat placed on the web yesterday (Nov 3) had a solution model (C2/c(stx)) with an incorrectly named endmember (pig). This error caused build and vertex to terminate with an error message. The error has been corrected.

BUILD - the versions of CTRANSF and FRENDLY placed on the web Oct 30 output thermodynamic data that could not be read by the old version of BUILD because of a change in the perplex_parameters.h file. BUILD has been recompiled for both Windows and Mac OSX to eliminate this problem.

Nov 1, 2004, Mac OSX archive update: The current version of Perple_X has been recompiled for OSX and is available as a ZIP archive (, README_UNIX_USERS).

Oct 30, 2004

WERAMI bug: in output for mode 2 calculations WERAMI interchanged the adiabtic shear modulus with the sound velocity and vice versa. The error has been corrected (source plib.f).

VERTEX modification: VERTEX has been modified to compute and output the pressure and temperature derivatives of the adiabatic bulk modulus for seismic velocity computations (see below) (sources vertex.f, rlib.f).

WERAMI modification: extrapolation of the adiabatic shear modulus is now done from the nearest grid point rather than from the reference state pressure temperature conditions of the thermodynamic data base. This modification has been made to accommodate equations of state that permit direct calculation of shear modulus (e.g., Stixrude & Lithgow-Bertelloni, in press, JGR) (source plib.f). WARNING: this modification has the implication that the new version of WERAMI cannot be used to process seismic velocity data computed with the old version of VERTEX.

Affected source files: rlib.f, vertex.f, plib.f

Affected programs: vertex, werami

Oct 26, 2004

VERTEX Bug 1: the option that permits compression to be turned off for pseudosection calculations (introduced Sept 29, 2004) caused problems in calculations that involve phase assemblages that consist entirely of true compounds. These may have caused VERTEX to crash or PSVDRAW to multiply label the corresponding phase fields resulting in illegible plots.

VERTEX Bug 2: An error trap that incorrectly prevented phase fractionation calculations in systems with a one-component saturated (fluid) phase has been corrected.

High Pressure EoS: the high pressure equation of state of Stixrude and Bukowinski (1990 JGR 95:19311-19325) has been implemented in Perple_X.

Affected source files: ctransf.f, frendly.f, rlib.f, vertex.f, big_perplex_parameters.h, small_perplex_parameters.h, perplex_parameters.h

Affected programs: frendly, vertex, ctransf

Oct 4, 2004, GrPyAlSp(G) solution model correction: The barycentric (IMOD=3) subdivision model specified for GrPyAlSp(G) in all Perple_X solution model files is invalid for a quaternary solution. The subdivision model has been corrected to cartesian (IMOD=0) in "newest_format_solut.dat", it has not been corrected in any other solution model files available at this site.

Oct 3, 2004, Mac OSX archive update: The current version of Perple_X has been recompiled for OSX and is available as a ZIP archive (, README_UNIX_USERS).

Oct 1, 2004, PSVDRAW: A long-standing bug that caused PSVDRAW to mislabel some phase fields in pseudosections constructed by gridded minimization has been corrected. The bug occurred most frequently if the centroid of a phase field was located outside of the phase field.

Affected files: psvdraw.f

Affected programs: PSVDRAW

Sep 29, 2004, Modifications:

Source modifications for UNIX/Mac: use of an uninitialized variable (JCTH) in the source build.f may cause UNIX versions of BUILD to crash if a calculation is made for a fixed bulk composition in which the amount of a saturated component is specified. The source file has been corrected, but the UNIX programs at this site have not been updated.

BUILD/VERTEX: For gridded minimization calculations, these programs have been modified to allow the user to control the compression strategy. This permits a computationally cheap method of recovering physical properties that is one to two orders of magnitude faster than in previous versions.

SPECIES: now tests that the maximum value for a user specified range is greater than the minimum value.

PT2CURV: dimensioning has been modified to allow conversion of larger data sets.

WERAMI/PSVDRAW: cosmetic modifications.

DOCUMENTATION: two documented examples have been added to the web site:

perplex_tx_pseudosection.html - documents the use of bulk compositional variable in gridded minimization calculations and also illustrates calculations along a geothermal gradient and the use of WERAMI as a means of refining the pseudocompound model specified for a solution phase. Specifically the calculation is of melting phase relations along a Barrovian geothermal gradient as a function of bulk water content for a pelitic composition.

perplex_adiabatic_crystallization - documents the use of WERAMI to recover physical properties along along a pseudosection contour of a phase or system property. Specifically the calculation is for a mantle adiabat using the pMELTS melt model.

Affected sources: werami.f, vertex.f, species.f, pt2curv.f, psvdraw.f, pslib.f

Affected programs: werami, vertex, species, pt2curv, psvdraw

Sep 3, 2004, Modifications:

MatLab: the MatLab plotting scripts ( did not allow plotting of non-square grids because the array dimensions were transposed in the reshape command.

WERAMI 1: WERAMI has been modified to make more extensive testing for invalid extrapolations of physical properties, WERAMI now turns extrapolation off if it is obviously invalid.

WERAMI 2: The output file format for grid data has been modified so that only one property value is output per record, this anticipates a potential problem in MatLab, which requires the same number of entries per record for efficient input.

VERTEX: VERTEX now expands the finite difference increment used to construct heat capacity estimates for WERAMI, if the initial increments give an obviously incorrect (negative) heat capacity estimator.

BUILD: BUILD has been modified to offer the option of turning grid compression off, as is recommended for numerically sensitive calculations (e.g., of seismic velocities).

Aug 31, 2004, PSVDRAW Bug: the last one or two digits were truncated in numerical reaction labels output for phase diagram projections or polygonalized phase diagram calculations.

Affected files: psvdraw.f

Affected programs: psvdraw.exe

Aug 30, 2004, Modifications:

VERTEX: if optimization failed at a point during gridded minimization calculations, VERTEX occasionally crashed during optimization at the next point. VERTEX now does a complete reinitialization of the minimization routine after failures to avoid this problem.

WERAMI: Under mode 4, WERAMI can now be used to plot properties along a set of X-Y coordinates input from a data file.

PSCONTOR: now allows users to output the X-Y coordinates of the segments of a contour. These coordinates (after sorting in a program such as excel) can be used to define plotting paths for WERAMI (see above).

Affected files: pscontor.f, werami.f, vertex.f

Affected programs: pscontor, werami, vertex.

Aug 5, 2004, Mac OSX archive update: The current version of Perple_X has been recompiled for OSX and is available as a ZIP archive (, README_UNIX_USERS)

Aug 4, Source correction for UNIX/Mac_UNIX: output of initialized (and unused) variables from BUILD had the potential to cause a format overflow (indicated by asterisks) in the computational option file, which was subsequently unreadable by VERTEX.

Affected programs: BUILD

Affected sources: build.f

Aug 3, Minor corrections/modifications:

WERAMI I: WERAMI did not return correct property values if a user elected to extract properties over a restricted region of a section constructed by gridded minimization. Error in werami.f.

WERAMI II: WERAMI may not have returned physical properties correctly for phase diagram sections with compositional variables (i.e., any mode in which WERAMI writes a warning message that interpolation has been turned off). Error in plib.f.

VERTEX: VERTEX may not have generated pseudocompounds over the entire range specified by a solution model if the first endmember in the solution model was missing and the minimum value for the composition of the second endmember was non-zero. Error in rlib.f.

Affected programs: VERTEX, WERAMI

Affected sources: vertex.f, werami.f, plib.f

Jun 30, 2004, VERTEX: for output purposes, system molar properties output by VERTEX were formerly defined in terms of a total of 1 mole of the systems components, they are now defined in terms of the amounts of the components used to define the bulk composition.

WERAMI/PSVDRAW(?): certain numerically unstable equations of state may give physically impossible properties and causing WERAMI/PSVDRAW to crash due to invalid numerical operations. A test to reduce the chances of such crashes has been (re-) introduced into WERAMI/PSVDRAW. WERAMI/PSVDRAW have also been modified to permit plotting of the mass of a phase per unit volume of a system.

Affected programs: VERTEX, WERAMI, PSVDRAW

Affected sources: vertex.f, plib.f

Jun 25, 2004, Linux archive update: The current version of Perple_X has been recompiled for LINUX and is available as a ZIP archive (, LINUX_README).

Jun 24, VERTEX bug: (this bug was only partially corrected on June 22) the finite difference operators used to estimate the temperature derivative of the expansivity and pressure derivative of the compressibility in routine dphase of source vertex.f (properties used for the computation of seismic properties in WERAMI) were based on such a large pressure increment that they required evaluation of G at negative pressure if the absolute pressure was < 2 kbar. These negative pressures caused some equations of state (most notably those for fluids) to generate "NaN"s (not-a-numbers) in the "b"-plot file generated for WERAMI and PSVDRAW. When present, the NaN's caused WERAMI and PSVDRAW to crash, but the error had no other numeric consequences. The problem has been circumvented by using forward (rather than centered) finite difference operators in routine dphase at low pressure.

The finite difference increments used in routine dphase for pressure have also been halved to 5, 50, and 500 bar for 1st, 2nd, and 3rd order derivatives, and to 0.5, 5, and 50 K for derivatives with respect to temperature.

Affected programs: VERTEX

Affected sources: vertex.f

Jun 16, Minor corrections/modifications:

CORK EoS: a coding error for the CORK EoS for water has been corrected. The bug resulted in errors of < 50 J/mol in the free energy of water at temperatures below 673 K (routine crkh2o, source flib.f).

Berman data volume function: a coding error for the b6 and b7 terms of the volume function for solid phases in the Berman data base has been corrected. The error resulted in errors on volumes computed by differentiation of the Gibbs function on the order of 1% (routines conver and unver, source rlib.f).

WERAMI: If a user elected to compute the amount of a component in a solution (i.e., a composition without a denominator), WERAMI output the amount of the component in the phase per mole of system. WERAMI has been modified so that it now outputs the amount of the component per mole of the phase (routine scomp, source plib.f).

Affected programs: WERAMI, VERTEX, FRENDLY, PSVDRAW(?)

Affected sources: flib.f, plib.f, rlib.f

Jun 9, Minor corrections/modifications:

WERAMI: If the amount of a stable phase became zero (often the case if the amount of a component is set to zero in a bulk composition) WERAMI crashed or gave floating point errors during the computation of seismic velocities (these are computed even if velocities are not explicitly requested).

VERTEX: A bug (routine CARTES, source rlib.f) caused VERTEX to incorrectly reset the lower limit on subdivision ranges for the generation of pseudocompounds (if the lower limit was not zero). As a result the VERTEX did not necessarily generate the range of pseudocompound compositions specified in the solution model file. There was probably no bug in VERTEX, the pre-June 9 version has been restored as of June 10.

Affected programs: WERAMI, VERTEX

Affected sources: vertex.f, plib.f, rlib.f

Jun 1, Minor corrections/modifications:

Seismic velocities: an error introduced into WERAMI on May 12 caused WERAMI to output incorrect aggregate seismic properties (the properties output were half the voigt average).

MAC (SUN?) UNIX MATLAB PLOTTING: the grid data generated by WERAMI compiled for MAC OSX cannot be read by the MATLAB plotting scripts included with Perple_X. The reason for this problem is that the MATLAB scripts included with Perple_X expect a format generated by the WINDOWS version of Perple_X, which generates one more header line than the MAC OSX (and possibly the ULTRIX) version. WERAMI has been modified so that future UNIX versions will generate the same number of header lines as the WINDOWS version.

BUILD modification: an error trap prevented use of solution models involving water and/or CO2 if water and CO2 were not selected as components.

WERAMI modification: WERAMI has been modified to allow computation of bulk entropy, as well as various mass normalized properties.

Affected programs: BUILD, WERAMI, VERTEX

Affected sources: build.f, vertex.f, plib.f, werami.f

May 14, Source modifications for UNIX/Mac: Previous versions of Perple_X compiled with certain compilers (SGI, HP, G77) crashed during gridded minimization due to unsaved local variables. The source nlib.f has been modified to correct this problem.

MAC UNIX: A zip archive containing the more commonly used Perple_X programs compiled for MAC OS X UNIX is at:


for installation instructions and hints.

WERAMI: If the/a fluid phase was excluded for purposes of computing mineral modes the renormalization of the modes was done twice, resulting in modal totals in excess of 100%. The source plib.f has been modified to correct the problem.

May 12, 2004: Perple_X modification for pMELTS model: In the earlier implementation of the Murgnahan EoS used for the pMELTS model (Ghiorso et al. 2002, G3 3:5) it was incorrectly assumed that the reference temperature for the Murnaghan parameters was identical to that used for the vibrational EoS (i.e., 298.15 K). The reference temperature (1673 K) for the Murnaghan parameters used by Ghiorso is now specified in the routine gmurn (source rlib.f) and is therefore independent of the reference temperature specified for the thermodynamic data base.  The parameters in the Perple_X data files have been converted assuming that in Table B3 of Ghiorso: units on volume are J/Pa/mol; and the third column (labeled dV/dP) is dV/dT.

May 6, 2004:

VERTEX modification: the mapping strategy used in gridded minimization (routine wav2d1, source vertex.f) has been modified. The modification reduces the number of minimizations required for pseudosection calculations by roughly 10%.

PSVDRAW bug: an error in source psvdraw.f caused PSVDRAW to crash if missing data was generated by gridded minimization and individual mineral stability fields were subsequently plotted with PSVDRAW.

May 2, 2004, VERTEX bug: An error in routine CARTES (source file rlib.f) caused VERTEX to generate duplicate pseudocompounds. The error may have destabilized some numerical operations.

Apr 28, 2004: Fluid equation of state modifications

H2O-CO2-NaCl Fluids: an equation of state (EoS #25) based on unpublished work by Leonid Aranovich and Andreas Haefner has been added to Perple_X. The new EoS allows calculation of fluid saturated P-T-Y(CO2) phase equilibria for any specified salinity. For computation of ternary (H2O-CO2-NaCl) phase relations with this EoS users should employ the F(H) solution model (see Apr 26 update notice).

C-O-H Fluids: Perple_X routines for the calculation of COHS fluid speciation as a function of X(O) have been modified to take into account the effects of the graphite-diamond phase transition. Formerly, graphite was assumed to be the stable C-polymorph at all conditions. The hybrid C-O-H EoS #10 has also been modified to use the CORK (Holland and Powell 1998) EoS for pure water and CO2, the hybrid EoS formerly used the HSMRK (Kerrick and Jacobs 1981) for these species.

Apr 26, 2004:

Source modifications for UNIX/Mac: the Perple_X sources have been modified to improve compatibility with UNIX and Mac Fortran compilers. The sources are at:

A zip archive containing the more commonly used Perple_X programs compiled for Solaris OS9 is at:


for installation instructions and hints.

H2O-CO2-NaCl EoS: An internal equation of state for H2O-CO2-NaCl fluids based on preliminary work by Leonid Aranovich and Andreas Haefner has been added to Perple_X (routine hcneos in flib.f). The internal EoS can be invoked by using the F(H) solution model, which has been added to the solution model file "newest_format_solut.dat".

Mar 29, 2004, WERAMI/PSVDRAW Bug: An error in an interpolation routine (XYTOPT) in the source plib.f caused WERAMI and PSVDRAW to crash if users requested calculations with P=f(T) or T=f(P) and bulk composition as independent variables.

Mar 27, 2004, WERAMI Bug: An error in WERAMI caused the program to output incorrect aggregate solid volumes if a fluid was stable with the assemblage. This error affected any properties computed using the aggregate solid volume (density, specific heat, modes, seismic velocities). The error involved the compressibility and expansivity and was therefore second order, but did cause plots of derivative properties to appear rough.

Mar 13, 2004: The tolerance for computing solution model speciation (type 6 and 8 solution models) has been reduced to 0.0001 from 0.001 (rountines specis and specip in vertex.f). This should have no effect on speciation calculations, but does improve the accuracy of the estimates of derivatives of the free energy computed by VERTEX and subsequently used by WERAMI for the calculation of thermodynamic properties (most notably specific heat and the thermal gruneisen number used to compute seismic velocities).

Mar 10, 2004: The temperature increments in the finite difference approximations written by VERTEX and used by WERAMI to extrapolate heat capacities have been refined. The previous values were too small and in some situations caused erratic variations in the heat capacities (and derivative properties such as sound velocity and thermal Gruneisen number) reported by WERAMI. This modification has no effect on the phase relations computed and output by VERTEX.

Mar 9, 2004:

hp02ver.dat: Thermodynamic data in the file hp02ver.dat has been augmented with shear moduli as used by Connolly & Kerrick (2002). The shear moduli permit calculation of seismic velocities and phase relations as a function of differential stress. The shear moduli data has not been provided for all phases in the data base, if seismic velocities are requested for phases or assemblages with missing data, Perple_X will return velocities of zero.

VERTEX: VERTEX has been modified to permit calculation of seismic velocities from solution models involving speciation.

Mar 8, 2004, PerpLith GUI: Boris Kaus has put a new graphical user interface on-line for the calculation of pressure-temperature phase diagram sections with Perple_X. The interface can copied from:

Mar 5, 2004, On-line solution model glossary: A list of the solution models, with references and compositions, implemented in the latest version of the Perple_X solution model file can be accessed from:


Mar 4, 2004, Matlab plots from WERAMI generated data files: thanks to a user contributed script, 3D data generated by WERAMI can be plotted directly in Matlab with 3 plotting scripts now included with Perple_X (without use of the now redundant, grid_for_matlab program and the prop_plot.m script). The new scipts are:

surface_plot.m - plot a 3D image of the data.

automatically_labeled_contour_plot.m - 2D contour plot, contours chosen and labeled by Matlab.

manually_labeled_contour_plot.m - 2D contour plot, contours chosen and labeled by user.

The scripts have been added to the sources directory and archives and are also present in the zip archive

Feb 23, 2004:

DQF corrections: VERTEX and BUILD have been modified so that "DQF corrections", as used by Holland and Powell, can be specified in the solution model file. This modification makes it unnecessary to introduce DQF corrected endmembers in the thermodynamic data file. The solution models in the file "newest_format_solut.dat" have been modified to use internal DQF correction definitions and the format of the correction is documented in the Pheng(HP) solution model. DQF corrected endmembers have been eliminated from the thermodynamic data file "hp02ver.dat".

VERTEX BUG 1: On Feb 9 the copies VERTEX/VERTEX.F at this site were overwritten with an older version of program/source code, the older version reintroduced a bug that caused errors for type 8 soution models (i.e., the solution model Bio(HP)).

VERTEX BUG 2: A typographical error in the source code of VERTEX.F caused VERTEX to hang during computations of Schreinemakers projections and polygonalized pseudosections, the error did not effect pseudosection calculations by gridded minimization or composition diagram calculations.

VERTEX/BUILD BUG 3: A coding error introduced on Jan 6 prevented VERTEX/BUILD from reading old Perple_X solution model files (e.g., "solut.dat") such as required for most of the example problems at this site.

WERAMI: A bug that occasionally caused WERAMI to crash due to an invalid floating point operation has been eliminated.

Affected data files: newest_format_solut.dat, hp02ver.dat

Affected source files: vertex.f, rlib.f, tlib.f

Affected programs: vertex, build, werami

Affected archives:,,,

C-O-H-N Fluid speciation routine, Feb 9, 2004: A routine (COHNGR) to do C-O-H-N fluid speciation as a function of f(O2) or f(CO2), a(graphite) and molar N/C ratio has been added to Perple_X, the routine can be used in all Perple_X programs that call fluid equations of state. An example of the user/program dialog necessary to make speciation plots and to construct the graphite saturation surface is in dialog15a_raw.txt.

Feb 4, 2004:

TrTsPg(HP), TrTsGl(HP), TrTsPgGl(HP) solution model error: The T1 site for the tschermaks endmembers was incorrectly assumed to contain only Al, the correct site occupancy (AlSi) is now specified in newest_format_solut.dat.

VERTEX bug: Under some circumstances, VERTEX incorrectly prevented the use of solution models with missing endmembers.

Affected data files: newest_format_solut.dat

Affected source files: rlib.f

Affected programs: vertex

Affected archives:,,,

Bio(HP) solution model problems, Feb 2, 2004: The renaming of the MnBio(HP) model as Bio(HP) on Jan 23 revealed a bug in VERTEX that occurred when the Fe-Mg-Mn Bio model was run without Mn-endmembers. Additionally, in Perple_X solution model files, the definition of the mnts_i endmember in the Bio(HP) (formerly MnBio(HP)) solution model was specified incorrectly as:

mnts_i = 1 east + 1 mnbi - 1 obi

the correct formulation (in newest_format_solut.dat) is

mnts_i = 1 east + 2/3 mnbi - 2/3 phl

VERTEX has been modified to check automatically for stoichiometric errors.

The routine used to generate pseudocompounds by cartesian subdivision has been revised; under certain circumstances the former version did not generate pseudocompounds over the entire commpositional range specified in a solution model.

Affected data files: newest_format_solut.dat

Affected source files: rlib.f, vertex.f, tlib.f

Affected programs: vertex

Affected archives:,,,

VERTEX BUG, Jan 30, 2004: A bug in VERTEX caused the program to generate replicate pseudocompounds for some reciprocal solution models with missing endmembers. The bug did not effect computational results, but resulted in a serious deterioration in performance. As a result of the bug, the program sometimes crashed and in other instances may have requested more memory than necessary for a calculation.

Affected files: rlib.f

Affected programs: vertex.exe

Affected archives:,,

Solution models renamed, Jan 23, 2004: In solution model file "newest_format_solut.dat", the Fe-Mg-Mn solution models MnSt(HP), MnChl(HP) and MnBio(HP) have been renamed as St(HP), Chl(HP) and Bio(HP). The models for the Fe-Mg subsystem, formerly named St(HP), Chl(HP) and Bio(HP), have been deleted.

Affected files: newest_format_solut.dat,

Phase fractionation calculation revision, Jan 21, 2004: Although phase fractionation calculations have been possible for some time in Perple_X, the calculations could not be analyzed with any of the internal graphics programs. Additionally, the prompts within BUILD did not fully explain the types of fractionation paths that could be implemented. Perple_X has been revised to ameliorate these problems and an on-line tutorial has been created to explain fractionation calculations.

Affected files: build.f, rlib.f, pslib.f, werami.f, vertex.f, psvdraw.f, pspts.f, pt2curv.f, geopt.f

Affected programs: vertex, build, werami, psvdraw, pspts, pt2curv

Affected web pages:,

Affected archives:,,

VERTEX BUG, Jan 21, 2004: If users entered an endmember name in the solution model file without appending trailing blanks, then under certain circumstances VERTEX would report incorrectly that the solution model file was formatted incorrectly. The error has been corrected.

Affected files: rlib.f

Affected programs: build, vertex

Cpx(HP) solution model correction, Jan 9, 2004: The solution model for disordered clinopyroxene (Cpx(HP)) in solut.dat, new_format_solut.dat, and newest_format_solut.dat had a one site configurational entropy model. The one-site model is inconsistent with Holland & Powell's (1996) model, which assumes a two site model (see also the Omph(HP) model). The error has been corrected only in newest_format_solut.dat.

Corrected files: newest_format_solut.dat

Solution Model Format Modification, Jan 6, 2004

BUILD and VERTEX have been revised to facilitate future reformatting of solution models. In the new format solution models must be preceded by a left-justified "begin_model" keyword and followed by a left-justified "end_of_model" keyword. Additionally, Perple_X no longer treats the Van Laar formalism (Holland & Powell, CMP, 2003) as a special case (see comments in "newest_format_solut.dat").

Affected data files: newest_format_solut.dat

Affected source files: vertex.f, tlib.f, rlib.f

Affected programs: vertex.exe, build.exe

Miscellaneous Changes and Corrections, Dec 27, 2003

BUILD/VERTEX Revision: BUILD and VERTEX have been revised to allow more flexible formatting of the solution model data file. The new versions allow users to place commenting anywhere within the solution model data provided the comment marker "|" precedes the comment. The programs may not be able to read old solution model files in which comments were placed on the same line as numeric data without the comment marker.

SOLUTION MODEL/DATA FILE CHANGES: Solution models (Pl(I1,HP), AbFsp(C1), OrFsp(C1)) implementing Holland and Powell's ASF formulation (CMP 2003) for ternary feldspar have been added to the solution model file "newest_format_solut.dat"; these models require "corrected" (i.e., DQF contributions) albite and anorthite endmembers. The corrected endmembers, "abh_dqf" and "an_dqf", have been added to the "hp02ver.dat" thermodynamic data file.

VERTEX Correction: an error in the implementation of Holland & Powell's ASF formulation (CMP, 2003) for solution models has been corrected, the error had no consequences for most Perple_X users since none of the ASF models (oCcM(HP) and MuPaMa(CH))formerly in the default Perple_X solution model files were in common use.

BUILD Correction: for pseudosection calculations as a function of one bulk composition variable in some circumstances an error in BUILD prevented users from choosing temperature as the second axis of the pseudosection. The error has been corrected.

Affected data files: newest_format_solut.dat

Affected source files: vertex.f, build.f, rlib.f

Affected programs: vertex.exe, build.exe

VERTEX and melt(HP) solution model change/correction, Dec 15, 2003:

Changes: VERTEX has been changed so that it now expects h2oL, fo8Ldq, and fa8Ldq to be the first 3 endmembers entered in the Holland & Powell haplogranite melt model [melt(HP)]. The melt(HP) model has been modified accordingly in the solution model files new_format_solut.dat and newest_format_solut.dat.

Correction: h2oL, fo8Ldq, and fa8Ldq should have been the last 3 endmembers entered in the Holland & Powell haplogranite melt model [melt(HP)] in former versions of VERTEX. However, probably on Nov 27, the order was changed in the solution model files new_format_solut.dat and newest_format_solut.dat so that fa8Ldq was the first endmember. This error had severe consequences for the  predicted stability field of the melt phase.

Using Old Solution Model Files: Users who wish to continue using an old solution model file with the current version of VERTEX should modify the solution model file so that h2oL, fo8Ldq, and fa8Ldq are the first 3 endmembers entered for the melt(HP) model.

Using Old Versions of VERTEX (Mac/Linux Users): Users who wish to use an old version of VERTEX should modify the solution model file so that h2oL, fo8Ldq, and fa8Ldq are the last 3 endmembers entered for the melt(HP) model (this may not be necessary for solution model files created before Nov 27, 2003).

Affected data files: new_format_solut.dat, newest_format_solut.dat

Affected source files: rlib.f

Affected programs: vertex.exe

VERTEX improvement, bug, and data file correction, Nov 27, 2003:

VERTEX improvement: the subroutine responsible for generating pseudocompounds has been improved so that it requires less memory; this improvement permits users to specify higher compositional resolution for complex solutions (e.g., the melt(HP) and PMELTS(G) silicate melt models) than was previously possible without increasing the memory allocation in VERTEX.

VERTEX bug: a bug caused VERTEX to compute incorrect phase relations if the phase relations involved a solution for which one or more endmembers consisted entirely of saturated components (e.g., calculations with the melt(HP) model with SIO2 specified as a saturated component).

Data file correction: in files hp01ver.dat and hp02ver.dat the Murnaghan EoS exponents for fluid species were not zero. This error had no effect on computed thermodynamic properties, but caused FRENDLY to misinterpret the EoS if users modified fluid species data (e.g., to make an activity "corrected" H2O species) and wrote the modified data to the thermodynamic data file (the output contained NaN's and could not be read other Perple_X programs).

Affected source files: rlib.f, vertex.f, big_perplex_parameters.h, small_perplex_parameters.h, perplex_parameters.h

Affected data files: hp01ver.dat, hp02ver.dat

Affected programs: vertex.exe

Linux archive update, Nov 26, 2003: The current version of Perple_X has been recompiled for LINUX and is available as a ZIP archive (, LINUX_README).

HP Amphibole solution models, Nov 16, 2003: The interaction parameters for the GlTrTsPg, GlTrTs and TrTsPg amphibole solution models in new_format_solut.dat and newest_format_solut.dat have been changed so that they are consistent with recent papers by Powell, Holland and coworkers. The new models require that the enthalpy of the tschermaks (ts) endmember be "corrected" (i.e., a DQF correction) by 10 kJ, the corrected ts endmember is named ts_dqf and has been added to hp98ver.dat, hp01ver.dat and hp02ver.dat.

Affected files: new_format_solut.dat, newest_format_solut.dat, hp98ver.dat, hp01ver.dat, hp02ver.dat

VERTEX BUG, Oct 21, 2003: VERTEX did not correctly compute the properties of reciprocal solution models with speciation if the ordered species was not defined in terms of the first two independent endmembers of the solution. This is/was the case only for the MnBio(HP) model in "newest_format_solut.dat".

Affected files: rlib.f

Affected programs: vertex.exe

Mac archive update, Oct 19, 2003: The current version of Perple_X has been recompiled for MacIntosh computers and is available as SIT archives (MAC_README). This version of Perple_X can be used with "newest_format_solut.dat".

Affected archives: Perp_mac_programs.sit, Perp_mac_programs_with_big_parameters.sit

VERTEX BUG, Oct 8, 2003: A programming error caused VERTEX under some circumstances to incorrectly reformulate reciprocal solutions with more than one dependent endmember (specifically the model "MnChl(HP)") if one of the dependent endmembers was excluded. This error effects users of both "new_format_solut.dat" and "newest_format_solut.dat" and was probably the cause for several types of mysterious crashes by VERTEX.

A second programming error caused VERTEX to ignore dependent endmembers if the endmember was defined in terms of the last endmember entered for a solution model. This was specifically the case only for the hCrd model as entered in "newest_format_solut.dat".

Affected files: rlib.f

Affected programs: vertex.exe

VERTEX BUG, Oct 3, 2003: A programming error caused VERTEX to exclude dependent endmembers in some of the solution models provided in "newest_format_solut.dat" (specifically, reciprocal solution models in which the dependent endmembers were not listed after the dependent endmembers, e.g., in MnChl(HP)). The bug did not affect calculations with the older solution model file "new_format_solut.dat".

Affected files: rlib.f

Affected programs: vertex.exe

Sapp(HP) solution model correction, Oct 2, 2003: The solution model for sapphirine (Sapp(HP)) in new_format_solut.dat and newest_format_solut.dat had an inconsistent configurational entropy model that caused VERTEX to crash when the model was used. A consistent model is now present in both on-line versions of the solution model file.

Affected files: new_format_solut.dat, newest_format_solut.dat

VERTEX bug, Sep 22, 2003: A programming error caused VERTEX to incorrectly define the subdivision limits on quaternary sites with the result that in some cases VERTEX did not generate pseudocompounds over the entire compositional range specified in solution models (e.g., Gt(HP)). The error has been corrected.

Affected files: rlib.f

Affected programs: vertex.exe

VERTEX bug, Sep 11, 2003: For solution model types 6 and 8 VERTEX would crash if the ordered species was not written in terms of the first two endmembers specified in a solution model. This was not true in any of the former solution model files, but is true in the newest version of the Perple_X solution model file (newest_format_solut.dat). The bug has been corrected in the current Windows version of Perple_X. Users of Mac and LINUX binaries from this site should use the former version of the solution model file (new_format_solut.dat) until updated versions of the binaries become avalailable.

Affected files: rlib.f

Affected programs: vertex.exe

Newest_format_solut.dat, Sep 11, 2003: The order in which the endmembers were entered in new_format_solut.dat for most of the Mn-bearing solution models has been changed in newest_format_solut.dat so that the Mn endmembers are no longer listed as the last endmember. This change allows users to explicitly restrict the range of Mn solution. The default subdivision range currently set for the affected Mn solutions is X(Mn) = 0-20 mol% at 1 mol% increments. Refer to the MnBio(HP) model commentary for further details.

Because of a bug in VERTEX the file newest_format_solut.dat cannot be read by previous versions of the program (such as currently present in the Mac and LINUX archives). Accordingly Mac and Linux users should continue to use the former version of the solution model file (new_format_solut.dat) until updated versions of the binaries become avalailable.

Omph(HP) solution model correction, Aug 20, 2003: The enthalpy of ordering for the Omph(HP)solution model in new_format_solut.dat was set incorrectly to -16 kJ/mole. The correct value, -3.5 kJ/mole, is used in the current version of new_format_solut.dat.

Linux archive update, Aug 15, 2003: The current version of Perple_X has been recompiled for LINUX and is available as a ZIP archive (, LINUX_README).

Mac archive update, Aug 14, 2003: The current version of Perple_X has been recompiled for MacIntosh computers and is available as SIT archives (MAC_README).

Affected archives: Perp_mac_programs.sit, Perp_mac_programs_with_big_parameters.sit

Severe VERTEX bug, Aug 1, 2003:

An incorrect pointer in the source for VERTEX had the potential to cause severe errors (program crashes or incorrect results) in calculations with speciation-type solution models (i.e., Bio(HP), Omph(HP), Opx(HP)). Mac and Linux users should not use the binaries from this site for calculations involving such solution models until the binaries have been updated.

Affected files: rlib.f

Affected programs: vertex.exe

VERTEX, WERAMI bugs, Jul 29, 2003:

WERAMI: WERAMI incorrectly computed the compositions of solutions for user-defined compositional variables in mode 2 and 3 calculations due to a modification introduced on April 30, 2003.

VERTEX 1: For mixed-variable type calculations: BUILD set the default value of the flag ISUDO to 1, if users did not override this choice then VERTEX did not compute high variance phase equilibria resulting in confusing output. For mixed-variable type calculation VERTEX has been programmed to ignore the ISUDO flag to avoid this problem.

VERTEX 2: For gridded minimization calculations: If compositional variables were used as the x-y variables for a pseudosection, then VERTEX incorrectly halted calculation if the minimum and maximum values for pressure and temperature were identical (which they are, by default, for such calculations) with an error message to the effect that minimum and maximum values of the independent variables cannot be equal. VERTEX has been reprogrammed to avoid this test.

Affected files: werami.f, vertex.f, plib.f

Affected programs: vertex.exe, werami.exe

WERAMI bug, Jul 25, 2003:

A flawed version of WERAMI was accidentally placed on the Perple_X web site on July 11, this version may have reported false bulk rock properties or behaved erratically. The PC binaries, and relevant source file (plib.f), were corrected on the site as of July 19.

Affected files: plib.f

Affected programs: werami.exe

VERTEX, PSVDRAW bugs, Jul 11, 2003:

VERTEX: failed to converge using the pMELTS Murnaghan EoS causing the program to hang or output NaN's to WERAMI (causing WERAMI to crash with a bad data format error). This bug only affected pMELTS calculations.

PSVDRAW: failed during the drawing of filled high variance phase fields in ternary composition diagrams. 

Affected files: psvdraw.f, rlib.f, tlib.f

pMELTS and MELTS upgrade and bugs, Jul 10, 2003:

Perple_X has been modified to accomodate the pMELTS (Ghiorso et al. 2002, G3 3:5) and MELTS (Ghiorso & Sack 1995, CMP 119:197-212) mafic melt models. The new melt models are in new_format_solut.dat and require endmember data that has been added to hp02ver.dat and b92ver.dat. The pMELTS/MELTS models are not necessarily consistent with the Holland & Powell data, accordingly users should exercise caution when interpreting results from calculations with mixed data sources. The pMELTS/MELTS models are currently implemented without the MgCr2O4 endmember because none of the current Perple_X datafiles has data for Cr-bearing solids. Consequently Perple_X calculations will underestimate the stability field for Spinel in mantle rock compositions. Additionally users should be careful to exclude the Ghiorso et al. pMELTS endmembers when implementing the Holland & Powell haplogranite model. Refer to the data files for additional caveats concerning the melt model implementation.

In addition to the modifications necessary to accomodate the MELTS/pMELTS models, the following bugs have been removed from the current version of Perple_X:

VERTEX: In some circumstances VERTEX was not generating pseudocompounds over the entire range of compositions requested for solution model subdivision.

WERAMI: Previously WERAMI would crash if it encountered a one-phase (multicomponent) field.

NEW_FORMAT_SOLUT.DAT: The model Opx(HP) included a dependent interaction parameter and was missing one of the independent interaction parameters.

Affected files: new_format_solut.dat, b92ver.dat, hp02ver.dat, rlib.f tlib.f, vertex.f, frendly.f, plib.f, rlib.f, perplex_parameters.h, small_perplex_parameters.h, big_perplex_parameters.h.

Affected archives:,,,

MAC PROGRAM UPDATES, June 2, 2003: The current version of Perple_X has been recompiled for MacIntosh computers and is available as SIT archives.

Affected archives: Perp_mac_programs.sit, Perp_mac_programs_with_big_parameters.sit

VERTEX/BUILD Bugs, May 30, 2003:

VERTEX: For solution model types 3, 6, and 8 VERTEX added the excess entropy to the solution model two times. Because there were no solution models of these types with excess entropy in "solut.dat" and "new_format_solut.dat" this error only affected users who entered such models on their own.

BUILD: If component transformations were made, BUILD did not output the user defined names for the transformed components, but used a name selected more or less randomly from the component list. This error had the result that the component was named incorrectly in all subsequent print output (e.g., from VERTEX, PSVDRAW, or WERAMI), but was otherwise only of cosmetic importance.

Affected files: vertex.f, build.f

Affected programs: VERTEX, BUILD, PC zip archives.

BUILD RECOMPILED, May 26, 2003: BUILD was unable to read the modifications to the solution model format adopted on May 22. The program has been recompiled and functions correctly for the PC version of Perple_X.

Affected files: none

Affected programs: BUILD, PC zip archives.

VERTEX/SOLUTION MODEL BUG, May 22, 2003: VERTEX incorrectly formulated dependent endmembers in reciprocal solutions with speciation (i.e., type 8 solution models, e.g., MnBio(HP), Bio(HP), Opx(HP)). This caused errors in calculated equilibria involving the dependent (usually FASH) endmembers. Correction of the error required both modification of the program VERTEX and the format of the solution model file. The modification of the solution model file format is that in type 8 solution models the ordered species must be entered before the dependent species and that the dependent species must be defined in terms of the ordered species and the remaining independent endmembers (formerly the dependent endmember could not be defined in terms of the ordered species). The new version of VERTEX will crash if used with an old versions of new_format_solut.dat.

Additionally a bug that occasionally caused VERTEX to hang without finishing calculations under the default mode has been removed and a bug that affected the output to the "pseudocompound_glossary.dat" file has been corrected.

Affected files: rlib.f, vertex.f, new_format_solut.dat, perplex_parameters

Affected progams: Vertex, Build (first noted May 26)

VERTEX BUG, May 13, 2003: A programming error was causing VERTEX to output incomprehensible reaction lists to the "print" file for certain types of calculations. The error also caused memory misalignment that may have created difficulties for certain compilers or run-time crashes of the program.

Affected files: rlib.f, vertex.f

Affected progams: Vertex

MAC PROGRAM UPDATES, May 6, 2003: The revised version of Perple_X has been compiled for MacIntosh computers and are available as SIT archives. With the new version, Mac users can use the solution models in new_format_solut.dat. A special versions of the VERTEX, WERAMI, and PSVDRAW compiled for large problems (i.e., problems with large numbers of pseudocompounds) is also available. The large parameter version requires ca 1 Gb memory, therefore to use this version on most machines it is necessary to allocate virtual memory.

Affected files: Perp_mac_programs.sit, Perp_mac_programs_with_big_parameters.sit

NEW_FORMAT_SOLUT.DAT ERRORS, May 6, 2003: Errors in the Chlorite ("Chl(HP)"), Cordierite ("hCrd") and Phengitic Mica models ("KN-Phen", "Phen(HP)", "PaCel", "MuCel") have been corrected. The errors in the cordierite and chlorite models were incorrect dependent endmembers. The error in mica models was an incorrect configurational entropy model that gave slightly higher entropies than implicit in the Holland & Powell data bases in use after 1996.

Affected files: new_format_solut.dat

MAJOR REVISION, April 30, 2003: Perple_X has been extensively revised. The revision primarily affects the way in which solution models are treated by VERTEX and therefore the revisions should be transparent to users who do not normally concern themselves with solution models.

A detailed list of the changes follows:

new_format_solut.dat - this file contains a number of solution models (including the "haplogranite" model of Holland & Powell, J Pet, 2001 and White et al., JMG, 2001) that are consistent with those in use in Powell and Holland's Thermocalc program. Use of this file is recommended, but the old solution model file solut.dat is still included with Perple_X for users who wish to replicate various examples included in Perple_X.

WERAMI now permits compositional variables in which both the numerator and denominator of the composition may be an arbitrary linear combination of components.

FRENDLY now functions fully with thermodynamic data files with up to 15 components.

WARNING 1: The new solution model format permits the definition of dependent endmembers within a solution model, e.g., in the model Bio(HP) the Fe-tschermaks endmember siderophyllite is defined by the line sdph_i = 1 east + 2/3 ann - 2/3 phl. Such internal definitions are convenient, but may cause problems. Specifically VERTEX only retains data for phases defined by the components selected by the user. Thus for a FASH system calculation VERTEX does not "know" about the east and phl endmembers and is therefore unable to define the sdph_i endmember for the Bio(HP) model. There are two ways around this problem: i) the user can explicitly formulate a FASH system biotite model in the solution model file or ii) the user can add MgO as a component for the calculation (even though it is of no interest) and exclude all irrelevant MgO-bearing phases so that the calculation shows essentially only FASH equilibria. Typically Holland & Powell retain MgO endmembers as independent endmembers, this means that the missing endmember problem is most likely to occur in FeO and MnO bearing subsystems (e.g., MnASH, FASH).

WARNING 2: Formerly, VERTEX reformulated solution models with one or more missing endmembers before computing mixture properties, this saved computational resources but unfortunately also had the potential to cause errors where more than one reformulation was possible. The new version of VERTEX no longer attempts to do reformulation, but instead uses the complete model at all stages of the calculation. This may pose some difficulties: i) Restrictive subdivsion ranges (i.e., Xmin >0, Xmax < 1) may cause VERTEX to reject a solution model if there are no compositions in which the concentrations of missing endmembers are zero. To avoid such problems use cartesian subdivision and specify 0.0 and 1.0 as compositional limits. ii) During the initial stage of a calculation VERTEX discretizes the entire composition space of the solution regardless of whether the compositions are relevant. For complex solutions, e.g., melt(HP) or Mn-Chl(HP) this can be painfully slow (e.g., discretization of the melt(HP) model with 1 mol % compositional resolution requires about 10 minutes on a 2 GHz PC) and may require dimensioning for a much larger number of pseudocompounds than are actually necessary for the phase diagram calculation. The latter problem can be circumvented by use of the large parameter version of VERTEX, which is currently dimensioned for 10^6 pseudocompounds. To use the large parameter version of Perple_X the total (virtual + physical) should be ca 1.2 Gb, on most PC's this necessitates increasing the size of the system page file.

WARNING 3: The way in which compositional ranges for solution models has changed amd this may cause unexpected results using old solution model data files. The subdivision ranges specified in the solution model file are now applied sequentially, i.e., the first range applies to the first endmember, the second range to the second endmember, and so on.

WARNING 4: The Holland and Powell haplo-granite melt model can only be used for calculations in which water is a thermodynamic component (i.e., water cannot be specified as a saturated phase, because in this case VERTEX rejects the h2oL melt component).

WARNING 5: Dependent endmembers (such as sdph mentioned in WARNING 1) present in many of the Perple_X thermodynamic data files may cause conflicts with equivalent endmembers generated internally by solution models. To avoid such conflicts eliminate the dependent endmembers present in the thermodynamic data files.

WARNING 6: The new solution model format cannot be read by former versions of Perple_X and cannot be read by the current version of Perplexify.

WARNING 7: Currently the only data file containing all endmembers for the Holland and Powell haplo-granite melt model is hp02ver.dat, refer to the comments for the melt model in new_format_solut.dat for instructions on how to create these endmembers for other data files.

BUILD now scans the solution model file for definitions of dependent endmembers and if they are present permits the user to exclude the dependent endmembers. Be careful not to confuse externally defined dependent endmembers defined in the thermodynamic data file from those defined in the solution model file (the latter are usually designated by "_i" suffix appended to their name).

Previous Update File