Thermodynamic properties of the phases of H2O


License
GPL-3.0
Install
pip install SeaFreeze==0.9.6

Documentation

SeaFreeze

License: MIT License Twitter Follow GitHub Follow

V0.9.4 Logo

The SeaFreeze package allows to compute the thermodynamic and elastic properties of water and ice polymorphs (Ih, II, III, V and VI) in the 0-2300 MPa and 220-500K range. It is based on the evaluation of Gibbs Local Basis Functions parametrization (https://github.com/jmichaelb/LocalBasisFunction) for each phase, constructed to reproduce thermodynamic measurments. The formalism is described in more details in Journaux et al. (2020), and in the liquid water Gibbs parametrization by Bollengier, Brown, and Shaw (2019).

Contact: bjournau (at) uw (dot) edu

Getting Started

Installing

Report to the README file for each version (Python or Matlab) for installing SeaFreeze.

Running SeaFreeze

This section provide basic example on how to run SeaFreeze. It is using pseudo code, so synthax will change depdending on the version used.

Inputs

To run the SeaFreeze function you need to provide pressure (MPa) and temperature (K) coordinates and a material input:

out=SeaFreeze(PT,'material')

PT is a structure (gridded output) or array (scatter output) containing pressure-temperature points (MPa and Kelvin).

'material' defines which ice or water to use. Possibilities:

  • 'Ih' for ice Ih (Feistel and Wagner, 2006)
  • 'II' for ice II (Journaux et al. 2020)
  • 'III' for ice III (Journaux et al. 2020)
  • 'V' for ice V (Journaux et al. 2020)
  • 'VI' for ice VI (Journaux et al. 2020)
  • 'water1' for Bollengier et al. (2019) LBF extending to 500 K and 2300 MPa
  • 'water2' for the modified EOS in Brown 2018 extending to 100 GPa and 10,000 K
  • 'water_IAPWS95' for IAPWS95 water (Wagner and Pruss, 2002)

Outputs

out is a structure containing all output quantities (SI units):

Quantity Symbol in SeaFreeze Unit (SI)
Gibbs Energy G J/kg
Entropy S J/K/kg
Internal Energy U J/kg
Enthalpy H J/kg
Helmholtz free energy A J/kg
Density rho kg/m^3
Specific heat capacity at constant pressure Cp J/kg/K
Specific heat capacity at constant volume Cv J/kg/K
Isothermal bulk modulus Kt MPa
Pressure derivative of the Isothermal bulk modulus Kp -
Isoentropic bulk modulus Ks MPa
Thermal expansivity alpha /K
Shear modulus shear MPa
P wave velocity Vp m/s
S wave velocity Vs m/s
Bulk sound speed vel m/s

NaN values returned when out of parametrization boundaries.

Example

An executable Matlab live script (Example_SeaFreeze.mlx) is provided allowing to run the following examples.

Single point input

Single point for ice VI at 900 MPa and 255 K. This can be used to check returned thermodynamic properties values.

PT = {900,255};
out=SeaFreeze(PT,'VI')

Output :

out = 

  struct with fields:

      rho: 1.3561e+03
       Cp: 2.0054e+03
        G: 7.4677e+05
       Cv: 1.8762e+03
      vel: 3.6759e+03
       Kt: 1.7143e+04
       Ks: 1.8323e+04
       Kp: 6.2751
        S: -1.3827e+03
        U: -2.6951e+05
        H: 8.3090e+04
    alpha: 2.0020e-04
       Vp: 4.5490e+03
       Vs: 2.3207e+03
    shear: 7.3033e+03

Grid input

Grid of points for ice V every 2 MPa from 400 to 500 MPa and every 0.5 K from 220 to 250 K

PT = {400:2:500,240:0.5:250};
out=SeaFreeze(PT,'V')

Output :

out = 

  struct with fields:

      rho: [51×21 double]
       Cp: [51×21 double]
        G: [51×21 double]
       Cv: [51×21 double]
      vel: [51×21 double]
       Kt: [51×21 double]
       Ks: [51×21 double]
       Kp: [51×21 double]
        S: [51×21 double]
        U: [51×21 double]
        H: [51×21 double]
    alpha: [51×21 double]
       Vp: [51×21 double]
       Vs: [51×21 double]
    shear: [51×21 double]

List input

List of 3 points for liquid water at 300K and 200, 223 and 225 MPa

PT = ([200 300 ; 223 300 ; 225 300 ]);
out=SeaFreeze(PT,'water1')
out = 

  struct with fields:

      rho: [3×1 double]
       Cp: [3×1 double]
        G: [3×1 double]
       Cv: [3×1 double]
      vel: [3×1 double]
       Kt: [3×1 double]
       Ks: [3×1 double]
       Kp: [3×1 double]
        S: [3×1 double]
        U: [3×1 double]
        H: [3×1 double]
    alpha: [3×1 double]

Important remarks

Water representation

The ices Gibbs parametrizations are optimized to be used with 'water1' Gibbs LBF from Bollengier et al. (2019), specially for phase equilibrium calculation. Using other water parametrization wil lead to incorect melting curves. 'water2' (Brown 2018) and 'water_IAPWS95' (IAPWS95) parametrization are provided for HP extention (up to 100 GPa) and comparison only. The authors recommend the use of 'water1' (Bollengier et al. 2019) for any application in the 200-355 K range and up to 2300 MPa.

Range of validity

SeaFreeze stability prediction is currently considered valid down to 130K, which correspond to the ice VI - ice XV transition. The ice Ih - II transition is potentially valid down to 73.4 K (ice Ih - ice XI transition).

The following figure shows the prediction of phase transitions from SeaFreeze (melting & solid-solid) and comparison with experimental data: Logo

Reference to cite to use SeaFreeze:

References for the liquid water equations of states used:

Contributors

  • Baptiste Journaux (Lead) - University of Washington, Earth and Space Sciences Department, Seattle, USA
  • J. Michael Brown - University of Washington, Earth and Space Sciences Department, Seattle, USA
  • Penny Espinoza - University of Washington, Earth and Space Sciences Department, Seattle, USA
  • Marshall J. Styczinski - Blue Marble Space Institute of Science, Seattle, USA
  • Erica Clinton - University of Washington, Earth and Space Sciences Department, Seattle, USA

Change log

Changes since 0.9.0

  • SeaFreeze GUI available
  • 0.9.4: Adjusted python readme syntax and package authorship info
  • 0.9.3: LocalBasisFunction spline interpretation software integrated into SeaFreeze Python package. Adjusted packaging to work better with pip
  • 0.9.2 patch1: added SF_WPD, SF_PhaseLines and SeaFreeze_version to the Matlab distribution.
  • 0.9.2: add ice II to the representation.
  • 0.9.1: add whichphase function to show which phase is stable at a PT coordinate.

Planned updates

  • ice VII and X
  • NaCl and MgSO4 aqueous solutions
  • NH_3 aqueous solutions
  • NaCl bearing solids (Halite and hydrohalite)

License

SeaFreeze is licensed under the GPL-3 License:

Copyright (c) 2019, B. Journaux

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

Acknowledgments

As of V0.9.3, SeaFreeze incorporates the mlbspline and lbftd packages originally developed by J. Michael Brown. Historical versions of these packages are no longer being updated and are available at https://github.com/jmichaelb/LocalBasisFunction.

This work was produced with the financial support provided by the NASA Postdoctoral Program fellowship, by the NASA Solar System Workings Grant 80NSSC17K0775 and by the Icy Worlds node of NASA's Astrobiology Institute (08-NAI5-0021).

Illustration montage uses pictures from NASA Galileo and Cassini spacecrafts (from top to bottom: Enceladus, Europa and Ganymede). Terrestrial sea ice picture use with the authorization of the author Rowan Romeyn.