In [1]:
import sys
sys.path.append('../')
import matplotlib.pyplot as plt
from porousmedialab.batch import Batch
import numpy as np
import seaborn as sns
%matplotlib inline
In [2]:
bl = Batch(tend = 30, dt = 0.1)
In [3]:
C_init=0.1/4
bl.add_species(name='H3PO4', init_conc=C_init)
bl.add_species(name='H2PO4', init_conc=C_init)
bl.add_species(name='HPO4', init_conc=C_init)
bl.add_species(name='PO4', init_conc=C_init)
bl.add_acid(species=['H3PO4', 'H2PO4', 'HPO4', 'PO4'], pKa=[2.148, 7.198, 12.375])
In [4]:
bl.add_species(name='Na', init_conc=0)
bl.add_ion(name='Na', charge=1)
In [5]:
bl.dcdt['Na'] = '1e-2' # units of mass per units of time
In [6]:
bl.solve()
In [7]:
bl.plot_profiles()
In [8]:
bl.plot_fractions()
In [10]:
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(bl.time, bl.pH['concentration'][0], 'k-.', lw=3, label='pH')
ax2.plot(bl.time, np.log10(bl.H3PO4['concentration'][0]), label='H3PO4', lw=3)
ax2.plot(bl.time, np.log10(bl.H2PO4['concentration'][0]), label='H2PO4', lw=3)
ax2.plot(bl.time, np.log10(bl.HPO4['concentration'][0]), label='HPO4', lw=3)
ax2.plot(bl.time, np.log10(bl.PO4['concentration'][0]), label='PO4', lw=3)
ax1.set_ylim(0,14)
ax2.set_ylim(-6,-1)
ax1.grid(lw=0.2)
ax2.grid(lw=0.2)
ax1.set_xlabel('Time, [T]')
ax1.set_xlim(0,30)
ax1.set_ylabel('pH')
ax2.set_ylabel('log (C)')
ax2.legend(loc=4, frameon=1)
ax1.legend(loc=3, frameon=1)
Out[10]:
In [ ]: