Perple_X Updates¶
This page lists recent changes and bugs in Perple_X. If a bug is indicated for a program that you do not use, you need not concern yourself with the bug.
Previous logs are at:
7.2.0 - March 1, 2026¶
Maintaining backward compatibility with the numerous incarnations of THERMOCALC (aka HPx-eos) solution models has been a logistical nightmare. To mitigate this problem, 7.2.0 modifies the make definition system to reduce the number of definitions specified in Perple_X thermodynamic data files and to eliminate the potential for unintended interference from made entities in calculated phase relations. Additionally, 7.2.0 emulates THERMOCALC’s ability to modify the properties of endmembers with configurational disordering internally. These changes largely decouple the models in the solution model file from the make definitions in the thermodynamic data file. The changes are discussed in detail below.
What you really(!) need to know¶
7.2.0 includes changes to the thermodynamic data and solution model file format that cannot be read by older versions of Perple_X.
7.2.0 can be used with all Perple_X files generated after June 2010.
Problem definition files created with 7.1.20- may not generate identical results with the 7.2.0+ thermodynamic and solution model files because of changes in solution model and endmember names. This issue is critical for the THERMOCALC models for ilmenite and spinel:
Ilm(DS6)has been eliminated.Use
Ilm(WPH)for all ds6.33- thermodynamic data files.Do not use
Ilm(WPH)with ds6.34+ thermodynamic data files.When using
Ilm(WPH), do not excludeilm(this is contrary to previous best practice).Use
Ilm(W24)for all ds6.34+ thermodynamic data files.Do not use
Ilm(W24)with ds6.33- thermodynamic data files.Use
Sp(WPC)for all ds6.22- thermodynamic data files.Do not use
Sp(WPC)with ds3.33+ thermodynamic data files.Use
Sp(HGP)for all ds6.33+ thermodynamic data files.Do not use
Sp(HGP)with ds6.22- thermodynamic data files.When using
Sp(HGP), do not excludespandherc(this is contrary to previous best practice).
Solution models
Omph(GHP),oAmph(DP), andcAmph(DP)require different DQF corrections for ds5 and ds6 thermodynamic datasets. In 7.2.0, these corrections are no longer provided in the thermodynamic data files. Rather, they are specified at the end of each solution model. As provided, the 7.2.0 solution model file specifies the ds6 corrections. To use these models with a ds5 thermodynamic data file, comment out the ds6 corrections and un-comment the ds5 corrections.The solution models for talc, brucite, phase-A, and clinohumite,
T,B,A-phase, andChum, respectively, have been renamedT(F),B(F),A-phase(F), andChum(F).
Technical details¶
7.2.0 distinguishes three types of make definitions:
Standard make definitions, as in previous versions of Perple_X, specified in the thermodynamic data file header, e.g.:
begin_makes | standard make definitions qfm = 2 mt + 3 q - 3 fa DQF(J/mol) = 0 oen = 1 mgts + 1 acm - 1 jd DQF(J/mol) = -15000 + 0.15 * p_bar ... end_makesAn entity made in this manner exists independently of any solution model.
Solution-specific make definitions, signaled by the suffix
_q(e.g.,wL_q), exist only within the context of a solution model. Such entities are defined in the thermodynamic data file header, e.g.:begin_makes | solution-specific make definitions wL_q = 1 h2oL DQF(J/mol) = 0 siL_q = 8/5 silL DQF(J/mol) = 0 faL_q = 2 faL DQF(J/mol) = 0 ... end_makesbut must be invoked at the end of the solution model in which they are to be used, e.g.:
begin_dqf_corrections DQF(wL_q) = 0 DQF(siL_q) = -7800 DQF(faL_q) = -8200 - 1.4 * P_bar ... end_dqf_corrections
DQF increments are cumulative. Thus, the specification in a solution model customizes the made endmember in the context of the solution model. Allowing this customization reduces the number of make definitions that must be specified in the thermodynamic data file. The solution-specific nature of
_q-type make definitions limits their potential to interfere in calculated phase relations. For example, a common problem in Perple_X calculations involving TC melt models is that theh2oLendmember becomes stable with respect to real water at high pressure and low temperature. This problem is circumvented in 7.2.0 by makingwL_q = 1 h2oL, and then excludingh2oLfrom the calculation.Modifications of endmembers with configurational disordering are specified within a solution model but apply globally. For example, in
Ilm(WPH):begin_special_operations spop(ilm) disorder dqf(J/mol) = 1992.8 - 2.1 * T_K spop(hem) disorder dqf(J/mol) = 0 end_special_operations
spop(name)identifies a real (i.e., not made) entity to be modified and used in the solution model; the keyword that follows (disorderorinverse,normalororder, andequilibrium) indicates the nature of the base modification and a DQF correction to be applied to the base. The name of the endmember used for output is subsequently modified by pre-pending the first character of the modification keyword. Thus,spop(ilm)modifies and renames theilmendmember todilmto represent the properties of disordered ilmenite.Formerly, use of
Ilm(WPH)required the creation of a new endmemberilm_nolby duplicating theilmentry and stripping the order-disorder model from it.dilmwas then made fromilm_nolby adding a DQF to both remove the order-disorder model effects from the reference constants to obtain the true base function and to account for the additional DQF specified in the TC model. After this was done, it was necessary, or at least advisable, to exclude bothilmandilm_nol. In 7.2.0, these exclusions are unnecessary becausespop(ilm)replacesilmwithdilmand no intermediate entity, such asilm_nol, is created.
Minor patches and modifications¶
Solution models:
Opx(W24),Cpx(W24),Ilm(W24), andBi(W24)from Weller et al. (2024) added tosolution_model.dat.TC ds6.36 thermodynamic dataset added as
hp636ver.dat.An optional
solvus_tolerancekeyword can be placed in the final section of a solution model. When present, this keyword locally overrides thesolvus_toleranceset globally by thesolvus_toleranceoption in perplex_option.dat.Trap added (routine
savdyn,rlib.f) to prevent phase compositions from moving out of the thermodynamic composition space in calculations as a function of mobile components. This behavior is theoretically correct because a mobile component may cease to be a constituent of a stable phase as its chemical potential falls; however, Perple_X’s ill-advised compositional normalization triggers misleading diagnostic messages when such conditions occur. A more robust solution to this problem will be implemented in the future.Allow made entities in the mobile/saturated phase component composition space.
Allow an optional version tag (
720) read from the first line of thermodynamic data files. The tag is used to test whether make definitions in a thermodynamic data file are compatible with the solution model file in use.
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 a user selected internal equation of state. If a thermodynamic data file specifies more than one special component, and the user calculates phase relations of a system consisting entirely of the second special component, Perple_X will terminate with the error message:
**error ver013** ##### is an incorrect component name, valid names are: ...
where ##### are blank characters. A workaround solution to this problem is to specify the first special component in the problem definition file and set its amount to zero.
Web page formatting and unresolved links¶
On March 16, 2021, perplex.ethz.ch was migrated to a new server, resulting in numerous formatting problems and unresolved links. These errors will be gradually corrected. If a formatting error or bad-link on this site is particularly bothersome, contact me and I will give its correction priority.