mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-16 00:28:23 +01:00
git-subtree-dir: examples/com git-subtree-mainline: 6440359f1983c3200dc42fbcd59ed98edf376c7d git-subtree-split: f90209d22ab165052a564c0ccdd346071d1fc803
52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
"""Compares gypsum solubility for WATEQ4F and Pitzer databases.
|
|
"""
|
|
# Import standard library modules first.
|
|
import os
|
|
# Then get third party modules.
|
|
from win32com.client import Dispatch
|
|
import matplotlib.pyplot as plt
|
|
|
|
def selected_array(db_path, input_string):
|
|
"""Load database via COM and run input string.
|
|
"""
|
|
dbase = Dispatch('IPhreeqcCOM.Object')
|
|
dbase.LoadDatabase(db_path)
|
|
dbase.RunString(input_string)
|
|
return dbase.GetSelectedOutputArray()
|
|
|
|
def show_results(input_string):
|
|
"""Get results for different databases
|
|
"""
|
|
wateq4f_result = selected_array('wateq4f.dat', input_string)
|
|
pitzer_result = selected_array('pitzer.dat', input_string)
|
|
# Get data from the arrays.
|
|
nacl_conc = [entry[0] for entry in wateq4f_result][1:]
|
|
wateq4f_values = [entry[1] for entry in wateq4f_result][1:]
|
|
pitzer_values = [entry[1] for entry in pitzer_result][1:]
|
|
# Plot
|
|
plt.plot(nacl_conc, pitzer_values, 'k', nacl_conc, wateq4f_values,'k--')
|
|
plt.axis([0, 6, 0, .06])
|
|
plt.legend(('PITZER','WATEQ4F'), loc = (0.4, 0.4))
|
|
plt.ylabel('GYPSUM SOLUBILITY, MOLES PER KILOGRAM WATER')
|
|
plt.xlabel('NaCl, MOLES PER KILOGRAM WATER')
|
|
plt.savefig("Figure2.png")
|
|
plt.show()
|
|
|
|
if __name__ == '__main__':
|
|
# This will only run when called as script from the command line
|
|
# and not when imported from another script.
|
|
INPUT_STRING = """
|
|
SOLUTION 1
|
|
END
|
|
INCREMENTAL_REACTIONS
|
|
REACTION
|
|
NaCl 1.0
|
|
0 60*0.1 moles
|
|
EQUILIBRIUM_PHASES
|
|
Gypsum
|
|
USE solution 1
|
|
SELECTED_OUTPUT
|
|
-reset false
|
|
-total Na S(6)
|
|
END"""
|
|
show_results(INPUT_STRING) |