Scott Charlton badfc51b4f Add 'examples/com/' from commit 'f90209d22ab165052a564c0ccdd346071d1fc803'
git-subtree-dir: examples/com
git-subtree-mainline: 6440359f1983c3200dc42fbcd59ed98edf376c7d
git-subtree-split: f90209d22ab165052a564c0ccdd346071d1fc803
2018-07-31 16:54:51 -06:00

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)