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. OSX versions at this site are updated as indicated by the date in the archive file name. Versions of the programs available for all operating systems on Github are updated as indicated on the Github site.

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 and 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.

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 do not 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). Using Perple_X on OSX is challenging and, re POSTSCRIPT, may become even more so as the Ventura update will drop support for *.ps and *.eps file in Preview (Chris Gonzalez, UWA).

WEB PAGE FORMATTING AND UNRESOLVED LINKS: On March 16, 2021, was moved to a new server with the result that the web pages have numerous formatting problems and unresolved links. These errors will be gradually corrected but if a formatting error or bad-link on this site is particularly bothersome, then please contact me and I will give its correction high priority.

Perple_X on Github: In addition to files available at this site, Perple_X sources, data files, and executable binaries are available from two Github repositories: provides generic LINUX and WINDOWS binaries. This repository (courtesy of Ondrej Lexa, Prague) is always current. provides binaries for all modern operating systems and machine architectures (courtesy of Boris Kaus, Mainz). The binaries must be downloaded via the Julia package manager, but can be extracted and run from a terminal as were previous versions of Perple_X. BEWARE: there may be delays between the posting of releases on this site and the generation of the corresponding pre-compiled binaries for the Julia package manager. To verify that the release published by Julia is current compare the release number indicated by Julia with the list of updates maintained here.

Perple_X 7.1:

Jan 21, 2024 (7.1.6):

Dec 1, 2023 (7.1.5):

Oct 26, 2023 (7.1.4): 

1-d fractionation-of-all-phases-other-than-liquid bug: a coding error in this mode caused VERTEX to fractionate only a subset of the stable phases. Correction courtesy of Juan David Hernandez-Montenegro (Cal Tech).

PSSECT bug for 1d plots: a coding error introduced in release 7.1.0 caused PSSECT to go into in an infinite loop for certain types of 1d plots.

solution_model.dat: superfluous ordered endmembers eliminated from Atg(LE)/Liz(LE) (Eberhard et al., JPet, 2023).

Sep 14, 2023 (7.1.3) 2-d phase fractionation bug: a modification to Perple_X's code on March 17, 2020 (6.8.9) had the consequence that in all subsequent releases electrolytic fluid lagged-speciation calculations failed during 2-d phase fractionation. The error has been corrected (Courtesy of Wenyong Duan, Bochum).

Aug 30, 2023 (7.1.2) Bugs and Modifications:

Fsp(HGP21)/solution_model.dat - replaces abh with ab, as in Bob Myhill's (Bristol) original entry.

Memory allocation - increased to ~2 million for both static and dynamic composition arrays (courtesy of Sarbajit Dash, CSIR-NGRI).

Lagged electrolytic fluid speciation (courtesy of Weigang Peng, Beijing):

Output error:

when the aq_solvent_composition was set to m (molal) MEEMUM/WERAMI converted the solvent molar species fractions to molalities using the solvent kg-formula weight rather than the total kg-formula weight.

Output modifications:

MEEMUM/WERAMI console pseudo-species output:

- the kg-molar-formula weight of the solvent is now designated solv_kfw rather than solv_mass.

WERAMI property #40 output adds two additional fluid properties:

tot_molality - total molality of the fluid.

solvent_kgfw is the kg-molar-formula weight of the solvent.

Jul 13, 2023 (7.1.1) Bugs and Modifications:

1) Corrects flib.f so that vname(4) is only changed if fluid EoS 27 is called by FLUIDS.
2) Corrects MEEMUM so that independent compositional variable names begin from C1 rather than C2.
3) Modifies MEEMUM so that it does not prompt for bulk compositions in problems with explicit bulk compositional variables. 
4) Corrects 7.1.1 WERAMI to print correct grid dimensions to console for mode 2 calculations.
5) Modifies WERAMI so that if immiscibility is encountered in mode 2, then the current conditions are output.
6) Adds Bob Myhill's version of Fsp(HGP21) to solution_model.dat, not clear if the endmember should be ab or abh.


Jun 19, 2023 the Helffrich edition: Version 7.1 incorporates code to do (pseudo-)ternary liquidus and solidus diagrams. The code was originally written, and recently updated, by George Helffrich (ELSI) for the 6.8.5 version of Perple_X. The vertices of ternary composition space may specify components (i.e., a true ternary composition space) or an arbitrary composition (i.e., a pseudo-ternary composition space). 

Perple_X 7.0:

May  9, 2023 (7.0.11) 7.0.10 BUILD bug: In release 7.0.10 an error trap in the program BUILD was modified incorrectly with the result that the program appeared to ignore user input. The error has been corrected in 7.0.11; a workaround solution is to use BUILD from an earlier release. Correction courtesy of Debaditya Bandyopadhyay (Calcutta)

May  4, 2023 (7.0.10) Modifications and corrections: This release incorporates numerous corrections and modifications. Most notably this release: 1) corrects an error trap that caused Perple_X to report successful optimizations as failed; and 2) improves the numerical stability of the lagged speciation algorithm for electrolytic fluids. Correction and modifications courtesy of Debaditya Bandyopadhyay (Calcutta), Dengyang He (Wuhan), and Sylvain Barbot (USC).

Mar 27, 2023 (7.0.9) WERAMI mode bug and modifications: In release 7.0.7 WERAMI was modified to suppress the redundant prompt as to whether fluids should be included in modal calculations if the user elected to calculate the mode of a fluid. The flag used to suppress the redundant prompt was not reset with the result that any subsequent modal calculations included fluid phases. Modifications: Corrects the counter used to compute progress information written by VERTEX to the user console. Increases the maximum number of user defined compositions in WERAMI from 14 to 30. Suppresses the redundant prompt as to whether fluids should be included for WERAMI property choice 37 (absolute amounts of a phase). Correction and modifications courtesy of Michael Anenburg (ANU).

Mar 15, 2023 (7.0.8) Standardizes tolerance for numeric PVT solvers: The tolerance [nopt(51)] is specified via the volume_tolerance_exp option and is computed as machine_precision^volume_tolerance_exp, volume_tolerance_exp defaults to 0.8. This release also improves error control and diagnostics for numeric PVT solvers (routine volwrn). Modification courtesy of Michael Anenburg (ANU).

Mar 3, 2023 (7.0.7) WERAMI melt mode bug: the change in the melt_is_fluid option default from F to T (Nov 27, 2022) had the consequence that WERAMI did not tabulate melt modes unless the melt_is_fluid option was set to F. Correction courtesy of Marcos Garcia-Arias (Salamanca).

Feb 8, 2023 (7.0.6) Stixrude & Lithgow-Bertelloni (GJI 2021) whole mantle model: in version 7.0 a generic convergence criterion used for numerical solutions was changed from epsmch^(0.5)/1e4 to epsmch^(0.9). The revised criterion was too stringent for the Stixrude & Lithgow-Bertelloni (GJI 2005) EoS and caused Perple_X to generate erratic results at high temperatures (>~3000 K). The criterion has been reduced to epsmch^(0.5). For certain phase parameterizations, the EoS is pathological at low-pressure (<~14GPa), high-temperature (>~3000K) conditions. An error trap has been added so that Perple_X reports most optimizations in which such phases are stable as failed. The stx21ver.dat data file, the Perple_X implementation of the GJI 2021 database, included data that was not intended for publication and, on occasion, interfered with the phase relations predicted by remaining data. The unintended data (enL, fapv, lperov, and wuls) has been commented out. Correction courtesy of Paul Tackley (ETH).

Feb 2, 2023 (7.0.5) WERAMI bug pertinent to the analysis of calculations involving electrolytic fluids: A flag used by WERAMI to identify electrolytic fluids was not reset with the result that if the n'th phase of an assemblage was an electrolytic fluid, then in all subsequent calculations the bulk composition of the n'th phase of any assemblage was computed incorrectly unless the n'th phase happened to be an electrolytic fluid or pure solvent. As a result of the error, any properties of the n'th phase and of the phase aggregate that were dependent on bulk composition were reported incorrectly unless the phase to be an electrolytic fluid or pure solvent. Correction courtesy of Manuel Menzel (CSIC Granada).

Feb 1, 2023 (7.0.4) WERAMI bugs pertinent to the mode 1 analysis (properties at a specified condition) of 0-d infiltration-reaction-fractionation calculations: WERAMI computed properties at the initial condition regardless of user input; and WERAMI did not update a record of the initial bulk composition for the effects of infiltration/fractionation. This record was used to identify infeasible species for back-calculated electrolytic fluid speciation with the result that legitimate species were potentially excluded from back-calculated results, the error had no consequences for results obtained by lagged speciation. VERTEX has been modified to output optimization statistics to the *.tim file.

Jan 18, 2023 (7.0.3) Calculations with Electrolytic Fluids by Lagged Speciation: corrects an error trap that had the potential to cause a run-time error during lagged speciation calculations.

Jan 16, 2023 (7.0.2) Calculations with Electrolytic Fluids by Lagged Speciation: improves both the precision and efficiency of lagged speciation calculations for electrolytic fluids by making use of the bulk fluid composition, rather than the solvent composition, in the criterion for selecting refinement points.

Jan 10, 2023 (7.0.1) Initial Release: The 6.9.1 version of Perple_X was plagued by poor precision and frequent failures. The 7.0.1 release eliminates these problems and is 2-10 times faster than 6.9.1. From a user perspective, the change from 6.9.1 to 7.0.1 is otherwise transparent. Release 7.0.1 is backward compatible with 6.9.1 and functions with 6.9.1 data files.

Perple_X 6.9.1 Modifications/Bugs

Dec  2, 2022: Runtime coding error in Dec 1 update: A formatting error caused the Dec 1 version to fail with a runtime error. Correction courtesy of Ben Klein (Lausanne). 

Dec  1, 2022: Static LP optimization hot start modification: static LP optimization hot starts no longer use the previous LP solution as a starting guess. The former strategy of using the previous solution adversely affected the reproducibility of calculations. 

Nov 27, 2022:

MEEMUM/VERTEX manual auto_refine bug: the November 2 update introduced a bug that corrupted the autorefine data during the autorefine stage of calculations with VERTEX/MEEMUM if the auto_refine option value was set to manual. The bug had no consequences if auto_refine was set to default (auto).

Neph(FB) solution model: the abbreviation of the kalsilite endmember has been changed from kals to kls so as to be consistent with the usage in recent THERMOCALC data files.

MEEMUM/VERTEX error, melt(HGPH): the melt(HGPH) model is unusual in that formation of the ctL ordered species is accompanied by the formation of an additional species (qHL), VERTEX/MEEMUM did not constrain the amount of qHL to be > 0, with the result that an antiordered melt phase speciation was possible. It appears that this antiordered speciation was stable at low temperatures (generally far below the true solidus), particularly for silica-poor bulk compositions. While this speciation is theoretically acceptable, it is unlikely that Holland et al. (JPet, 2108) intended that the model extended to the antiordered state. MEEMUM/VERTEX have been modified to require that fraction of all melt species is positive.

New options:

Modified options:

Nov  2, 2022:

Trap for LINUX/gfortran optimization error added.

Selection of refinement point (SAVRPC) and auto-refine pseudocompounds (SAVDYN): the routines SAVRPC and SAVDYN have been modified to use bulk composition rather than speciation to measure the distance between compositions.

Oct 14, 2022:

Multispecies Implicit Non-Equimolar Order-Disorder Calculations: To accommodate the Tomlinson and Holland (2021) melt model (melt(TH), see below) a general solver (subroutine gpmelt) has been added to Perple_X for non-equimolar implicit O/D calculations.

Tomlinson and Holland (2021 JPet 10.1093/petrology/egab012) Peridotite melting model: The thermodynamic data file (hp634ver.dat) and solution models (Melt(TH), Opx(TH), Cpx(TH), Gt(TH), Sp(TH), solution_model.dat) for this model have been added to Perple_X. As in earlier variants of the model (HGP; Holland et al. 2018;, the Cpx(TH) parameterization overestimates the stability of Ca-poor clinopyroxene with the consequence that thermodynamically legitimate two-clinopyroxene phase fields appear at low pressure and temperature in the KLB-1 benchmark calculation; these are not shown in the Tomlinson and Holland paper. A possible workaround to this problem is to use the versions of Cpx(HGP) and Opx(HGP) that account for corrections made by Eleanor Green (Oct 31 2020, Monash; see Jul 13 2020 and Dec 2 2020 updates here) to reduce the stability of Ca-Poor Cpx and Ca-rich Opx, in the HGP model variant. Additions courtesy of Debaditya Bandyopadhyay (ERI, Tokyo).

Sep 26, 2022: 

WERAMI sample_on_grid default: in operational mode 2 (properties on a 2d grid) by default (sample_on_grid option) WERAMI sampled data on the highest resolution grid of the multi-level computational grid used by VERTEX. Counter-intuitively, this choice generally leads to poorer resolution of the property of interest because only a small fraction of the highest resolution grid nodes are populated by data and WERAMI must interpolate from the data on lower-level grids to estimate properties on the unpopulated nodes of the highest level grid. This interpolation is costly (slow) and introduces noise into the computational result. The default sample_on_grid response has been modified to use the lowest level grid, on which all nodes are populated by data. In cases, were higher resolution of the data are required if the use of higher level grids results in noisy results, then it is recommended that the calculation be repeated with VERTEX after increasing the second value x/y_nodes from its default (40) to the desired resolution; to save time, the default for the second value of grid_levels (4) should be reduced accordingly.

Sep 25, 2022: 

dynamic_LP_start option: the dynamic_LP_start option controls the starting information used during initialization of the LP problem during successive programming. Three values are recognized cold, warm, and hot. Cold starts assume no information, warm starts use estimates for the variables, hot starts use estimates for both the variables and the variable states, dynamic_LP_start defaults to hot.

Sep 23, 2022: 

VERTEX/MEEMUM modification: Prior to this update dynamic LP optimizations were made from a cold start condition; the dynamic LP code has been modified to make a hot start by using the amounts and states of variables from the previous iteration. The modification accelerates dynamic LP optimization by about 40%.

solvus_tolerance option, VERTEX/MEEMUM: The default value of solvus_tolerance has been increased to 5d-2 mol.

Sep 22, 2022: 

VERTEX/MEEMUM MAJOR BUG! This update corrects a major source of numerical instability that slowed calculations and caused both failed optimizations and erratic results. Details of the error: Perple_X's LP optimization algorithm allows input of an initial guess that was provided by the solution to the previous optimization. This practice is safe for optimizations done with static compositions (pseudocompounds) because the static problem is well-conditioned. However, during iteration with dynamic compositions there may be no relation between the previous and current problems and it is possible that an unrelated initial guess may be an infeasible point, which leads to worse solutions than no guess at all. Particularly in poorly conditioned problems, the use of an essentially random initial guess had the consequence that Perple_X did not necessarily converge to numerically identical solutions if the program repeated calculations at the same condition. To eliminate the problem the LP code has been modified to initialize the amounts of all phases to zero on cold starts. Correction (belatedly) courtesy of Felix Bissig, Dean Khan, and Amir Khan (ETH).

solvus_tolerance option, VERTEX/MEEMUM: The default value of solvus_tolerance that was reduced to 1d-2 mol of September 8, 2022, was too restrictive for high temperature (~2000 K) calculations with silicate melts and resulted in spurrious liquid solvi. The default value has been increased to 3d-2 mol.

NaHCO3, DEW17: The data for NaHCO3 in DEW 2017 Perple_X thermodynamic data files has been replaced with the data for NaHCO3 from DEW 2019, because the 2017 data seems anomalous at high pressure.

Sep 11, 2022:

warn_interactive option, VERTEX/MEEMUM: VERTEX and MEEMUM have been modified to issue intrusive warnings in order to force user acknowledgement of possible bad practice in the configuration of a computational problem. These intrusive warnings are overridden automatically if warn_interactive is set to F (false).

warn_no_limit option, VERTEX/MEEMUM: To reduce the volume of information written to the console during execution, VERTEX and MEEMUM limit the number of times certain warnings may be repeated. Setting warn_no_limit to T (true) overrides these limits for some warnings.

perplex_option.dat: the 6.9.1 option keywords have been added to the online version of perplex_option.dat and various 6.9.0 options that are obsolete in 6.9.1 have been deleted. The 6.9.0 version of the option file persists as perplex_option_690.dat.

Sep 8, 2022:

BUILD bug, 1d gridded minimization: BUILD did not correctly identify sectioning variables for 1d gridded minimization calculations if the default variable order was modified. The bug was introduced Aug 26, 2021 and can be circumvented by using BUILD690 or uploading the updated version. Correction courtesy of Daniel Astudillo Manosalva (UFL).

logarithmic_X option, VERTEX/MEEMUM: When set to T, the logarithmic_X option replaces the compositional variable used to represent the compositional variable associated with a phase saturation constraint (usually Y_CO2 for a binary H2O-CO2 fluid) with its base 10 logarithm. Modification courtesy of Manuel Manzel (Grenada).  

solvus_tolerance option, VERTEX/MEEMUM: The default value of solvus_tolerance has been set to 1e-2, previously the value was related to the initial_resolution value and defaulted to 7e-2 if initial_resolution was assigned its default value.

NaAl vs NAL Stixrude & Lithgow-Bertelloni (2021) whole mantle data base: The commentary in the stx21_solution_model.dat solution model file incorrectly listed the name of the NaAl solution model used in Perple_X  as NAL, the name actually used by Stixrude & Lithgow-Bertelloni. Correction courtesy of Craig Bina (Northwestern).

DEW17HP622ver_oxides.dat, incorrect EoS flag for CH4: The EoS flag in DEW17HP622ver_oxides.dat for molecular CH4 was set incorrectly (to 105 rather than 104) and pointed to molecular H2.

Aug 26, 2022:

VERTEX_NO_OPT for WINDOWS: A non-optimized version of VERTEX named VERTEX_NO_OPT has been added to the WINDOWS Perple_X archive because optimization causes numeric instability in some calculations. VERTEX_NO_OPT is substantially slower than VERTEX but may yield cleaner results.

Phase listing error: The phase listing option introduced on Aug 24, 2022 corrupted the output of all physicochemical properties by incorrectly associating the output phases with the corresponding solution models. The error has been corrected.

aq_bad_results option default value: A condition for the feasibility of lagged speciation electrolytic fluid calculations in closed systems is that solute components must be present in at least one condensed phase, i.e., calculations cannot be made for a system in which the solute components are completely dissolved in the fluid phase. This condition is relaxed in systems open systems if the fluid phase is perfectly fractionated (completely removed by fractionation). To accommodate this possibility the default error handling controlled by the aq_bad_results option was modified on January 24, 2019 to override error testing for complete solute component depletion during fractionation calculations. Unfortunately, the modification was made in such a way that error checking was overridden for calculations along any prescribed path irrespective of whether the fluid  phase was actually being fractionated; consequently Perple_X potentially output invalid lagged speciation results for closed system models computed along a prescribed pressure-temperature path. The problem has been corrected so that Perple_X now only overrides error checking (i.e., resets aq_bad_results from error [the default] to 101) if the user explicitly elects to fractionate electrolytic fluids. This behavior occurs only if the user has not modified aq_bad_results from its default value, when the default value has been modified, the modified value is used regardless of the nature of the calculation. Correction courtesy of Dengyang He (Wuhan).

Aug 25, 2022:

WINDOWS VERSION COMPILED WITH INCORRECT SETTINGS: The WINDOWS version of Perple_X put online Aug 24, 2022 was compiled with overly restrictive floating point options with the result the programs potentially terminated with an undiagnosed floating point error.

Aug 24, 2022:

Phase listing: VERTEX and MEEMUM have been modified so that the solution phases stable in assemblage are listed in the same order that they have been entered in the problem definition file (i.e., the file generated by BUILD). Modification courtesy of Jeongmin Lee (Seoul) and Bob Myhill (Bristol).

Aug 23, 2022: Failed attempt of the Aug 24, 2022 update.

Jun 20, 2022:

MEEMUM modified to use bulk compositional variables: MEEMUM has been modified to use bulk compositional variables if these have been defined in the problem definition file (i.e., the file created by BUILD). Modification courtesy of Michael Annenburg (ANU).

VERTEX optimization failure output: VERTEX has been modified to output the values of the independent variables at the conditions at which optimization has failed. Modification courtesy of Michael Annenburg (ANU).

VERTEX/BUILD inconsistency, 0-dimensional infiltration: An error trap in VERTEX prevented execution of isobaric-isothermal 0-d infiltration calculations because for such calculations BUILD sets the maximum values of pressure and temperature equal to the minimum values. The error trap is now circumvented. Correction courtesy of Wenyong Duan (Bochum). 

Apr 14, 2022:

CTRANSF/ACTCOR bug: a bug introduced with the auto_exclude option on April 3, 2018 caused CTRANSF and ACTCOR to generate output without the EoS keyword for thermodynamic species with no reference state volume (typically gas species). Perple_X programs have no error trap to prevent them from reading data without the EoS keyword, thus the corrupted files generated by CTRANSF/ACTCOR were not recognized as corrupt and the missing EoS keyword prevented the auto_exclude option from functioning. The corrupted files also had the potential to cause other erratic behavior. Correction courtesy of Andrea Galli (ETH).

Mar 7, 2022:

Superfluous debugging messages deleted: the wroink2! failed and div2 debugging messages have been eliminated. Modification courtesy of Debaditya Bandyopadhyay (ERI, Tokyo).

Feb 9, 2022:

Stixrude & Lithgow-Bertelloni (GJI, 2011) pressure-dependent Landau O/D model: quartz is the only phase described by a pressure-dependent Landau formulation in both the Stixrude & Lithgow-Bertelloni (GJI) 2011 and 2021 data bases. In the initial implementation of the 2011 data base in Perple_X, the Landau contribution was not included. However, the implementation of the 2021 data base requires at least the pressure-independent form of the Landau model because it is used to describe Fe-bearing phases. Thus when the model was introduced to the 6.9.1 code, the 2011 variation was also implemented. On January 4, 2022, the 6.9.0 code was also modified to use both the 2011 and 2021 Landau model variants. The 2011 variant is unfortunate because it does not extrapolate correctly to high pressure and, consequently, results in spurious high pressure (> ~20 GPa) stability for quartz. The 2011 variation has now been disabled. The consequences of this history are:

1) Calculations with stx21ver.dat data file were not affected.

2) Calculations with stx11ver.dat data file with the 6.9.1 code with time-stamp later then Apr 3, 2021 potentially resulted in a spurious high pressure stability field for quartz.

3) Calculations with stx11ver.dat data file with the 6.9.0 code with time-stamp later then Jan 14, 2022 potentially resulted in a spurious high pressure stability field for quartz.

Correction courtesy of Felix Bissig (ETH).

Feb 7, 2022:

VERTEX/MEEMUM potential segmentation fault: a coding error that had the potential to cause a segmentation fault during LP optimization has been corrected.

Feb 4, 2022:

BUILD error: BUILD terminated with the message "unanticipated icopt value in getxvr" for gridded minimization calculations with T(P) or P(T). The error was introduced Aug 26, 2021. Correction courtesy of Jiri Konopasek (Tromso).

wroink67 O/D debug message deleted, modification courtesy of Debaditya Bandyopadhyay (ERI, Tokyo).

Jan 30, 2022:

The Torino tutorial on solving petrological problems with Perple_X has been updated. Courtesy of Chiara Groppo and Daniele Castelli.

Optimization strategy modification: The 691 optimization strategy has been modified to increase numerical stability and computational efficiency. The modification increases the speed of calculations with VERTEX and MEEMUM by roughly 30%.

Jan 14, 2022:

VERTEX690/MEEMUM690, Stixrude 2021 Database: The 690 versions of the Perple_X programs (VERTEX690, etc) included in the 691 archive have been updated to read the stx21ver.dat thermodynamic data file (see Oct 14, 2021 update). Modification courtesy of Dean Khan (ETH)

PSSECT system overflow warning: the plot subtitle generated by PSSECT for calculations along a geothermal gradient overflowed the storage allocated for the subtitle and, on WINDOWS, generated a system warning. The error, created January 3, 2022, has been corrected. Correction courtesy of Andrea Maffeis (Torino).

pseudocompound_list option in VERTEX: the 691 version of VERTEX has been modified to output a list of the exploratory stage, static pseudocompound compositions if the pseudocompound_list is set to T. Previously the 691 version of VERTEX generated no output in response to this option. Modification courtesy of Chiara Groppo (Torino).

Jan 11, 2022:

VERTEX 1-d Phase Fractionation Bug: VERTEX did not reinitialize the bulk composition after the exploratory stage of 1-d phase fractionation calculations, consequently the fractionated bulk composition was used as the initial composition for the final (i.e., autorefine) calculation. Correction courtesy of Yibing Li (CAS, Beijing).

Lagged Aqueous Speciation calculations: various minor modifications have been made to the speciation routine to increase numerical stability.

MEEMUM/VERTEX/CONVEX bug II 2nd attempt: Perple_X uses chemical potentials to compute energy-composition gradients to optimize dynamically-generated compositions. In compositionally degenerate systems, Perple_X assigns the bad_number option value to undetermined chemical potentials. As the bad_number values defaults to NaN (not-a-number), the default behavior caused the energy-composition gradients and objective function to become undefined for compositionally degenerate systems with result that the optimization became numerically unstable. It is likely that this error was particularly problematic in phase fractionation calculations and in calculations as a function of compositional variables.

Jan 3, 2022:

MEEMUM/VERTEX/CONVEX bug I: for compositions of order-disorder solution models in which disordering was stoichiometrically frustrated, a coding error in routine MINFXC caused the routine to output incorrect values for the Gibbs energy of the ordered composition. Because the error affected only statically generated compositions it had little effect on calculations with MEEMUM or VERTEX, which dynamically refine the statically generated compositions; however, the consequences of the error in CONVEX were potentially severe because it relies entirely on statically generated compositions. Correction courtesy of Jesse Walters (Frankfurt) and Chiara Groppo (Torino).

MEEMUM/VERTEX/CONVEX bug II: Perple_X uses chemical potentials to compute energy-composition gradients to optimize dynamically-generated compositions. In compositionally degenerate systems, Perple_X assigns the bad_number option value to undetermined chemical potentials. As the bad_number values defaults to NaN (not-a-number), the default behavior caused the energy-composition gradients to become undefined for compositionally degenerate systems with result that the optimization became numerically unstable. It is likely that this error was particularly problematic in calculations as a function of compositional variables.

Convergence criteria: for iterative routines in file rlib.f the convergence criterion has been changed from a comparison of the change in the iterant (delta_x) to a threshold, to a comparison of delta_x/(1+x) to the threshold. This change has the consequence that for iterants (x) >> 1, the threshold specifies the relative precision on x, while for iterants << 1 the threshold specifies the absolute precision on x. The threshold remains epsilon = machine_precision^(9/10).

Postscript Plotting Modifications: George Helffrich (ELSI) made various modifications to Perple_X's postscript plotting library to improve plot formatting.

meemum_subprogram.f: Henri Samuel (IPGP) made the meemum_subprogram.f template for interfacing Perple_X with other fortran programs compatible with Perple_X 6.9.1.

Dec 7, 2021:

plot_extra_data bug: the plot_extra_data option set in the PLOT option file caused an infinite loop if the file containing the plotting instructions terminated in a ">" character. Correction courtesy of George Helffrich (ELSI).

Nov 10, 2021:

FRENDLY bug: FRENDLY did not check for errors in the stoichiometric coefficients of a reaction equation. Correction courtesy of George Helffrich (ELSI).

PSVDRAW modification: PSVDRAW has been modified to read plot files generated by CONVEX that have an incomplete list of invariant points. Modification courtesy of Jesse Walters (Frankfurt).

Nov 8, 2021:

PSEoS parameter modification: The interaction term used by Perple_X to compute activities for H2O-CO2 fluids after Holland & Powell (2003) from the PSEoS has been modified from the values given by Holland & Powell (2003) to match phase equilibria calculated with the current version of THERMOCALC. The modification has consequences for calculations that specified the PSEoS in combination with a phase saturation constraint, it has no consequences for GFSM calculations. Modification courtesy of Blakelee (Beijing).

Oct 25, 2021:

BUG #1: Perple_X was terminated by an incorrect error trap that issued the message:

**error vertex** unspecified error ier=999
real= 0.5000000
i= 800

the error trap has been corrected. Correction courtesy of Penglei Liu (Wuhan).

BUG #2, Redlich-Kistler (RK) Excess Function: For solution models that use the RK and were not identified as special cases, Perple_X loaded (routine SOLOAD) the wrong coefficient ("wP0" instead of "wP") into the array used to compute the thermodynamic properties for the static composition array. Of the models in solution_model.dat this error affected the solution model Po(SE), the error may have increased numerical noise, but because the correct properties were computed for dynamically-generated compositions it is unlikely that it had important consequences. The coding in Perple_X for the RK is sloppy and needs to be cleaned up, in the meantime users who add solution models with RK excess functions should be wary. Correction courtesy of George Helffrich (ELSI).

Oct 14, 2021:

Stixrude & Lithgow-Berteloni (GJI, 2021) whole mantle mineralogical model: the thermodynamic data (stx21ver.dat) and solution models (stx21_solution_model.dat) for this model have been added to the data file archive. Benchmark calculations are at stixrude_2021_benchmarks.

Oct 7, 2021:

BUILD bug: a bug, added on August 26, caused BUILD to prompt twice for the pressure range and not at all for the temperature range of phase diagram sections as a function of pressure and temperature. Correction courtesy of Dimitris Moutzouris (Athens).

Oct 6, 2021:

Programming errors: two errors that corrupted memory and, on OSX/gfortran, prevented compilation have been corrected courtesy of John Schumacher (Portland State) and George Helffrich (ELSI). The errors were added in the Oct 1 and Aug 23 revisions.  

Oct 1, 2021:

plot_extra_data is a new option read from the PLOT option file that causes PSSECT and PSTABLE to plot user-provided data (e.g., lines, points, phase equilibrium brackets, etc.). The data to be plotted must be entered in a file. The file format is described at plot_extra_data. The plotting routine is courtesy of George Helffrich (ELSI).

WERAMI bug: an error trap intended to prevent selection of incompatible property choices in Mode 2 calculations was coded incorrectly and resulted in corrupted output (*.tab) files. Correction courtesy of Ellen Alexander (University of Colorado).

Solution model Corrections/Modifications, courtesy of Dave Kelsey (Aus Geol Surv, Perth), are listed below and have been made in the current version of solution_model.dat, see the June 20 update for additional recent corrections.  

MEEMUM/VERTEX print file output: when print output was requested it was not written unless the autorefine option was set to off or manual. The error as been corrected. Correction courtesy of Priyadarshi Chowdhdury (Monash).

August 26, 2021:

Bulk composition of electrolytic fluid error, MEEMUM/WERAMI: the bulk composition of electrolytic fluids output under the heading "Phase Compositions (molar proportions)" by WERAMI (mode 1) or MEEMUM was incorrect and inconsistent with the (correct) indicated speciation, but the correct bulk composition was output under the heading "Back-calculated solute speciation". The incorrect bulk composition was recovered using WERAMI (modes >1) for all property choices except property choice #40. The error is not present in previous versions of Perple_X.

Untested version of BUILD: the code of the 6.9.1 version of BUILD has been consolidated to eliminate a large number of special cases concerning the choice of the primary independent variable for a calculation. Because of the number of special cases involved, the new code has not been thoroughly tested. Should problems arise with the untested version, the 6.9.0 version of BUILD included with the 6.9.1 programs as BUILD690 can be used with the 6.9.1 version of Perple_X.

August 23, 2021:

Ep(HP11) solution model: this model has been reformulated as an implicit order-disorder model to eliminate the need to adjust the enthalpy of ordering with each revision of the THERMOCALC data base. This implementation is consistent with the current implementation of the model in THERMOCALC. Modification courtesy of Dave Kelsey (Aus Geol Surv, Perth).

Chemical potential output: VERTEX/MEEMUM cease iteration during optimization if the chemical potentials of the system cannot be computed from the current results (warning message ver106) in which case the results where output and the chemical potentials assigned the bad_number option value. These programs have now been modified to output the chemical potentials from the previous iteration. Modification courtesy of Dave Kelsey (Aus Geol Surv, Perth) and Michael Anenburg (ANU).

July 23, 2021:

Severe error: an unnecessary code modification made on July 21 had the potential to corrupt memory and/or cause segmentation faults. Versions of Perple_X with the July 21, 2021 time-stamp should not be used. Correction courtesy of Jesse Walters (Frankfurt).

July 21, 2021:

MEEMUM/WERAMI output_species_props option: MEEMUM/WERAMI have been modified to output the molar Gibbs energies, partial molar Gibbs energies, and activities of the species of stable phases when the option output_species_props is set to T. The option is equivalent to, and may be replaced by, species_Gibbs_energies, which formerly resulted only in the output of molar Gibbs energies. In contrast to the former output, the molar Gibbs energies now include contributions arising from internal DQF corrections (i.e., DQF corrections specified in the relevant solution model). Modification courtesy of Dave Kelsey (Aus Geol Surv, Perth).

MEEMUM/VERTEX bug: the number of discrete compositions identified by the linear programming stage of iterative optimizations should, in principle, always be equal to the number of thermodynamic components. Exceptions to this principle occur when compositions are refined to the point that they are numerically indistinguishable. This exception poses no particular algorithmic difficulty; however, the routine (REBULK) that homogenizes the discrete compositions to obtain phase compositions was not dimensioned to accommodate the maximum possible number of discrete compositions. On LINUX/OSX systems this error caused a segmentation fault when the number of discrete compositions exceeded the dimensioning. On the WINDOWS version of Perple_X, it is likely that such conditions resulted in the output of an assemblage that violated mass balance constraints. Correction courtesy of Jesse Walters (Frankfurt).

July 11, 2021:

Oxide component bug: when the total molar amount of the components (tot_mol) for an entity (endmember or species) in the thermodynamic data file was zero Perple_X rejected the entity without issuing a warning. A warning (ver013) is now issued for this case as was previously done for the case tot_mol < 0. The reason for rejection of such entities is that Perple_X (unnecessarily) renormalizes the compositions of all thermodynamic entities by tot_mol. For legitimate thermodynamic entities, i.e., those with positive mass, tot_mol <= 0 arises only when components involving 2 or more elements are used, e.g., given the components {CO2, O2}, the default choice in many Perple_X thermodynamic data files, tot_mol for graphite or diamond is zero as C = 1 CO2 - 1 O2 and these phases would have been rejected without warning. Such rejections can be avoided by transforming one or more of the components either while running BUILD or, preferably, in the data file itself with the program CTRANSF. Undesired rejections are pernicious in calculations with generic hybrid fluid EoS solution models (GFSM) in which the fluid may take on elemental compositions, e.g., the stability of a methane-rich fluid in equilibrium with carbonates in the first example (in17b) on the GFSM page is entirely a consequence of the fact that graphite and diamond have been excluded from the calculation. Similar problems may arise in calculations where metals or carbides may be stable. For this reason using elemental components is always the safest choice whenever the corresponding elemental composition is possible. Correction courtesy of Chiara Groppo (Torino).

June 23, 2021:

Ilm(WPH)/Ilm(DS6): the modification made to Ilm(WPH) on June 20 was incorrect, the original model has been restored in solution_model.dat. A version of the solution model renamed Ilm(DS6) implements the model as done in THERMOCALC since ca Dec 2019. The difference between the models is that in Ilm(WPH) the Gibbs energy of mixing is expressed relative to the hematite endmember hem, whereas in Ilm(DS6) it is expressed relative to a disordered hematite endmember dhem, which is made by stripping the Landau O/D model from hem to create an endmember hem_nol, dhem is then created with a make definition from hem_nol. The dhem make definition and hem_nol endmembers have been added to hp62ver.dat, hp622ver.dat, and hp633ver.dat. The practical difference between Ilm(WPH) and Ilm(DS6) is that the former is slightly more stable at low temperature (<~900 K). 

WERAMI, interpolation bug for 2d gridded minimization: extends correction of June 7, 2021. WERAMI continued to make incorrect interpolations when a sampling point was not bounded by three interolation points. The error generated erratic data manifest as spikes in contour and surface plots. Correction courtesy of P M Shashank (IIT Roorkee).

June 20, 2021:

PSTABLE, large *.tab file bug: PSTABLE lacked error traps to prevent it from writing beyond the limits of allocated memory for large *.tab files, which potentially corrupted memory and/or caused segmentation faults. Correction, with crossed fingers, courtesy of Craig Bina (Northwestern).

Craig Bina's geophysical phase diagram tutorial: updated to include calculation of a mantle adiabat (chapter 8).

Solution Model Modifications: a number of THERMOCALC solution models have been updated or corrected to be consistent the most recent versions of these models at, or, in the case of parameters relevant to Mn solution in Chl(W), and Ctd(W), the THERMOCALC files(?) relevant to White, Powell, Holland, Johnson, & Green (2014, JMG 32:261). Most of the changes are courtesy of Dave Kelsey (Aus Geol Surv, Perth) and can be identified by the initials DEK. A summary follows:

June 7, 2021:

WERAMI, interpolation bug for 2d gridded minimization: A programming error introduced into WERAMI on Oct 21, 2018 caused WERAMI to interpolate data from adjacent nodes incorrectly if the sampling point was not located within a triangle formed by three interpolation points. The error generated erratic data manifest as spikes in contour and surface plots. Correction courtesy of Craig Bina (Northwestern).

FRENDLY, data output error: When FRENDLY was used to output modified data to a thermodynamic data file, two extraneous parameters, used for internal purposes, labeled b9 and b1 were output after the non-zero values of parameters b1 through b8; the second, incorrect, value for b1 was adopted by any Perple_X using the modified data file. Correction courtesy of Chiara Groppo (Torino) and Jesse Walters (Frankfurt).

timing option: the default value of the timing option has been changed to T (true). This option causes VERTEX to write a summary of the CPU time consumed for the major components of a calculation. The summary is written both to the console and a file named my_project.tim. Modification courtesy of Michael Anenburg (ANU).

GFSM option: Perple_X thermodynamic data files may identify "special_components", which are usually the volatile composants H2O and CO2 or H2 and O2 and automatically associated with an internal equation of state (EoS). Components identified in this manner can be specified as saturated phase components or used with solution models that explicitly invoke an internal EoS (i.e., solution model type 0, e.g., F and GCOHF), but cannot be used with more versatile generic hybrid molecular fluid solution models (GFSM) (i.e., solution model type 39, e.g., COH-Fluid). Prior to the this update, use of a GFSM model required deletion of the special_component section, when present, from the thermodynamic data file as described at generic hybrid fluid EoS solution models. The GFSM option now toggles the behavior of the special_components so that the specification is ignored if GFSM is T (true) and the thermodynamic data file need not be modified to use a GFSM. The default value of GFSM is F (false).

May 24, 2021:

End of the "minfx nfg" debugging message, MEEMUM/VERTEX/CONVEX: after a brief, but ignominious, history, the "minfxc nfg" msg as been eliminated. The default behavior for O/D speciation calculations has been restored to its state before May 18; alternative behavior is now controlled by the minfxc_solver option. Correction courtesy of Michael Anenburg (ANU).

May 22, 2021:

"minfx nfg" debugging message, MEEMUM/VERTEX/CONVEX: the threshold set for printing the debugging message, introduced on May 18, was set so low that the message was frequently printed to the user console. The message indicates that a redundant attempt to improve on the results of an order-disorder calculation did not lead to an improvement. The code has been modified so that the message is only printed if the redundant calculation leads to a deterioration of greater than 1 part per mil (the redundant calculation result is only used if it represents an improvement). The message generally does not indicate computational problems, but in the interest of identifying pathological cases I would be grateful to hear of cases where the message is printed frequently. Correction courtesy of Ben Klein (Lausanne). 

May 18, 2021:

Failed order-disorder calculations, Sp(HGP): order-disorder calculations for solution models with multiple order parameters potentially converged to a false solution if a site population constraint was active. Although this problem was relevant for any multiple parameter o/d solution model, it appears to have only affected results for certain peculiar compositions of the Sp(HGP) spinel model of Holland et al. (J Pet, 2018).

May 12, 2021:

6.9.1 gfortran vs Intel version for WINDOWS: on May 3 a build of 6.9.1 for WINDOWS compiled with gfortran rather than the Intel Fortran compiler was inadvertently placed in the WINDOWSPC directory. The gfortran version of 6.9.1 was functional but slower than the version compiled with Intel. The Intel compiled version has been restored.

April 29, 2021:

6.9.1 solutions in systems with only one thermodynamic component: Chemical solutions may be stable in a system with only one thermodynamic component but one or more mobile or saturated components, the composition of such solutions was not refined. The error has been corrected.

April 24, 2021:

6.9.1 Numerical stability during optimization: the 6.9.1 optimization algorithm has been modified to enhance numerical stability. Modification courtesy of Yajie Gao (ANU).

April 16, 2021:

timing has been added to the list of option keywords read from the Perple_X option file. If the timing keyword is present in the option file and assigned a value of T (true), then VERTEX writes a summary of the CPU time consumed for the major components of a calculation. The summary is written both to the console and a file named my_project.tim. The default value for timing is F (false).

April 14, 2021: All commonly used Perple_X programs are now compiled with the 6.9.1 version library routines.

April 3, 2021:

6.9.1 VERTEX error: In calculations as a function of bulk composition VERTEX did not update the bulk composition used for static optimizations. This error had the consequence that if no solutions were stable, then VERTEX output the assemblage stable for the initial bulk composition at all values of the compositional variables. VERTEX was able to recover from this error if solutions were stable for the initial bulk composition because the bulk composition was updated during the subsequent dynamic optimizations. The error slowed convergence and may have caused a deterioration in quality. Correction courtesy of Michael Anenburg (ANU).

March 28, 2021:

6.9.1 CONVEX reaction labeling error: CONVEX writes reaction equations such that the phase assemblage listed to the right of equals sign is stable at higher values of the primary independent variable than the equilibrium coordinate of the corresponding univariant/invariant field. This labeling was not done correctly for calculations in which one or more tertiary variables was dependent on the primary variable (e.g., for a calculation as a function of temperature, the labeling was potentially incorrect if the activity or fugacity of a species was specified as a sectioning constraint and/or if pressure was specified as a function of temperature). The error has been corrected courtesy of Ekaterina Akimova (St Petersburg). The error remains present in earlier versions of CONVEX (and CONVEX690).

March 22, 2021:

6.9.1 Optimization code: the method by which parameters are passed to the optimization algorithm has been modified. The modification results in a slight increase in computational efficiency and stability. 

6.9.1 LINUX/OSX WERAMI/MEEMUM segmentation fault (corrected March 18): two coding errors that had the potential to cause segmentation faults in WERAMI and, possibly, MEEMUM have been corrected. Correction courtesy of Laura Cobden, Utrecht. 

6.9.1 LINUX/OSX BUILD690 (corrected March 15): the LINUX/OSX makefiles did not include the BUILD690 target. Correction courtesy of John C Schumacher (Portland State).

March 1, 2021:

6.9.1 Relict Equipartition Solution Model Warning ver017: it is not possible to restrict the range of solution model compositions considered by the 6.9.1 algorithm, this has the consequence that the algorithm may identify compositions that correspond to a global Gibbs energy minimum but that are nonetheless petrologically implausible (ponder that). Most commonly this occurs for relict equipartition solution models. An intrusive warning (ver017) has been added to alert users of the presence of such models. The warning may be suppressed by setting the option file keyword warning_ver017 to F (false). Modification courtesy of Evangelos Moulas (Mainz).

Feb 26, 2021:

6.9.0/6.9.1 Internal Fluid Speciation Routines: prior to the 6.7.4 revision Perple_X reset the values the XO and XC compositional variables used by certain internal fluid speciation routines to avoid degeneracies at the XO and XC {0, 1} limits. In the 6.7.4 revision, Perple_X was modified so that the routines would return the bad_number value for limiting compositions. The 6.7.3- behavior has now been restored, such that when XO or XC = 0 it is reset to (machine_precision)^(1/2) and when XO or XC = 1 it is reset to 1 - (machine_precision)^(1/2). Modification courtesy of Ekaterina Akimova (St Petersburg).

Feb 25, 2021:

6.9.1 MEEMUM/VERTEX BUG: in calculations with saturated and/or mobile components VERTEX and MEEMUM potentially reported immiscibility incorrectly resulting in speckled phase diagram sections. Additionally, the bug may have caused mass balance errors in the phase fields where immiscibility was falsely reported. Correction courtesy of John C Schumacher (Portland State).

Feb 13, 2021:

6.9.1 MEEMUM/VERTEX: modified algorithm to compute chemical potentials from a weak LP solution.

Feb 11, 2021:

6.9.0/6.9.1 Program Names: Both the 6.9.0 and 6.9.1 versions of VERTEX, MEEMUM, CONVEX, WERAMI, and PSSECT are present in recent Perple_X program archives (e.g.,, the 6.9.0 versions are now distinguished by the names vertex690, meemum690, convex690, werami690, pssect690, and build690 and the 6.9.1 versions are now named vertex, meemum, convex, werami, pssect, and build. See the 6.9.1 introduction for additional information. N.B.: to use the 6.9.1 version effectively reset all computationally relevant options (e.g., initial_resolution, x_nodes, y_nodes) specified in older copies of the Perple_X option file to default.

6.9.1 MEEMUM/VERTEX bug: a filter for weak solutions potentially reduced the amounts of the stable phases reported after optimization, in addition to generating incorrect modal proportions, the error had the consequence that the back-calculated bulk composition did not match the input composition. Correction courtesy of Andrea Maffeis (Torino).

6.9.1/6.9.0 WERAMI sample_on_grid bug: a real-to-integer conversion error caused WERAMI to use, at roughly half of all sampled nodes, interpolation from adjacent nodes to compute nodal properties, rather than the actual nodal properties, during data sampling on 1- and 2-dimensional grids. As a consequence of this error the sampled data generated with the sample_on_grid option set to true (default), was likely noisier than it would have been with the option turned off.

Stixrude & Lithgow-Bertelloni (GJI, 2011) whole mantle mineralogical model - stx11ver.dat data file: the spin configurational entropy correction for iron made on May 15, 2019 in the stx11ver.dat file was incorrect. The correct data has been reinstated, the error had no consequences for phase equilibria computed as function of pressure and temperature other than to effect the bulk entropy; however for equilibria calculated as a function of pressure and entropy, the error affected predicted compositions at the 100 ppm level and reduced temperatures by ~25 K. Correction courtesy of Dean Khan (ETH)

Feb  1, 2021: Perple_X 6.9.1 Beta Version: The 6.9.1 beta version of Perple_X is included with the stable 6.9.0 version. 6.9.1 is more accurate and 2-4 orders of magnitude faster than the 6.9.0 for the BL478 (Green et al. 2016) and KLB-1_JH (Jennings & Holland 2015) benchmarks and, perhaps more importantly, is not limited by computational memory. However, there is a crossover in the relative computational efficiency of the 6.9.0 and 6.9.1 strategies, such that 6.9.0 becomes more efficient for simple problems. Additionally, while 6.9.1 has relatively few parameters by which it can be tuned to improve results, the parameters are not independent and changing them may have non-intuitive consequences. For these reasons, the 6.9.0 version will persist alongside the 6.9.1 programs, the latter being distinguished by the suffix 691 added to the program name (e.g., vertex691 vs. vertex). Both versions read the same data files, but it is strongly recommended that all options set in any option file used with previous versions of Perple_X be reset to default.

It is difficult to prevent vertex691 and meemum691 from exploring the entire composition space of a solution model. Consequently the programs may identify phase equilibria that are discrepant (e.g., the KLB-1_JH benchmark) with those obtained with previous versions of Perple_X and/or other phase equilibrium calculators, notably THERMOCALC, in which it is possible to restrict the composition of a solution model. Should such discrepancies arise, the thermodynamically correct result can be identified by comparing the bulk Gibbs energy of the results at a condition where the discrepancy is observed. 

The 6.9.1 version implements changes in strategy to overcome difficulties caused by complex solution models and/or high-dimensional composition spaces. Previously Perple_X used an iterative strategy in which the continuous composition space of a solution phase was initially represented by a static set of discrete compositions, i.e., pseudocompounds. Stable and nearly stable compositions, i.e., refinement points, were identified from this representation by linear programming (LP). The resolution of the optimization was then increased dynamically by subdividing the composition space about the refinement points. The LP step, identification of refinement points, and the re-sampling of the composition space by subdivision were repeated until a target resolution was achieved. In 6.9.1, the process of re-sampling about each refinement point by subdivision has been replaced by a quadratic programming (QP) step, which optimizes the composition of each refinement point relative to the current LP solution. As in previous versions of vertex, by default, vertex691 calculates phase diagram sections in two stages, an exploratory stage and an auto-refine stage. However, in previous versions, the result of the low-resolution exploratory stage was used to limit the range of static compositions considered at higher resolution in the auto-refine stage but the static auto-refine stage compositions where generated by subdivision. In 6.9.1, the dynamic compositions identified in the exploratory stage are used directly to form the set of static compositions considered during the auto-refine stage.

Which programs work with which?

Useful new options: these options may be added to the option file to tune the 6.9.1 optimization algorithm. The option keywords have not been added to the on-line version of perplex_option.dat so that the file remains compatible with earlier versions of Perple_X.

Some observations that may be helpful re tuning relative to the default values of the above options:

Options with modified behavior and/or default values: in principle, small values for initial_resolution and, during the exploratory stage of calculations in vertex691, large values for x/y_nodes should improve computational quality. However, there is currently little evidence that significant improvements result from changing the 6.9.1 default values and it is possible that attempts to improve on the default choices may cause numerical instability. For this reason it is recommended that all options be reset to default before a calculation done with a previous version is repeated in 6.9.1.

6.9.0 options that are obsolete in 6.9.1:

Useless new options: these options control aspects of the 6.9.1 algorithm, the default choices are likely optimal.

Perple_X 6.9.0, Modifications/Bugs

Jan 11, 2021: The convergence criterion for fluid EoS routines that solve iteratively for volume and/or speciation has been changed from a relative threshold (comparable to the final_resolution value) to a relative threshold for numbers > one and an absolute threshold otherwise. The threshold is eps^(1/2) for the 6.9.0 version and eps^(4/5) for 6.9.1, eps is machine precision ~1e-16. 

Dec 21, 2020: CONVEX bug: in cases where the pseudocompound names were made by combining the abbreviated solution model name with values of the solution model compositional variables, CONVEX generated incoherent pseudocompound names by using the wrong solution model name. Correction courtesy of Chiara Groppo & Sarah Nerone (Turin).

Dec 7, 2020: Opx(HGP): the en-mgts excess term was accidentally deleted from the Opx(HGP) model put on-line on Dec 5. The error has been corrected in the current version of solution_model.dat. Correction courtesy of Debaditya Bandyopadhyay (Calcutta).

Dec 5, 2020: Opx(HGP), Cpx(HGP), Sp(HGP) model revision: the on-line version of solution_model.dat was not updated on Dec 2, 2020 as indicated below; the file is now current. Correction courtesy of Debaditya Bandyopadhyay (Calcutta).

Dec 2, 2020: Opx(HGP), Cpx(HGP), Sp(HGP) model revision: Eleanor Green's 31/10/2020 revision of the Holland et al. (J Pet, 2018) pyroxene and spinel models has been implemented, courtesy of Debaditya Bandyopadhyay (Calcutta), in solution_model.dat and hp633ver.dat. The intent of the revision is, again (see 13/7/2020), to reduce the predicted stability of Ca-rich orthopyroxene at high pressure. The revision affects the make definitions for the odi, mcbuf, kjdh, and obuf endmembers, additionally the original make definition for the imt endmember, modified on 11/8/2020, has been restored. The revision also affects the excess functions for both pyroxenes.

Sep 29, 2020: keep_max option default value: the default value of keep_max was set too low and as a consequence the 6.9.0 version of Perple_X did not reproduce results obtained with earlier versions unless the value of keep_max was increased from its default (20000). The default value of keep_max has been increased to 25000.

Sep 15, 2020:

FRENDLY bug: in reaction calculations using thermodynamic data files that specify special components of a fluid phase, FRENDLY did not prompt for the corresponding EoS or fluid composition unless the fluid species was the last entry in the reaction equation. When this was not the case, FRENDLY assigned the pure fluid equation of state specified in perplex_option.dat to the fluid species. Correction courtesy of Michael Mitrone (ETH).

PSSECT interim result plotting bug: during the plotting of interim results PSSECT potentially miscalculated the location of phase field labels. When this error occurred the corresponding phase field was unlabeled in the Postscript output. 

Sep 8, 2020: melt(HGP) implementation error: A coding error ommitted the van Laar size terms from the calculation of the Melt(HGP) excess Gibbs energy (the Aug 20 correction added the terms for the calculation of the derivatives of the excess Gibbs energy, but not to the excess Gibbs energy itself).

Aug 20, 2020: melt(HGP) implementation errors and bugs: A coding error prevented the formation of the ctl ordered Melt(HGP) species in VERTEX/MEEMUM calculations. The van Laar size terms were omitted from the Perple_X implementation of melt(HGP). Corrections courtesy of Ben Klein (Boston College). 

Aug 17, 2020:

SEVERE VERTEX/MEEMUM/CONVEX bug: Numerical roundoff error sometimes caused Perple_X to falsely classify equimolar order-disorder models as non-equimolar. The consequence of this error was potentially catastrophic because the routines used to solve the non-equimolar order-disorer do not treat the full spectrum of available models. The error was found to occur with the Bio(TCC) model, as this model has the same stoichiometric ordering reaction as Bio(W), Bio(HP), and Bio(HGP) it is likely that the error occurs with these models as well. The error cannot have occurred in models with more than one ordered species. It is probable that the error was introduced into the code in June 2020. Correction courtesy of Stan Roozen (McGill) and, with any luck, Ben Klein (Boston College). 

SEVERE CONVEX bug: CONVEX did not record the stoichiometric coefficients of saturated components in solution phases used for tracing/locating low variance fields in Schreinemakers' and mixed-variable diagrams. This had the consequence that although CONVEX computed isopotential hulls (composition diagrams) correctly, it was unable to trace/locate low variance fields unless the stoichiometric coefficients of the saturated components in the associated reaction equations were all zero. Correction courtesy of Stan Roozen (McGill). 

Aug 15, 2020:

CONVEX bug: Although CONVEX allowed negative compositions, its strategy for the construction of convex hulls assumed only positive compositions and therefore required that the compositional coordinates of the hull were confined to the simplex spanning the compositions of a systems components. This inconsistency caused the program to terminate prematurely during calculations involving phases with negative compositions. This restriction has been eliminated. Modification courtesy of Stan Roozen (McGill). 

Sp(WPC): the composition space of the Sp(WPC) solution model (White et al., 2014) has been reformulated as a prismatic composition space. To avoid the usual problems associated with equipartition solution models, the new formulation requires a make definition for magnesio-uelvospinel 

musp = 1 usp + 2 sp - 2 herc
DQF = 0

in the thermodynamic data file to be used for calculations with Sp(WPC). Currently, this definition is present only in the hp02ver.dat and hp62ver.dat thermodynamic data files.

Aug 11, 2020: Sp(HGP) model imt endmember: The DQF correction in the make definition for the imt endmember of the Sp(HGP) model in hp633ver.dat was 300 J/mol rather than 30000 J/mol as specified by Holland et al. (2018). Correction courtesy of Ben Klein (Boston College).

Jul 31, 2020: Coding error: common block cxt47 was used inconsistently for two different character arrays. The error may have been responsible for OSX/LINUX segmentation faults.

Jul 13, 2020:

Opx(HGP) model revision: Eleanor Green has revised the parameters of the Opx(HGP) solution model so as to reduce the stability of Ca-rich orthopyroxene at high pressure. The Perple_X implementation of Eleanor's revision affects two files: solution_model.dat and hp633ver.dat.

Omph(GHP), incorrect error trap: the error trap:

**error ver072** solution Omph(GHP) : multiple order parameters only allowed in 688 format models

incorrectly prevented the use of the Omph(GHP) clinopyroxene model. The trap has been removed. Correction courtesy of Hans-Joachim Massonne (Stuttgart). 

Jul 9, 2020:

Uninitialized pointer in MEEMUM/VERTEX: an uninitialized pointer that caused segmentation faults in OSX/gfortran versions of MEEMUM and VERTEX has been corrected. The error may also have caused numerical instability in the WINDOWS and LINUX version of the programs. Correction courtesy of John C Schumacher (Portland State).

Numerical zero: the numerical zero used for testing whether a phase is pure has been increased from machine precision to sqrt(machine precision).

Jul 7, 2020: the number of entities permitted on the right-hand-side of a make definition has been increased from 6 to 7.

Jul 3, 2020: 

Change in 688 solution model format: Perple_X has been modified to read a name for every compositional variable in 688 format solution models with a prismatic composition space. Prior to this modification, compositional variable names were read only for models with a composite composition space. Because there was one prismatic 688 format non-composite model (TiCh(B)) in solution_model.dat, this modification has the consequence that the current version of Perple_X can not read TiCh(B) in versions of solution_model.dat generated between April 1, 2020 and July 2, 2020.

Corrections/modifications to NAl(H), CFer(H), and Gt(H) solution models for the HHPH mantle transition zone model: Site fraction expressions in the CFer(H) and Gt(H) models have been corrected. The errors had no consequence for calculations with previous versions of the data because, prior to 6.8.9, the affected site fractions were determined by difference. The NAl(H) model has been converted to 688 format. Corrections courtesy of Thomas Ruedas (MfN, Berlin).

Output errors: 

Shear wavespeeds were not calculated, i.e., reported as NaNs, for solution models with prismatic composition space and no order-disorder (i.e., solution model type 7, e.g., Crd(HP)).

PSSECT hard crash: a condition that caused PSSECT to crash without diagnostics has been eliminated.

Jun 26, 2020: 

Order-disorder solution model implementation errors continued from June 24: 

degenerated order-disorder models II: in models with a prismatic composition space involving two or more independent order-disorder schemes (e.g., in Augite(G) of Green et al., 2016, Mg-Fe order across M1 and M2, while Si-Al order independently across T1 and T2): if one scheme was stoichiometrically frustrated (e.g., if M2 in Augite(G) was filled entirely by Ca) then the contribution arising from the enthalpy of ordering for the ordered endmember of the frustrated scheme to the total Gibbs energy of the solution was neglected.

Jun 24, 2020: 

Order-disorder solution model implementation errors: a number of errors in the implementation of order-disorder solution models were discovered by implementing an alternative solver for the models. In most cases, the exception being the site-fraction limits mentioned below, the errors occurred at compositional extremes and would not affect results for typical compositions. The errors are listed below, the final error in the list will not be corrected until the alternative solver has been tested more thoroughly:

site-fraction limits are computed by comparing ratios of stoichiometric constants. Prior to forming these ratios the constants must be tested to avoid division by zero. This testing was done by comparing the constants to true, rather than numeric, zero with the consequence that the invalid limits were occasionally generated. When present, these limits precluded ordering.

disordered/ordered speciation output on error: in the event that an order-disorder calculation fails, Perple_X computes the Gibbs energies of the fully ordered, anti-ordered, and disordered states and outputs the properties of the state with the lowest Gibbs energy. Perple_X did not distinguish such failures from the case in which order/disorder is infeasible because of stoichiometric constraints. In this latter case the ordered, anti-ordered, and disordered states are equivalent and Perple_X did not compute the properties of this state consistently for solution models with a simplicial composition space.

degenerated order-disorder models: in models where a common set of species (e.g., Mg, Fe) order across three sites (i.e., oAmph(DP), cAmph(DP,G), Chl(W), and NAl(H)) order-disorder calculations in Perple_X fail if one of the three sites is fully occupied by a non-orderable species (e.g., Al on M2 or Ca on M4 in cAmph(DP,G)). The error occurs because the choice of ordered species for the aforementioned models is such that all the ordered species are necessary to describe the ordered site populations, but the species cannot be varied independently. Perple_X fails to recognize this condition and outputs the properties of the fully disordered solution (i.e., full disordering across the two sites on which ordering remains possible). This error has not been corrected

Jun 11, 2020: Lagged- and back-calculated speciation error: if a mobile component constraint was imposed indirectly through the activity or fugacity of a composant, then the chemical potential of the mobile component was incorrectly equated to the activity or fugacity. Correction courtesy of Benjamin Malvoisin (Grenoble).

May 27, 2020: Ilm(WPH) solution model error: the geikielite and most of the pyrophanite excess terms for this model were accidentally deleted (by me) from the solution model file solution_model.dat ca Feb 6, 2017; at the same time that the correct Ilm(W) and Ilm(WPH0) equivalents of Ilm(WPH) were also deleted. The error over-stabilized Ilm(WPH) in phase equilibrium calculations. Correction courtesy of the Perple_X discussion group (

May 17, 2020: Composite composition space solution models (again): the May 16 modifications necessary to account for absent subcompositions was incomplete and introduced an additional problem by causing VERTEX to update fractions of all subcompositions incorrectly. 

May 16, 2020:

Composite composition space solution models: in composite composition space solution models the fraction of a subcomposition may be zero. In such cases, VERTEX/MEEMUM nonetheless recorded the irrelevant values of the subcomposition. The use of these irrelevant values potentially caused excessive consumption of computational memory and time as well as the unnecessary triggering of error ver993/warning ver991. The error was introduced in the 6.8.8 version of Perple_X.

WINDOWS version programs: the programs compiled for WINDOWS for the May 15 update were not uploaded and the previous version of the programs is inconsistent with the updated solution_model.dat. The inconsistency caused Perple_X to terminate with error message ver003 that the version was out-of-date. Correction courtesy of Mauro Prencipe (Torino).

May 15, 2020:

Mica(CHA)/Mica(CHA1) solution model error: the z(K,A) site fraction expressions did not account for the Ti-bearing endmember tip. The error triggered warning ver059 for endmember ntip, followed by soft failure error ver078. The error had no consequences for calculations made without the tip endmember. Correction courtesy of Ben Klein (Boston College).

Relict Equipartion Models (again): Why bother with these models [Atg(PN), Chl(HP), Chl(LWV), Sapp(HP), Sapp(KWP), GlTrTsPg, Amph(DHP), Amph(DPW), o-Amph, Ca-Amph(D), Na-Amph(D), GlTrTsMr, and T]? Although most of the relict equipartition models are out-of-date with respect to more elaborate order-disorder solution models [specifically Chl(W), cAmph(DP/G), oAmph(DP), Sapp(TP)], for simple chemistry the relict models offer a plausible and computationally inexpensive representation of petrological phase relations. Unfortunately, relict equipartition models have no logically consistent implementation in Perple_X because they may generate invalid site populations. The logical inconsistency leads to two alternative courses of action for invalid compositions: I) reject the composition; or II) neglect the contribution to the configurational entropy from invalid site fractions. Both alternatives were allowed before the 6.8.7 revision  (Jun 18, 2019) and controlled by the now defunct reject_negative_sites option. From 6.8.7 until 6.8.9 (Feb 5, 2020), Perple_X only allowed alternative II, and from Feb 6, 2020 until this date Perple_X only allowed alternative I. During this time, it has emerged that alternative I yields petrologically plausible results for Chl(HP), but alternative II yields plausible results for amphibole models. To account for this dichotomy, 6.9.0 has been modified to read an optional solution model keyword:


If this keyword is added at the end of the solution model text, then alternative I is implemented, otherwise alternative II is implemented. Modification courtesy of Ekaterina Akimova (St Petersburg) and Elena Negulescu (Bucharest), who observed that alternative II yields preferable results for amphibole, and Lucie Tajcmanova (Heidelberg) who observed that alternative I yields preferable results for Chl(HP).

May 3, 2020; Perple_X 6.9.0: This revision effectively eliminates the error conditions related to finite memory (error_ver058) for dynamically generated compositions during adaptive optimization. The revision should be transparent, but, if desired, the manner in which MEEMUM/VERTEX deal with finite memory can be controlled by the keep_auto and keep_max options. Minor changes related to the revision are:

Perple_X 6.8.9, Modifications/Bugs

April 15, 2020:

PSSECT error: Unsurprisingly, the April 13 modification introduced a bug that eliminated text field-labeling. The error has been corrected courtesy of Pierre Bouilhol (CRPG, Nancy).

April 13, 2020:

PSSECT modification: PSSECT has been modified to read the option keyword numeric_field_label from perplex_plot_option.dat. If this option is T (true) then PSSECT uses numeric labels for phase fields and a key for the assemblage indices is written to a file named my_project_assemblages.txt. Modification courtesy of Dmitry Krylov (St Petersburg). 

April 12, 2020:

WERAMI mode 2/property choice 40: corrects an error introduced March 25 that caused ref_chg to be output in place of tot_solute_molality for tabulated lagged and back-calculated speciation output, both properties are now output. Correction courtesy of Andrea Maffeis (Torino).

April 5, 2020:

WERAMI mode 2/property choice 40: corrects an error that prevented WERAMI from recognizing the WADDAH solution model as a stable fluid phase. Correction courtesy of Andrea Maffeis (Torino).

March 26, 2020:

BUILD output error for saturated components: corrects an own-goal typo added yesterday (March 25) that caused BUILD to crash (gfortran OSX/LINUX) or generate unreadable output (INTEL/WINDOWS) if saturated components were specified.

March 25, 2020:

BUILD/FLUIDS/FRENDLY crash prior to reading fluid EoS choice: caused by a typographical error introduced on March 17. Correction courtesy of Pierre Bouilhol (CRPG, Nancy).

refine_endmember option bug: a coding error introduced on March 2 caused lagged aqueous speciation calculations to behave erratically if the refine_endmembers option was manually set to T. The refine_endmembers tag has been added to the COH-Fluid, COH-Fluid+, and WADDAH solution models so that these models can be used for aqueous speciation calculations without changing the refine_endmembers option in perplex_option.dat from its default value (as previously recommended). 

Mobile and saturated components implemented correctly in lagged and back-calculated aqueous speciation calculations: see March 17-21 updates.

Reference charge output added to lagged and back-calculated aqueous speciation: If the reference_oxidation_state tag is specified in header of the thermodynamic file (e.g., as in DEW19HP622ver_elements.dat), then lagged- and back-calculated speciation output now includes a quantity designated ref_chg which is the molar weighted sum of the reference oxidation states for the elements in a phase. For example, if the reference oxidation state of Fe is +2 and O2 is -4, the ref_chg for hematite would be -2, indicating that hematite is oxidized relative to the reference state. The interpretation of the ref_chg value is considerably more complicated in systems where more than one multivalent element (e.g., S, C, Cr, Fe) is present, but trends in the ref_chg value provide an extensive basis for assessing the importance of redox processes and contrast with variables such as oxygen fugacity and Eh which often have no meaning in unbuffered systems.

March 21, 2020:

WERAMI cumulative mode calculation bug: an uninitialized pointer array caused versions of WERAMI compiled with GFORTRAN, the compiler usually used for LINUX and OSX versions of Perple_X, to crash during cumulative mode calculations. Correction courtesy of Erwan Bras.

CANCEL: Mobile and saturated components in lagged and back-calculated aqueous speciation: the modifications posted on March 17, were incomplete and do not function as indicated.

March 17, 2020:

Mobile and saturated components in lagged and back-calculated aqueous speciation: prior to this update no provision had been made for mobile and saturated components in lagged and back-calculated aqueous speciation models, however there were no error traps to prevent the specification of such constraints in the input for speciation calculations. The code for these calculations has now been modified to implement mobile and saturated component constraints. Correction courtesy of Vincent van Hinsberg (McGill).

March 15, 2020:

Deep Earth Water (DEW) data update: The Huang et al. (2019, Geochem Persp Lett 12:1–6) data for aqueous Cr-bearing species has been added to DEW19HP622ver_elements.dat. Courtesy of Vincent van Hinsberg (McGill).

Minor error diagnostic modifications.

March 2, 2020:

Minor console output modifications.

February 21, 2020:

MEEMUM/WERAMI finite difference modification: the increment for the first order finite difference operators used by WERAMI/MEEMUM to compute physical properties is iteratively adjusted if non-physical values are obtained for the gradient and curvature of the Gibbs energy function. Once physical values are obtained the increment is "optimized" from the curvature; however no test was made to check that the optimized increment yielded physical values. Such a test has been added and, when non-physical values are obtained, the increment reverts to its last good value. This modification increases the numerical stability of the physical property calculation. Modification courtesy of Benat Oliveira (Macquarie).

February 18, 2020:

Bio(TCC) (6.8.9 version only): z(Al,T1) = 1 east + 1/2 phl + 1/2 ann + 1/2 tbit + 1/2 obi + 1/2 mnbi should read z(Al,T1) = 1 east + 1/2 phl + 1/2 ann + 1/2 tbit + 1/2 obi + 1/2 mnbi + 1 fbit and z(OH,OH) = 1 east + 1 phl + 1 ann + 1 obi + 1 mnbi should read z(OH,OH) = 1 east + 1 phl + 1 ann + 1 obi + 1 mnbi + 1 fbit in solution_model.dat. Correction courtesy of Lucie Tajcmanova (Heidelberg).

DEW_2_VER parsing error, aqueous Glutamine (C5H10N2O3) and Isobutane (C4H10): a parsing error caused the DEW_2_VER data conversion program to reject species that included a 2-digit stoichiometric factor with zero as the second digit. For the 20 elements specified in the DEW17 and DEW19 data files, this error caused the omission of aqueous Glutamine and Isobutane. These species have been added to DEW17HP622ver_elements.dat and DEW19HP622ver_elements.dat. Correction courtesy of Andrea Maffeis (Torino).

Feb 13 Incorrect error message saga cont'd: the February 9 patch continued to inadvertently trigger the ver072 error trap. Correction courtesy of JF Moyen (St-Etienne).

February 13, 2020:

Incorrect error message (**error ver072** site fractions ... do not sum to 1): the February 9 patch inadvertently triggered the ver072 error trap. Correction courtesy of Petr Jerabek (IPSG, Prague).

February 9, 2020: 

Relict equipartition solution model modification: relict equipartition solution models (Atg(PN), Chl(HP), Chl(LWV), Sapp(HP), Sapp(KWP), GlTrTsPg, Amph(DHP), Amph(DPW), o-Amph, Ca-Amph(D), Na-Amph(D), GlTrTsMr, and T) pose a dilemma in Perple_X because they have no logically consistent implementation. In the 6.8.7 revision (Jun 18, 2019) the reject_negative_sites option was eliminated with the result that Perple_X zeroed the contribution to the configurational entropy from negative site fractions for such models. An unfortunate consequence of this mode is that it causes a kink in the thermodynamic surfaces of the relevant solution models that may be manifest in phase diagrams as solvi. The alternative mode, formerly controlled by the reject_negative_sites option, in which any bulk composition of a solution that results in negative site fractions is rejected, has been restored as the sole means of treating relict equipartition models. The change may reduce the stability of relict equipartition models relative to other phases. Modification courtesy of Lucie Tajcmanova (Heidelberg). 

February 6, 2020: 

WERAMI/MEEMUM Structural Formula bug: site species names indicated in structural formulae were incorrect if a structural site changed from mixing to non-mixing as a consequence of solution model reformulation. Correction courtesy of John C Schumacher (Portland State).

February 5, 2020: 

The Torino tutorial on solving petrological problems with Perple_X has been updated. Courtesy of Chiara Groppo and Daniele Castelli.

February 3, 2020:

Electrolytic fluid (lagged) speciation bug: a coding error introduced in the 6.8.8 version caused VERTEX/MEEMUM to output the bulk composition of electrolytic fluids obtained from the preceding, rather than the current, iterative optimization, i.e., the reported fluid composition was truly lagged, and in an unfortunate manner. The pure solvent composition was output for the first optimization result. The error was apparent because the reported bulk composition of the system did not match the input composition. The error has been corrected in 6.8.9, but persists in 6.8.8. Correction courtesy of Jesse Walters (UMO).

January 31, 2020:

WERAMI/PSSECT bug: the January 29 modification caused WERAMI and PSSECT to output incorrect solution model names if the actual model name was used, solution models were correctly identified if the full name or abbreviation was requested via the solution_names option. Correction courtesy of Chiara Groppo (Turin) and Shauket Baltybaev (St-Petersburg).

January 30, 2020:

BUILD bug: the January 29 modification caused BUILD to crash while reading the solution model file. Correction courtesy of Evangelos Moulas (Mainz).

January 29, 2020:

CONVEX/VERTEX/MEEMUM: console output modified to distinguish solution models that were requested but rejected for technical reasons (e.g., missing endmembers) from those that were requested but not found in the solution model file. Modification suggested by Jeff Moyen (St-Etienne).

Bio(HGP) (6.8.9 version only): z(Al,T1) = 1/2 phl + 1/2 ann + 1/2 tbi + 1/2 obi + 1/2 mnbi + 1 east should read z(Al,T1) = 1/2 phl + 1/2 ann + 1/2 tbi + 1/2 obi + 1/2 mnbi + 1 east + 1 fbi in solution_model.dat. Correction courtesy of JF Moyen (St-Etienne).

Opx(HGP) (6.8.9 version only): z(Mg,M1) = 1/2 obuf + 1 odi + 1 en should read z(Mg,M1) = 1/2 obuf + 1 odi + 1 en + 1 fm and z(Si,T) = 1/2 mgts + 1/2 crenh + 1/2 obuf + 1/2 macm + 1 ojd + 1 odi + 1 en + 1 fs should read z(Si,T) = 1/2 mgts + 1/2 crenh + 1/2 obuf + 1/2 macm + 1 ojd + 1 odi + 1 en + 1 fs + 1 fm in solution_model.dat. Correction courtesy of JF Moyen (St-Etienne).

January 28, 2020:

SEVERE ERROR, VERTEX/MEEMUM: When an endmember composition of a non-688 format solution model was stable, the composition of the solution was likely to be computed incorrectly. The error potentially caused solution model compositions to evolve erratically and unnecessarily triggered the ver993 error trap. The error has been corrected in 6.8.9, but persists in 6.8.8.

CONVEX bug: An uninitialized flag may have prevented CONVEX from generating print and plot output files, the behavior was OS-dependent. Correction courtesy of Evangelos Moulas (Mainz).

January 26, 2020:

Yaggh! error: A snippet of 6.8.8 development code caused Perple_X programs to write the gnomic error message "Yaggh!" if a 688 format order-disorder solution model was reformulated so as to eliminate all ordered endmembers. The error has been corrected in the 6.8.9 sources, but persists in 6.8.8. Correction courtesy of John C Schumacher (Portland State).

January 17, 2020:

WERAMI/MEEMUM: the January 15 correction (below) was incomplete. Correction courtesy of John C Schumacher (Portland State).

January 16, 2020:

solution_model.dat typo (6.8.9 version only): a typographical error in the melt(HP) solution model caused any program reading the model to halt with an error message (**error ver209**). The file has been corrected. Correction courtesy of Chiara Groppo (Turin).

January 15, 2020:

WERAMI/MEEMUM: coding errors potentially caused WERAMI/MEEMUM to output incorrect site fractions and/or indicate the wrong solution model name when invalid site fractions were computed. The error had no other computational consequences. Correction courtesy of Andrea Maffeis (Torino).

January 14, 2020:

CONVEX/VERTEX/MEEMUM: the January 9 correction (below) potentially caused the site-fraction error trap to indicate the wrong solution model name. The error had no other computational consequences. Correction courtesy of John C Schumacher (Portland State).

oAmph(DP) (6.8.9 version only): z(Mg,M1) = 1 anth + 1 ged_dqf + 1 mpa + 1 omrb_dqf + 1 ogl_dqf + 1 ammo1 should read z(Mg,M1) = 1 anth + 1 ged_dqf + 1 mpa + 1 omrb_dqf + 1 ogl_dqf + 1 ammo1 + 1 tr and z(Vac,A) = 1 anth + 1 fanth_dq + 1 tr + 1 ged_dqf + 1 ogl_dqf + 1 ammo1 + 1 ammo2 + should read z(Vac,A) = 1 anth + 1 fanth_dq + 1 tr + 1 ged_dqf + 1 ogl_dqf + 1 ammo1 + 1 ammo2 + 1 omrb_dqf in solution_model.dat.

cAmph(DP) (6.8.9 version only): z(Mg,M1) = 1 cumm_dqf + 1 ts_dqf + 1 parg_dqf + 1 mrb + 1 gl_dqf + 1 cammo1 should read z(Mg,M1) = 1 cumm_dqf + 1 ts_dqf + 1 parg_dqf + 1 mrb + 1 gl_dqf + 1 cammo1 + 1 tr and z(Vac,A) = 1 cumm_dqf + 1 grun_dqf + 1 tr + 1 ts_dqf + 1 gl_dqf + 1 cammo1 + 1 cammo2 should read z(Vac,A) = 1 cumm_dqf + 1 grun_dqf + 1 tr + 1 ts_dqf + 1 gl_dqf + 1 cammo1 + 1 cammo2 + 1 mrb in solution_model.dat.

January 13, 2020:

Cpx(JH) (6.8.9 version only): z(Ca,M2) = 1 di + 1 crdi + 1 cess should read z(Ca,M2) = 1 di + 1 crdi + 1 cess + 1 cats in solution_model.dat.

pseudocompound list file: the pseudocompound list file generated optionally by CONVEX/MEEMUM/VERTEX did not list the correct pseudocompound compositions. The error had no other computational consequences and was introduced in the 6.8.8 version, it has not been corrected in that version. Correction courtesy of Chiara Groppo (Turin). 

January 9, 2020:  

Opx(W) (6.8.9 version only): the specification for the M1 site fraction of Mg, z(Mg,M1) in solution_model.dat was incorrect. Correction courtesy of John C Schumacher (Portland State). 

CONVEX/VERTEX/MEEMUM: A coding error caused CONVEX/VERTEX/MEEMUM to reject legitimate solution models specified in the problem definition file.

January 8, 2020; Perple_X 6.8.9: 6.8.9 is, at least in principle, a minor revision suggested by Felix Gervais (Polytechnique Montreal) that enables the output of structural formulae by WERAMI (mode 1) and MEEMUM. The structural formulae indicate mixing site multiplicities and the molar fractions of the site species, e.g.:

Phase   Site  Multiplicity  Molar Site Fractions

         A       1.00       Na(.523)K(.032)Vac(.445)
         M1      3.00       Fe(.456)Mg(.544)
         M2      2.00       Fe(.114)Fe3(.257)Al(.295)Ti(.092)Mg(.241)
         M4      2.00       Mg(.037)Na(.026)Fe(.176)Ca(.760)
         T1      4.00       Al(.402)Si(.598)
         OH      2.00       O(.092)OH(.908)
  Non-mixing stoichiometry: [Si4O22]

         OH      1.00       OH(.153)Vac(.847)
         Ol      0.54       Fe(.435)Mg(.565)
         M       1.00       q(.142)ksp(.009)ab(.227)sil(.037)an(.217)wo(.079)Ol(.135)OH(.153)

Structural formulae are only output for 688 format solution models; the output may be suppressed by setting the option structural_formulae to F (false). 

688 solution model format modification: in the original 688 solution model format the specification of the site fraction of the c'th species on non-Temkin sites on which c species mix was optional; this specification is mandatory in 6.8.9. Additionally, in the original format it was possible to specify non-mixing sites in the configurational entropy model. Non-mixing sites are no longer accepted and, instead, the configurational entropy model is followed by a text string that specifies the non-mixing site chemistry/stoichiometry (see cAmph(G) example above).

Affected solution model files: solution_model.dat and stx11_solution_model.dat.

Why is the version number changed? the modifications to Perple_X and the 688 solution model format necessary to generate structural formula were minor. Unfortunately, non-essential modifications were made to some text-parsing routines and it is difficult to test these routines thoroughly. The 6.8.8 version persists for the risk-averse, a (safe) patch has been added to 6.8.8 to allow it to read the 688 solution model format as implemented in 6.8.9.

Perple_X 6.8.8, Modifications/Bugs

January 8, 2020: Patch added (chksol/tlib.f, rmoden/rlib.f) to make 6.8.8 capable of reading the 6.8.9 variant of the 688 solution model format (see above).

December 17, 2019:

SEVERE ERROR, MEEMUM/VERTEX: an error trap intended to identify endmember compositions failed for 688 composite composition space solution models if the composition of one polytope was that of an endmember. The error caused the generation of a large number of redundant compositions and incorrectly limited the range of solution model compositions. The error was egregious for composite composition space models in which one polytope consisted of a single endmember (Chl(W), Opx(W), Bi(W), Bio(TCC), Gt(H), Gt_maj, CFer(H)). Correction courtesy of Dean Khan (ETH).

December 13, 2019:

SEVERE ERROR, WERAMI: the compositions of 688 composite composition space solution models were not properly initialized. This error had the consequence that the compositions of such solutions reported by WERAMI were generally incorrect and the error propagated into the back-calculated bulk composition of the system. Correction courtesy of Dean Khan (ETH).

December 11, 2019:

Deep Earth Water (DEW) data update; CaCl2(aq) stoichiometric error: The Huang & Sverjensky (2019, GCA 254:192-230) update to the DEW database has been formatted for Perple_X as DEW19HP622ver_elements.dat. The DEW_2_VER program, which converts the DEW spreadsheet format to Perple_X format, parses the "symbol" provided in the spreadsheet for stoichiometry. As of this date, the symbol provided for CaCl2,aq has been CaCl(0), with the consequence that the stoichiometry of this species was incorrect in all previous Perple_X versions of the data. Additionally, no symbol has been provided for Glycinate, with the consequence that this species was, and is, not included in previous versions of the data. Refer to Section 1e of  README_DEW_2_VER for additional information. Update courtesy of Andrea Maffeis (Torino/ETH).

VERTEX/MEEMUM: The composition names specified in 688 format solution models and used by VERTEX to write the summary of compositional data to the console, the *_auto_refine.txt file, and the ver993 error message were not reordered correctly if a model was reformulated because of missing endmembers.

December 3, 2019: Perple_X 6.8.8: An assumption in Perple_X has been that the composition space of any solution can be represented by a polytope formed by the orthogonal conjunction (i.e., Cartesian product) of simplices. This assumption is not unconditionally valid for solutions subject to charge balance constraints and has created problems accommodating recent chemically elaborate solution models (notably for amphibole and clinopyroxene). To eliminate these problems, this revision introduces a general geometric model, referred to as a composite composition space, in which the composition space of a solution is formed as a mixture of polytopes rather than a mixture of endmembers, where each polytope, or subcomposition, is defined by endmembers. Composite composition spaces are specified using a generic solution model format (solution model type 688) that can be used to specify all former solution model types. Increased model complexity demands more memory. This demand has been met by improving the strategy used to store compositional data. Aside from some backward-incompatibility issues, the 6.8.8 revision should be transparent.

Backward Incompatabilities:

The notion of a composite composition space is a generalization of the model introduced in the 6.8.2 revision in which arbitrary vertices could be added to a "regular" prism to form an "irregular" prism, solution model types 9 and 10. Because relatively few solution models exploited this geometry, the code to read solution model types 9 and 10 has been eliminated with the result that the 6.8.8 version cannot read the 6.8.2 through 6.8.7 versions of the solution model file. Solution model type 20 for brute-force forward calculation of electrolytic fluid speciation is currently disabled, the models can be used in 6.8.7 and will be restored in 6.8.8 in the near future.

New Options:

Modified Behavior:

Is 6.8.8 slower than 6.8.7?

The 6.8.8 modification to the storage of compositional data results in marginally slower code. However, because the composite composition space model eliminates the generation of redundant solution compositions, 6.8.8 is often faster for the same input. Unfortunately, that is not the end of the story. Prior to 6.8.8, several chemically elaborate solution models (specifically Cpx(JH), Cpx(HGP), Opx(HGP), and cAmph(G)) were simplified, in some cases unintentionally, by neglecting chemical exchanges that were deemed unimportant. Part of the motivation for the 6.8.8 revision was to develop a practical method for treating the complete composition space of chemically elaborate solution models. Including these exchanges negates the gains made by algorithmic improvements, with the result that 6.8.8 may be substantially slower than 6.8.7 with, at least nominally, the same models. It emerges that in all cases considered (w144_suprasolidus, stx16, klb-1_HHPH, klb-1_JH, klb-1_HGP, and bl478 benchmarks), the extension of the model composition spaces to include the entire possible composition space did not significantly effect computational results. Despite this observation, the models present in solution_model.dat are largely unsimplified. The principle guiding this decision was that the choice of whether and, if so, how models are to be simplified is best left to the individual.

Modified Solution Models:

In the list below complete indicates that as currently formatted in the solution model file, the model composition space represents the entire composition space of the model. No change indicates that 6.8.7 and 6.8.8 representations of the model composition space are technically equivalent. 

Augite(G) - complete.
Cpx(JH)   - complete.
Cpx(HGP)  - complete model provided but simplified by commenting from [M,T][A,C,M] by eliminating the [FeTi][A,C] endmembers, where: T = {Al,Fe3+,Cr,MTi} on M1; C = {Ca} on M2; M = {Mg,Fe}; A = {Na,K} on M2*; *A partially coupled to T by charge balance.
Opx(HGP)  - complete model provided but simplified by commenting from [M,T][A,C,M] by eliminating the [FeTi][A,C] endmembers, where: T = {Al,Fe3+,Cr,MTi} on M1; C = {Ca} on M2; M = {Mg,Fe}; A = {Na} on M2*; *A partially coupled to T by charge balance.
cAmph(G)  - complete model provided but simplified by commenting from [A][M][M,T,MT][M,C,N] to [A][M][M,T,MAl][M,C,N], where: A = {Na,K,Vacancy}; T = {Al,Fe3+,Ti*}; MT = {MAl,MFe3+,MTi}; C = {Ca}; M = {Mg,Fe}; N = {Na}; *Ti-glaucophane not permitted.
cAmph(DP) - simplified from [M][M,T,MT][M,C,N] to [M][M,T,MAl][M,C,N], where: T = {Al,Fe3+}; MT = {MAl,MFe3+}; C = {Ca}; M = {Mg,Fe}; N = {Na}.
oAmph(DP) - simplified from [M][M,T,MT][M,C,N] to [M][M,T,MAl][M,C,N], where: T = {Al,Fe3+}; MT = {MAl,MFe3+}; C = {Ca}; M = {Mg,Fe}; N = {Na}.
Chl(W)    - complete, no change.
Opx(W)    - complete, no change.
Ep(HP11)  - complete, no change.
Bi(W)     - complete, no change.
Bio(TCC)  - complete, no change.
Gt(H)     - complete, no change.
Gt_maj    - complete, no change.
CFer(H)   - complete, no change.
feldspar  - complete, no change.

688 Solution Model Format:

The 688 solution model format remains undocumented except by the commentary in the solution model file (solution_model.dat). The elements of the format are essentially unchanged from those used formerly in solution model types 2-10, with a few prominent exceptions listed below:

Details of the Composite Composition Space:

Here there be tygers.

For brevity, the term polytope is used here restrictively to refer to an n-dimensional polyhedron formed as the Cartesian product of simplices (in Perple_X such polyhedra were referred previously to as regular prisms). Zero- and 1-dimensional polytopes are, respectively, 0-simplices (points) and 1-simplices (line segments). There are 2 2-dimensional polytopes: a 2-simplex (a triangle, the product of a 0-simplex and a 2-simplex) and a quadrilateral (the product of 2 1-simplices); and there are 4 3-dimensional polytopes: a 3-simplex (a tetrahedron, the product of a 0-simplex and a 3-simplex), a triangular prism (the product of a 1-simplex and a 2-simplex), and a hexahedron (the product of 3 1-simplices). The dimension of a polytope is the sum of the dimensions of its simplicial factors, and the number of polytope vertices is the product of the number of vertices of its simplicial factors. The term polyhedron is used here restrictively to refer to an n-dimensional convex solid with flat faces.

In the case of crystalline solutions with more than one distinct crystallographic site on which atomic or ionic species mix independently, a speciation space defines the chemical composition of every distinct site of the solution (e.g., Myhill & Connolly, ms, 2019). The composition space of an individual site is always simplicial and the speciation space of the solution is the Cartesian product of the simplices corresponding to its independent sites, i.e., a polytope. The vertices of the polytope are the Cartesian product of the sets of vertices on each simplex and define the endmembers of the solution. For example, in the ionic solution C[Na,K]A[Cl,Br,F] where Na and K mix on a cation site C and Cl, Br, and F mix on an anion site A, the vertices/endmembers of the triangular prismatic composition space are C[Na,K] x A[Cl,Br,F] = P{NaCl,NaBr,NaF,KCl,KBr,KF}, where P{X,Y,...} denotes the space bounded by a polytope with vertices X, Y, ... . If no species mix on more than one site, e.g., in  salt where Na and K mix on a cation (C) site and Cl, Br, and F mix on an anion (A) site, every point in the speciation space defines a unique bulk composition of the solution and the composition space of the solution is identical to its speciation space. Such solutions are referred to as reciprocal solutions. The virtues of the polytope compositional model is that any composition is uniquely defined by the independent coordinates within each of its constituent simplices and that the proportion of a particular endmember is the product of the proportions of its constituents on each site, e.g., the proportion of NaCl in the previous example is y_NaCl = X(C,Na) * X(A,Cl), where X(S,Y) denotes the fraction of Y on simplex S, a recipe referred to here as the barycentric formula. These properties are useful in Perple_X because its strategy requires mapping the speciation/composition space of every solution with uniform, or at least controllable, resolution. The number of independent endmembers of a reciprocal solution is equal to the dimension of its composition space, thus in the previous salt model only three endmembers are independent. Since the barycentric formula gives a composition in terms of the fractions of all the vertices/endmembers of a polytope, it is necessary to establish a relation between the independent endmembers of a solution and any dependent endmembers represented by the vertices of the polytope. In rational solution models, this relation must define all properties, including site occupancies, of the dependent endmembers in terms of a linear combination of the independent endmembers. In solutions with charge balance constraints this may not be possible within the confines of a single polytope, this limitation motivated the 6.8.8 revision.

In ionic solution models, when ions with different charges may be present on one or more sites, the physical requirement for bulk electrical neutrality constrains site speciation. Charge balance constraints pose no difficulty when charge balance completely eliminates the compositional degrees of freedom on a site. For example, in the M1[Ca++,Na+]M2[Mg++,Al+++]T[Si]_2O[O]_6 omphacitic pyroxene model, charge balance requires that Na+ on M1 be compensated by Al+++ on M2, thus the independently variable speciation space is fully described by either the M1 or M2 composition space or, simply, the 1-d simplex S{CaMgSi2O6, NaAlSi2O6}. Complications arise when the mixing on distinct sites is constrained, but not fully determined, by charge balance, a circumstance referred to here as a partial charge balance constraint. To illustrate, in the hypothetical ionic solution C[Na+,K+,Ca++,Mg++]A[Cl-,Br-,O--,S--], the 6-dimensional speciation space is P{NaCl,NaBr,NaO-,NaS-,KCl,KBr,KO-,KS-,CaCl+,CaBr+,CaO,CaS,MgCl+,MgBr+,MgO,MgS}. In this space charge balance is satisfied only if X(C,Na+) + X(C,K+) = X(A,Cl-) + X(A,Br-), a condition which defines a three-dimensional hyperplane through the speciation space. In itself, this restriction is not fatal and is accommodated in Perple_X by solution model type 20, however in multisite models the irregular geometry of the hyperplane considerably complicates the mapping of the possible compositions of the solution. A solution to this problem is to split the speciation space into polytopes within which no charge balance constraints exist, and then to mix these polytopes to form all possible speciations of a solution. In the present example, this is achieved by generating two quadrilateral polytopes: P1 = C[Na+,K+] * A[Cl-,Br-] = P1{NaCl,NaBr,KCl,KBr} and P2 = C[Ca++,Mg++] * A[O--,S--] = P2{CaO,CaS,MgO,MgS}. The 3-d speciation space is then formed by mixing P1 and P2 on a 1-d simplex, i.e., S{P1,P2} which is the composite speciation space of the model, as before every point in the speciation space corresponds to a unique bulk composition, thus the composite speciation space is identical to the composite composition space and the solution model is classified as a reciprocal solution.

Among silicates reciprocal solutions are comparatively rare, it is more common that species mix across sites, e.g., M1[Mg,Fe]M2[Mg,Fe]T[Si]_2O[O]_6-pyroxene. Dropping the notation for sites on which no mixing takes place (0-dimensional simplices) the 2-d speciation space of this pyroxene model is M1[Mg,Fe] x M2[Mg,Fe] = P{M1[Mg]M2[Mg],M1[Fe]M2[Mg],M1[Mg]M2[Fe],M1[Fe]M2[Fe]}, whereas the composition space, S{Mg2SiO6,Fe2SiO6], is a 2-simplex decorated by the endmembers M1[Mg]M2[Mg] and M1[Fe]M2[Fe]. In such solutions, referred to as order-disorder solutions, the composition and speciation spaces are not equivalent. The classification of endmembers as ordered or disordered follows a peculiar but useful logic (e.g., Holland & Powell, 1996) in which an endmember is said to be ordered if it has more than one species that is capable of disordering on different sites in the context of the model. Thus, in the present example M1[Fe]M2[Mg] and M1[Mg]M2[Fe] are ordered species and M1[Mg]M2[Mg] and M1[Fe]M2[Fe] are disordered species, the peculiarity of this terminology is that there is no configurational disorder in the M1[Mg]M2[Mg] and M1[Fe]M2[Fe] endmembers, i.e., they are identified as disordered only because they are not ordered. In Perple_X order-disorder models may be treated by discretizing the speciation space and subsequently identifying the stable speciation by global Gibbs energy minimimization, or by discretizing the composition space, determining the stable speciation for each discrete composition by local Gibbs energy minimization, and determining the stable composition by global Gibbs energy minimization. Order-disorder models treated by the former technique are referred to as explicit order-disorder models (e.g., the COH-Fluid model) whereas models solved by the latter technique are referred to as implicit order-disorder models. The explicit, or brute-force, computational strategy is robust and easily implemented, but becomes computationally costly for chemically complex solutions. The formulation of the composite speciation space for explicit order-disorder models that are complicated by charge balance constraints is differs only from the reciprocal case discussed previously in that each point in the speciation space does not correspond to a unique bulk composition, i.e., in general a point in the composition space corresponds to a planar section through the speciation space.

To illustrate the formulation of the composition space for an implicit order-disorder model, consider first M1[Mg,Fe]M2[Fe,Mg,Al]T1[Al,Si]T2[Si]O[O]_6-pyroxene. In this model it is assumed all iron is ferrous and that charge balance requires that the Al-content of M2 and T1 are equal. Thus the T1 site composition is fully dependent on the M2 site composition and may be eliminated from the speciation space with the result that the independently variable speciation space, appropriate for the explicit order-disorder formulation, is the 3-dimensional polytope M1[Mg,Fe] x M2[Mg,Fe,Al] = P{M1[Mg]M2[Mg],M1[Fe]M2[Mg],M1[Mg]M2[Fe],M1[Fe]M2[Fe],M1[Mg]M2[Al],M1[Fe]M2[Al]}. In the implicit case, the composition space can be defined by a simplex S1[Mg,Fe] that defines the bulk Mg fraction (Mg/M where M = Mg + Fe) and a simplex S2[Al,M] that represents the fraction of Al on either M2 or T1. The vertices of the quadrilateral composition space are obtained as the Cartesian product of S1[Mg,Fe] x S2[Al,M] = P{S1[Mg]S2[M],S1[Fe]S2[M],S1[Mg]S2[Al],S1[Fe]S2[Al]} and, observing that the identity of the S1 vertex determines the identity of M on the S2 vertex, the composition space is P0{S1[Mg]S2[Mg],S1[Fe]S2[Fe],S1[Mg]S2[Al],S1[Fe]S2[Al]}, it is noteworthy that S1[Mg,Fe] defines only the bulk Mg-fraction and therefore cannot be equated to the Mg-fraction on either M1 or M2, but S2[Al,M] define the Al-fraction on M2 because it is assumed that Al is ordered. This has the consequence that although the simplices of the composition space do not necessarily represent a real crystallographic site, the vertices of the polytope correspond to the disordered endmembers of the solution. 

As in the case of the speciation space, partial charge balance constraints obviate description of the composition space by a single polytope. To illustrate, consider expanding the previous pyroxene model to include jadeite (jd, M1[Na]M2[Al]T1[Si]T2[Si]O[O]_6). The addition of jadeite allows the Al-content of the M2 site to vary independently of the Al-content on T1 such the pyroxene model is M1[Na,Mg,Fe]M2[Fe,Mg,Al]T1[Al,Si]T2[Si]O[O]_6 subject to the charge balance constraint Al[T1] + Na[M2] = Al[M2]. The composition space of this model is expressed by three simplices: the S1[Mg,Fe] simplex as in the Na-free case; the S2[Al,M] simplex, as previously, but here defines only the Al-fraction on T1; and an S3[Na,M] simplex which defines the site fraction of Na on M1. The hexahedral (3-dimensional) compositional polytope of the solution is then the Cartesian product S1[Mg,Fe] x S2[Al,M] x S3[Na,M] = P1{S1[Mg]S2[Al]S3[Na] (111), S1[Fe]S2[Al]S3[Na] (211), S1[Mg]S2[M]S3[Na] (121), S1[Fe]S2[M]S3[Na] (221), S1[Fe]S2[Al]S3[M] (112), S1[Fe]S2[Al]S3[M] (212), S1[Mg]S2[M]S3[M] (122), S1[Fe]S2[M]S3[M] (222)} where: the numbers in parentheses indicate the vertices of the simplices for each vertex of the polytope, e.g., 212 is the polytope vertex formed by taking the second vertex of S1 (Fe), the first vertex of S2 (Al), and the second vertex of S3 (M). As before, the identity of M on the S2 and S3 vertices is determined by the identity of the S1 vertex, however the S1 vertex is only relevant when M is on the S2 or S3 simplex, e.g., the composition, and speciation, of the S1[Fe]S2[Al]S3[Na] vertex is that of the jadeite endmember. Thus, using the S1 vertex to identify M on S2 and S3, and then dropping the S1 vertex, the polytope is P1{S2[Al]S3[Na] (111), S2[Al]S3[Na] (211), S2[Mg]S3[Na] (121), S2[Fe]S3[Na] (221), S2[Al]S3[Mg] (112), S2[Al]S3[Fe] (212), S2[Fe]S3[Fe] (222)}. The disordered endmembers corresponding vertices 121 and 221 are M1[Na]M2[Mg]T1[Si]T2[Si]O[O]_6 and M1[Na]M2[Fe]T1[Si]T2[Si]O[O]_6 are non-physical in that they violate the charge balance constraint of the model and thus the polytope is not viable. This problem is easily resolved by forming a composite composition space C{jd,P0}, where jd represents the 0-dimensional polytope corresponding to jadeite, and P0 is the 2-dimensional polytope of the Na-free pyroxene as obtained in the previous paragraph. The resulting space is a 3-dimensional square pyramid.

Even in the absence of charge balance constraints that create partial cross-simplex/site dependencies, the introduction of endmembers that include no disorderable cations can have undesirable consequences for the representation of the speciation and composition space of a solution. To illustrate the nature of these consequences consider the introduction of the Ca-Tschermaks (cats, M1[Ca]M2[Al]T1[Al]T2[Si]O[O]_6) endmember into the M1[Mg,Fe]M2[Fe,Mg,Al]T1[Al,Si]T2[Si]O[O]_6-pyroxene model to form M1[Ca,Mg,Fe]M2[Fe,Mg,Al]T1[Al,Si]T2[Si]O[O]_6-pyroxene. In contrast to the previous example with jadeite, the introduction of cats does not constrain mixing on M1 and M2, thus all endmembers of the solution are physically viable. The composition space of this model is defined by 3 simplices: the S1[Mg,Fe] and S2[Al,M] simplicies as in the Ca-Na-free case; and an S3[Ca,M] simplex which defines the site fraction of Ca on M1. The corresponding polytope S1[Mg,Fe] x S2[Al,M] x S3[Ca,M] = P2{S1[Mg]S2[Al]S3[Ca] (111), S1[Fe]S2[Al]S3[Ca] (211), S1[Mg]S2[M]S3[Ca] (121), S1[Fe]S2[M]S3[Ca] (221), S1[Fe]S2[Al]S3[M] (112), S1[Fe]S2[Al]S3[M] (212), S1[Mg]S2[M]S3[M] (122), S1[Fe]S2[M]S3[M] (222)}. Simplifying the vertices by dropping the redundant S1 designation the polytope is P2{S2[Al]S3[Ca] (111), S2[Al]S3[Ca] (211), S2[Mg]S3[Ca] (121), S2[Fe]S3[Ca] (221), S2[Al]S3[Fe] (112), S2[Al]S3[Fe] (212), S2[Mg]S3[Mg] (122), S2[Fe]S3[Fe] (222)}, from which it is evident that cats is repeated on the 111 and 211 vertices. This repetition is undesirable because if the polytope is mapped with uniform spatial resolution, the cats composition will be replicated along the 111-211 edge and, more generally, compositions near 111-211 edge will resolve the S2 composition with greater precision than will be the case for compositions far from the edge. Analogously to the previous example with jadeite, this problem is resolved by forming a composite composition space C{cats, P0}; or combining both examples in a M1[Na,Ca,Mg,Fe]M2[Fe,Mg,Al]T1[Al,Si]T2[Si]O[O]_6 pyroxene model, the composite composition space may be expressed as C0{S[jd,cats], P3} or C0{jd, cats, P3}, where S1[Mg,Fe] x S3[Ca,M] = P3{S1[Mg]S3[Ca] (11), S1[Fe]S3[Ca] (21), S1[Mg]S3[Mg] (12), S1[Fe]S3[Fe] (22)} in either case the resulting space is a 4-dimensional polyhedron with 6 vertices, as compared to the 5-dimensional speciation polytope with 12 vertices. 

Perple_X 6.8.7, Modifications/Bugs

November 18, 2019, ACETIC-ACID stoichiometry in DEW17HP622ver_elements.dat was not corrected as indicated in the Nov 6 update. Correction courtesy of Mohit Melwani Deswani (JPL, Cal Tech).

November 15, 2019, CONVEX pseudocompound name bug: pseudocompounds from solution models with prismatic composition spaces were not named correctly. Correction courtesy of John C Schumacher (Portland State).

November 15, 2019, WERAMI/MEEMUM shear modulus error trap bug: an error trap incorrectly identified results in which either the temperature or the pressure derivative of the shear modulus was, respectively, greater than and less than zero and, in such cases, used the poisson_ratio option to compute the shear modulus. mu_T > 0 or mu_P < 0 are anomalous, but possible. Correction courtesy of William Shinevar (MIT).

November 8, 2019, VERTEX/MEEMUM modification: VERTEX/MEEMUM have been modified to permit specification of poorer resolution during the auto-refine stage of a calculation than specified for the exploratory stage via the initial_resolution option keyword. Prior to this modification if the second value of the initial_resolution keyword was greater than the first value, the second value was automatically set to half the first value.

November 7, 2019, DEW/HKF electrolytic solute thermodynamic data bases: The DEW/HKF 11.0.2 version of the data for H-succinate (C4H5O4-) has been added to DEW17HP622ver_elements.dat, DEW17HP622ver_oxides.dat, DEW13HP622ver_elements.dat, DEW13HP622ver_oxides.dat, DEW13HP02ver_elements.dat, and DEW13HP02ver_oxides.dat; the data was previously omitted by the DEW_2_VER parsing program because of a typo (C4H504-) in the DEW spreadsheet formula. Correction courtesy of Mohit Melwani Deswani (JPL, Cal Tech).

November 6, 2019, DEW/HKF electrolytic solute thermodynamic data bases: the DEW_2_VER program, which converts the DEW ( spreadsheet format data to Perple_X thermodynamic data file format, incorrectly parsed species formulae if: 1) the formula was terminated by two successive elements without stoichiometric coefficients or a charge indicator (e.g., CH3COOH); 2) a stoichiometric coefficient was > 9 (e.g. C6H14); or 3) a final stoichiometric coefficient was followed by a + or - sign (e.g., C5H7O4-). The effected species in Perple_X versions of the data are:

Species:         incorrect         ->   correct 
ACETIC-ACID,AQ   C(2)H2(1.5)O2(1)  ->   C(2)H2(2)O2(1)     [H2O(2)CO2(2)O2(-2)]
ETHANOL,AQ       C(2)H2(2.5)O2(.5) ->   C(2)H2(3)O2(.5)    [H2O(3)CO2(2)O2(-3)]
FORMIC-ACID,AQ   C(1)H2(.5)O2(1)   ->   C(1)H2(1)O2(1)     [H2O(1)CO2(1)O2(-.5)]
GLUTARAT         C(5)H2(3.5)O2(.5) ->   C(5)H2(3.5)O2(2)   [H2O(3.5)CO2(5)O2(-4.75)]
GLYCOLAT         C(2)H2(1.5)O2(.5) ->   C(2)H2(1.5)O2(1.5) [H2O(1.5)CO2(2)O2(-1.25)]
HEXANE,AQ        C(6)H2(.5)        ->   C(6)H2(7)          [H2O(7)CO2(6)O2(-9.5)]
LACTATE,         C(3)H2(2.5)O2(.5) ->   C(3)H2(2.5)O2(1.5) [H2O(2.5)CO2(3)O2(-2.75)]
METHANOL,AQ      C(1)H2(1.5)O2(.5) ->   C(1)H2(2)O2(.5)    [H2O(2)CO2(1)O2(-1.5)]
PROPANOL,AQ      C(3)H2(3.5)O2(.5) ->   C(3)H2(4)O2(.5)    [H2O(4)CO2(3)O2(-4.5)]

These species have been corrected in DEW17HP622ver_elements.dat, DEW17HP622ver_oxides.dat, DEW13HP622ver_elements.dat, DEW13HP622ver_oxides.dat, DEW13HP02ver_elements.dat, and DEW13HP02ver_oxides.dat; the DEW_2_VER program has only been corrected in the 6.8.8 beta version of Perple_X. It is probable that this error was responsible for erratic behavior in calculations with organic carbon species. I apologize both for the error and for falsely attributing the error to the primary DEW data. Correction courtesy of Mohit Melwani Deswani (JPL, Cal Tech).

October 25, 2019, MEEMUM/VERTEX bug, lagged speciation error trap: 

**warning ver103** pure and impure solvent phases coexist. To output result set aq_bad_result.

was triggered incorrectly during calculations when only the pure solvent stable. Correction of this error extends the range of conditions at which the lagged speciation algorithm is feasible.

October 25, 2019, WERAMI bug, lagged speciation output: the units (mol or mass) for the bulk composition of the speciated fluid output by WERAMI for property choice #40 in computational modes 2-4 was controlled by composition_system option rather than the composition_phase option in perplex_option.dat. The error has been corrected. Correction courtesy of  Andrea Maffeis, Torino.

October 22, 2019, WERAMI bug, cumulative modes: under certain circumstances during the computation of cumulative modes WERAMI did not include the mode of one or more phases with the result that the cumulative modes did not sum to 100%, the error has been corrected. Correction courtesy of Praveen Singh (IIT, Mumbai).

October 22, 2019, mcbuf, Cpx(HGP): the make definition for the mcbuf (Mg_[0.5]Ti_[0.5]CaAlSiO6) endmember of the Cpx(HGP) clinopyroxene model from Holland et al. (J Pet, 2018) was specified incorrectly in various Perple_X thermodynamic data files (i.e., hp633ver.dat, hp622ver.dat, and hp62ver.dat) as: 

    mcbuf = 1 cats + 1/2 per + 1/2 ru -1/2 cor
    DQF = -1750 - 1.2 * T - 0.005 * P

the correct definition is:

    mcbuf = 1 cats + 1/2 per + 1/2 ru -1/2 cor
    DQF = 1750 - 1.2 * T - 0.005 * P

Correction courtesy of Lisa Rummel, Mainz.

October 1, 2019, SEVERE ERROR! Seismic wavespeed calculations using explicit elastic moduli functions with order-disorder solution models: the speciation used to evaluate elastic moduli for order-disorder solution models from explicit expressions in WERAMI/MEEMUM was not initialized and thus determined by the last thermodynamic calculation prior to the evaluation. In calculations with multiple, stable, order-disorder models this error was likely to have the consequence that the speciation for a different solution was used for the evaluation. This error was relevant for all shear wavespeed calculations made with versions of the Holland & Powell data base augmented with shear and/or bulk modulus data, it was only relevant for sound and compressional wave speed calculation made with the Holland & Powell data base if the data file had been augmented with explicit expressions for the bulk modulus (e.g., hpha02ver.dat). The error is not relevant to wavespeed calculations made with the various Stixrude et al. thermodynamic data bases. Correction courtesy of William Shinevar (MIT). 

September 30, 2019, cAmph(G): the T1 site occupancy of the Ti-tschermaks endmember in the Green et al. (2016) clino-amphibole model was given incorrectly as (SiAl) rather than (SiSi), the error has been corrected (only) in the current version of solution_model.dat. The correction reduces the solubility of Ti predicted by the model.

September 13, 2019, minor modifications: 

Inconsistent common blocks cxt12 and cxt10 corrected.

solvus_tolerance_II option had accidentally been deactivated, corrected.

MEEMUM auto-refine data use prompt corrected (?).

replicate time-stamp output corrected.

July  4, 2019:

koma06ver.dat thermodynamic data file: various typos and/or reduced precision specifications in the Komabayashi and Omori (PEPI 2006) data base for dense hydrous Mg silicates have been corrected. The data was benchmarked successfully against the anhydrous phase equilibria depicted in Fig 5 of Komabayashi & Omori (2006).

gfortran optimization and floating point issues: various minor changes (courtesy of Jonas Haldemann, UNIBE) have been made to Perple_X's code to reduce the likelihood of optimization errors and/or floating point over/under-flow conditions.

June 28, 2019:

WERAMI bug: For the case x < 0, an error trap for [0,1] bounded compositional variables incorrectly set x = 1 with the result that the composition of the relevant phase and the aggregate properties of the corresponding phase assemblage were incorrect. The error was introduced on July 6, 2018 (version 6.8.3) and has been corrected (correction courtesy of Attilio Rivoldini, Brussels).

June 19, 2019:

BUILD bug: If the "Constrained minimization on a 1d grid" computational mode was selected in combination with the option to "Enter path coordinates from a file", BUILD did not prompt for the compositional information required by VERTEX for the subsequent calculation (correction courtesy of Eric Brown, Aarhus). The error was introduced in 6.8.4 and has been corrected. A workaround solution for the 6.8.4-6 versions is to select the "1-d Phase fractionation" computational model and not fractionate a phase.

Jun 18, 2019: Perple_X 6.8.7: This revision eliminates the requirement that order-disorder solution models include species limit expressions. The revision should be transparent to users, but the version number has been incremented because the 6.8.7 version of solution_model.dat does not include the species limit expressions required by earlier versions. The 6.8.7 version is backward compatible with one exception*, i.e., it reads, but ignores, species limit expressions in earlier versions of the solution model file.

Details: this revision was inspired by Bob Myhill's (Bristol) Python script ( that converts THERMOCALC site fraction expressions to Perple_X species_limit_expressions. In contrast to Bob Myhill's script, Perple_X does not have a complete description of the site fractions in a solution model because it relies on closure to determine one site fraction. To avoid modifying the solution model format by requiring a complete description of site fractions Perple_X relies instead on the stoichiometry of the ordering reactions specified in the solution model to close the algebraic equations. In this regard, Bob Myhill's script/algorithm is superior because it provides an additional test for consistency in that an error in a site fraction expression will lead to an obviously incorrect stoichiometry for at least one ordering reaction; additionally Bob Myhill's script is capable of identifying linearly dependent limit expressions, whereas, in 6.8.7, dependent limit expressions are only eliminated for binary sites (this may actually be the only case in which linearly dependent expressions arise). 

*Backward compatability exception: 6.8.7 will not allow site fraction expressions with a constant in order-disorder solution models. For example, in the Bio(TCC) biotite solution model the site fraction of Al on T1 was formerly expressed as:

z(T1,Al) = 1/2 + 1/2 east + 1/2 fbit

where the constant 1/2 is z(T1,Al) in all independent endmembers other than east and fbit; in 6.8.7 this site fraction must be expressed explicitly in terms of all Al-bearing endmembers:

Z(T1,Al) = 1/2 phl + 1/2 ann + 1/2 tbit + 1/2 obi + 1/2 mnbi + 1 east + 1 fbit.

If an order-disorder solution model with a constant in a site fraction expression is used, then Perple_X will terminate with an error message (**error ver077** solution XXXX: constants not allowed ...) and the site fraction must be corrected or the solution model file updated.

Perple_X 6.8.6, Modifications/Bugs

June 15, 2019:

Osm(HP)/Osm(HP11) osumulite solution models: the names of the osumulite endmembers are different in the ds5 and ds6 versions of the THERMOCALC data base. The Osm(HP) and, newly added, Osm(HP11) solution models use, respectively, the ds5 and ds6 endmember names.

VERTEX/MEEMUM Bug #1: a coding error introduced on May 14 caused VERTEX/MEEMUM to use the increments (XNC) specified in the solution model file for linear subdivision schemes, i.e., VERTEX/MEEMUM ignored the value of the initial_resolution option.

VERTEX/MEEMUM Bug #2: the May 24 correction of a mass balance error trap was incomplete and the error trap continued to trigger a segmentation fault in gfortran versions of VERTEX/MEEMUM.

May 27, 2019:

Adhoc Zn-bearing endmembers [gah, gahnite; zngt, garnet; wiL, liquid] and excess terms for garnet [ZrGt(HP)], spinel [GaHcSp], and silicate melt [melt(HP)] have been added to the solution_model.dat solution model file and the hp62ver.dat thermodynamic file; the revised melt(HP) model requires a make definition for wi8L, which has also been added to hp62ver.dat.

May 24, 2019:

VERTEX/MEEMUM coding error: a coding error introduced in the May 14 revision caused a segmentation fault in versions of Perple_X compiled with gfortran when mass balance errors occurred during optimization. Correction courtesy of Jonas Haldemann (UNIBE).

May 19, 2019:

hp633ver.dat (THERMOCALC ds6.33 data base) spinel (sp), picrite (picr), and hercynite (herc) spinel endmembers: the implementation of a correction factor (THERMOCALC variable fac = Perple_X variable t6) for the configurational entropy of disordered endmembers was made dependent on the sign of fac in ds6.33, such that the original implementation was used if fac > 0. fac < 0 is specified for only sp and herc in ds6.33. Because this change was previously undocumented, Perple_X used the original formulation for fac < 0 with the consequence that sp and herc were fully ordered at all temperatures (see April 23, 2019 update). The fac < 0 implementation in THERMOCALC, courtesy of Eleanor Green (Melbourne), requires no change to the coding of Perple_X if the thermodynamic data base variable t6 is equated to (-fac * n + 1)/(n + 1), which evaluates to 2/3 for both sp and herc as in the current version of hp633ver.dat. The hp2010tover data reformatting program has been modified to compute t6 appropriately for fac < 0.

This change has no consequence for the Holland et al. (2018) benchmark (May 14) calculations because the Sp(HGP) solution model is formulated in terms of the ordered endmembers nsp and nherc, but it obviates the April 23 warning about using older spinel models with hp633ver.dat, i.e., older models such as Sp(HP) and Sp(JH) can be used with the updated version of hp633ver.dat.  A minor inconsistency remains fir picrite in Sp(JH), because in ds6.33 the picr endmember is completely ordered, whereas in previous versions of ds6 picr had temperature-dependent ordering.

May 15, 2019:

Stixrude & Lithgow-Bertelloni (GJI, 2011) whole mantle mineralogical model - stx11ver.dat: the spin configurational entropy for iron specified in the Perple_X version of this data was incorrect by -9.22 J/mol/K. For pyrolitic bulk composition the error affected predicted compositions at the 100 ppm level and reduces the bulk entropy by ~25 J/kg/K. Correction courtesy of Dean Khan (ETH).

May 14, 2019:

Holland et al. (2018) implementation issues and benchmarking:

h2oL: the ds633 (hp633ver.dat) h2oL endmember may be more stable than pure water. Observation courtesy of Andrea Galli (ETH). See: hp633_water_versus_h2oL.

W144, hydrous felsic melting, benchmark calculation, melt(HGP) and Aqfl(HGP): this benchmark confirms the implementation of the hydrous melt (see also KLB-1 benchmark) and siliceous aqueous fluid (Aqfl(HGP)) models. See W144 HGP benchmark. Benchmark configuration courtesy of Debaditya Bandyopadhyay (Calcutta).

KLB-1, anhydrous peridotite melting, benchmark calculation, Opx(HGP) and Cpx(HGP): this benchmark reproduces the solidus and liquidus conditions for KLB-1 as depicted in Fig 3 of Holland et al. (2018), but the pyroxene models overestimate the stability of Ca-rich orthopyroxene and, probably, Ca-poor clinopyroxene and the phase relations depicted in Holland et al. (2018) are partially metastable with respect to these phases, which, in Perple_X calculations, appear as minor phases coexisting with Ca-rich clinopyroxene and/or Ca-poor orthopyroxene. Over-stabilization of these phases does not occur when K, Ti, Cr, and Fe3+ are eliminated from the pyroxene models. Over-stabilization also does not occur with the Jennings & Holland (2015) pyroxene models (Opx(JH) and Cpx(JH)), which include Cr and Fe3+, and may offer a pragmatic alternative for hydrous (K-, Ti-free) systems when combined with the melt(HGP) model. It is possible to force Perple_X to compute the metastable Opx(HGP) phase relations depicted in Holland et al. (2018) by restricting the model composition space and employing the hard_limits option. This strategy is not successful with Cpx(HGP) because the ranges of stable and metastable clinopyroxene compositions overlap with changing pressure and temperature. See: KLB-1_HGP_benchmark. Benchmark configuration courtesy of Debaditya Bandyopadhyay (Calcutta).

Modifications to CONVEX/MEEMUM/VERTEX:

Non-Linear Subdivision: In 6.8.6 non-linear subdivision was made consistent with adaptive optimization; however, because the implementation used the initial_resolution option value to specify the conformal discretization interval (XINC), non-linear subdivision was computationally costly. To reduce this cost, the default behavior of MEEMUM and VERTEX has been modified so that these programs use the value of XINC specified in individual solution models for non-linear subdivision. The discussion in the header section of the solution_model.dat file has been updated to explain the current implementation of linear and non-linear subdivision schemes. The W144 HGP benchmark illustrates the dramatic benefits of this modification. The default behavior of CONVEX has not been modified. The default behavior of all three programs can be toggled by adding and setting the non_linear_switch option to true (T) in perplex_option.dat.

MEEMUM now uses the exploratory stage option values specified in perplex_option.dat unless auto-refine data from VERTEX is being used. Previously MEEMUM used the auto-refine stage values.

VERTEX now warns in the auto-refine data summary if solution model subdivision limits are encountered when the hard_limits option in perplex_option.dat is on. Additionally, the hard_limits option, if set to on, is strictly enforced during the auto-refine stage of a calculation. Formerly, solution model limits could be relaxed by auto_refine_slop during the auto-refine stage. 

VERTEX/MEEMUM: The conditions that trigger the gnomic ver333 warning have been modified so that the warning is only issued if mass balance constraints have been violated by an absolute amount exceeding 100 times numerical zero. In such cases the optimization result rejected.

May 1, 2019:

Holland et al. (2018) Solution Model Changes: melt(HGP) the interaction terms for the h2oL endmember have been updated from the published values to those indicated in the THERMOCALC data files. Bi(HGP), and Crd(HGP), and Mica(HGP): Holland et al. (2018) modified parameters of the White et al. (2014) models for biotite (Bi(W)) and cordierite (Crd(W)), and white mica (Mica(W)), the modified versions are indicated by HGP in the model name. Changes courtesy of Debaditya Bandyopadhyay (Calcutta).

PSSECT phase field fill modification: PSSECT has been modified so that gray-scale fills vary continuously between the minimum and maximum variance in phase diagram sections with phase fields with variance > 7. As was previously the case, for phase diagram sections in which the maximum variance is < 8, gray-scale saturation varies by 20% per unit change in variance regardless of the range in phase field variance. The continuous scaling is controlled by two options field_fill_scale and field_fill_zero read from the perplex_plot_option.dat file:

field_fill_scale - this option defaults to true (T). Set this option to false to restore the former behavior of PSSECT.

field_fill_zero - this option defaults to true (T). When true, gray-scale increments are proportional to the range of phase field variance. If false, gray-scale increments are proportional to the maximum phase field variance.

April 30, 2019:

melt(HGP) error: the F-site configurational entropy term in the melt(HGP) model did not include Ti. The error made Ti insoluble in the melt(HGP) model (correction courtesy of Debaditya Bandyopadhyay, Calcutta).

Perple_X Modifications: 

1) m11 parameter increased to 11 to accommodate the addition of Ti to the F-site of the melt(HGP) model. Previous versions of Perple_X cannot be used with the melt(HGP) model. Adds error trap for m11 parameter.

2) Reduces excessive destabilization for Tait and Mie-Gruneisen EoS on out-of-range conditions.

3) Allows continued execution of Tait EoS if v2 base < 0 by setting v2 = 0 (warning ver060 replaces ver046).

April 29, 2019:

Cpx(HGP) error: this model used the actual K-jadeite data base endmember (kjd) rather than the made equivalent (kjdh). The error caused the model to underpredict K-solubility in clinopyroxene by at least an order of magnitude and stabilized extraneous K-bearing phases (e.g., nepheline). 

April 28, 2019: 

Holland, Green, & Powell (J Pet, 59:881–900, 2018) Solution Models and Data: both changes listed below appear to have no significant consequences.

melt(HGP) DQF corrections in hp622ver.dat updated to account for the difference between the published values and those used in the THERMOCALC data files.

Enthalpy of ordering for the CtL melt(HGP) endmember in solution_model.dat updated to account for the changes in DQF corrections between the published and THERMOCALC data files. 

April 23, 2019:

Holland, Green, & Powell (J Pet, 59:881–900, 2018) Solution Models and Data: 

melt(H) and Cpx(H) solution models in solution_model.dat have been renamed melt(HGP) and Cpx(HGP), to avoid confusion with mantle transition zone solution models from Holland et al. 2013. The dqf corrections for melt(HGP) have been changed from the published values to the values specified in the THERMOCALC files.

Opx(HGP) [orthopyroxene], Sp(HGP) [spinel], O(HGP) [olivine], Gt(HGP) [garnet], Aqfl(HGP) [low-density aqueous silicate fluid] solution models have been added to solution_model.dat thanks to the efforts of Julien Cornet, Eleanor Green, and Bob Myhill. 

picrite (picr), spinel (sp), and hercynite (herc) spinel endmembers in the hp633ver.dat thermodynamic data file, the Perple_X version of the THERMOCALC ds6.33 data base: in contrast to earlier versions of the THERMOCALC data base, in ds6.33 order-disorder models have been eliminated for (picr) or effectively eliminated (sp and herc) so that the endmember properties correspond to the ordered structure. This change has the consequence that earlier spinel solution models (e.g., Sp(JH)) cannot be used with hp633ver.dat and, likewise, that the Holland et al. (2018) spinel model (Sp(HGP)) cannot be used with earlier versions of the THERMOCALC data base unless order-disorder effects are stripped from the endmember data for picr, sp, and herc. (see May 19 update).

Perple_X Modifications: 

1) An error trap (ver054) that incorrectly prevented the reformulation of the Holland et al. (2018) orthopyroxene model (Opx(HGP)) if the Ti-endmember was missing, has been eliminated.

2) To accommodate the new models, the maximum number of make definitions has been increased from 100 to 120 (parameter k16 in perplex_parameters.h).

April 3, 2019:

CONVEX error: a long-standing coding error prevented the calculation of composition diagrams as a function of the chemical potentials of mobile components. Correction courtesy of Ekatarina Akimova (St. Petersburg State).

March 28, 2019:

hp633ver.dat thermodynamic data file errors: a coding error caused the program hptover_2010, which converts DS6 THERMOCALC thermodynamic data files to Perple_X format, to misinterpret the Bragg-type o/d transitions in spinel (sp) and hercynite (herc) as Landau transitions. The error destabilized both endmembers and may also have caused numerical instability in Perple_X.

Millerite: millerite (NiS) has been removed from the pyrrhotite solution model (Po(HP)).

March 26, 2019:

Severe VERTEX/MEEMUM error #1: a coding error introduced Feb 27, 2019 (6.8.6) caused VERTEX/MEEMUM to overwrite memory reserved for static compositional data with dynamic compositional data during adaptive optimization. The error had potentially catastrophic consequences. Versions of Perple_X generated between Feb 26 and Mar 6 should not be used. Correction courtesy of Vinod Samuel (Yonsei University). 

Severe VERTEX/MEEMUM error #2: a coding error introduced Oct 10, 2018 (6.8.5) had the consequence that the internal hybrid fluid equations of state: 8, 10, 12, 13, 14, 15, 17, 19, 20, 24, and 27 generated incorrect fugacities. The error had catastrophic consequences for calculations that made use of these equations of state. Versions of Perple_X generated between Oct 10, 2018 and Mar 6, 2019 should not be used with the indicated internal EoS. Correction courtesy of Yoshihiro Nakamura (Geol. Surv. of Japan).

WERAMI error: A coding error introduced Jan 30, 2019 (6.8.6) caused WERAMI to output incorrect speciation for order-disorder solution models.

FRENDLY error: A coding error introduced circa Dec 7, 2016 (6.7.5) caused FRENDLY to compute incorrect equilibrium coordinates for reactions involving internal fluid equations of state.

Ni-olivine and Ni-pyrrhotite: Ni-endmembers for olivine (O(HP), francescaite, fran) and pyrrhotite (Po(HP), millerite, mil) from the HSC data base have been added to the thermodynamic data files hp11ver.dat, hp62ver.dat, and hp622ver.dat; and the O(HP) and Po(HP) solution models in solution_model.dat have been modified accordingly.

Mar 6, 2019:

UNSPLT/WERAMI bug: the default lowest-level grid-spacing assumed in WERAMI for output files generated by UNSPLT was 1 instead of 2^(grid_levels - 1). This had the consequence that if the value of the interpolation option was "default", then in mode 2 calculations WERAMI could cease its search for nodes populated by real data and report missing data before exhausting the theoretically possible range of nodal coordinates (correction courtesy of Guillaume Bonnet).

Feb 27, 2019:

gfortran optimization issues: versions of Perple_X compiled with the GNU gfortran compiler (typically used for OSX and LINUX) are subject to numerical instability that may lead to substantially more failed optimizations than occur in versions compiled with the Intel Visual Compiler. The instability is aggravated by optimization but is also dependent on operating system. Some/much(?) of the instability is caused by round-off error on numbers close to zero or one. The code in nlib.f, resub.f, and rlib.f has been modified to mitigate this problem. The changes should have little or no effect on the WINDOWS/Intel versions of the programs available here, however caution remains advisable for OSX (and possibly LINUX) versions of Perple_X compiled with gfortran using aggressive optimization.

If you are concerned that the LINUX/OSX version you are using may be unstable, then run the test problem (courtesy of John Schumacher, Portland State) in VERTEX. If your plotted results do not reproduce, then a less aggressively optimized version is recommended (O3 corresponds to the most aggressive level of optimization).

Feb 25, 2019:

VERTEX/CONVEX/MEEMUM bug: the use of non-elemental components can create situations in which Perple_X is unable determine if a phase lies within the thermodynamic composition space. For example, if O2 is a thermodynamic component and H2O is a mobile component, then the chemical composition of H2 is {nH2O = 1, nO2 = -1/2} and its thermodynamic composition {nO2 = -1/2} is nonsensical. To avoid errors resulting from such behavior, Perple_X has been modified to eliminate a phase from the thermodynamic composition space if the total amount of the thermodynamic components in the phase is negative. Should this criterion eliminate a legitimate phase, the remedy is to transform one or more non-elemental components to an elemental component. Correction courtesy of John Schumacher (Portland State).

Feb 16, 2019:

WERAMI bug, properties along a 1d path: for calculations made by 1-d gridded minimization in VERTEX, WERAMI did not calculate the number of grid points correctly. The error potentially caused WERAMI to generate files with a large number of points outside the computational coordinate-frame.

Feb 14, 2019:

WERAMI bug, properties along a 1d path: if the initial path coordinate specified by a polynomial was outside the computational coordinate-frame, an incorrect diagnostic indicating that the entire path was outside the coordinate frame was written to user console and no data was generated.

WERAMI bug, cumulative modes along a 1d path: if the assemblage stable at the initial coordinate of the path was not identical to the initial assemblage computed by VERTEX, then the modes at the first point on the path were calculated incorrectly; additionally, the modes not necessarily ordered according to phase abundance. 

Feb 7, 2019:

UNSPLT/WERAMI bug: if the sample_on_grid option was enabled (default), then WERAMI was unable to determine the appropriate grid parameters and terminated with **error ver999**. The error has been corrected (courtesy of Ioannis Baziotis, Athens). 

warning_ver637 option added: if immiscible compositions of a solution are stable, then WERAMI automatically disables interpolation because of the possibility of interpolating between the wrong compositions. Setting the warning_ver637 option to T (true) overrides this behavior. For example: if a feldspar solution model is in use, then three feldspars may coexist. WERAMI distinguishes phase assemblages by the number of compositions of a solution, but not the compositions; thus, if the order in which the immiscible phases are identified is different at two nodes of the computational grid, e.g., feldspar (plagioclase composition) + feldspar (sandine composition) at one node and feldspar (sanidine composition) + feldspar (plagioclase composition) at the other, then WERAMI would interpolate incorrectly between the plagioclase and sandine compositions at the two nodes, resulting in inconsistent compositions and properties for the feldspar phases. Disabling interpolation eliminates the possibility of this error, but often results in blocky data patterns. In general, the ordering of immiscible compositions is consistent between adjacent nodes and therefore the error is unlikely. 

Feb 5, 2019:

A tutorial on how to use Perple_X for a variety of petrological problems is available courtesy of Daniele Castelli and Chiara Groppo. The tutorial consists of 13 exercises and has been updated for the 6.8.6 version of Perple_X. The tutorial comprises the practical part of a 30-hour advanced course on “Petrologic phase diagrams: principles and computations” periodically offered to PhD students at the University of Torino.

Generic hybrid fluid EoS solution model webpage documentation added.

hp622ver.dat: the entry for NH3 added Jan 30 was formatted for elemental rather than oxide components. The sulfide data in hp622ver has been augmented by data for Cu-Fe-sulfides and silicates from the sup92ver data base. Because the sup92ver does not include expansivities and compressibilities, at high pressure this data will tend to underestimate the stabilities of the Cu-Fe-sulfides relative to phases described by the Holland and Powell (JMG, 2011) EoS. 

Jan  30, 2019:

Adds an error trap (ver888) to prevent the use of special component endmembers in generic hybrid fluid EoS solution models. Previously, this condition provoked a warning, but execution continued.

Adds N2 and NH3 fluid species to the generic hybrid fluid EoS solution model COH-Fluid in the solution_model.dat solution model file and to thermodynamic data files hp622ver.dat and dew17hp622ver.dat.

Jan 24, 2019: Perple_X 6.8.6: This revision includes five major changes:

2-d Phase Fractionation (equilibrium reactive transport models): the structure of the auxiliary file required for 2-dimensional phase fractionation problems has been revised and documented. The original 2-D phase fractionation model geometry (FRAC2D, Connolly 2005) intended to simulate within-slab metasomatism and devolatilization during subduction has been augmented by a second model configuration (TITRATE) intended to simulate subduction-induced mantle metasomatism.

BUILD prompt order: BUILD now prompts for the type of calculation before prompting for component specifications. 2-d phase fractionation calculations are now included in the list of calculation types.

initial_resolution option modification: the initial_resolution option in combination with the auto_refine_factor_X (X = I..III) options specified the compositional resolution for statically-generated phase compositions. Specifically, during the exploratory stage the resolution was initial_resolution and during the auto-refine stage the resolution was initial_resolution/auto_refine_factor_X. To make controlling the resolution during the auto-refine stage less confusing, the initial_resolution keyword now takes two values that dictate the resolution of statically-generated compositions in the exploratory and auto-refine stages directly. This change obviates the auto_refine_factor_X keywords.

auto_refine_file option modification: the compositional ranges for many solution models are restricted to reduce the time and memory required for calculations. If such a restriction is encountered (**warning ver993**) during the exploratory stage of a calculation with VERTEX or CONVEX the restriction may have consequences for the final auto-refine stage result. For this reason it is important for users to correct the relevant subdivision scheme (unless the restriction is intentional). Because users frequently do not see the warning message written to the console, the auto_refine_file option has been modified so that it defaults to T (true) and the resulting file (e.g., my_project_auto_refine.txt) summarizes the exploratory stage auto-refine data (formerly the file summarized only the latest stage, i.e., usually the auto-refine stage result). This file should be examined, and the **warning ver993** condition eliminated, before any results are accepted as final.

Non-linear subdivision schemes: non-linear subdivision schemes (Fig 4.1 of the very out-of-date tutorial) are useful for representing the composition of an endmember that is consistently lower than the initial_resolution value. The schemes were largely eliminated from Perple_X in the 6.8.1 (Feb 3, 2018) revision because the implmentation of the schemes was inconsistent with the way compositions are changed dynamically during adaptive optimization. Since that revision various incarnations of the assymetric non-linear transformation have been re-introduced. In 6.8.6 the transformation has been made fully consistent with the adaptive optimization strategy. Subdivision schemes are specified by four parameters: XMIN, XMAX, XINC, and IMOD. The scheme is linear if IMOD = 0 and the assymetric non-linear transformation if IMOD = 1. For the non-linear transformation: XMAX is the maximum value of the composition (XMAX may be adjusted automatically if the hard_limits option is set to default); if XMIN > 0 it is the nominal resolution of the transformation, otherwise the resolution is taken to be value of the stretch_factor option. In previous versions, the nominal resolution was dependent both on the initial_resolution and stretch_factor. For computations based solely on statically-generated compositions (CONVEX), the nominal resolution is the minimum possible non-zero concentration of an endmember. For computations based on both statically- and dynamically-generated compositions (VERTEX and MEEMUM), the actual resolution is dictated by final_resolution, but only phase relations at the nominal resolution are algorithmically certain.

Obsolete Options:

Modified Options:

Perple_X 6.8.5, Modifications/Bugs

Jan  9, 2019: 

UNSPLT/PARALYZER ERRORS: several coding errors in UNSPLT have been corrected (courtesy of Bertram Uunk, VU, and Debaditya Bandyopadhyay, Univ. Calcutta), most of the errors were introduced in the 6.8.5 version of UNSPLT. In all cases the errors prevented UNSPLT from generating final results. In the course of debugging it was discovered that PARALYZER may increment physical conditions incorrectly resulting in replicate segments. See for the corrections necessary for PARALYZER.

Dec 22, 2018: 

melt(H) and melt(G) solution models: in the Dec 20 revision, these models invoked the wrong speciation routine. The error has been corrected.

Dec 20, 2018: 

melt(H) (Holland et al., JPet, 2018) solution model added: The melt(H) model is intended for ultramafic to pelitic bulk compositions. The requisite make definitions for the melt(H) model have been added to hp62ver.dat, hp622ver.dat, and hp633ver.dat; the model was calibrated with the hp633ver.dat version of the Holland & Powell (JMG, 2011) data base. 

melt(W), melt(G), melt(HP), pMELTS(G), mMELTS(G), MELTS(GS) model reformulation: these models have been reformulated to include an explicit expression of the configurational entropy of mixing, formerly these models were treated as special cases and relied on internal routines to compute configurational entropy. The code that read these models as special cases has been eliminated with the consequence that the current revision of Perple_X cannot use the previous versions of these models (peculiarly, old versions of Perple_X can read the reformulated models, but may require compile-time parameter changes). 

melt(W), melt(G), melt(HP) model correction: the previous versions of these models did not fully account for the configurational entropy associated with the "olivine" species. The correction increases the solubility of Fe and Mg. The correction of the melt(G) model improves the agreement with the bl478 benchmark calculation, but the problems identified in the Nov 16 update remain and preclude exact reproduction of the benchmark.

oAmph(DP) orthoamphibole model: the definitions of the cfged and cfpa dependent endmembers added to oAmph(DP) on Nov 14 were incorrect and caused Perple_X to terminate (warning 059, error 078) if the oAmph(DP) model was used (correction courtesy of William Shinevar, MIT). 

kjd, make definition, hp622ver.dat: the kjdh make definition for the Cpx(H) solution model, added on Dec 13, was incorrectly named "kjd" and replicated the names of an endmember already present in the hp622ver.dat data file. The replication caused Perple_X to terminate (error 073, correction courtesy of William Shinevar, MIT).

Dec 17, 2018: 

reject_negative_sites option restored (this time really): the reject_negative_sites option was eliminated Dec 7 and, after a brief hiatus, supposedly restored Dec 10. The present revision completes that restoration (correction courtesy of Debaditya Bandyopadhyay, Univ. Calcutta). 

Dec 13, 2018: 

Bug "**warning ver055** possible compositions of Melt(W) lie entirely within the saturated component composition-space. The compositions will not be considered.": upon this warning, the compositions of the phase were rejected, but a counter was not reset with the result that VERTEX/MEEMUM produced erratic results. The bug occurred in calculations with multiple component saturation constraints (e.g., H2O and SiO2) and a solution model (e.g., Melt(W)) capable of generating compositions consisting entirely of the saturated components (e.g., in the H2O-SiO2 subsystem), as in the white_et_al_2014a_fig_4a benchmark calculation. The bug became apparent after the 2/2/2018 revision in which non-linear subdivision schemes were replaced with linear subdivision schemes in all non-electrolytic solution models in solution_model.dat.

Subdivision scheme modification: subdivision schemes are specified by four parameters: XMIN, XMAX, XINC, and IMOD. The scheme is linear if IMOD = 0 and non-linear (a conformal stretching transformation) if IMOD = 1. Previously XINC was the resolution of the subdivision over the compositional range XMIN to XMAX. In the current version of Perple_X, if XINC < 1, then it is interpreted, as before, as the subdivision resolution, but if XINC > 1, then XINC is now interpreted as the number of subdivision intervals (1/resolution). This change has no practical consequences for linear subdivision because the value of XINC specified in solution models with linear subdivision is normally overridden by the initial_resolution option. However, since Nov 9, 2018, XINC has been read directly from the solution model file for non-linear subdivision schemes. This change has been made to emphasize the distinction between linear and non-linear schemes within the text of a solution model (e.g., Melt(W) in solution_model.dat).  

Melt(W), White et al. (2014a) granitic melt solution model: melt(W) was formerly treated as a special case, it has been reformulated as a standard Temkin solution model. Additionally, the non-linear subdivision schemes specified for minor species (foL, faL, SilL, AnL) have been reinstated to assure that the model reproduces the white_et_al_2014a_fig_4a benchmark calculation with adequate resolution.

Cpx(H), Holland et al. (2018, JPet) clinopyroxene: The Cpx(H) solution model has been added to solution_model.dat (courtesy of Julien Cornet, ETH), the requisite make definitions have only been added to the hp622ver.dat thermodynamic data file.

Dec 10, 2018: 

reject_negative_sites option restored: because the reject_negative_sites option in combination with the site_check_override solution model keyword may cause slight differences in the implementation of relict equipartition models (Mar 2 update below) the option has been restored (after being deleted Dec 7). The maximum stability of relict equipartition models is obtained if reject_negative_sites is set to F (false), the option defaults to T (true).

Dec 7, 2018: 

**warning ver093** PSEoS did not converge ...: the Pitzer and Sterner (1994) EoS for H2O and CO2 converged poorly at low-temperature high-pressure conditions because it was supplied a bad initial guess for volume. The error was introduced Oct 24, 2018. When the PSEoS fails to converge, properties are computed with the CORK EoS. 

file I/O errors (ver072, ver012, and system error messages), WINDOWS version: these errors were caused by a bug in the Intel 2016 Fortran Composer compiler, changing to the Intel Parallel XE2018 compiler appears to have corrected the problem.

Windows 32-bit version: in addition to the above compiler issue, the 32-bit version was compiled with parameters that were inadequate to read the current version of solution_model.dat.

reject_negative_sites option eliminated: relict equipartition solution models generate compositions that imply negative site fractions, the reject_negative_sites option caused such compositions to be rejected. The option has been eliminated because relict equipartition models can only be used if the site_check_override keyword is specified in the text of the solution model. In effect, the use of a model with site_check_override acknowledges the possibility of negative site fractions and therefore makes the reject_negative_sites option redundant. 

Chl(HP), Chl(LWV), Sapp(HP), Sapp(KWP), GlTrTsPg, Amph(DHP), Amph(DPW), o-Amph, Ca-Amph(D), Na-Amph(D), and GlTrTsMr restored as relict equipartition models: in the context of Perple_X a relict equipartition solution model is a solution model with a prismatic composition space over which the implied site fractions become negative. In the 6.8.2 version of Perple_X (May 2018) the aforementioned models and T (talc) and Atg(PN) were converted to models with a simplicial composition space that eliminated compositions with negative site fractions. With the exception of T and Atg(PN), the models have been restored as prismatic models to facilitate comparison of calculations made prior to 6.8.1 and the current version of Perple_X. The entire collection of recent relict equipartition (prismatic) models is at equipartition_solution_models.dat and the non-equipartition (simplicial) equivalents are in equipartition_solution_models_reformulated.dat, models from either source can be interchanged with the models in the default version of solution_model.dat.

Dec 4, 2018:

**error ver072** missing/corrupt plt/blk files, VERTEX may still be running or the files are locked by another program: this error trap was issued because a coding error in the 6.8.5 version prevented VERTEX (and CONVEX) from writing data to the plot output file for 1-dimensional gridded minimization/phase fractionation calculations (correction courtesy of Pierre Bouilhol, CRPG, Lorraine). 

Nov 27, 2018:

(Third correction) Shear moduli of impure phases: the first attempt (Nov 21) to correct this error introduced a typographical error with numerical consequences. The code has now been modified to use the volume-weighted Reuss average (correction courtesy of Federico Munch, ETH).

Nov 26, 2018: 

(Fifth correction) interim_results: under certain circumstances the interim results file (*.irf) could not be opened by VERTEX with the result that the program terminated with a system fileio error. The cause of the error is unclear, but a test has been added to the code which allows VERTEX to continue without generating interim results when the error occurs.

(Second correction) Shear moduli of impure phases: the previous attempt (Nov 21) to correct this error was incomplete, with the result that MEEMUM/WERAMI used the Voigt average weighted by endmember volume fractions. The code has now been modified to use the volume-weighted Reuss average.

Nov 21, 2018: 

Shear moduli of impure phases: formerly the shear modulus of an impure phase was computed as the molar-weighted Voigt average of the moduli of its constituent endmembers. The shear modulus is now computed as the volume-weighted Reuss average of the endmembers. For purposes of the calculating the required volume-fractions, the endmember partial molar volume is approximated by the endmember molar volume. The bulk modulus of an impure phase is computed by numeric differentiation of the isostatic EoS for the phase and therefore does not require specification of an averaging scheme unless the explicit_bulk_modulus option is used, in which case, the bulk modulus is also computed as the volumetrically-weighted Reuss average.

Error in DEW17HP622ver_elements.dat and DEW17HP622ver_oxides.dat: the DEW_2_ver data conversion program dropped the c2 heat capacity coefficient for DEW aqueous species data (correction courtesy of Manuel Menzel, CSIC). The data files and the DEW_2_ver program have been corrected. The DEW species names Fe(CH3COO)(+) and Fe(CH3COO)2(0) have been changed to Fe(Ac)+ and Fe(Ac)2 to eliminate the ambiguity that would arise by truncating the DEW names to 8 characters.

Nov 19, 2018: 

DEW solute species database updated: The May 19, 2017 revision of the DEW data ( is implemented in Perple_X in the DEW17HP622ver_elements.dat and DEW17HP622ver_oxides.dat thermodynamic data files. The program for converting the DEW spreadsheet data format to Perple_X format, DEW_2_ver, is included with the Perple_X programs and documented at:

Nov 16, 2018:

Green et al. (2016) metabasalt phase equilibrium model, forensic analysis: by running Gibbs energy minimization calculations in Perple_X on bulk compositions corresponding to those of the phases predicted by THERMOCALC it was possible to verify that the Green et al. (2016) solution models are implemented correctly. The reason for the discrepancies in the bl478_benchmark.pdf benchmark calculation is that, under certain conditions, the augite composition predicted by THERMOCALC is metastable with respect to the acmite endmember of the augite solution model. Consequently, these compositions are forbidden to Perple_X. The differences in bulk Gibbs energies obtained between the two programs are insignificant in light of the round-off error associated with the evaluation of endmember equations-of-state, thus it is not possible to identify the “correct” result on the basis of thermodynamic criteria. It seems likely that similar problems are responsible for the discrepancies Holland et al. (2013) benchmark calculations referred to below in the Nov 14 update.

Nov 14, 2018:

LINUX/OSX (gfortran) bug: a coding error caused VERTEX to crash after the exploratory stage of calculations if interim_results was set to default, auto, or manual. The error had no effect on the WINDOWS version of Perple_X.

Green et al. (2016) metabasalt, Holland et al. (2013) upper mantle, Jennings & Holland (2015) upper mantle melting, and Diener & Powell (2007) amphibole models: the composition spaces for Cpx(JH), Gt(H), Augite(G), cAmph(DP), oAmph(DP), and cAmph(G) have been reformulated in solution_model.dat to cover the entire range of possible compositions. Reformulation of the pyroxene models reduced the computational cost of the models. Reformulation of the garnet and amphibole models increased their computational cost. The reformulated models were tested against the klb-1_hhph_benchmark.pdf (Cpx(JH), Gt(H), Holland et al., 2013), morb_hhph_benchmark.pdf (Cpx(JH), Gt(H), Holland et al., 2013),  JH_KLB-1_benchmark.pdf, (Cpx(JH), Gt(H), Jennings & Holland, 2015),  and bl478_benchmark.pdf (cAmph(G), Augite(G), Green et al., 2016) benchmarks. In the first three cases, the reformulated models improve computational performance and stability but have no significant effect on the predicted phase equilibria. In the bl478 case,  reformulation of the cAmph(G) model improves computational stability, and marginally improves the agreement with the benchmark problem, but does so at increased computational cost. The cAmph(DP) and oAmph(DP) model have not been tested. NOTE: due to compile-time parameter changes, the reformulated solution models can only be run with versions of Perple_X 6.8.5 compiled after Nov 1.

Nov 9, 2018: 

Non-linear subdivision: non-linear subdivision schemes are specified by three parameters, XMIN, XMAX, and XINC, that in the linear case correspond to the minimum, maximum, and incremental spacing of the subdivision. In the linear case, if, as is normal, intial_resolution is specified, then XINC is automatically equated to the value of initial_resolution (overriding the value specified in the solution model). In non-linear subdivision XINC is the inverse of the number of points generated between XMIN and XMAX. Formerly, in the non-linear case, XINC was also equated to the value of initial_resolution. This behavior has been changed, so that the value of XINC is read directly from the solution model regardless of initial_resolution.

Corrupted version of hp02ver.dat: the version of the hp02ver.dat put on-line Oct 21 was corrupted and could not be read by Perple_X programs. The error has been corrected.

Green et al. (2016) metabasalt phase equilibrium model: the reason for the failed benchmarking of this model in Perple_X is that the Perple_X versions of the clinoamphibole (cAmph(G)) and augite (Augite(G)) do not span the entire composition space of the solution models. The problem has not yet been corrected.

Corrupted version of gloss1d1.dat: the gloss1d1.dat problem definition file in the archive, did not correspond to its description at perplex_electrolyte.html, the file has been corrected (courtesy of Jesse Walters, UMO).

Nov 1, 2018:

(Fourth correction)interim_results: if final results from a previous VERTEX calculation were available during a VERTEX calculation and the interim_results option was set to auto, PSSECT/WERAMI analyzed the final results from the previous calculation rather than the interim_results from the current calculation. The error has been corrected by making VERTEX delete previous final results at the outset of a calculation.

Oct 31, 2018:

Corrects a currently unused portion of code required for subdivision of a prismatic composition space composed of three simplices.

Oct 28, 2018:

ZrGt(KP), ZrRu, and Melt(HP) solution models, Zircon solubility model, Kelsey & Powell (JMG, 2010): These models did not predict zircon solubility with the default version of perplex_option.dat (correction courtesy of Michael Mitrone, ETH). The subdivision scheme for the zirconium endmembers in these solution models in solution_model.dat has been changed from linear to non-linear to eliminate the problem. The predicted Zr melt solubility benchmarks well against the original paper.

Hpx(H), NAl(H), and CFer(H) solution models, Holland et al. (J Pet, 2013) mantle transition zone mineralogical models have been reformulated in solution_model.dat to eliminate degenerate, ordered, dependent endmembers. The elimination of these endmembers decreases the memory (and time) required by the models. 

Oct 26, 2018:

(Second Third correction attempt) The interim_results option was corrupted by an out-of-date source (correction courtesy of Debaditya Bandyopadhyay, Univ. Calcutta). The error caused WERAMI and PSSECT to terminate with an error message.

dependent endmember exclusion: dependent solution model endmembers can be excluded by entering the name of the endmember in the excluded phase list of a problem definition file. 

Oct 21, 2018: Perple_X 6.8.5: This revision includes two major changes controlled by the newly introduced interim_results and sample_on_grid options. The new option keywords have not been added to the on-line version of perplex_option.dat; therefore, to turn the options off, the text "interim_results off" and "sample_on_grid F" must be added to the relevant option file. 

The interim_results option causes VERTEX to output data during gridded minimization calculations that can be plotted or analyzed with PSSECT and WERAMI before VERTEX has completed a calculation. This option allows the user to identify computational problems before the final result has been generated.

The sample_on_grid option forces WERAMI (in computational mode 2) to sample results on the nodes of the multilevel computational grid used by VERTEX. The advantage of using this option is that it minimizes interpolation error. Sampling on the computational grid is now automatic in WERAMI for calculations on a 1-d path (computational mode 3).

Additionally, the following minor changes and corrections have been implemented in 6.8.5:

The default hybrid fluid EoS for CH4 has been changed from the HSRMK to the MRK (see hybrid_EoS_###).

The Zhang & Duan (2005) high-pressure H2O EoS can now be specified as the EoS for water in generic hybrid fluid solution models by setting the option hybrid_EoS_H2O to 6. This EoS diverges strongly from experimentally determined properties at low temperature (T < ~700 K) and should be used with caution at such conditions. 

The Zhang & Duan (2009) high-pressure EoS for H2O, H2, O2, CO, CH4, and C2H6 can now be specified as the EoS for water, CO2, and CH4 in generic hybrid fluid solution models by setting the option hybrid_EoS_### to 7. For water, this EoS diverges strongly from experimentally determined properties at low temperature (T < ~700 K) and should be used with caution at such conditions. The low temperature behavior for CO2 and CH4 has not been tested, but it is probable that the Zhang & Duan (2009) EoS is preferable to the MRK or HSMRK for CH4.

Dieletric constant calculation corrected for CORK: the molar volumes from the CORK EoS (Holland & Powell 1998 revision) were computed in the wrong units causing an order of magnitude error in the dielectric constant (correction courtesy of Manuel Menzel, CSIC).

HKF g-function limits: the limits on the physical conditions at which the HKF g-function (Shock et al., 1988) were implemented incorrectly allowing calculations for solvent densities < 350 kg/m3 at T < 623 K. The limits have been corrected to reject all conditions at which the solvent density is < 350 kg/m3 (correction courtesy of Craig Manning, UCLA). 

WERAMI mode 3 calculation corrected: changes introduced in version 6.8.4 caused WERAMI to fail for analysis of calculations made along a 1-dimensional path unless the path coordinates were specified in a file. The algorithm used to interpolate data onto unpopulated grid nodes has also been improved. In particular, for mode 2 calculations, nodes along grid edges are now interpolated.

Green et al. (JMG, 2016) metabasic solution models: The bl478_benchmark for these models has been updated with a full calculation of the phase diagram section shown in Fig 4a of Green et al. (2016). The results suggest discrepancies remain in the implementation of the cAmph(G) and Sp(WPC) models; in particular, the Perple_X implementation underestimates cAmph(G) stability. 

Perple_X 6.8.4, Modifications/Bugs

Sep 22, 2018

Jennings & Holland (J Pet, 2015), mantle melt model: benchmark calculations with Perple_X 6.8.4.

An R Script for plotting Energy vs P/T diagrams, courtesy of JF Moyen (St-Etienne), is available at scripts. See for discussion.

Sep 21, 2018

A Python cmake project to automatically update and compile Lars Kaislaniemi's PerpleXWrap C++/R/Matlab/Python wrapper for MEEMUM is available at, courtesy of Bob Myhill (Bristol).

Species site limit expressions: a Python script to convert THERMOCALC site fraction expressions to Perple_X species_limit_expressions is available at, courtesy of Bob Myhill (Bristol).

Incorrect g-formula mass for S2 in THERMOCALC DS6 and DEW13 datafiles: the g-formula mass indicated for S2 in all THERMOCALC DS6 and hybrid DEW13-THERMOCALC data files was for monatomic sulfur. Component formula masses are used only for input/output purposes, so in most cases consequences of the error are likely to be minor. Correction courtesy of Jilei Li (Beijing). 

Sep 20, 2018: Perple_X 6.8.4: This revision includes a number of changes to increase the speed and reduce memory consumption during adaptive optimization. The function and/or names of several options have been modified, but 6.8.4 remains compatible with 6.8.1+ option files. The major changes are:

A test has been added to eliminate compositionally degenerate metastable refinement points.

The number of compositions generated for each dimension of a solution during adaptive optimization has been changed from [1 + resolution_factor * (1 + reach_increment)] to [1 + resolution_factor + 2 * reach_increment]. For calculations with resolution_factor = 2 the two equations yield the same result; however, until Sep 6 2018, the default value of resolution_factor was 3; for resolution_factor > 2 the new formula results in a lower quality result for a given value of the reach_increment. If resolution_factor is an even number, then the new formula permits subdivision to reproduce the refinement point composition exactly, whereas odd values cause new compositions to be displaced from the refinement point composition (formerly this effect was dependent on reach_increment). I have not tested for the consequences of this difference, my intuition is that even values should give better results.

Obsolete Options:

New Options:

Modified Options:

Data Additions/Corrections/Modifications:

Connolly & Galvez (EPSL, 2018) lagged electrolytic fluid speciation: The Perple_X_Electrolyte page has been updated to provide input files and examples of computational results.

Jennings & Holland (J Pet, 2015) mantle melt model, Opx(JH): the temperature dependence of the make definition for the odi endmember of Opx(JH) in the Perple_X versions of the THERMOCALC Ds6 data base has been corrected (courtesy of ECRG) from 2.11 J/mol-K to 0.211 J/mol-K. Curiously, the most prominent effect of this change for the KLB-1 lherzolite (Fig 1 of Jennings & Holland 2015) is to stabilize a second (unrealistically calcic) Opx phase at P < 5 kb and T < 1400 K. Most probably the omission of this field in the published figure was an oversight.

COH-Fluid and COH-Fluid+ Solution Models: the generic hybrid fluid solution model COH-Fluid in solution_model.dat is essentially replicated as COH-Fluid+. The distinction between these models is that COH-Fluid+ specifies non-linear subdivision that provides higher resolution at low (insignificant) concentrations. COH-Fluid specifies linear (uniform) resolution and may be preferable for situations in which the concentrations of molecular C- and/or S-species become comparable to that of H2O. COH-Fluid is recommended for reconnaissance calculations, subsequently COH-Fluid+ may be useful if high-resolution results are desired.

Perple_X 6.8.3, Modifications/Bugs

Sep 6, 2018:

iteration keyword default value changed: the first value of the iteration keyword (perplex_option.dat) now defaults to 2 rather than 3. This change may result in a slight reduction in quality, but drastically reduces the computational resources required for calculations in complex systems.

hpha622ver.dat thermodynamic data file: this file is the Holland & Powell (2011, DS6.22 revision) data base augmented by elastic moduli from Abers and Hacker (2016 as entered by William Shinevar in hpha02ver.dat), courtesy of Fanny Goussin. Note that this file does not contain explicit moduli for all phases (see comments in header).

Dielectric constant expressions for SO2 and H2S have been after Harvey & Mountain (2017).

Non-linear subdivision error: a coding error introduced in the Feb 8, 2018 6.8.1 revision caused the resolution on solution models with non-linear subdivision schemes to decrease rather than increase during adaptive optimization. Currently the only solution model that specifies non-linear subdivision is COH-Fluid, the error had no consequences for other models. 

NaN check added to PSVDRAW: a test for NaN (bad_number option) has been added to PSVDRAW, to allow the plotting of modal data with NaNs.

Aug 25, 2018:

BUILD error [LINUX/OSX only]: corrects a bug caused by the gfortran compiler that corrupted the variable used to specify the solution model file name written by BUILD to the problem definition file if NO solution model file was specified by the user. The WINDOWS versions of Perple_X are compiled with a different compiler and are not effected and have not been updated. The error was obvious because the problem definition file could not be read by other Perple_X programs.

Aug 18, 2018:

BUILD error: corrects a bug introduced in the 6.8.1 revision of BUILD. The error caused BUILD to generate incorrect problem definition files if saturated phase components were specified. The error was obvious because the problem definition file could not be read by other Perple_X programs.

Jul 30, 2018:

FeS_liq (Saxena & Eriksson 2015) output error corrected (WERAMI/MEEMUM).

Jul 11, 2018:

project names with path information: project names that included path information (e.g., ../my_directory/my_project) were corrupted in some circumstances and the consequent error message misdirected the user as to the origin of the problem.

Jul  7, 2018:

"wonaa wonka" WERAMI message: a debugging message "wonaa wonka" was written by WERAMI in some circumstances, the message had no signficance and has been suppressed. 

Jul  4, 2018:

Irregular prismatic solution models (introduced in 6.8.1) bug: if the composition of a solution coincided with that of a pure orphan-endmember, then the endmember mole fractions for the solution were not output correctly. In such cases neither WERAMI nor MEEMUM output bulk assemblage properties. The error has only been corrected in 6.8.3.

DEW13BA96ver_oxides.dat: the DEW (Harrison & Sverjensky 2013) solute species database has been added to the Berman & Aranovich (1996) condensed phase thermodynamic database in file DEW13BA96ver.dat.

Jul  2, 2018:

null_phase option error?: the implementation of this option (modified May 17) may have automatically excluded solution endmembers consisting entirely of mobile components. The option has been made redundant pending deletion. 

Jun 25, 2018:

Jennings & Holland (JPet, 2015) mantle melt model, Cpx(JH): the Cpx(JH) model was formulated assuming the wrong composition (MgFeAlSiO6) for the Ca-essenite endmember (CaFeAlSiO6). The error had the consequence that ferric iron partitioning was incorrect for all phase assemblages involving Cpx(JH). The model has been corrected in the 6.8.3 version of the solution model file; the error persists in earlier versions of the solution model file. 

Jun 13, 2018:

VERTEX/MEEMUM bug: corrects an error that caused incorrect reformulation of solution models with irregular prismatic composition space (solution model type 9 or 10). The error was introduced, and persists in, 6.8.2.

Removes 6.8.0 degeneracy test: If the bulk amount of a component was zero, a degeneracy test during adaptive optimization eliminated phase compositions in which the amount of the component was non-zero. The test is undesirable because it prevents disproportionation, e.g., if a system has FeO and O2 as components and the amount of O2 is zero, the test prevents the disproportionation of ferrous iron to native plus ferric iron. The test was introduced in 6.8.0 and accidentally left in place.

Jun 8, 2018:

"wonaa wonka"/"wacka boom" VERTEX/MEEMUM messages: these debug messages were triggered by a coding error introduced in 6.8.2 that has been corrected. It is unlikely that the error affected calculations in which the messages were not issued.

Jun 2, 2018: 

UNSPLT bug: a parameter changed in 6.8.2 caused the memory allocated by UNSPLT to exceed the amount permitted by WINDOWS. WINDOWS prevented the program from starting with the cryptic "Access is denied." OS message.

May 30, 2018: Perple_X 6.8.3: this revision includes changes, courtesy of Eleanor C. R. Green, necessary to accommodate the Saxena & Eriksson (CALPHAD, 2015) model for high-pressure melting in the Fe-S system. The version number has been updated because the Fe-S liquid model cannot be read by earlier versions of Perple_X.

Saxena & Eriksson (CALPHAD, 2015) model for high-pressure melting in the Fe-S system (Martian/Earth core): the endmember data for this model are present in SE15ver.dat and the pyrhottite (Po(SE)) and melt (FeS_liq) solution models have been added to solution_model.dat. The published version of this model is partially inconsistent with the corresponding FactSage data files, a fact revealed through the heroic efforts of Eleanor Green. The data in SE15ver.dat for solid phases are from the FactSage files, the liquid endmembers are from the Saxena & Eriksson (2015) publication. Because neither Saxena & Eriksson (2015) nor the FactSage files completely describe the implementation of the model minor discrepancies remain. An input file and benchmark calculation for the 21 GPa temperature-composition diagram (Figure 2 of Saxena & Eriksson, 2015) are in the examples directory.

Perple_X 6.8.2, Modifications/Bugs:

May 24, 2018: 

VERTEX/Crystal-fractionation bug: an i/o error caused gfortran compiled versions of VERTEX to crash and the intel compiled versions of VERTEX to generate fractionated phase data files that included output from both the exploratory and auto-refine stages of a calculation. The error has been present since the introduction of the crystal-fractionation option (April 3, 2018; 6.8.1). The error has not been corrected in 6.8.1.

May 22, 2018: 

VERTEX/MEEMUM bug: corrects an error that prevented reformulation of a reciprocal solution model with irregular prismatic composition space (solution model type 10) as a simple reciprocal solution (solution model type 7).

Gt_maj error: the endmembers for Gt_maj in the 6.8.2 version of stx11_solution_model.dat were ordered incorrectly.

May 19, 2018: 

VERTEX/MEEMUM bug: uninitialized variables triggered various warning/error messages.

May 17, 2018; Perple_X 6.8.2: This revision permits an irregular prismatic geometry for the composition space of solution models. The geometry eliminates inefficiencies created by previous less flexible geometries (see March 2, 2018 update). The version number has been updated because solution models that invoke the irregular prismatic geometry, described in more detail below, cannot be read by earlier versions of Perple_X.

More details you do not want to know: Perple_X previously supported two geometric models for the composition space of solutions: "simplicial" and "prismatic". In the simplicial geometry the n-dimensional composition space is the volume bounded n+1 vertices corresponding to the compositions of the n+1 independent endmembers of the solution (e.g., 4 endmembers define a tetrahedron). In the prismatic geometry, the n-dimensional composition space is formed by two or more orthogonal simplices that share a common vertex (e.g., 2 1-d simplices define define a quadrilateral composition space). To distinguish simplex and  prismatic geometries from more general prisms, the more general case introduced in 6.8.2 is designated an irregular prism (this is not standard geometric usage). Irregular prisms can be visualized as objects formed by adding individual vertices (i.e., orphan vertices) in orthogonal dimensions to a regular prism (e.g., an orphan vertex added to a 2-d quadrilateral forms a 3-d pyramid), or equivalently as a simplex in which one of the vertices (i.e., a prismatic vertex) represents a collapsed regular prism. Currently, no provision has been made for multiple prismatic vertices.

null_phase option bug: the null_phase option introduced in 6.8.0 was accidentally applied in constrained minimization calculations. This had the consequence that solution model endmembers consisting entirely of mobile components were automatically excluded unless the null_phase option was set to T. For example, this bug prevented the water endmember of hydrous silicate melt models being included in calculations as a function of water activity.

Holland et al. (J Pet, 2013) mantle transition zone mineralogical model has been formatted for Perple_X (courtesy of Bob Myhill, Bristol). The solutions in this model, present in the 6.8.2 version of solution_model.dat, are Gt(H), Fper(H), Mpv(H), Cpv(H), Cor(H), CFer(H), NAl(H), Aki(H), O(JH), Wad(H), Ring(H), Cpx(JH), Opx(JH), and Hpx(H). The endmember data used for benchmarking are in hphh2013ver.dat. The input files and resulting sections for the KLB1 and MORB benchmarks (Figures 1 & 3 of Holland et al. 2013) are in the examples directory, the benchmark calculations are essentially perfect for all phases except NAl(H). The similarity of phase boundaries irrespective of the presence of NAl suggests that NAl is insignificant in the KLB1 benchmark and that NAl is either insignificant or approximately correct in the MORB benchmark.

Stixrude & Lithgow-Bertelloni (GJI, 2011) whole mantle mineralogical model: Gt_maj in the pre-6.8.2 version of stx11_solution_model.dat used a primitive form of the irregular prismatic geometry (solution model type 5) that has been eliminated in 6.8.2. The model has been reformulated in terms of the new form (solution model type 10) in stx11_solution_model.dat. The Gt_cmaj solution model has been eliminated from stx11_solution_model.dat.

Order-disorder solution models Augite(G), Chl(W)*, Opx(W), Bi(W), Bio(TCC), Bio(HP), Gt(H), CFer(H), and Cpx(H) have been reformulated in terms of irregular prismatic geometry. The reformulation of these models should have no consequences for computed phase equilibria.

The relict equipartition models Chl(HP)*, Chl(LWV)*, Sapp(HP), Sapp(KWP), T, GlTrTsPg, Amph(DHP), Amph(DPW), Atg(PN), o-Amph, Ca-Amph, Na-Amph(D), and GlTrTsMb have been reformulated as models with a simplicial composition space. These changes obviate the site_check_override solution model keyword and the reject_negative_sites Perple_X option file keyword. In some cases, particularly for iron-rich compositions, these changes may reduce the stability field of the corresponding phase. If such a reduction is deemed unsatisfactory, then revert to the 6.8.1 version of the model, add the site_check_override keyword to the text of the solution model, and set the reject_negative_sites option to F. 

Cpx(JH) and Opx(JH) Jennings & Holland (2015, Holland et al. 2013) modifications (courtesy of Bob Myhill, Bristol): the effective tetrahedral site multiplicities for both Opx(JH) and Cpx(JH) was corrected from 1/4 to 1/2. This correction gives good results for the Holland et al. (2013) benchmarks, a result that suggests this latest correction is, really, correct. The Cpx(JH) composition space has been expanded to cover the entire range of possible model compositions. 

*Chl(W), Chl(HP), and Chl(LWV) are brute-force order-disorder models.

Perple_X 6.8.1, Modifications/Bugs:

May 13, 2018: 

BUILD bug, saturated components in constrained minimization: specified amounts of saturated components were not output.

Apr 21, 2018: 

auto_exclude option bug: the auto_exclude option introduced April 3, 2018 to prevent entities with no associated volumetric EoS, typically gas species such as O2 and H2, from being included in phase diagram calculations did not function correctly if the total amount of the components for the entity was negative. For example, if Fe2O3 and FeO are used as components, then the total number of moles of the components in O2 (= 2 Fe2O3 - 4 FeO) is -2, in this case O2 would have been included in phase diagram calculations even if it had no volumetric EoS.

Apr 20, 2018: 

BUILD bug: the version of BUILD created on April 3 did not output the names of saturated and transformed components. The error has been corrected. The stable version of BUILD created before April 3 is saved in the WINDOWS zip archives as build_old_version.exe, excepting 0-dimensional fluid infiltration calculations, the old version has all the capabilities of the new version.

Apr 18, 2018: 

**warning ver061**: this error trap was intended to permit adaptive minimization calculations to continue if VERTEX/MEEMUM ran out of memory before adding the complete list of metastable refinememnt points. The trap was not implemented correctly and caused a runtime error. The implementation has been corrected.

Chl(W): site_check_override has been added to this model in solution_model.dat, it is necessary because the implementation of Mn is inconsistent with the ordering scheme.

Apr 17, 2018: 

**error ver027** misdirection: if a formatting error was detected in the computational option file (the file usually generated with BUILD), the ver027 error message incorrectly indicated a formatting error in the option file (perplex_option.dat).

Apr 10, 2018: 

Zero-mode stable phases in phase fractionation calculations: if the mode of a stable phase was zero at a computational node, then WERAMI did not necessarily interpolate correctly between adjacent nodes. The error has been corrected.

Apr  3, 2018:

PerpleXWrap C/R/Matlab/Python wrapper for MEEMUM: Lars Kaislaniemi's wrapper has been updated by Julien Cornet for the 6.8.1 version of Perple_X. The wrapper allows C, Python, Matlab, and R programs to call MEEMUM as a subroutine for phase equilibrium calculations. The updated wrapper and documentation are available here. The original version of the Lars's wrapper is at and supports Perple_X 6.6.8. The compatibility of the wrapper with Perple_X is determined by the common block structure in Perple_X, this does not change often. Thus Lars's version is compatible with 6.6.8-6.7.4 (and probably earlier versions as well) and Julien's update is likely to remain compatible with future versions. I am not sure where between 6.7.4 and 6.8.0 the change in compatibility occurs, this can be determined from the dimensioning of common block cxt14 in Perple_X.

0-dimensional fluid infiltration, new BUILD/VERTEX computational mode: 0-d infiltration calculations allow introduction of aliquots of fluid components (normally water) to an isobaric-isothermal system. After the addition of an aliquot, the equilibrated fluid may be removed by fractionation, simulating the effect of fluid infiltration.

crystal-fractionation calculations: 1-d phase fractionation calculations have been modified to offer the option of fractionating all phases other than liquid (i.e., melt). Currently, this option also fractionates any fluid or gas phase.

auto_exclude, new option: auto_exclude, which is true by default, prevents thermodynamic entities without an associated mechanical equation of state from being included in phase diagram calculations.

refine_endmembers, corrected option: the implementation of this option did not necessarily identify the endmembers of a solution. This option must be activated for calculations involving a one-component solvent (WADDAH). More generally it is likely that activating this option improves the resolution of phase diagram boundaries. 

Mar 13, 2018:

hpha02ver.dat thermodynamic data file updated with elastic moduli from Abers and Hacker (2016), courtesy of William Shinevar. The former version of hpha02ver.dat persists as hpha02ver_old.dat.

default value of the spreadsheet option changed to .true. (T).

Mar 9, 2018:

Dielectric constant computation: the dielectric constant of fluids is now computed using partial molar volumes obtained from the specified hybrid molecular fluid EoS. Formerly, partial molar volumes from the MRK EoS were used irrespective of the specified fluid EoS.

New options: 

aq_ion_H+ - allows specification of hydronium or hydroxyl as the default ion used to solve for electrostatic neutrality. Hydronium is used if aq_ion_H+ is T, and hydroxyl otherwise. In general, geologic fluids are alkaline and therefore solving on hydroxyl should yield better numerical results.

fancy_cumulative_modes - if fancy_cumulative_modes is T, then in cumulative mode calculations WERAMI (mode 2-4, option 25) attempts to generate data for a plot in which the new phase that forms across a univariant phase field abuts against the phase eliminated by the field. The algorithm may fail for low resolution calculations. If fancy_cumulative_modes is F, then new phase fields always initiate from the zero cumulative mode ordinate.

Mar  8, 2018: The DQF corrections for the acmite endmember of the Omph(GHP) clinpyroxene model and for the pargasite, glaucophane, cummingtonite, grunerite, and magnesioriebeckite endmembers of the cAmph(DP) clinoamphibole models have been updated (Green et al., JMG, 2016) in the ds6 THERMOCALC thermodynamic data files formatted for Perple_X. To make use of both the ds5 and ds6 THERMOCALC thermodynamic data files possible with the solution model file solution_model.dat, the DQF corrections for pargasite, cummingtonite, and grunerite have been removed from the cAmph(DP) model text and added to the ds5/ds6 thermodynamic data files.

Mar  6, 2018: the reject_negative_sites option was not implemented in the version of 6.8.1 put on-line March 2.

Mar  2, 2018: The bug reported on Feb 28 was false, i.e., the test introduced in the 6.7.7 version was correct. My confusion reflects that two types of solution models currently implemented in Perple_X may give rise to illegitimate (negative) site populations:

Relict equipartition models [e.g., Atg(PN), Amph(DHP), Amph(DPW) Bio(TCC), Chl(HP), GlTrTsPg, GlTrTsMr, Na-Amph]: the formulation of these models is incorrect; thus there is no correct way to implement them. However, the models can be run so as to approximate the results obtained with the THERMOCALC program using the logically inconsistent equipartition model. As of this date, these models can only be run if the site_check_override keyword is specified at the end of the model in the solution model file. In former versions of Perple_X, this option permitted compositions that implied negative site populations. For purposes of computing configurational entropy, the negative site fractions were ignored, a practice that had/has the undesirable consequence of introducing a discontiguity in the Gibbs energy surface of the solution, which in turn had the potential to create miscibility gaps. The default behavior has been modified to reject, rather than ignore, negative site fractions. To restore the previous behavior, set the option file keyword reject_negative_sites to T.

Models with an irregular prismatic composition space [Augite(G)]: the formulation of this model is legitimate, but because Perple_X currently assumes that the composition space of any solution can be defined by a regular prism, the Augite(G) model can only be accommodated by defining a larger composition space that contains the valid composition space. This method is unsatisfactory because the valid composition sub-space is dimensionally degenerate. The degeneracy has the consequence that there is a high probability that Perple_X will not find valid compositions. A work-around solution to this problem is to replace the illegitimate dependent endmembers that define the prismatic composition space with independent endmembers. This solution, which is currently implemented in solution_model.dat, has the unfortunate consequence that it results in replicate compositions that unnecessarily consume memory and lead to numerical instabilities. Therefore I do not recommend using the Augite(G) model unless you understand the issue. If you do use the model, it is essential that the option file keyword reject_negative_sites is set to T (or default).

Feb 28, 2018:

MEEMUM/VERTEX BUG, VERSIONS 6.7.7-6.8.1: The test introduced in 6.7.7 to eliminate invalid compositions for prismatic solution models was logically flawed and overly restrictive. The error effectively eliminated jadeite as a species from the Augite(G) solution model, the error also likely affected calculations with the Gt_maj model. In 6.7.8, the error led to the mistaken conclusion that invalid site populations were required to produce plausible phase relations with the following solution models: Atg(PN), Amph(DHP), Amph(DPW) Bio(TCC), Chl(HP), GlTrTsPg, GlTrTsMr, Na-Amph. Invalid populations were allowed in these models by introducing the solution model keyword site_check_override. It appears probable that this strategy is unnecessary with the corrected code. Accordingly, the site_check_override keyword has been eliminated (commented) from the aforementioned models in the solution_model.dat file.

Solution Model Errors (courtesy of Bob Myhill): The tetrahedral site multiplicity in the Opx(JH) and Cpx(JH) models has been increased from 1/4 to 1/2 in the solution_model.dat file.

Feb 8, 2018:

ferro-actinolite(fact)/ferro-tremolite(ftr) name error: amphibole solution models formulated prior to the THERMOCALC ds6 data base (e.g., cAmph(DP)) identify the ferrous equivalent of tremolite as ferro-tremolite (ftr), but in ds6 THERMOCALC data files (hp11ver.dat, hp62ver.dat, hp622ver.dat) the ferrous equivalent of tremolite was identified as ferro-actinolite (fact). Consequently, older amphibole models were not fully implemented with the ds6 files. The fact endmember has been renamed ftr in the hp11ver.dat, hp62ver.dat, hp622ver.dat to correct the problem.

Non-linear subdivision revision: the value of xmin (see Feb 4 revision below) specified for non-linear subdvision is now used only to specify the stretching parameter value. By default the transformation is for compositions beginning at numerical zero to xmax.

Feb 4, 2018:

Special output - a flag used to signal special output in WERAMI and MEEMUM was inadvertently set in the Feb 3 revision; the flag has been reset.

Non-linear subdivision - formerly the stretching parameter used for non-linear subdivision schemes was set universally by the Perple_X stretch_factor option. The code has now been modified so that if the minimum value for compositional range of a species specified in the solution model file (xmin) is > zero, the stretching parameter for that species is set equal to xmin. This change assures that the stretching transformation will accurately resolve compositions of the order of xmin.

Feb 3, 2018:

6.8.1 options - the possibility that any option specified in the Perple_X option file can be given the value "default" in 6.8.1 has created some confusion. To change the value of an option from "default", the word "default" must be replaced with the desired value. For example, to change the default horizontal grid resolution from its default values [40 and 40] to 20 and 60, the x_nodes keyword must be changed from

x_nodes default ...


x_nodes 20 60 ...

Non-linear (asymmetric, stretching, or conformal) subdivision schemes problems and revision: Non-linear subdivision (Fig 4.1bc of the out-of-date tutorial) schemes offer an inexpensive means of obtaining high resolution of components present at low concentration and, for that reason, were specified for minor components in many solution models. It has emerged that the use of a mixture of non-linear and linear schemes in adaptive minimization (the Perple_X 6.6.6+ strategy) calculation can be a source of numerical stability. Specifically, if two phases have similar thermodynamic properties (e.g., ortho- and clino-pyroxene or ortho- and clino-amphibole), then use of a non-linear scheme for only one phase may preferentially stabilize that phase. This problem is probably insidious in Paralyzer because Paralyzer divides calculations into small pieces within which VERTEX has little capacity to correct falsely stabilized phases. Non-linear subdivision can be used safely for phases (e.g., fluids and melts) with clearly distinct thermodynamic properties.

Solution model file - any models that specified non-linear subdivision schemes for one or more compositions have been changed to specify only linear (Cartesian) subdivision. As noted above, it may prove desirable to reinstate non-linear schemes for some phases (e.g., melts, garnet, ilmenite, biotite, chlorite, etc.).

Non-linear subdivision scheme revision - all non-linear schemes except the asymmetric stretching transform have been disabled. Prior to this revision, the asymmetric scheme did not necessarily increase resolution during adaptive optimization iterations. The implementation of the scheme has been revised to be consistent with the treatment of linear subdivision in that resolution does improve with iteration. This may have the consequence that calculations made with former versions of the solution model file that specify non-linear schemes consume more memory.

Jan 8, 2018:

incorrect default final_resolution values: the exploratory (1e-2) and autorefine (1e-3) default final_resolution values were swapped. The error was introduced in the Dec 24, 2017 version of the code.

Jan 5, 2018:

Cumulative modes (WERAMI): the cumulative mode algorithm for "modes of all phases" output has been modified to produce more legible plots of 1-dimensional calculations.

Lagged electrolytic fluid speciation (VERTEX/MEEMUM): corrects several I/O errors.

Short option value bug: 1 character option values (notably T and F) were misread if the value was followed by a non-blank character. In such instances the misread value was ignored and the keyword was assigned its default value.

Modified option behavior:

bad_number - defaults to NaN (Not-a-Number), formerly the default was 0. Users of PSTABLE are advised to set bad_number to 0.

aq_bad_results - now accepts 1 of 4 values: error - causes rejection of all suspect results (error conditions ver101 and ver102); 102 - allows results in which error condition ver101 occurred (a solute component is present only in the solvent phase); 101 - allows results in which error condition ver102 occurred (a pure solvent phase is immiscible with an impure solvent phase); ignore - allows all suspect results. The default value is error.

Dec 18 2017, Perple_X 6.8.1 (defaults modified from Dec 15): this revision renovates the options read from the option file so that all options accept "default" as a value. This change increases the legibility of the option file. The default value and behavior of the keywords listed below have been modified:

Changed behavior:
reach_increment_override - reach_increment_override defaults to [all] for MEEMUM
zero_mode                - zero_mode defaults to [0] for fractionation calculations
refinement_points_II     - if is set to [aut], the number of metastable refinement points
                           is set equal to c + 2 (where c is the number of thermodynamic 
                           for the calculation) or 5, whichever is greater. 
Changed default values:
1d_path                   now [40 150]      formerly [20 150]
explicit_bulk_modulus     now [T]           formerly [F] 
final_resolution          now [1d-2 1d-3]   formerly [1d-2 2.5d-4] 
interpolation             now [on 2]        formerly [on 0]
refinement_points_II      now [aut]         formerly [5]
x_nodes                   now [40 40]       formerly [20 40] 
y_nodes                   now [40 40]       formerly [20 40]  

Additionally, the adaptive optimization algorithm has been modified to continue execution if the amount of memory required to store metastable refinement points exceeds the allocated memory. Formerly this condition resulted in error message ver058, the program now issues the warning ver061 instead of the error message.

Perple_X 6.8.0 BUGS and modifications:

Dec 3, 2017, Perple_modifications: 

1) (see Dec 1, below) liquid (melt) phases are again classified as a fluid phase by WERAMI only if the melt_is_fluid option is true.

2) The CALPHAD SGTE T^3 (c9, t12), T^(1/2) (G0, t13), and ln(T) (S0, t14) polynomial terms have been added/reinstated for thermodynamic data file equations of state 12 and 14 (the G0, S0, t12-t14 tag descriptions at have not been updated).

3) The adaptive optimization routines have been modified to allow refinement around the composition of endmember compositions (this does not necessarily obviate the refine_endmember solution model keyword).

Dec 1/Nov 29, 2017:

VERTEX/MEEMUM/WERAMI on Nov 29, WERAMI was modified to identify any solution model in the solution model file with the full_name keyword 'fluid' or 'liquid' as a fluid phase. Unfortunately the modification grouped 'fluid' solution model endmembers together with 'liquid' (melt) endmembers that are destabilized at temperatures below the value (default 873 K) specified by the T_melt option. This had the effect of destabilizing any 'fluid' solution model below T_melt. The error was corrected Dec 1. The Nov 29 modification has the consequence that WERAMI identifies 'liquid' as a fluid phase regardless of the value of the melt_is_fluid option, the original function of this keyword will be restored shortly. 

Nov 24, 2017:

VERTEX/MEEMUM, phase boundary roughness, again: the problem incorrectly attributed to a compiler optimization error on November 19, was due to an uninitialized variable (one could argue that this is a compiler error since the compiler supposedly checks for uninitialized variables). Less aggressive optimization did fix the problem with the Intel XE 2016 Fortran compiler, but the problem may have persisted for gfortran compiler users. The on-line WINDOWS version is again compiled with optimization for speed (O2).

Nov 21, 2017:

WERAMI output error: the November 19 version of 6.8.0 increased the allowed length of property names to 20 characters, this increase caused a run-time compiler error of the form:

forrtl: severe (66): output statement overflows record, unit -5, file Internal Formatted Write

the error has been corrected.

Nov 19, 2017:

1) VERTEX/MEEMUM, phase boundary roughness: 6.8.0 computed rougher phase boundaries than 6.7.8. Investigation of this problem identified a bug that causes boundary roughness in both versions of the program and that the reason for increased roughness in the WINDOWS version of 6.8.0 relative to 6.7.8 was caused by an Intel XE 2016 Fortran compiler optimization (O2) error. The latter problem has been eliminated by using less aggressive optimization (O1). The former problem persists in the 6.7.8/6.7.9 versions.

2) WERAMI, modes-of-all-phases property option: an uninitialized variable prevented the output of fluid modes. This bug was/is present in earlier versions.

3) WADDAH Solution Model: the presence of the WADDAH solution model in solution_model.dat potentially caused Perple_X programs reading that file to go into an infinite read loop.

4) Stixrude & Lithgow-Bertelloni GJI 2005 EoS: an error trap intended to prevent negative volumes prevented the Perple_X implementation of this EoS from converging. The known case of this problem was at ~terra-Pascal pressure.

Nov  4, 2017:

1) output_iteration_details: If a Perple_X option file keyword was longer than 22 characters (i.e., the output_iteration_details keyword added in 6.8.0), then an internal error code was generated that prevented Perple_X from reading any additional options. The error is potentially severe, either delete the output_iteration_details keyword from Perple_X option files or update the programs.

Oct 20, 2017, Perple_X 6.8.0: this revision includes modifications to increase the numerical stability of adaptive optimization in reactive transport models with electrolytic fluids (perplex_electrolyte.html).


1) Solution models for pumpellyite (Pu) and stilpnomelane (Stlp) have been added to the solution model file solution_model.dat.

2) The following keywords have been added to list of options recognized in the Perple_X option file:

aq_output - enables back-calculated electrolytic fluid speciation (formerly aqueous_output).

aq_species - controls the number of species output for back-calculated electrolytic fluid speciation (formerly aqueous_species).

aq_lagged_iterations - improves convergence between lagged- and back-calculated electrolytic fluid speciation.

aq_lagged_speciation - enables lagged electrolytic fluid speciation (formerly lagged_aq_speciation).

aq_oxide_components - enables the use of oxide components in lagged- and back-calculated fluid speciation calculations.

fractionation_hi/lo_limit - enables batch fractionation calculations.

null_phases - controls whether null phases are permitted in calculations with mobile components.

output_iteration_details - outputs information on the progress of adaptive optimization calculations. 

Sep 28, 2017, Perple_X 6.7.9:


1) FRENDLY: only the first and last points of isobaric/isothermal P-T-Y_CO2 curves were output if only a single isobaric/isothermal section was requested.

2) Lagged Aqueous Speciation: the speciation and bulk compositions output were for the final values of the optimized chemical potentials rather than the lagged chemical potentials. Consequently the result was identical to the back-calculated composition and did not conserve mass.

3) Lagged Aqueous Speciation: the compositions of impure and pure solvent phases were not averaged correctly (molality for the pure solvent was not defined and initialized to zero).

4) Back-calculated Aqueous Speciation: species mole fractions reported for back-calculated speciation were incorrect.

Sep 13, 2017, Perple_X 6.7.9, Aqueous electrolyte data file corrections: The Perple_X data files DEW13HP02ver_elements.dat, DEW13HP02ver_oxides.dat, DEW13HP622ver_elements.dat, and DEW13HP622ver_oxides.dat included aqueous species data estimates recommended by Shock & Helgeson (1988) rather than the revised estimates recommended by Sverjensky et al. (2014). These files have been updated to incorporate the Sverjensky et al. (2014) estimates. The original versions of these files persist as HKF13HP02ver_elements.dat, HKF13HP02ver_oxides.dat, HKF13HP622ver_elements.dat, and HKF13HP622ver_oxides.dat. Use of the Sverjensky et al. (2014) estimates eliminates much of the erratic behavior mentioned at

July 13, 2017, Perple_X 6.7.9, Lagged Speciation Algorithm for Electrolytic Fluids: this revision introduces an algorithm that permits efficient reactive transport calculations with electrolytic fluids. This capacity is documented at The version number has been updated because this version allows generic hybrid EoS solution models with a single endmember (e.g., WADDAH).

Perple_X 6.7.8 Bug-of-the-Day Report: Before June 20, 6.7.8 bugs are relevant only for calculations involving electrolytic fluids.


July 11, 2017:


output_iteration_G: the keyword output_iteration_G has been added to the list of options recognized in the Perple_X option file. The output generated by this keyword is helpful in diagnosing problems and/or selecting optimal parameters, an example is discussed in the option file documentation.


July 10, 2017:


Exclusion of volatile species: In contrast to earlier versions of Perple_X, 6.7.8 allows negative phase compositions. This feature can lead to problems for users who are running old input files or for users who are familiar with, and expect, the old behavior. To illustrate by example: in a calculation that includes both H2O and O2 as components (e.g., as in the bl478_benchmark example), earlier versions of Perple_X would have identified only H2O and O2 as volatile species, whereas 6.7.8 identifies H2, H2O, and O2 as possible volatile species. In the bl478 example, H2 interferes with the computed phase relations. To eliminate this interference H2 must be excluded from the calculation (in general, candidates for this kind of interference include the following species H2, O2, CO, CH4, and H2S). The interference, as opposed to legitimate stability, occurs because there is no convention for the way volatile species in thermodynamic data bases are to be treated at elevated pressure. In Perple_X, unless the data base identifies certain species as "special components" (usually H2O or CO2) or the species itself is assigned a special EoS code (see Dec 7, 2016 or Special_EoS) there is no equation of state associated with volatile species. Because Gibbs energy increases with pressure for any real EoS, the absence of an EoS has the consequence that species with no EoS are artificially stabilized with increasing pressure hence the (incorrect) stability of H2 in the bl478 benchmark example. 


If the significance of the previous paragraph is unclear, then excluding H2, O2, CO, CH4, and H2S will almost invariably lead to correct results.


June 30, 2017: 


solution_model.dat: the 6.7.8 data file archive contained the 6.7.6 version of solution_model.dat rather than the 6.7.8 version (the error had dire consequences in calculations with the Atg(PN), Amph(DHP), Amph(DPW), Bio(TCC), Chl(HP), GlTrTsPg, GlTrTsMr, Na-Amph, and T solution models, see site_check_override, May 30 update).


solvus_tolerance: the value of solvus_tolerance (0.02) specified in the version of perplex_option.dat provided in the 6.7.8 data file archive was too small for generic calculations and may have been a cause of spurious solvi. The value has been set to the correct default (i.e., auto).


June 29, 2017: 


MAJOR WERAMI BUG: WERAMI corrupted ALL compositional information on interpolation between nodes (its normal mode of operation), this error was introduced in the June 21 version and only partially corrected on June 24.


LINUX makefile dependencies: the dependencies in makefile and LINUX_makefile have been corrected (thanks to Christoph Hauzenberger, Graz).


June 25, 2017 BUILD component transformation bug: corrects a bug that prevented BUILD from outputting component transformations.


June 24, 2017 WINDOWS version kerfuffle: On June 21, I accidentally put the development version of Perple_X in place of the "stable" 64 bit WINDOWS version of 6.7.8. The development version had a bug that caused WERAMI to misread all compositional data for phases. 


June 20, 2017: 


Increased memory: Splitting linear-programming and convexhull optimization into separate programs (VERTEX and CONVEX, see June 13 below) and the correction of an array dimension has increased the amount of memory that can be used by VERTEX/MEEMUM by roughly 40%. 


Mobile component solution model bug: Optimizations with VERTEX/MEEMUM failed in calculations with solution models with endmembers that consist entirely of mobile components (e.g., "SO2" in a calculation as a function of f_S2 and f_O2).


June 12, 2017: 


BUG #1 reincarnation: see below (the May 31 correction did not eliminate the bug). 


June 13, 2017: 


CONVEX: Convex-hull optimization problems (Schreinemakers projections and composition diagrams) are now done using the program CONVEX rather than VERTEX.


Source modifications: these changes are relevant only if you compile your own version of Perple_X: The make dependencies of CONVEX are convex.f, getxz1.f, clib.f, flib.f, rlib.f, tlib.f. ACTCOR, BUILD, MEEMUM, UNSPLT, and WERAMI are dependent on a new source dumlib.f. VERTEX and MEEMUM are dependent on a new source getxz1.f. The makefile and LINUX_makefile dependencies have been modified. 


June 6, 2017: 


BUG #4 Back-calculated electrolyte speciation: ionic activity corrections were not implemented correctly in back-calculated electrolyte speciation calculations. The error was significant at high ionic strength and was evident by the error indicated for the back-calculated fluid pH.


Negative compositions: Perple_X has been modified to allow phases with negative compositions (not negative mass) in all types of phase equilibrium computations.  


June 2, 2017: 


BUG #3: WERAMI (computational modes 2-4, property choice 40) did not write the solute species names in the header line of tabulated back-calculated solute speciation results.


BUG #2: MEEMUM/WERAMI did not get the correct solvent composition for back-calculated solute speciation if the solvent phase was not the first solution phase listed on output, this would be a potential problem in calculations with solvent-phase immiscibility or any calculation with more than one solution model. 


Maximum number of solute species: The maximum number of solute species (parameter L9) has been increased from 100 to 300. 


Talc (T) solution model: site_check_override has been added to this model in the standard solution model file (solution_model.dat).


May 31, 2017: 


BUG #1: H+ is a thermodynamic oddball by convention in that its thermodynamic properties are defined to be zero. To maintain this convention, a flag locates H+ in the solute species data array. This flag was accidentally applied to the phase data array instead of the solute species array, with the result that WERAMI and MEEMUM potentially zeroed the physical properties of a stable phase on output.

May 30, 2017, Perple_X 6.7.8, Electrolytic fluid chemistry: 


This revision extends Perple_X's capacity to analyze electrolytic fluid chemistry by the method of Galvez et al. (2015) and, less successfully, by direct forward modeling. This capacity is documented at


Additionally, this revision introduces two solution model keywords that allow users to roll-back changes introduced in Perple_X 6.7.7 for specific solution models. These new keywords are:


site_check_override: If this keyword is present in a solution model, then the tests for invalid dependent endmember site populations introduced in Perple_X 6.7.7 are overridden and the solution model is treated as in earlier versions of Perple_X. The keyword has been added to the following solution models in the standard solution model file (solution_model.dat): Atg(PN), Amph(DHP), Amph(DPW) Bio(TCC), Chl(HP), GlTrTsPg, GlTrTsMr, Na-Amph


refine_endmembers: If this keyword is present in a solution model, then the solution model is evaluated to compute the properties of the solution at its endmember bulk compositions. The keyword has been added to the Ilm(WPH) model and it must be added to the Cpx(G) model if Cpx(G) is to be used to compute properties at the bulk Ca-Tschermaks endmember composition.


The presence of these new keywords has the consequence that the 6.7.8 version of solution_model.dat cannot be read previous versions of Perple_X.


Thermodynamic data file changes: some minor changes have been made to the thermodynamic data file format, for most users these changes should be transparent except in the sense that some 6.7.8 thermodynamic data files cannot be read by previous versions of Perple_X. The changes are:


EoS 15 - Anderson-density-extrapolation-model aqueous species data entries now use the tag "b3" as a flag identifying the hydronium and hydroxyl ions. 

EoS 16 - SUPCRT/HKF aqueous species data entries now include a flag "HOH" identifying the hydronium and hydroxyl ions. 

HSC/SUPCRT convention conversion - the keyword HSC_conversion in the header of the thermodynamic data file enables automatic conversion between the HSC and SUPCRT apparent Gibbs energy convention.


New Perple_X option file keywords: aqueous_output, aqueous_species, aq_solute_composition, aq_solvent_composition

Obsolete Perple_X option file keywords: refinement_threshold

Perple_X 6.7.6-7 miscellanea and bugs:

Mar 24, 2017, Why the transition from 6.7.6 to 6.7.7 isn't so transparent afterall: As originally advertised the changes in 6.7.7 were supposed to be transparent, i.e., have no effect on computed phase relations. It emerges that they may be significant for relict THERMOCALC solution models (e.g., Amph(DPW) and Chl(HP)) that, in THERMOCALC, were formulated in terms of the ad-hoc "equipartition constraint". Perple_X 6.7.7 is rigorously correct in its formulation, but the less rigorous formulation allowed in earlier versions of Perple_X permits a greater compositional range for relict equipartition models and therefore may generate results that are more similar to those obtained with the corresponding model in THERMOCALC (see "Known current problems"). Specifically, the greater range of compositions permitted for relict equipartition models translated into larger stability fields for those models relative to phases described by solution models without equipartition than are obtained with 6.7.7. To clarify exactly what changed in 6.7.7, consider the quadrilateral orthopyroxene (opx) composition space defined by the compositional vertices enstatite (en, Mg2Si2O6), ferrosillite (fs, Fe2Si2O6), tschermaks (ts, MgAl2SiO6), and ferro-tschermaks (fts, FeAl2SiO6). The composition space is 2-dimensional, thus it is apparent that the solution model can have only 3 compositionally independent endmembers (where composition refers only to bulk composition), taking these endmembers to be en, fs, and ts, the compositionally dependent endmember fts is defined by the reaction (often referred to as a "reciprocal" reaction):

fts = ts + 1/2 fs - 1/2 en

This reaction legitimately defines the bulk composition of fts, but problems arise if the elements partition (i.e., order) onto crystallographic sites. For example, consider the case that opx has two distinct octahedral sites per formula unit, say M1 and M2, and that the octahedral site populations for the endmembers are fts ([Fe]M1[Al]M2), ts ([Mg]M1[Al]M2), fs ([Fe]M1[Fe]M2), and en ([Mg]M1[Mg]M2). Applying the right-hand side of the above reaction to the individual site populations yields


which is clearly both non-physical and not the site population of the ordered fts endmember. In previous versions of Perple_X mixtures of such non-physical dependent endmembers were allowed provided the atomic site fractions in the mixture were greater than zero (e.g., as obtained by mixing the above site population with more than a mole of the enstatite site population); in Perple_X 6.7.7 mixtures in which the bulk fraction of a non-physical dependent endmember is non-zero are forbidden.  

Put a different way: Prior to 6.7.7 mixtures involving invalid dependent endmembers (i.e., endmembers in which an atomic site fraction is less than zero) were allowed provided all the atomic site fractions in the resulting mixture were positive. In 6.7.7 mixtures involving invalid dependent endmembers are not allowed.

If this bothers anyone who uses the old models please tell me and I will add an option to restore the old behavior. 

Mar 24, 2017, WERAMI bug (in 6.7.6 and 6.7.7): the error reported below for FLUIDS/FRENDLY was also present in WERAMI where it had the consequence that inaccurate thermodynamic properties were output for phases involving speciation. For most solution models the inaccuracy was minor, however the error was potentially catastrophic for endmembers (and pure phases) described by Bragg-Williams order/disorder models (e.g., high albite and sanidine and, consequently, all feldspar solution models) because it led to negative molar volumes. In such cases WERAMI would assign the bad_number value (usually NaN) to the modal proportions of the phases within the system and to various thermodynamic properties of the affected phase and the system. The error has been corrected in Perple_X 6.7.7, but persists in Perple_X 6.7.6. A clumsy workaround solution is to change the value of speciation_factor in perplex_option.dat to a small value, ~1e-5, when running WERAMI, FLUIDS, or FRENDLY and to restore large values, ~1e2, when running VERTEX or MEEMUM. 

Mar 23, 2017, VERTEX/MEEMUM bug: A debug print statement was left in the code. The statement printed a message of the form “rejected endmember comp xtoy …”. The statement has been removed. 

Mar 21, 2017, FLUIDS/FRENDLY bug (in 6.7.6 and 6.7.7): The change in perplex_option.dat keywords from speciation_tolerance to speciation_factor, made on Feb 6 in Perple_X 6.7.6, was not implemented correctly for FLUIDS and FRENDLY. The error had the consequence that fluid speciation routines converged to a low precision solution when called by FLUIDS and FRENDLY. The error has been corrected in Perple_X 6.7.7. 

Mar 20, 2017, Perple_X 6.7.7: The changes in this revision should be transparent to most users, but if you encounter problems reading a solution model with this version see the NOTE below. 

The 6.7.7 revision adds various tests for dependent solution model endmembers. Dependent endmembers appear when the composition space of a solution has more vertices than the number of components necessary to describe the space, e.g., a quadrilateral composition space for a ternary solution. Such models were formerly referred to as reciprocal models, but in recent versions of Perple_X they are referred to as prismatic solution models (solution model types 5, 7, and 8). Dependent endmembers of a prismatic model are defined as a linear combination of the independent endmembers. Such a combination is valid provided the resulting site fractions are positive for all site species. Invalid site populations arise through an incorrect definition in the solution model. In some cases it is may be desired to use an incorrect definition as a compositional place-holder, thus the presence of invalid dependent endmembers may be either intentional or accidental. In former versions of Perple_X such place-holders were allowed, but the user was not warned of their existence. The 6.7.7 version of Perple_X issues a warning of the form:

**warning ver059** endmember ndi in solution model Augite(G) has invalid site population. It will be retained as a place-holder with zero concentration.

when an invalid dependent endmember is read from the solution_model file. 

Opx(W) Solution Model Correction: the above-mentioned ver059 error trap identified an (unintentional) invalid dependent endmember definition for ortho-hedenbergite 

fdi = 1 di + 1 opx - 1 fs

in the Opx(W) solution model. The valid definition

fdi = 1 di + 1 fs - 1 opx

has been entered in both the 6.7.6 and 6.7.7 versions of the solution model. The error has no evident consequences for phase equilibria in typical geological systems. 

NOTE: Dependent endmembers are no longer allowed in site-fraction and excess function expressions. If a dependent endmember is found in a site-fraction/excess function expression the program halts with an error message of the form:

**error ver077** dependent endmember fets_d in solution Opx(W) appears in a site fraction expression.

If such an error occurs, then either update or correct the solution model file. To correct the file, locate the offending expression, e.g., 

z(m1,fe) = 1 fs + 1 fets_d

and eliminate the dependent endmember, i.e., for the preceding example: 

z(m1,fe) = 1 fs 

Feb 6, 2017, Perple_X 6.7.6: This revision includes modifications necessary to read electrolyte solution models, because the format of this type of model cannot be read by previous versions, the version number has been incremented. The way memory is managed within the program has been changed to allow more compositions to be stored within the allocated memory. The revision has eliminated numerous minor bugs with the result that its probably the cleanest version of Perple_X ever put on-line. Thanks to Roger Powell having created the ic-file THERMOCALC output and Eleanor Green for having generated the files and vigorously defending them, this revision includes debugged versions of the Green et al. (2016) metabasic solution models (see bl478_benchmark). It emerges that calculations with the Green et al. (2016) clinoamphibole model are so time-consuming that they are likely impractical for most users. To mitigate, largely unsuccessfully, this problem, Perple_X 6.7.6 includes two new option keywords: 

refinement_points_II: determines the number of metastable compositions that are refined after the first iteration of adaptive optimizations (the number refined in the first iteration is determined by value 2 of the iteration keyword). Reducing the value of this keyword substantially reduces the cost (in both memory and time) of calculations, but ultimately may lead to poorly resolved phase boundaries. Prior to 6.7.6 the number of metastable refinement points was equal to the number of thermodynamic components. A value of 5 appears adequate. 

refinement_threshold: during adaptive minimization, compositions that are more metastable, relative to the current solution, than the refinement_threshold are not included in the subsequent optimization. Reducing the value of this keyword substantially reduces the memory required for optimization, but causes only minor reduction in computation time. Values near zero (1e-5 J) lead to numeric instability that is manifest by splotchy phase diagram sections or failed optimizations. A value of 1e4 appears to be safe (essentially obviating the threshold). Prior to 6.7.6 no threshold was implemented. 

Additionally, the speciation_tolerance keyword has been replaced by speciation_factor and two additional new keywords have been added: 

speciation_factor: determines the precision of speciation calculations, this precision is computed as the effective final resolution divided by the speciation_factor. A value of 100 appears adequate. The optimal value of this keyword can be determined by looking at the variation in the total Gibbs energy (with MEEMUM) of a system at a fixed pressure-temperature condition. 

species_Gibbs_energies: controls whether endmember Gibbs energies are output by MEEMUM and WERAMI. 

Solution model corrections/changes: 

I have not investigated whether the species limit expressions specified in the 6.7.5 (and previous) versions of cAmph(DP), oAmph(DP), cAmph(G), Chl(W), and Bio(W) were implemented/written correctly. However, I suspect they were not, and, specifically, that they resulted in Perple_X doing far fewer speciation calculations than actually required by the models. The correction of this problem in 6.7.6 is the reason why calculations with cAmph(G) are now prohibitively costly. The corrections will almost certainly markedly slow calculations with any of the aforementioned models. If you are wondering why earlier versions of Perple_X were able to reproduce THERMOCALC phase diagram calculations with these models (notably Chl(W) and Bio(W)), the answer is that either order-disorder in these models is not energetically significant and/or the models predict near complete order at the relevant physical conditions. 

Omph(GHP): this model was formerly named Omph(GHP2), it is the Green et al. (2007, Am Min) clinopyroxene model with the parameter modifications indicated by Diener & Powell (2011, JMG).

cAmph(G): the 6.7.5 version of this model did not span its entire composition space, to correct this a dependent exchange endmember grk = mrb + ts + cumm - gl - tr has been added to the solution model. 

cAmph(DP): this model was formerly named cAmph(DP2), it replaces the previous cAmph(DP) model. The dependent exchange endmember grk = mrb + ts + cumm - gl - tr has been added to the solution model, although no tests have been made to demonstrate the need for this exchange. 

oAmph(DP): this model was formerly named oAmph(DP2), it replaces the previous oAmph(DP) model. 

Augite(G): has been reformulated to have a prismatic composition space. 

Ilm(W): has been deleted. The modifications made by White et al. (2014) were previously incorporated in Ilm(WPH). 

Ilm(WPH): has been reformulated as an explicit order-disorder model (formerly it was formulated as a brute force model).

Jan 9, 2017, Perple_X 6.7.5, Prismatic Order-Disorder Solution Model Bug: for compositions of a prismatic o/d solution model (e.g., cAmph(DP2)) in which no o/d was possible (e.g., ferro-glaucophane) the o/d routine set the Gibbs energy for the "ordered" configuration arbitrarily to zero. This value was then compared to the correct Gibbs energy for the "disordered" configuration and the lower value chosen. If the correct Gibbs energy was greater than zero, the incorrect zero value was chosen and arbitrarily stabilized the composition of the solution. The error probably was not present in earlier versions of Perple_X.

The time stamp for the current version of Perple_X incorrectly indicates the year as 2016.

Dec 29, 2016, Perple_X 6.7.5 BUGS:

Make definition EoS: If a made entity was in the saturated component composition space, then the EoS for this entity could cause the wrong EoS to be associated with a made entity in the thermodynamic composition space. This error was apparent in the sm89_subsolidus/sm89_suprasolidus benchmarks from Dec 21, 2016. In those benchmarks SiO2 was specified as a saturated component and the presence of a made melt endmember qJL as an SiO2 composant caused the melt EoS to be associated with the magnesio-riebeckite endmember mrb of the cAmph(G) model. Consequently, the mrb endmember was destabilized by the T_melt option at temperatures below 873 K resulting in incorrect phase relations below that temperature. This error occurred only in calculations with saturated components and only if a made entity (typically, or perhaps only, the made silica melt endmembers of the various THERMOCALC melt models) was in the list of saturated composants. A variation on this error has been present since, at least, Perple_X 6.7.2 (April 12, 2015); the error was recognized, but not properly corrected, in Perple_X 6.7.3 (Jun 8, 2016).

cAmph(G): former versions of this model used the magnesio-riebeckite endmember mrb of the Diener et al. (2007) clinoamphibole model rather than the mrbG model of Green et al. (2016).

Dec 21, 2016, Perple_X 6.7.5 BUG: The initial versions of 6.7.5 had an incorrect endmember configurational entropy term for order-disorder solution models. The error caused both incorrect and poor convergence for solution models in which one or more endmembers had finite configurational entropy. The present version has been spot-checked against specific THERMOCALC calculations and the phase diagram section for the SM89 MORB composition computed by Green et al. (Fig 2a, JMG, 2016). The comparison with specific THERMOCALC calculations shows perfect agreement; however, in the phase diagram section, biotite persists to temperatures roughly 20 K higher than in the original calculation. A benchmark test against the calculation shown in Figure 4a of White et al. (JMG, 2014) suggests that the error is not caused by the biotite model, most likely the discrepancy is due to differences in the endmember data or the ternary feldspar solution model.

Chl(W) and Chl(HP) solution models: the THERMOCALC solution models for chlorite allow generalized Tschermaks exchange over a quadrilateral composition space bound by the vertices "clinochlore" [M]M1[Al]M4, "amesite" [Al]M1[Al]M4, "Al-free chlorite" [M]M1[M]M4, and "anti-clinochlore" [Al]M1[M]M4, where M represents ferrous iron or Mg. In the Perple_X implementation of these models the exchange is restricted to the triangular composition space bound by the vertices [M]M1[Al]M4, [Al]M1[Al]M4, and [M]M1[M]M4. This restriction appears to have no consequences for computed phase equilibria, presumably because the anti-clinochlore configuration is metastable at metamorphic pressure-temperature conditions.  

Dec 7, 2016, Perple_X 6.7.5: This revision includes modifications necessary to read generic hybrid mixed-volatile solution models, because the format of this type of model cannot be read by previous versions, the version number has been incremented. Additionally, thanks to assistance of the ever-patient, and tactful, E. C. R. Green, this revision corrects an error in the code necessary to implement the Green et al. (JMG, 2016) basic melt model, melt(G). Calculations with the Green et al. metabasic phase equilibrium model have NOT been benchmarked against the phase diagram section for the SM89 MORB composition (Fig 2a, Green et al. 2016). Specifics of the modifications/corrections and other minor changes are listed below:

Generic hybrid mixed-volatile solution models: this type of solution model (solution model type 39, e.g., C-H-Fluid) allows users to create variable speciation molecular fluid models without imposing the arbitrary constraints (buffered oxygen or carbon chemical potential) typical of petrological phase equilibrium models. The equations of state to be used for the pure volatile species are specified via the hybrid_EoS keyword. To use this type of solution model the thermodynamic data file must be edited to eliminate the special_component section. Additionally, the eos flag in the thermodynamic data for each volatile species of interest must be edited to correspond to the appropriate special value. WARNING: special eos codes should not be used in thermodynamic data files that have a special component section. In generic hybrid mixed volatile fluid models, the stable speciation is computed by brute force minimization. Brute force computation is relatively inefficient, therefore when possible (e.g., CH4-H2-O2-H2O-CO2-CO) an internal fluid equation of state may be preferred. 

Bug corrections:

Augite(G) model bug: The code to evaluate generic order-disorder models (i.e., model types 6 and 8) was based on the assumption that the disordered endmembers of a solution model had no configurational entropy associated with the crystallographic sites on which ordering occurs. This assumption was valid for all models included in the Perple_X solution model file to date with the exception of the Augite(G) clinopyroxene model of Green et al. (2016). The error over-stabilized the Augite(G) model. 

melt(G) bug: the internal routine required to compute configurational entropy for the melt(G) solution model did not renormalize the non-volatile molecular species site multiplicity if the water species had finite concentration. The result of this error was to destabilize the melt phase, particularly at high pressure, in calculations for water-bearing systems. 

Data file modifications:

Gt(W) modification: the pressure dependence of the excess terms for the Gt(W) garnet model has been modified to match the values used by Green et al. (2016). It is unlikely this modification is significant. 

hp622ver.dat: the eos flag for molecular volatile species has been changed from the code for an ideal gas (10), to that of ambient pressure ideal gas species (1).

Augite(G) modification: the odi endmember of the Augite(G) clinopyroxene model is now defined by an internal DQF (within the solution model) rather than in the thermodynamic data file as in former versions.

Technical issues:

Internal special eos codes: formerly internal eos (100 + i) codes were associated with entities in a thermodynamic data file which had the same name as the i-special components indicated in, if present, the special component section. These codes have been incremented by 100 (i.e., 200 + i). This allows distinction between special eos codes used in the thermodynamic data file and those assigned to special composants. Future versions can exploit this distinction to prevent inconsistent usage. An error trap is also needed to prevent the use of non-standard EoS for standard molecular species.  

FORTRAN stdout unit identifier: previous versions of Perple_X have not assumed that stdout (console output) is associated with any particular logical unit number. In the present version it is assumed that stdout is identified by LUN 6.

Nov 28, 2016 Solution model/Perple_X bugs

Nov 28, cAmph(G), Green et al., 2016: the m2 site multiplicity for this model has been corrected from 1 to 2. 

Nov 28, Augite(G), Green et al., 2016: the Perple_X implementation of the Green et al. (2016) augite model had incorrect expressions for the site fractions of Mg on the octahedral sites. Additionally, the model used the true tetrahedral clinopyroxene site multiplicities, m[T1] = m[T2] = 1, but was parameterized for effective multiplicities of m[T1] = m[T2] = 1/4. These errors over-stabilized the Augite(G) clinpyroxene model.

Nov 25, inconsistent DQF implementation: if an ordered species in a type 8 solution model (solutions with a prismatic composition space and order-disorder) was defined in terms of an endmember whose properties involved a DQF corrrection, then Perple_X did not implement the DQF correction correctly in static minimization calculations and in the initial stage of adaptive minimization calculations. However, the DQF corrections were implemented correctly during the iterative (final) stages of adaptive minimization, with the consequence that the program generally recovered to the correct result. The exception to this generality occurred at conditions where the type 8 solution was marginally stable. In this case, it was possible that the incorrect DQF correction destabilized the solution to such an extent that it was not refined during the iterative stages of adaptive minimization. This effect would tend to cause poorly resolved phase boundaries. Additionally, because the approximate compositions obtained during the static minimization were potentially far from the true compositions, the error had the potential to cause poor convergence and/or numerical instability. The error affected the following models: Bi(W), Sa(WP), Bi(WPH), cAmph(DP), cAmph(DP2), cAmph(G). It is probable that the error was the source of numerical instability that plagued users of the Diener et al. (2007, 2011) clinoamphibole model. 

Nov 23, Solution model reformulation error [Chl(W)]: The White et al. (JMG, 2014) Fe-Mg-Mn aluminosilicate silicate solution models are based on the reasonable, but logically inconsistent, approximation that Mg and Fe order across octahedral sites, but that Mn does not. The inconsistency created cases in which Perple_X incorrectly reformulated solution models if certain endmembers within the composition space of a calculation were excluded. For example, if the afchl endmember of the Chl(W) solution model, which is necessary to describe Si-Al disorder in the Mn-free system, was excluded from a calculation for the FeO-MgO-MnO-Al2O3-SiO2-H2O system, then various pointers were set incorrectly (resulting in failed optimizations). In this example, the error is corrected by either restoring the afchl endmember or by excluding the ames endmember in addition to afchl. An error trap (ver076) has been added to halt Perple_X and alert the user in the event of incorrect solution model reformulation. 

Nov 4, 2016 Perple_X 6.7.4: The modifications in this version are unimportant for most users, they are noted below primarily as a matter of record.

hybrid_EoS Perple_X option keyword: To make the use of internal fluid equations of state more flexible and transparent the equation of state used for pure fluids is now specified by the hybrid_EoS keyword, which may be changed from its default values in the Perple_X option file. As a consequence of the added flexibility a number of internal fluid equations of state, which differed only in the choice of the equation of state used for pure fluids, became redundant and have been eliminated. 

Ethane: C2H6 has been added to the C-buffered COH MRK hybrid fluid EoS (fluid EoS #10).

Pure fluid EoS: The Bottinga & Richet (1981) CO2 EoS and the Haar et al. (Steam Tables, 1982) are accessible only through the hybrid_EoS keyword.

Deleted pure fluid EoS: The Halbach & Chatterjee (1981), Delaney & Helgeson (1978), Brodholt & Wood (1993), Saxena & Fei (1987) EoS have been removed because, at least the Perple_X implementations of, these EoS did not extend to ambient pressure. The EoS will be restored upon request. 

Deleted special EoS thermodynamic data base codes: the following special EoS codes are no longer recognized in thermodynamic data files: 604, 606, 700, 701

Modified special EoS thermodynamic data base codes: the 116 code formerly pointed to the HSRMK EoS for methane, 116 now points to the MRK EoS for ethane.

Oct 27, 2016, Perple_X 6.7.4:

melt(G): If the wollastonite (woL) or sillimanite (silL) endmember of this model was excluded from a calculation, Perple_X assigned the wrong solution model routine to the model and produced nonsensical results.

cAmph(G): The site limit fraction expression derived for the site fraction of Fe on the M1 site was incorrect (it included the Ti-Tschermaks endmember tts) in the 6.7.4 solution_model.dat file. The error appears to have caused excessive stability for clinoamphibole. 

Oct 16, 2016, Perple_X 6.7.4:

Order/Disorder Calculations: Changes to the order/disorder routines made in the initial version (Oct 6, 2016) of Perple_X 6.7.4 introduced several severe errors that affected all calculations with order/disorder solution models with the exception of the melt(G) model. The errors have been corrected.

PSSECT: the option to show only phase fields with a specified phase assemblage has been corrected in Perple_X 6.7.4, the bug persists in earlier versions.

Oct 6, 2016, Perple_X 6.7.4: This revision includes modifications necessary to accommodate the solution models created by Green et al. (JMG, 2016) for their metabasic rock phase equilibrium model. The relevant solution models {melt(G), Augite(G), and cAmph(G)} have been added to the 6.7.4 solution_model.dat file and the requisite make definitions have been added to hp622ver.dat. I am grateful to E.C.R. Green for her brilliant detective work in debugging the Perple_X version of melt(G) and for her insistence on the importance of the Helffrich Green Stuffed Moles Normalization Factor therein.

This revision corrects several minor bugs present in the 6.7.3 version:

1) If a solution model with a single o/d parameter was fully disordered, then under certain circumstances Perple_X assigned the ordered state to the model. This bug potentially destabilized the corresponding phase at high temperature.

2) FRENDLY did not output reaction data involving phases described by the ideal gas (Pr, T) reference state (EoS = 1) conventionally used to compute fugacities. If gaseous species are assigned the ideal gas (P, T) reference state (EoS = 10, in recent data files), results from FRENDLY correspond the usual activity (a) convention, i.e., users who wish to compute conventional fugacities (f) should check the EoS flag specified in the data file and either change it to EoS = 1, or do the math accordingly (f = a*P).

Sep 5, 2016. T_melt bug,  Perple_X 6.7.3 (persists in 6.7.2): The T_melt parameter (set in perplex_option.dat) specifies a temperature threshold below which melt endmembers are destabilized. As a consequence of a bug introduced April 12, 2016, in calculations using a melt solution model with n-endmembers, Perple_X did not destabilize the correct n-endmembers. The bug exists and has not been corrected in Perple_X 6.7.2.

Modifications/Corrections, Perple_X 6.7.3:

Jul 19, hp622ver.dat, DEW13ver.dat: Typos in hp622ver.dat and DEW13ver.dat (formulae written with "CAO" or "SIO2" rather than "CaO" and "SiO2" as components) prevented Perple_X from reading these files.

Jul 12, O(HP), O(HPK): Because the Ca-solubility predicted by the Jul 10 version of the O(HP) olivine model has significant consequences at high temperature, the original, Ca-free, version of the O(HP) model has been reinstated and the model for Ca-bearing olivine has been renamed as O(HPK).

Jul 10, O(HP): The version of the olivine solution model O(HP) created in the June 1 copy of solution_model.dat merged the ideal monticellite (Mont) and former O(HP) models for olivine. The merged model predicts excessive Ca-solubility. The failing has been corrected by adding a symmetric monticellite-forsterite excess term (Kawasaki, J Min Pet Sci, 96:54-66, 2001) to the combined model.

Jun 30, bug: Corrects a bug that caused an infinite loop if a user specified a solution model file, but no solution models.

Jun 30, bug: Improves the initial volume guess used for the third order Birch-Murnaghan EoS (i.e., uses the Murnaghan EoS).

Jun 19, Sp(WPC): Eliminates the replicated Sp(WPC) model from the solution model file solution_model.dat.

Jun 13, Eos 12/14 bug: A bug that prevented Perple_X from reading Brosh/CALPHAD format thermodynamic data (eos = 12 or 14) has been corrected. The bug was introduced into the code May 25, 2016.

Jun 13, Cpx(JH), Opx(JH), Opx(W) solution models: tetrahedral configurational entropy for these models was computed assuming a site multiplicity of two and one-fourth the disordered tetrahedral site fractions; the model has been changed to use a false site multiplicity of one-fourth with the fully disordered tetrahedral site fractions.

Jun 9, Aqeuous Species EoS and data: two equations of state for aqueous electrolytes and neutral species have been added to Perple_X: the Revised HKF Formulation (EoS 16, Tanger & Helgeson 1988, Shock et al. 1992, Sverjensky et al. 2013) and the Anderson Density Extrapolation Model (EoS 15, Anderson et al. 1991, Holland & Powell 1998). The HKF aqueous species data base for the Deep Earth Water Model (DEW, Harrison & Sverjensky 2013) has been converted to Perple_X format in the file DEW13ver.dat and the data summarized by Holland & Powell (1998, 2011) for the Anderson Model have been added to hp622ver.dat. At present, the data can only be manipulated with FRENDLY, aqueous species are automatically rejected from calculations with VERTEX or MEEMUM.

Modifications/Corrections to Perple_X 6.7.3:

Jun 8, FRENDLY 64 bit Windows version: the 64 bit Windows version of FRENDLY compiled June 6 was a debug copy that ignored user responses, the user friendly version has been restored.

Jun 6, Windows compiler problems: The XE-2015 Intel Fortran Compiler has been adopted to make Perple_X compatible with Windows 10. The version of 6.7.3 initially generated with this compiler, on-line June 1, was unstable apparently because of overly aggressive optimization. The current version has been compiled with less aggressive optimization.

Jun 6, Saturated component bug: entities in the saturation component space defined by a make definition were, under certain circumstances, identified as silicate melt endmembers and destabilized at temperatures below the T_melt threshold specified in perplex_option.dat. This bug was created on April 12 in the 6.7.2 version of Perple_X, it has only been corrected in the 6.7.3 version.

Jun 1, Output file format for 1d phase fractionation calculations has been modified: see 1d_fractionation_files_format.txt

Jun 1, hp11_solutions.dat removed: the hp11_solutions.dat solution model file has been merged into solution_model.dat.

Jun 1, Chl(W) solution model: Mn-endmembers have been added by P.-H. Trapy (Montreal Polytechnic) to the White et al. (2014) model for chlorite in solution_model.dat. Additionally an error in the species limit expressions for the Chl(W) model has been corrected.

Apr 20, Perple_X 6.7.3: This revision allows specification of pressure-temperature dependent enthalpy of ordering functions for order-disorder solution models. Because such functions were previously not read from the solution model file, older versions of Perple_X cannot read 6.7.3+ data files. The opportunity provided by this issue was exploited to introduce more flexible specification of the pressure-temperature functions used for DQF corrections, Margules coefficients, and van Laar size terms entered in the thermodynamic data and solution model files.

hp11_solutions.dat: various corrections deduced by Oliver Shorttle (Cal Tech) have been made to the Perple_X versions of the Opx(JH), Cpx(JH), Melt(JH), and Sp(JH) solution models for the Jennings & Holland (J Pet, 56:869-892, 2015) mantle melt model.

hp622ver.dat: the TC-D622 version of the Holland & Powell (2011) data set has been formatted as a Perple_X 6.7.3 thermodynamic data file.

runPerplexBatchVp: A C-script to run multiple batch Perple_X jobs has been made available courtesy of Brenhin Keller (Princeton).


Apr 12, VERTEX/MEEMUM: identifies endmembers of type 23-24 solution models as melt endmembers regardless of the EoS flag set in the thermodynamic data file. This change makes the "T_melt" option in perplex_option.dat more effective. 

Mar 17, VERTEX: cleans up print file output for convex-hull optimization calculations

Mar 17, BUILD: adds traps/tests for I/O options involving chemical potential and saturated-phase calculations

Mar 10, FLUIDS: for certain C-O-H-S EoS choices an uninitialized log->ln conversion factor caused the program FLUIDS to output NaN or Inf numbers for fO2 and fS2.

Mar 10, hp11ver.dat: the EoS flags for C-O-H gas species have been set to exploit internal EoS. Gas species data for FeO, Fe, SiO2, SiO, Si, Mg, MgO and O have been added from the HSC data base.

Mar 10, solution_model.dat: the ideal periclase-ferropericlase solution model "P" has been deleted, use "Wus" in its place. 

Mar 7, VERTEX/MEEMUM: These programs have been modified to permit refinement of compositions around the endmember compositions of a solution, this change stabilizes computations involving nearly pure solution phases.

Feb 27, FRENDLY bug: in calculations of 1-dimensional tables, FRENDLY output 2-dimensional tables with the sectioning variable incremented at unit intervals from zero to the user specified sectioning value. The error has been present since Feb. 15 2014 (6.6.8).

Feb 27, FRENDLY bug: an error trap (ver073) intended to test for duplicate entries in thermodynamic data file prevented FRENDLY from doing multiple calculations with the same phase.

Feb 27, Perple_X (Feb 10): the link structure (include statements) of WERAMI, MEEMUM, and VERTEX were changed to prevent compiler optimization problems.

Feb 27, UNIX makefile: the makefile has been modified to force static linking.

Dec 17, Perple_X 6.7.2:

hp11_solutions.dat/hp11ver.dat: The solution models and thermodynamic data (courtesy of Pierre Bouilhol, Durham) for the Jennings & Holland (J Pet, 56:869-892, 2015) mantle melt model have been added to the hp11ver.dat thermodynamic data file and the hp11_solutions.dat solution model file. This model can only be used with versions of Perple_X compiled after Dec 16, 2015.

Make definition error: Perple_X potentially associated the wrong equation of state with entities defined by a make definition. The error would be severe. The bug has been present since the introduction of make definitions (~2006).

MEEMUM bug: MEEMUM did not function correctly with convex hull optimization calculation input files generated by BUILD. MEEMUM has been modified to permit the use of input files for any type of Perple_X calculation.

Dec 1, Perple_X 6.7.2:

b89ver.dat/b92ver.dat/ba96ver.dat format error: The upper bound on the temperature interval (EoS parameter d9) for endmembers with explicit thermal disordering (i.e., ab, kf, ge, and do) was omitted in the thermodynamic data files b89ver.dat, b92ver.dat and ba96ver.dat. The omission caused calculations with the aforementioned endmembers to fail. The Perple_X programs have been modified to read the corrected files. The error was introduced with the 6.6.+ version of Perple_X (ca 12/2010).

koma06ver.dat thermodynamic data file: this file (courtesy of Pierre Bouilhol, Durham) corresponds to the Komabayashi and Omori (PEPI 2006) data base for dense hydrous Mg silicates.

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 that the 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 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. 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 bug: versions 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.

April 2003 through June 2011 updates

Updates Prior to April 2003