Background

Geothermal energy has acquired a key position in the mix of renewable energies due to its very effective heat supply and the ability to provide base load electrical energy. Many current model concepts addressing deep geothermal exploration focus on thermal, mechanical, and hydraulic interactions (e.g. Gholizadeh Doonechaly et al. 2016; Magnenet et al. 2014; Major et al. 2018; Yoon et al. 2014; Zhao et al. 2015), while neglecting hydrogeochemical effects. This is partly due to a lack of experimental data for short-term hydrogeochemical processes in the vicinity of production and injection wells (Baumann et al. 2017). Ambitious facilities running at high volumetric flow rates and temperatures revealed that even small changes of the hydrochemical equilibria can lead to serious problems with precipitations in subsurface and surface level facilities. Such precipitations tend to clog casings, heat exchangers, and submersible pumping systems of the facility and may even lead to porosity reduction in the reservoir. Any of these risks can lead to economically adverse situations for the operator, due to the necessity of maintenance and plant downtime. This has led to an increasing awareness for hydrochemical processes in the engineering community.

Hydrogeochemical models are applied in order to predict precipitation reactions in surface level facilities and hydraulic changes induced by hydrogeochemical reactions in the reservoir (e.g. Baumann et al. 2017; Fritz et al. 2010; Nitschke et al. 2017; Reed 1989; Regenspurg et al. 2015). These geochemical model concepts rest on four foundations (Moog et al. 2015):

  • an assumption on the initial composition of the system under consideration,

  • an assumption as to the relevant aqueous (or gaseous) species and solid phases,

  • a thermodynamic database or parameter file which contains thermodynamic data for all relevant aqueous (and gaseous) species and solid phases, usually conveyed as code-specific formatted parameter file, and

  • a suitable code which, upon input of initial system composition and parameter file, calculates its composition at thermodynamic equilibrium.

“The model” is a term which is applied to both the hydrogeochemical concepts and reactions which are implemented to solve the posed questions and the software which implements a numerical solver for the set of thermodynamic equations and the parameter file with the thermodynamic data edited for the specific software code. This parameter file usually contains function parameters to upscale the database to different temperatures and pressures.

In practical terms, a parameter file (and not an underlying database) is usually part of “the model”. Along with boundary conditions set for any system under consideration, it imposes substantial assumptions as to speciation, activity corrections, and selected thermodynamic data on all calculations. For users not acquainted with database development, it is usually not possible to assess for which conditions it was optimised and tested. The situation is not improved by the fact that many parameter files are poorly documented and do not state the validity range for temperature functions, where thermodynamic data were obtained from, or whether solubility constants were derived from solubility equilibrium studies or thermochemical data.

As it is almost impossible to test the model codes for all possible applications, the implementation of thermodynamic databases has to adapt to new applications. The exploration and production of deep hydrogeothermal energy is a new application and requires careful checking of the databases and parameter files used in the model.

Some efforts to ease the user with the decision of a database were made in recent years. Such comparisons involving different thermodynamic data and/or models have been performed for calcite (Haase et al. 2013), speciation calculations due to \(\hbox {CO}_{2}\) injection (de Lucia et al. 2012), or for sulphate minerals (Doubra et al. 2017; Zhen-Wu et al. 2014). Voigt et al. (2018) developed a new parameter file for \(\hbox {CO}_{2}\) storage at elevated temperatures from the core10.dat parameter file (Neveu et al. 2017). Furthermore, the parameter files phreeqc.dat and pitzer.dat were validated for a wide range of minerals and conditions (Appelo 2015; Appelo et al. 2014). Nevertheless, these studies still leave an incomplete picture with regard to widely used model approaches for the solubility of scale-forming minerals at temperatures up to \(200\,^\circ \hbox {C}\), pressures up to 500 bar, and NaCl concentration up to 6 molal.

In this study, we apply some widely used parameter files and model codes on published experimental data which are meaningful for hydrogeothermal applications and assess the reliability of those files. The benchmarking focusses on the solubilities of important matrix and scale-forming minerals (barite, celestite, calcite, siderite, and dolomite). Simulations were performed using the popular geochemical code PHREEQC and the thermochemical programming library ChemApp along with the parameter files slop16.dat, phreeqc.dat, pitzer.dat, and llnl.dat The results were compared to experimental data at relevant pressure, temperature, and salinity conditions.

This study can therefore serve as a documented benchmark for the model code performance and support the selection process of thermodynamic parameter files. Furthermore, user awareness is raised to the fact that each parameter file is valid for a particular range of conditions only which is usually not documented and that they must be checked with experimental data (validation) in order to gain confidence into their credibility if applied to other systems.

Methods

Definition

The term “database” needs further explanation here. It is often used in an unclear manner.

In view of the practical requirements necessary to create internally consistent and quality assured parameter files, we propose the following definition: a “database” is a technical framework which ensures that dependent and independent data are stored in a manner which maintains internal consistency when independent data are modified. Examples for databases in this sense are THERMOCHIMIE (Giffaut et al. 2014) or THEREDA (Moog et al. 2015). They constitute secured sources for thermodynamic data from which parameter files can be exported. However, the majority of geochemical calculations are performed using parameter files which are not backed by a database. They are also referred to as “databases” but are actually plain-text ASCII files which contain thermodynamic data in a code-specific format. Such files can easily be shared, modified with usual text editors, and subsequently forwarded to colleagues. If such a file is neither renamed nor documented internally with regard to modifications, it becomes increasingly difficult to judge which version one is working with. Frequently, such files are poorly documented and one can never be sure whether after the addition or modification of data, internal consistency is maintained. For such code-specific files we use the term “parameter file”.

Equations: temperature and pressure dependencies

Temperature dependence of the solubility constant \(\mathrm {log}_{10} \, {K}\) in PHREEQC is by default implemented as a polynomial correction function with the form:

$$\begin{aligned} \log _{10} K=A_1+A_2T+\dfrac{A_3}{T}+A_4 \cdot \log _{10} T+\dfrac{A_5}{T^2}+A_6T^2 \end{aligned},$$
(1)

where T is the temperature and \(A_1{-}A_6\) parametrise the temperature function and are written in the parameter file. For some entries, no correction parameters \(A_1{-}A_6\) exist. In that case, usually enthalpy of reaction (\(\Delta _r H\)) is given, which can be used for temperature corrections by the following equation, usually referred to as two-term extrapolation:

$$\begin{aligned} \log _{10} K = \log _{10} K_r + \frac{\Delta _r H^0}{2.303 \cdot \mathrm {R}} \cdot \left( \frac{1}{T_r}-\frac{1}{T} \right) \end{aligned},$$
(2)

where R is the gas constant and \(K_r\), \(T_r\) the equilibrium constant and temperature at reference conditions. However, this approach is best suited for reactions having species with equal charges on both sides (“iso-coulombic reactions”) exhibiting a standard molar heat capacity of reaction \(\Delta _r S^0\) and a standard entropy of reaction \(\Delta _r C_p^0\) near zero. The application of this approximation should therefore be done with caution, especially for dissolution reactions which involve the hydration of ions.

Pressure dependence in PHREEQC is implemented using a so-called HKF-modified-Redlich–Rosenfeld (HKFmoRR) equation (Appelo et al. 2014). It is an extension of the expression for standard partial molal volumes from the HKF formalism which is valid at infinite dilution only. In the HKFmoRR equation, additional terms for the ionic strength dependence of partial molal volumes are added. Altogether nine coefficients (five from the original HKF equations and four for the ionic strength dependence) are needed for each aqueous species.

ChemApp on the other hand natively supports the use of the HKF formalism. Thus, the influence of temperature and pressure is implemented accordingly to calculate the corresponding Gibbs energy functions of all aqueous species (for equations, cf. Helgeson et al. 1981; Tanger and Helgeson 1988). For solid phases, standard molar enthalpies of formation, standard molar entropies, and heat capacity functions were used as given in slop16 (http://geopig.asu.edu/sites/default/files/slop16.dat). Thus, the parameter file used for ChemApp is strictly applicable for low-saline solutions only, but features a lot more aqueous species (including complexes) than Pitzer databases usually do.

Databases

Among the databases available, slop16.dat or previous versions from Helgeson and co-workers are widely used and serve as a quasi-standard in geochemical modelling. Despite the slop database being widely accepted and used, it has to be taken into consideration that many data had been derived from a knowledge base from circa 1970–2000 and may be outdated by now. In part, data rely on correlation only. This applies especially to high temperature and high pressure conditions, for which fewer experimental data are available than for standard conditions (25 \(^\circ \hbox {C}\), 1 bar) (cf. Sverjensky et al. 1997). Almost all thermodynamic data which are currently used in hydrogeochemical codes rely to some extent on this database. The data listed in slop16.dat allow for the calculation of p,T-dependent Gibbs energies of formation of aqueous species and solid phases. For law of mass action codes, these data need to be transformed into equilibrium constants using numerical tools like SUPCRT92 (Johnson et al. 1992) or CHNOSZ (Dick 2008). Examples where many parameter file entries are derived from slop data are (to name only a few): llnl.dat (PHREEQC), thermo_pitzer.tdat (Geochemist’s Workbench) (Bethke 2007), or data0.ypf (EQ3/6) (Wolery 1992). Gibbs energy minimization (GEM) codes such as ChemApp (Petersen and Hack 2007) or GEM-Selector (Kulik et al. 2013) can make direct use of the thermodynamic data from slop, using the revised Helgeson–Kirkham–Flowers (HKF) formalism (Helgeson et al. 1981; Tanger and Helgeson 1988). However, it must be kept in mind that the speciation model implemented in the aforementioned parameter files is not necessarily identical to the one in the original HKF-database slop16. The same thermodynamic data (for instance solubility constants calculated from Gibbs free energies of reaction) transferred to a parameter file implementing a different speciation scheme invariably lead to different calculational results. For this reason, it is an interesting exercise to benchmark a parameter file created from the original slop16.dat.

Thermodynamic databases contain thermodynamic properties at standard state conditions (e.g. infinite dilution) and at reference temperature and pressure (e.g. 25 \(^\circ \hbox {C}\) and 1 bar). The model parameters used for extrapolating thermodynamic data (e.g. \(\mathrm {log}_{10} \, {K}\)) at elevated temperature, pressure, and salinity are typically derived from regression of experimental data. Examples for this procedure are parameter estimation for pressure dependence (Appelo et al. 2014) or Pitzer parameters (Appelo 2015), statistical machine learning algorithms for fitting barite and celestite solubility (Safari et al. 2014a, b) or global optimisation of Gibbs energies (Miron et al. 2015, 2016, 2017). Thermodynamic data files, which are in active development, will sooner or later see an adjustment, taking into account newly available thermodynamic data. However, this process is not always comprehensively documented for the end user, making it difficult to judge the state of currently distributed thermodynamic data.

The evolution of some of the most important parameter files for hydrogeochemical modelling in geothermal systems is shown in Fig. 1. The influence of slop16 is illustrated because it is of major importance for an understanding of possible error transmission in hydrogeochemical parameter files. This figure is by no means exhaustive and does not express an assessment of the authors concerning parameter files in the figure. Dashed arrows express only little influence, while solid arrows stand for large influence. As can be seen, most of the parameter files used rely to a large extent on data from the Helgeson working group (slop data). The two numerals behind slop indicate the year when this version of the database was released. Native PHREEQC parameter files (phreeqc.dat and pitzer.dat) represent an exception here because they only adopt partial molal volumes for aqueous species at infinite dilution from HKF and extend them to higher salinities applying a model approach proposed by Appelo (2015). The origin of the thermodynamic data in those two files is not documented.

Fig. 1
figure 1

Relations and historic development of some of the most important thermodynamic data files for hydrogeochemical modelling. The data0 parameter files comprise those with the file endings .pit, .shv, .cmp, .sup, .ymp, .ypf, and .skb

In the present work, four different parameter files are used for direct benchmarking calculations: slop16.dat, phreeqc.dat, pitzer.dat, and llnl.dat. In order to make slop16.dat usable for ChemApp (the Gibbs Energy Minimization code), it had to be reformatted (data structure and cal to J conversion). Among the parameter files available from PHREEQC, phreeqc.dat and pitzer.dat were recently updated for geothermal purposes (Appelo 2015; Appelo et al. 2014). Benchmark calculations for anhydrite, gypsum, silica, barite, calcite, and some salts are provided in the appendix of ditto. Furthermore, llnl.dat was selected for representing the LLNL (Lawrence Livermore National Laboratory) family of parameter files, as it is a translation of a Geochemist’s Workbench GWB parameter file (thermo.com.V8.R6.230) into PHREEQC format.

To present an overview for the parameter files used in the present study, we summed up the source of thermodynamic data, the activity model associated with each database, and the formalism for pressure and temperature dependence in Table 1. As shown in the table, Pitzer equations (Pitzer 1973) have a much higher ionic strength limit than the Davies equation (Davies 1938) or the extended Debye–Hückel equation (Debye and Hückel 1923; Helgeson et al. 1981) and are thus better suited for highly saline solutions. The authors acknowledge the fact that the extended Debye–Hückel equation might be valid to relatively high ionic strength when ion-specific parameters were fitted from mean-salt activity-coefficient data. However, this imposes the responsibility to the user to check whether the system composition is covered by the range of validity for the Debye–Hückel equation.

Different activity models and differing pressure and temperature dependencies can lead to divergence in calculation results. The reasons for this are due to the fact that solubility is calculated by the activity of the mineral’s compounds in the solution and by the \({\mathrm {log}}_{10} \, {K}\), which is altered at pressures and temperatures differing from \(25\,^\circ \hbox {C}\) and 1 bar.

Table 1 Summary of model approaches used in the present work

Solubility data used for validation of the parameter files

The following tables summarise literature data of solubility for celestite (\(\hbox {SrSO}_{4}\)), barite (\(\hbox {BaSO}_{4}\)), calcite (\(\hbox {CaCO}_{3}\)), (\(\hbox {FeCO}_{3}\)), and dolomite \(\hbox {CaMg(CO}_{3})_{2}\). None of these tables is an exhaustive literature study, but specific focus was put on available high temperature, high pressure, and high salinity data. We therefore selected some key experimental studies which we used for the validation. Especially for solubility in KCl, \(\hbox {CaCl}_{2},\) and \(\hbox {MgCl}_{2}\), additional experimental data are available as in the reviews of e.g. Monnin and Galinier (1988) and Visscher and Vanderdeelen (2012). Many of the data not used in this study may be correct, but due to different combinations of composition space, pressure, and temperature conditions, it was not possible to show these data in the following graphs of this study. Data which had been rejected in previous studies or showed major deviations were excluded. Sampling conditions do not always fit into tables, so if ranges are given, only some intermediate values might have been measured by the authors. Where necessary, conversion to molality was done. For conversions, the temperature-dependent density of pure water was calculated from Wagner and Pruß (2002) and of electrolyte solutions with PHREEQC using pitzer.dat.

Celestite (Table 2)

The data of Müller (1960) show solubilities consistently too high at NaCl molalities above 1, (cf. Monnin and Galinier 1988, Fig. 6) and were therefore excluded from the present study.

Table 2 Solubility data for celestite (\(\hbox {SrSO}_{4}\)), which was used for comparison with calculated solubility in the present study

Barite (Table 3)

Solubility data for high pressure conditions were recently extended by the study of Shi et al. (2012), but the results are displayed as graphs, not as tables. The values are stated in the text only for 483 bar, which is why high pressure calculations were only performed at this specific pressure condition.

Table 3 Solubility data for barite (\(\hbox {BaSO}_{4}\)), which was used for comparison with calculated solubility in the present study

Calcite (Table 4)

Calcite solubility literature data for a broad range of temperatures, pressures, and ionic strengths are summarised in Table 4. Existing data for boundary conditions relevant in geothermal facilities are limited to the few sources reporting solubilities for pressures above several bar and temperatures above 50 \(^\circ \hbox {C}\). Calcite solubilities reported by Miller (1952) for pressures exceeding 10 bar are low compared to Ellis (1963) and Segnit et al. (1962). The latter tried to reproduce data in Miller (1952) with the same experimental setup but failed. Furthermore, the data were rejected in the IUPAC-NIST solubility data series compilation because solubilities of Miller (1952) at 1 bar \(\hbox {CO}_{2}\) partial pressure and “in the mid-range of the temperatures tested were too low” (Visscher and Vanderdeelen 2012, p. 27). Data from Miller (1952) have therefore only been included in the upper 10 % of temperatures (98–102 \(^\circ \hbox {C}\)) measured therein due to the lack of experimental data for high \(\hbox {CO}_{2}\) partial pressures, but should nevertheless be regarded with care.

For the solubility of calcite at \(\hbox {CO}_{2}\) partial pressures in the range 1.5–10 bar, only data from Mitchell (1923) were found. This partial pressure region is of great interest for geothermal problems, as it constitutes the conditions encountered in many reservoirs. In the meta-analysis of calcite solubility from (Visscher and Vanderdeelen 2012; Visscher et al. 2012), they fitted two models through all of the available calcite solubility data. Model 2 from this study uses Pitzer equations (Visscher et al. 2012). The deviation between model 2 and Mitchell (1923) data was very high with up to 12.5 % (at 4 bar \(\hbox {CO}_{2}\) partial pressure). The other data points from Mitchell (1923) fit within an margin of error of 4.2 % and therefore are more credible. As a consequence, we decided to include the data from the fit of model 2 (Visscher and Vanderdeelen 2012; Visscher et al. 2012) in order to account for possible experimental uncertainty.

Table 4 Solubility data for calcite (\(\hbox {CaCO}_{3}\)), which was used for comparison with calculated solubility in the present study

Siderite (Table 5)

Silva et al. (2002) provide a detailed study on solubility in NaCl solutions up to 5.5 molal, but experimental accuracy is probably hampered by the difficulty of measuring pH values in brines. Bruno et al. (1992) measured siderite solubility in acid and alkaline solutions and provide the only comprehensive dataset to study the formation of complexes at pH \(>7\). However, the equilibration time of 3 days is probably too low, as pointed out by Bénézeth et al. (2009), who report equilibrium after about 18 days for temperatures of 25 \(^\circ \hbox {C}\). We did not use data from Yan et al. (2015), who allowed equilibration for only between 0.5 and 3 h in their experiments. Conversely to other publications of this research group, which used the same experimental setup (Shi et al. 2012, 2013), it is not specified how they tested if equilibrium was indeed attained. However, Yan et al. (2015) measured solubility at temperatures exceeding 150 \(^\circ \hbox {C}\) and 334 bar. At higher temperatures, equilibrium with siderite is attained more quickly than at e.g. 25 \(^\circ \hbox {C}\). For temperatures exceeding 100 \(^\circ \hbox {C}\), Bénézeth et al. (2018) report equilibration times below 24 h, which is in accordance with the higher dissolution rate measured by (Golubev et al. 2009) at 100 \(^\circ \hbox {C}\) compared to 25 \(^\circ \hbox {C}\). Therefore, it seems generally possible that equilibrium was reached in the experiments of Yan et al. (2015); however, equilibration times still appear low.

Table 5 Solubility data for siderite (\(\hbox {FeCO}_{3}\)), which was used for comparison with calculated solubility in the present study

Numerical methods

PHREEQC

PHREEQC is a computer program designed to perform a wide variety of aqueous geochemical calculations (Parkhurst and Appelo 2013). For the present work, version 3.3.11 was used from subversion 12535–12702 (Parkhurst 2017) using Windows 10 as operating system. The parameter files pitzer.dat, phreeqc.dat, and llnl.dat were taken as included in those PHREEQC subversions.

ChemApp

ChemApp is a programming library for performing thermochemical calculations by minimising total Gibbs energy of the system (Petersen and Hack 2007). It is commercially available from GTT Technologies. Thermochemical calculations can be executed by a set of subroutines used for chemical equilibrium calculations. In the present work, the revised Helgeson–Kirkham–Flowers formalism for infinite dilution and the revised HKF formalism in combination with the Davies equation (Davies 1938) was used. Generally, also the use of the Pitzer formalism is possible with ChemApp. However, for the present work, no suitable parameter file was available.

ChemApp has its origin in metallurgical applications and is usually applied for conditions when liquid water is not stable. However, a small user community also uses it for calculations related to aqueous equilibrium chemistry. Its usage for this work was due to the special interest of the authors in its applicability for geothermal systems. A different geochemical modelling software that can be used to model geochemical systems is GEM-Selector. The code package uses GEMS3K for doing Gibbs energy minimization (Kulik et al. 2013) and has access to a suite of solution models through the TsolMod library (Wagner et al. 2012). However, testing of this code was beyond the scope of the present work.

R and CHNOSZ

The R programming language and environment for statistical computing and graphics (R core team 2017) was used to write the script which translates the slop16 database into a ChemApp readable parameter file. Version 3.3.3 (codename “Another Canoe”) was used. Calculations of thermodynamic properties from the slop database using the revised Helgeson–Kirkham–Flowers formalism were done with version 1.1.0 of the package CHNOSZ (Dick 2008), an integrated set of tools for thermodynamic calculations in geochemistry and compositional biology. This package implements the revised HKF formalism as in SUPCRT92 (Johnson et al. 1992). Thermodynamic properties calculated from CHNOSZ are comparable to SUPCRT92, as they both implement the same version of the HKF formalism.

Results and discussion

Celestite

Experimental data for celestite were recalculated in pure water and in NaCl solutions. At first, calculations were performed in pure water with varying temperature and at 1 bar pressure below \(100\,^\circ \hbox {C}\) and at saturation vapour pressure above \(100\,^\circ \hbox {C}\) (Fig. 2). Both, phreeqc.dat and pitzer.dat, are able to reproduce the experimental data. It seems as if they were regressed on the experimental data of Howell et al. (1992), mainly because at temperatures below 100 \(^\circ \hbox {C}\), most other experimental values are by about 0.04–0.07 mmol higher. HKF and HKF–Davies shown in Fig. 2 and the following figures abbreviate the HKF approach for infinite dilution and the HKF approach for infinite dilution combined with the Davies equation. Above about 220 \(^\circ \hbox {C}\), the calculations with ChemApp (HKF and HKF–Davies) had convergence problems, which result in the kink of the plot at that temperature. The convergence problem only occurred for this specific calculation. No stability issues were encountered for other calculations. The reason for the difference between the two models can be attributed to the fact that no activity model is used in the HKF approach for infinite dilution. All models based on thermodynamic data from Helgeson et al. show solubilities which are significantly too high (up to 4 times) at temperatures below 200 \(^\circ \hbox {C}\). In order to assess the reason for this discrepancy, \(\mathrm {log}_{10} \, {K}\) values for the reaction \(\hbox {SrSO}_{4} \rightleftharpoons \hbox {Sr}^{{2+}} + {\hbox {{SO}}_{{4}}}^{2-}\) were calculated from CHNOSZ for standard conditions (298.15 K and 1 bar) and compared to phreeqc.dat, pitzer.dat, and literature data. In CHNOSZ, slop16.dat and llnl.dat, \(\mathrm {log}_{10} \, {K}\) for celestite is \(-\,5.68\) compared to \(-\,6.67\) in phreeqc.dat and pitzer.dat. This implies that the equilibrium constant in slop16.dat and llnl.dat favours the solid phase in the reaction more than phreeqc.dat and pitzer.dat do, resulting in higher solubilities. The strontium speciation in the model shows the formation of strontium complexes which occur in concentration by orders of magnitude lower than aqueous \(\hbox {Sr}^{2+}\). Therefore, it is not the speciation model leading to the deviation from solubility data.

Fig. 2
figure 2

Solubility of celestite in pure water at 1 bar pressure below 100 \(\,^\circ\)C and at saturation vapour pressure above 100 \(^\circ \hbox {C}\)

In slop16.dat, Helgeson et al. (1978) is stated as the source for the \(\mathrm {log}_{10} \, {K}\), but therein, no original source for the thermodynamic data is given. Gibbs free energies and formation enthalpies for minerals were regressed by Helgeson et al. (1978) using standard molal entropies, heat capacities, and volumes derived from calorimetric, crystallographic, and density data or estimations from correlation algorithms and Clapeyron slope constraints. To the authors’ knowledge, the first comprehensive study of thermodynamic properties from reaction equilibration of celestite was carried out by Reardon and Armstrong (1987), who suggest that thermodynamic data for celestite prior to their study may have been corrupted due to experiments which did not finally attain equilibrium. The \(\mathrm {log}_{10} \, {K}\) value they established is \(-\,6.67\) and is probably the source of phreeqc.dat and pitzer.dat. As a consequence, it seems possible that the thermodynamic data compiled by Helgeson et al. (1978) do not represent the current state of knowledge for celestite and corrections concerning thermodynamic properties have to be made therein.

Furthermore, a comparison with experimental data is shown in up to 6 molal NaCl solution (Fig. 3). Models based on thermodynamic data from Helgeson and co-workers (slop16.dat) perform poorly again, even at ionic strength’s lower than 0.5 molal where the Davies equation would still be valid (Stumm and Morgan 1996). Initial solubilities at ionic strengths below 0.1 significantly deviate from experimental data due to the too high \(\mathrm {log}_{10} \, {K}\) value. As expected, phreeqc.dat is not able to describe the solubility at very high ionic strengths, but provides remarkably good results. At ionic strengths above 3 molal, experimental data are scarce; however, the available data can be nicely reproduced with pitzer.dat.

In some of the EQ3/6 parameter files, the \(\mathrm {log}_{10} \, {K}\) value was taken directly from SUPCRT92 (data0.ymp), while in others it was partially corrected (data0.ypf). Corrections of the latter were an adoption of the \(\mathrm {log}_{10} \, {K}\) of celestite to \(-\,6.63\) at 25 \(^\circ \hbox {C}\); however, the temperature grid was not adapted, resulting in a \(\mathrm {log}_{10} \, {K}\) of 500 at any temperature other than 25 \(^\circ \hbox {C}\) which is read as “no data” by EQ3/6. Geochemist’s Workbench parameter files are also only partially corrected. The parameter file thermo.tdat has a \(\mathrm {log}_{10} \, {K}\) entry of \(-\,6.43\) at 25 \(^\circ \hbox {C}\), which is close to the value of \(-\,6.67\) from (Reardon and Armstrong 1987). Conversely, thermo.com.V8.R6+.tdat operates with a \(\mathrm {log}_{10} \, {K}\) value of \(-\,5.68\) for celestite, which is comparable with the value from llnl.dat.

Fig. 3
figure 3

Solubility of celestite in NaCl solution at 25 \(^\circ \hbox {C}\) and 1 bar

Barite

Barite solubility was calculated for pure water as a function of temperature (Fig. 4). All models seem to provide a reasonably good description of the solubility; however, the HKF models provide a better agreement with experimental data in the range of 80–150 °C. Nonetheless, the HKF models still overestimate solubility in this range. The error at 100 °C for HKF is \(9{\text{e}}{-}4\) mmol/5.3 %, and \(1.7{\text{e}}{-}3\) mmol/10.4 % for the HKF–Davies model. The PHREEQC models deviate by \(2.3{\text{e}}{-}3\) mmol/13.7% each.

Fig. 4
figure 4

Solubility of barite in pure water at 1 bar pressure below 100 °C and at saturation vapour pressure above 100 °C

To represent conditions in deep geothermal reservoirs, a comparison with experimental data was done for pressures up to 500 bar (Fig. 5). The solubility interpolated from Blount (1977) is adequately described by phreeqc.dat and pitzer.dat, but both parameter files deviate from experimental data by Shi et al. (2012) at temperatures above 200 °C. Calculations with llnl.dat are consistently too low, which is most likely due to the missing pressure correction of \(\mathrm {log}_{10} \, {K}\) in llnl.dat. Note that the upper pressure limit for calculations with thermo.com.V8.R6.230, the parameter file llnl.dat was derived from, is about 86 bar. Among the models based on slop16.dat only HKF–Davies is able to describe the solubility up to about 100 \(^\circ \hbox {C},\) while the HKF model for infinite dilution completely fails due to the ionic strength of 0.1 molal. Above 100 \(^\circ \hbox {C}\), significant amounts of \(\hbox {BaCl}^{+}\) are formed using slop16 with ChemApp (red lines), but not in llnl.dat. The formation of the barium complex can be related to the fact that at about 85 \(^\circ \hbox {C}\), the reaction \(\hbox {BaCl}^{+} \rightleftharpoons \hbox {Ba}^{2+} + \hbox {Cl}^{-}\) shows positive \(\Delta _r G\) (cf. Fig. 6) which means that the reaction proceeds spontaneously in the reverse direction forming \(\hbox {BaCl}^{+}\). As \(\Delta _r G\) becomes more positive at higher temperatures, increasing amounts of \(\hbox {BaCl}^{+}\) occur in the model causing a higher calculated solubility of barite. Comparison of the thermodynamic data with llnl.dat yields the same \(\mathrm {log}_{10} \, {K}\) of − 0.4977, but different \(\Delta _r H^0\) (llnl: 11.142 kJ/mol; CHNOSZ: 13.012 kJ/mol ) and slightly different standard state enthalpy of formation \(\Delta _f H^0\) (llnl: − 693.58 kJ/mol; slop16: − 691.70 kJ/mol). The difference in thermodynamic data is not the reason why llnl.dat does not form \(\hbox {BaCl}^{+}\), as lower \(\Delta _r H^0\) would result in the formation of the complex at lower temperatures. As the tendency to form the \(\hbox {BaCl}^{+}\) complex increases with increasing pressure (cf. Fig. 6), the missing pressure correction in llnl.dat is probably the reason why this complex does not occur in the llnl.dat simulation.

Fig. 5
figure 5

Solubility of barite in 0.1 molal NaCl solution at 483 bar (Shi et al. 2012) and at 500 bar (interpolated by Blount 1977)

Fig. 6
figure 6

Gibbs energy of reaction (\(\Delta _r G\)) for \(\hbox {BaCl}^{+} \rightleftharpoons \hbox {Ba}^{2+} + \hbox {Cl}^{-}\)

Thermodynamic data in the HKF database (slop16.dat) for chloride complexes were taken from Sverjensky et al. (1997) who obtained thermodynamic data (standard partial molal properties) by regression of literature reported dissociation constants \(\beta\). The problem with the \(\hbox {BaCl}^{+}\) data is that literature data for regression (Majer and Stulik 1982) is only available for temperatures up to 85 \(^\circ \hbox {C}\) (cf. Fig. 7) which is precisely where the barium complex is formed at significant amounts in the model for 500 bar pressure.

The dissociation constant of \(\hbox {BaCl}^{+}\) is shown in Fig. 7 at a pressure of 1 bar and at water vapour saturation pressure above 100 \(^\circ \hbox {C}\). At these pressure conditions, the spontaneous formation of \(\hbox {BaCl}^{+}\) would proceed at a temperature of about 5 K less than for pressures of 500 bar. Furthermore, for \(\hbox {BaCl}^{+}\) and \(\hbox {SrCl}^{+}\), Sverjensky et al. (1997) point out the “substantial uncertainty deriving experimental \(\mathrm {log}_{10} \, {K}\) values when the latter range (sic) from about 0 to +1.0”. Consequently, thermodynamic data for the two chloride complexes are not based on sound experimental data. It has been recently shown by Miron et al. (2017) that if new experimental data for complexes are available, the \(\mathrm {log}_{10} \, {K}\) values need to be refined. To give some examples: Differences in logarithmic association constants between slop16.dat data and regression on new experimental data can be as high as 3 (for \(\hbox {CaCl}_{2}^0\)), 1.5 (for \(\hbox {CaCl}^{+}\)), or 1 (for \(\hbox {MgCl}^{+}\)) at pressure and temperature conditions comparable to the experimental data used for recalculations. In the case of \(\hbox {CaCl}^{+}\) and \(\hbox {MgCl}^{+}\), the original \(\mathrm {log}_{10} \, {K}\) values (Sverjensky et al. 1997) were based on data from Majer and Stulik (1982) which is also the source for \(\hbox {BaCl}^{+}\). As a consequence, the occurrence of these complexes at temperatures above 85 \(^\circ \hbox {C}\) is doubtful and probably the source of error for the elevated concentration in the HKF–Davies model at high temperature, high pressure calculations. This example illustrates that apparently sound and well-established thermodynamic data (in this case \(\mathrm {log}_{10} \, \beta\) for \(\hbox {BaCl}^{+}\)) are in fact ill-defined by insufficient experimental data. It further exemplifies that the selected speciation model has a profound impact on the calculated results. When changing a speciation model in thermodynamic databases or parameter files, consistency has to be maintained. This applies especially to thermodynamic data originating from different sources. It is not sufficient to simply include a new species, even if it is based on sound thermodynamic data, without adapting the whole speciation model.

Fig. 7
figure 7

Logarithm of the dissociation constant of \(\hbox {BaCl}^{+} \rightleftharpoons \hbox {Ba}^{2+} + \hbox {Cl}^{-}\)

Recalculation of the solubility as a function of NaCl concentration is shown in Fig. 8. Not surprisingly, the HKF approach for infinite dilution quickly deviates from experimental data due to the ionic strength exceeding the limit of applicability for this approach. As a consequence, we decided not to include the HKF approach for infinite dilution without activity correction in the following calculations, as it is not considered a promising approach for even slightly saline solutions. This was however expected due to the ionic strength limit of 0.001 (Eriksson and Petersen 2013). Both llnl.dat and HKF–Davies provide good results up to about 0.5 molal NaCl solutions, where the limits for the activity correction models are exceeded. The phreeqc.dat database—as in high salinity data for celestite (cf. Fig. 3)—works remarkably well up to a NaCl molality of about 3, which seems to be the limit for the extended Debye–Hückel equation with fitted b-dot parameters. The parameter file pitzer.dat provides a near perfect agreement with the data from Templeton (1960), but overestimates data from Blount (1977). Given the fact that most of the data from Blount (1977) were extrapolated, the data from Templeton are given more credibility.

Fig. 8
figure 8

Solubility of barite as a function of electrolyte in the solution at p = 1 bar and T = 100 \(^\circ \hbox {C}\) (except for data from Templeton (1960), which were measured at 95 \(^\circ \hbox {C}\)). Equilibrium calculations were executed at 100 \(^\circ \hbox {C}\). Values from Blount (1977) interpolated or extrapolated except for the values in 0.0, 0.2, and 4 molal NaCl solutions

Calcite

Calcite is a major scale-forming mineral and of great importance for geothermal fluids which were in contact with calcareous reservoir material. Due to the calco-carbonic equilibrium, the solubility behaviour is relatively complex. Calcite solubility depends on temperature, pressure, \(\hbox {CO}_{2}\) partial pressure, pH, and ionic strength. During production of geothermal fluids, a change in temperature, pressure, and gas load (in case of degassing) occurs.

For the evaluation of the solubility of calcite dependent on \(\hbox {CO}_{2}\) partial pressure, solubility data at a temperature of 100 \(^\circ \hbox {C}\) as a function of \(\hbox {CO}_{2}\) partial pressure were recalculated (Fig. 9). There exist only few data for calcite at pressures significantly above atmospheric pressure so data from Miller were included, although they are probably too low at higher partial pressure due to experimental issues (cf. section on solubility data). The HKF–Davies approach provides the best model performance although solubility is slightly overestimated at higher partial pressures. At partial pressures above 20 bar, the calculations with llnl.dat and phreeqc.dat parameter files significantly exceed the experimental data, while pitzer.dat falls below the data from Segnit (1962). This can be attributed to the formation of the \(\rm {{CaHCO}_{3}}^{+}\) complex in phreeqc.dat and llnl.dat.

Fig. 9
figure 9

Solubility of calcite as a function of \(p(\rm {CO}_2)\) with T = 100 \(^\circ \hbox {C}\)

An enlargement for lower partial pressures is shown in Fig. 10 which covers the \(\hbox {CO}_{2}\) partial pressure regions encountered in geothermal systems without excess \(\hbox {CO}_{2}\). Data from Mitchell (1923) are presented as original data and as the regression model 2 from Visscher and Vanderdeelen (2012). The reasons for this are deviations in experimental data exceeding 10 % from the solubility model presented by the latter. For a detailed explanation, see the section “Calcite” in the methods. Data for 1 atm in Fig. 10 comprise 20 data points from various authors compiled in Visscher and Vanderdeelen (2012). Variance for these data is given as error bar. From a qualitative point of view, phreeqc.dat, llnl.dat and HKF provide the best results for calcite solubility. As already shown in Fig. 9 for higher pressures, pitzer.dat falls below experimental data at partial pressures above 1 bar.

Fig. 10
figure 10

Solubility of calcite at 25 \(^\circ \hbox {C}\) as a function of \(\hbox {CO}_{2}\) partial pressure. See text for additional information on sources

Additionally, pitzer.dat and phreeqc.dat deviate from each other, although there is no difference in calculation method for dilute solutions because both calculation methods use the extended Debye–Hückel equation and Pitzer parameters do not have an impact if solutions are dilute. The difference in solubilities calculated from those parameter files is too high to be attributed to the minor difference in \(\mathrm {log}_{10} \, {K}\) values of the parameter files (−8.406 in pitzer.dat and −8.48 in phreeqc.dat).

A detailed look at the speciation output of these calculations reveals the formation of a calcium bicarbonate complex (\(\rm {{CaHCO}_{3}}^{+}\)) using phreeqc.dat. This poses the question if the thermodynamic data for calcite in combination with the speciation model in pitzer.dat or phreeqc.dat is appropriate for geothermal fluids containing high amounts of \(\hbox {CO}_{2}\) at high temperatures. In general, the tendency to form complexes is increased at higher temperatures. This implies that thermodynamic data and speciation model valid at, e.g. 25 \(^\circ \hbox {C}\) do not have to be appropriate for higher temperatures and once more demonstrates that complex formation constants and solubility constant need to be established in a consistent manner and can never be regarded as independent from each other.

Salinity of the fluid strongly influences the solubility of calcite. Experimental results for varying ionic strengths at low \(\hbox {CO}_{2}\) partial pressures are shown in Fig. 11. The HKF–Davies approach is able to describe the solubility behaviour of calcite up to an ionic strength of 0.2 molal. Above 0.2 molal, the error becomes increasingly larger until the model fails at an ionic strength exceeding 0.5 molal. For ionic strengths up to 1 molal phreeqc.dat matches nicely. At higher ionic strengths, solubility is considerably too high, which is possibly due to the validity limit of the extended Debye–Hückel equation being exceeded. The best agreement for the high ionic strength data (\(>1\) molal) is achieved using pitzer.dat, but performance is hampered in the ionic strength region of 1–2 molal NaCl solutions, where the maximum error is up to about 0.15 mmol. llnl.dat shows high deviations at ionic strengths exceeding 0.15 molal. This can be attributed to the activity model and the formation of chloride complexes \(\hbox {CaCl}^{+}\) and \(\hbox {CaCl}_{2}\) in llnl.dat.

Fig. 11
figure 11

Calcite solubility in NaCl solutions at 25 \(^\circ \hbox {C}\) and \(p(\hbox {CO}_{2}\)) = 0.01 bar

A closer representation of geothermal systems concerning the temperature and pressure conditions is shown in Fig. 12, where experimental data were recalculated at a \(\hbox {CO}_{2}\) partial pressure of 12 atm. The HKF–Davies approach shows good applicability up to temperatures of 160 \(^\circ \hbox {C}\). At higher temperatures, the model starts to slightly deviate from experimental data up to 0.16 mmol at 250 \(^\circ \hbox {C}\). This can be attributed to minor deviations in calculation of the activity coefficients and of the speciation model, which is temperature and pressure corrected. Calculations with phreeqc.dat show the temperature limits of applicability for the carbonate system which is at around 180 \(^\circ \hbox {C}\). At higher temperatures, the solubility curves go through a minimum and then increase which is certainly not the behaviour of the real solubility function. Furthermore, experimental values for 1 molal NaCl solutions cannot be reproduced. While llnl.dat shows very good agreement at an ionic strength of 0.2 molal, it significantly falls below data in 1.0 molal NaCl solutions. The best result is obtained with pitzer.dat which shows an excellent agreement with all experimental values considered in this figure.

Fig. 12
figure 12

Temperature-dependent solubility of calcite in NaCl at \(p(\hbox {CO}_{2}\)) = 12 atm. Molality is abbreviated with “m” in the legend

Shi et al. (2013) measured calcite solubility at high pressures. The experimental data were recalculated by Appelo (2015), who reported a “reasonably well” reproducibility of the solubility data in 0.1 molal NaCl solutions but not for the 4 molal NaCl data, where the model diverges considerably. The recalculations for calcite in 0.1 molal NaCl solutions are shown in Fig. 13; deviations from experimental data at 100 \(^\circ \hbox {C}\)—being the most relevant temperature among the measured—are displayed in Table 6. The HKF–Davies approach has the smallest divergence from experimental data with a maximum error of 7.81 %. Especially, the agreement for high pressure data (483 bar) is very good. Solubilities calculated with pitzer.dat are consistently too low at temperatures below 200 \(^\circ \hbox {C}\) and have the highest deviation among the 34 bar calculations (17.6 %). The results form phreeqc.dat are very similar to those obtained with the HKF approach, although solubilities are a little lower. At temperatures above about 180 \(^\circ \hbox {C}\), phreeqc.dat is not applicable for the carbonate system, as the parametrisation of a temperature function leads to an increase above the limiting temperature (compare with Fig. 12). In the parameter file llnl.dat, no pressure dependence is included. The deviations between the two curves at different pressures can be related to the pressure-dependent autoprotolysis of water. While the lack of pressure dependence equations is not obvious for the 34 bar data, where llnl.dat shows a reasonable well agreement, the results for 483 bar are significantly too low with an error at 100 \(^\circ \hbox {C}\) of 25 %.

Fig. 13
figure 13

Solubility of calcite in 0.1 molal NaCl solutions without gas phase. For experimental setup, see Shi et al. (2012, 2013)

The data from Shi et al. (2013) show that at 100 \(^\circ \hbox {C}\), the difference in calcite solubility is 1.6 mmol/kg for a pressure decrease of about 450 bar. This means that there is a significant change in the thermodynamic equilibrium when producing fluids from deep geothermal reservoirs. The change in solubility due to pressure release is equal to decreasing the partial pressure of \(\hbox {CO}_{2}\) from 4 to 1 bar at 100 \(^\circ \hbox {C}\) (cf. Fig. 9). Total system pressure therefore is considered as a significant boundary condition for modelling of carbonate equilibria.

Table 6 Deviation from experimental data in Fig. 13

Siderite

Currently, siderite is contained in databases and parameter files with different temperature corrections. The data block below shows the implementation in phreeqc.dat, where no fitted temperature function for the \(\mathrm {log}_{10} \, {K}\) value is provided. Only a \(\Delta _rH\) value is given in line 4 of the parameter file entry (see below), which allows a temperature correction using a two-term extrapolation (Eq. 2). The parameter file pitzer.dat does not contain siderite. The source for siderite in slop16.dat is Helgeson et al. (1978), or to be precise an erratum thereof (Helgeson 1985), where thermodynamic data for siderite were revised. The temperature function for \({\mathrm{log}}_{10} \, {\hbox{K}}\) in llnl.dat is very similar to those data.

  • Siderite

  • \(\text{FeCO}_3 = \text{Fe}^{2+} + {\text{CO}_3}^{2-}\)

  • -\({\text{log}}\_\text{k}-10.89\)

  • -\({\text{delta}\_\text{h}} -2.480\;{\text{kcal}}\)

  • -\(V_\text {m} \, 29.2\)

The work of Bénézeth et al. (2009) provides thorough measurement and \(\mathrm {log}_{10} \, {K}\) evaluation for siderite in the range of 25–250 \(^\circ \hbox {C}\) in 0.1 molal NaCl solutions. It furthermore contains a function for the temperature dependence of \(\mathrm {log}_{10} \, {K}\), which was implemented in pitzer.dat by the authors using the “–analytic” identifier (line 5 of the following data block). This identifier contains the factors for a polynomial function and indicates PHREEQC to calculate the \(\mathrm {log}_{10} \, {K}\) value at the temperature of interest by using Eq. (1) and the parameters given in line 5 of the following data block. In case the temperature function is defined with an analytic identifier, the \(\Delta _rH\) values for temperature correction become obsolete.

  • Siderite

  • \({\text{Fe}}({\text{CO}}_3) = {{\text{CO}}_3}^{2-} + {{\text{Fe}}}^{2+}\)

  • -\({\text{log}}\_\text{k}-10.898\)

  • -\({\text{analytic}}\; 175.568\;0.0139 \;-6738.483\; -67.898\;0\;0\)

  • -\(V_\text {m}\, 29.2\)

  • # temp. function from Bénézeth et al. (2009), p. 10.

Solubility data from Bénézeth et al. (2009) were recalculated with different thermodynamic databases in PHREEQC. The slop16.dat database was not evaluated because the pH had to be fixed in the calculation. An iterative solution for this problem is implemented in PHREEQC; however, in the code we use for the calculations with the ChemApp programming library, this capability is not implemented and therefore the pH could not be fixed. This problem applies to all simulations for siderite in the present work. It is generally possible to solve this issue by modification of the code, which makes use of the subroutines in ChemApp; however, this could not be done in the frame of the present study.

The results are shown in Fig. 14. Although very thoroughly measured, there is some amount of experimental uncertainty associated with the experimental data. For 25 \(^\circ \hbox {C}\) solubility does not clearly show an expected solubility increase with increasing hydrogen activity. The four data points below \(-\text{log}[H^+]\) activity of 5 were measured with the addition of 4 bar \(\hbox {CO}_{2}\) and HCl, whereas the rest of the data points were measured with addition of HCl only.

As a representative of the HKF family of databases, llnl.dat was chosen, which has very similar \(\mathrm {log}_{10} \, {K}\) for siderite compared to slop16.dat. Calculations with llnl.dat at the lower range of temperatures measured (up to 99 \(^\circ \hbox {C}\)) show solubilities consistently too high compared to experimental data. At higher temperatures, the model performs comparatively well. While providing reasonable agreement for the solubility at 25 \(^\circ \hbox {C}\), phreeqc.dat increasingly deviates at higher temperatures, leading to large errors at temperatures above 100 \(^\circ \hbox {C}\). This may be related to the fact that phreeqc.dat has a temperature correction with \(\Delta _rH\) (two-term extrapolation) only. The parameter file pitzer.dat was extended in this study with siderite (which is by default not included in the parameter file) using the temperature function from Bénézeth et al. (2009). It provides the best representation of the experimental data, which is expected as it contains the temperature function regressed on the experimental values shown in the diagram. Note that in this calculation, phreeqc.dat and pitzer.dat yield identical results if the same temperature function for \(\mathrm {log}_{10} \, {K}\) is implemented.

Fig. 14
figure 14

Solubility of siderite as a function of hydrogen molality (pH). Each subplot comprises experimental data and calculations at the temperature reported ± 0.8 \(^\circ \hbox {C}\)

For siderite solubility in NaCl solutions of different ionic strength, experimental data were recalculated. The accuracy of the measurements should be regarded with care, as there is almost no difference in siderite solubility between, e.g. 1.4 and 2.5 molal NaCl solutions, which argues for a significant experimental uncertainty. Measuring an accurate pH value in brines is challenging and can be a significant source of error (Marcus 1989). Hagemann et al. (2014) showed that the experimental error from potentiometric titration can be up to 0.8 pH units in 5.5 molal NaCl solutions and up to 0.2 pH units in 2 molal NaCl solutions.

None of the models applied is able to provide a good agreement with experimental data in Fig. 15. A major difference between the models can be seen when looking at the shape of the curves: llnl.dat and phreeqc.dat show an increase in solubility at neutral to alkaline pHs, while solubility in pitzer.dat continuously decreases. This can be attributed to the fact that in contrast to phreeqc.dat and llnl.dat, pitzer.dat contains no ferrous complexes. These complexes increasingly form at higher pH values and thereby increase the solubility of siderite. As a consequence, the lack of ferrous complexes only allows for calculations with pitzer.dat at pH values below 7.

Fig. 15
figure 15

Solubility of siderite at 25 \(^\circ \hbox {C}\) and \({p}(\hbox {CO}_{2})\) = 0.05 atm as a function of ionic strength. Data from Bruno et al. (1992) were measured in 1 molal sodium perchlorate (\(\hbox {NaClO}_{4}\)). Molality is abbreviated with “m” in the legend. Note that siderite was implemented in pitzer.dat using a \(\mathrm {log}_{10} \, {K}\) of − 10.898 at 25 \(^\circ \hbox {C}\)

Solubilities are consistently too high in calculations with llnl.dat. This is due to two reasons: Firstly, the more positive \(\mathrm {log}_{10} \, {K}\) value of − 10.57 than in phreeqc.dat (− 10.89), which translates into more siderite being dissolved and secondly, the higher concentration of complexes appearing in calculated results, which increase solubility of siderite. Even the calculation at an ionic strength of 0.1 molal with llnl.dat is significantly too high, which argues for an inadequate speciation model in combination with the \(\mathrm {log}_{10} \, {K}\) value of the parameter file. The calculations from phreeqc.dat overestimate the solubility in 0.1 molal NaCl solution. The fit with data acquired in 2 molal NaCl solutions is good, but given the performance in solutions with lower ionic strength, it might well be possible that this coincidence is fortuitous.

Currently, perchlorate (\(\rm{{{ClO}}_{4}}^{-}\)) is not implemented in either of the databases used for the calculation in Fig. 15. In solubility studies, perchlorate solutions are frequently used to inspect the impact of ionic strength on the conditional solubility constant because perchlorate in contrast to chloride does not form complex species with metal cations. Furthermore, due to its different ratio of charge over ionic radius, its impact on water molecules can be expected to differ from that of chloride. Solubilities of the same mineral in NaCl or \(\hbox {NaClO}_{4}\) solutions can therefore not be directly compared and are likely to be different. It is not surprising that Fanghänel et al. (1996) showed that Pitzer parameters for chloride and perchlorate differ, so it is not possible to accurately recalculate solubility in \(\hbox {NaClO}_{4}\) solutions without implementing \(\rm{{{ClO}}_{4}}^{-}\) in the aforementioned databases. Consequently, we chose not to recalculate the data from Bruno et al. (1992) and display them only in order to highlight the complex behaviour, which the solubility curve undergoes during transition from acidic to alkaline solutions.

It should be mentioned that we were not able to recalculate all experimental data. Appelo (2015) already mentioned that they did not succeed to reproduce the solubility experiments for calcite of Shi et al. (2012) in 4 molal NaCl solutions and neither did we. Furthermore, the data from (Yan et al. 2015) for siderite, originating from the same working group could not be reproduced using PHREEQC/pitzer.dat.

Dolomite

Currently, dolomite is implemented in phreeqc.dat and pitzer.dat without a temperature function but using \(\Delta _rH\) for temperature correction of the equilibrium constant according to Eq. (2). The value for \(\Delta _rH\) implemented in this database is − 9.436 kcal (− 39.48 kJ). No data source is given. Using enthalpy of formation from Bénézeth et al. (2018) for dolomite and from Sverjensky et al. (1997) for carbonate, calcium, and magnesium results in a \(\Delta _rH\) value of − 2286.69 kJ. A comparison with experimental data (Fig. 16) reveals a very good agreement of the PHREEQC parameter files with the, according to Sherman and Barak (2000), widely used \(\mathrm {log}_{10} \, {K}\) value at 25 \(^\circ \hbox {C}\) from Hemingway and Robie (1994) and Robie and Hemingway (1995). However, at temperatures exceeding 50 \(^\circ \hbox {C}\), PHREEQC parameter files start to significantly deviate from measured solubility data. The reason for this might be the outdated value for \(\Delta _rH\) implemented in those parameter files. The slop16 temperature function evaluated with CHNOSZ significantly deviates from experimental data at temperatures below 125 \(^\circ \hbox {C}\) (Fig. 16). The reason for this deviation was already discussed in Bénézeth et al. (2018) and we agree with their explanation that differences are due to thermodynamic data “which was derived from extrapolating high temperature phase relations to ambient temperatures using estimated entropies and heat capacity power functions”. The slop16.dat temperature function is also used in EQ3/6 (e.g. data.ypf) and GWB (e.g. thermo.tdat, thermo.com.V8.R6+.tdat). The temperature function from llnl.dat very much resembles slop16.dat, but shows some minor deviations. To the author’s knowledge, the temperature function was taken from slop (with SUPCRT92), converted into a temperature grid and then refitted with a polynomial equation to transfer it into a PHREEQC parameter file. This refitting procedure leads to the small offset at some temperatures.

The current implementation of the temperature functions in all thermodynamic data files represent the knowledge prior to the publication of new data by Bénézeth et al. (2018), where no direct solubility measurements at temperatures above 25 \(^\circ \hbox {C}\) existed. The only exception was one datum, determined at 80 \(^\circ \hbox {C}\) from Gautelier et al. (2007). The temperature functions for dolomite illustrate that the usage of extrapolations on few experimental data and beyond the temperature limits of experiments can lead to faulty predictions if applied to real systems. This is exacerbated by the fact that the validity ranges for temperatures is usually not documented in the parameter files.

Fig. 16
figure 16

Temperature function of the \(\mathrm {log}_{10} \, {K}\) of dolomite compared with experimental data. Value of Navrotsky and Capobianco (1987) was calculated with data from Robie and Hemingway (1995)

Conclusion

Selected thermodynamic data files (phreeqc.dat, pitzer.dat, llnl.dat, and slop16.dat) were tested against experimental data at geothermal temperature and pressure conditions. The benchmarking revealed outdated equilibrium constants for celestite in the slop16.dat database which produce erroneous results. It was furthermore shown in the case of barite that the speciation model can have a profound impact on the modelling results and that speciation models and solubility constants of minerals cannot be regarded independently from each other. It furthermore illustrated that apparently sound and well-established thermodynamic data (e.g. \(\mathrm {log}_{10} \, \beta\) for \(\hbox {BaCl}^{+}\)) are in fact ill-defined by insufficient experimental data.

The temperature dependence implemented in all files for siderite and dolomite is inadequate for most calculations. A new temperature function was included for siderite in pitzer.dat using thermodynamic data from (Bénézeth et al. 2009), which allows modelling siderite solubility up to temperatures of 250 \(^\circ \hbox {C}\) in acidic solutions. These thermodynamic data are not yet available in the files distributed with PHREEQC. The parameter files pitzer.dat and phreeqc.dat can be used from scratch for high pressure (up to approx. 500 bar), high temperature modelling of barite, celestite, and calcite. However, phreeqc.dat is limited to about 190 \(^\circ \hbox {C}\) due to the formation of \(\rm {{CaHCO}_{3}}^{+}\) creating an unrealistic solubility minimum at those temperatures. For calcite solubility, slop16.dat can be applied at high temperatures and pressures up to an ionic strength of about 0.4 mol/kg and yields the best results for high pressure calculations of calcite.

Some parameter file entries for EQ 3/6 and Geochemist’s Workbench were checked for the mineral phases validated in the present work. The check revealed that outdated equilibrium constants for celestite were transferred to some of those files if they had not undergone revision, as they are derived from previous versions of slop16.dat.

Especially for highly saline fluids, there is currently no parameter file or database which can be applied from scratch for all scale-forming minerals in low-enthalpy geothermal fields. Regarding some scale-forming sulphide minerals and heavy metal scalings, no thermodynamic data at all are implemented for high salinity. The results reveal a fundamental problem with thermodynamic data files where the range of validity for temperature functions is not documented. Since the temperature and pressure dependency of the equilibrium constants is often based on empirical relations regressed to experimental data, these entries should not be used outside the range of underlying experimental data. This paper should be regarded as a documented benchmark to assess the validity of widely used thermodynamic data files and the range of conditions for which these functions can be applied safely.

The authors would like to stress that such test calculations are actually mandatory for everyone applying geochemical calculations to real systems. If this were common practice, a significant lack of experimental data would become apparent and eventually lead to efforts to close those data gaps rather than performing modelling studies without an appropriate knowledge of the real behaviour of complex systems. Obtaining and implementing additional experimentally determined thermodynamic data into databases and parameter files can greatly enhance the significance and accuracy of complex hydrogeochemical models in the future if consistency in the database or parameter file is maintained.