Gastherm Update for Gasworks and Solvgas

As of 2022 there is renewed interest in programs Gasworks and Solvgas, that use Gastherm as their thermodynamic data source. A significant issue is the absence of most digital records of the enthalpy, entropy, heat capacity, and volume data that were used to compute log K's for the gases, solids, and liquids. If log K's within Gastherm are to be modified, added to, or improved upon, then these data are essential

Here we document the construction of a new Gastherm database, and the source data used. While the sources of data for the 1990 version are freely available, all must be recompiled from scratch into digital form. The first step is to construct a new database that will run with the already existing software. We can then compare the results of simulations that are run using the new data, and the 1990 version, using identical initial conditions and parameters for both

While it may be possible to reconstruct Gastherm to be identical to the 1990 version, we make no attempt to do that. Newer data have been introduced for some of  the most important items in the basis set of component gases: H2, H2O, CO2, H2S, HCl, and HF. Therefore, any derived gases, solids, or liquids containing them will certainly have different log K's than the 1990 version, regardless as to the origin of data for the derived items. Put another way, even if the derived item data is taken from the older original references (e.g. the Bureau of Mines reports,) new and current log K's will be different

Recompiled here are the 1990 source code for Gasworks, Solvgas, and  Volcal to run in the win32 environment, with minor changes to the formatting summarized below. These will be the only changes before completion of the Gastherm updates.

A summary of minor format and other changes made to the 1990 version of Gastherm, and where new versions of Gastherm will use identical rules—
- Add a text delimiter between the derived gases, and the solids/liquids data blocks
- Remove blank lines where previously required for 16-bit operating systems where the preceding line exceeded 72 characters (four items, alunite, KAl.2SO4, meionite, phlogopi)
- A name change for one item only, Al2O3 glass, from "Al2O3(g)" to "Al2O3-gl"
- Revision of the text headers not read by software, both files

Archived Gastherm1990
Latest Gastherm3000
The software to be used with either database
Demo run files with initial parameters already set
All of the project content except the !data and !tests directories. Updated from time to time, see the listing here for its date and time


Other contributors to the current project—
Mark Reed - UOregon
Allan Lerner - USGS
Peter Kelly - USGS



The software is used to compute the distribution of chemical components among gases in a mixture, with program Solvgas, or among gases, liquids, and solids in multi-phase systems with program Gasworks, and both using the Gastherm database

Program Solvgas was derived from Solveq, and Gasworks from Chim-xpt (formerly Chiller.)  A significant limitation of both Solvgas and Gasworks is that liquid water can exist only as a pure phase with no dissolved components. A significant delight is that both Solvgas and Gasworks are entirely free of the bookkeeping issues relating to charge balance, redox, and activity coefficients for aqueous species. If going forward Solvgas and Gasworks were to be improved so as to allow higher pressure calculations, then proper accounting of attendant non-ideal behavior would be required. Including that for mixtures where the individual gases may interact with one another in their non-ideality. Bookkeeping issues of a different sort, then.

Program Solvgas computes the gas phase species equilibrium distribution of as a function of temperature and pressure, where P is currently limited to 1 bar. As an accessory to input of gas composition data, the fugacities for gases e.g. O2 can be imposed. Solvgas also computes with respect to the gases, the saturation state of solids and liquids that could precipitate as sublimates or condensates. An additional capability is that of forced mineral equilibration, where the relative amount of a component gas is adjusted (forced) during computation so that it is in equilibrium with a specified solid or liquid that contains it. For fumarole sublimate precipitates that may be present, this capability can be used to estimate the amount of gas in a sample that is not typically measured, or present only depth at higher temperature. The forced mineral equilibrium capability is useful in reconstructing the composition of a gas at depth, where a complete (as complete as possible) composition is required for modeling with program Gasworks.

Program Gasworks computes the equilibrium distribution of the chemical components among the gases, solids, and pure liquids. The amounts of the components can be changed incrementally allowing for so-called reaction path calculations. Some examples:
- Wall rock alteration from reactions with gas, with or without groundwater
- Gas composition change from reactions with wall rocks, with or without groundwater
- Precipitation of condensates and sublimates with ascent and cooling
- Scrubbing and and removal of reactive gases thereby reducing emission at the surface, e.g. SO2

Future work might include expanding the database and software to allow calculations to 5 kbar pressure as was done for Soltherm. Enabling for instance, calculating the solubility of metals that are used to fabricate rocket nozzles, in combusted fuel exhaust from rocket nozzles, at operating temperatures and pressures. Rocket science, aha. A spur in the programming and computation road doubtless traveled decades ago. Ours however will be better and of course free.

Some publications authored at least in part by Robert Symonds, the primary contributor to the original project



A summary of the procedure to update Gastherm [Procedure tested and working, Jun-2023] —

- Find in the references the enthalpy, entropy, and heat capacity for each gas, or each mineral/solid or liquid, and add those to the Supcrt database.
- Use these programs:
      - SupcrtRxnGT - creates Supcrt reaction files. Uses input files Gastherm.dat and one of two (incrementally updated) name index tables [Nov-2022]
      - Supcrt96 - computes logK's. Uses input files from SupcrtRxnGT, above [1996].
      - Gastab - generates Gastherm-formatted records from Supcrt96 logK output. Uses input files Gastherm.dat, one of the the name index tables, and Supcrt96 output [Feb-2023].
      - RegressGT - generates the last line of each Gastherm record, regression coefficients for interpolating logK's at intermediate temperatures using the equation logK(T,°K) = a + b T-1 + c T + d T-2 + e log(T) [Mar-2023].
- Insert the new data into Gastherm


More info —

- Data & References:
     - Local
     - janaf.nist.gov
     - Thermochemical Data of Pure Substances, 3rd ed. (Barin, I.)


- SupcrtRxnGT — Reads the previous version of Gastherm (1990), name index tables to reconcile names between Gastherm and the Supcrt96 database, and writes a reaction file for Supcrt96. Largely complete [Nov-2022].
     - Input files:
           - Gastherm 1990
           - GTgases.tbl, index table of derived gas names
           - GTsolids.tbl, index table of mineral, solid, and liquid names
     - Output files:
           - GTgases.rxn, Supcrt reaction file for gases, or in a separate run
           - GTsolids.rxn, Supcrt reaction file for solids and liquids
           - MissingItems.dat, items that are missing from the index tables
     - Gas name index files. These reconcile the names of gases and solids between the Gastherm (limited to 8 characters) and Supcrt96 databases. Existing species to be copied from "all" to "current" as they are added to the Supcrt database:
           - GTgases.all.tbl, 585 gases in Gastherm [1990]
           - GTgases.current.tbl, 5 gases [Nov-2022]
           - GTgases.current.tbl, 429 gases [Jun-2023]
           - GTsolids.all.tbl, 399 items in Gastherm [1990]
           - GTsolids.current.tbl, 4 items [Nov-2022]
           - GTsolids.current.tbl, 111 items [Jun-2023]


- Supcrt96 — Computes Log K's for gases and solids. Identical to a copy elsewhere on this site, but with data limited to those more relevant to the task at hand.
      - Input files:
           - Dpronshp.dat, thermodynamic data, direct access
           - GT.con, temperature and pressure array
           - GT*.rxn, reaction file
      - Output file:
           - Name = *dealer'schoice*.*
      - Some notes regarding sequential access database Spronshp2011GT.dat:
           - Is used to generate direct access database Dpronshp.dat with program Cprons96.
           - Is a provisional SPRONS version for updating the GASTHERM, and currently containing 758 gases.
           - Contains all of the non-silicate minerals from Helgeson & Shock in Slop16.dat.
           - The ultimate goal is to construct a single SPRONS database for both GASTHERM and SOLTHERM


- Gastab — Reads abbreviated Supcrt96 output, the previous version of Gastherm used to generate the the Supcrt reaction file, and the aforementioned name index tables, and writes records properly formatted for Gastherm, but without regression coefficients [Feb-2023]
      - Input files:
           - Gastherm, the same version used to generate the Supcrt96 reaction file
           - One of the two name index tables, GTgases.tbl and GTsolids.tbl, the same as for SupcrtRxnGT
           - Supcrt96 logK output (name = *dealer'schoice*.* from above)
      - Output file:
           - Name = *adifferentchoice*.* (different from the input file name.)


- RegressGT — Reads logK's in Gastab output containing the almost finished Gastherm records, computes the regression coefficients, and inserts those into the fourth and last line of each record, in a copy of the input file [March-2023]
      - Input file:
           - RegrunGT.dat. The first line should show an integer count of the records that follow.
      - Output files:
           - RegoutGT.dat, Gastherm records ready for use
           - RegpltGT.dat, comparison of regressed output log K's to input log K's


- Gasprint — Reads Gastherm and writes the reactions in a more readable form for the user [Aug-2023]
      - Input file: Gastherm.dat
      - Output file: GasthermReactions.dat


[2023-Nov-22]