Simple example of kinetic dissolution of calcite with Phreeqc and Aquifer Lab – Tutorial

Hydrate

This is an example of calcite dissolution with kinetics where a simplified rate and initial molality are defined. The tutorial covers creation of an input file for Phreeqc, database selection, Phreeqc simulation in Aquifer App and analysis of processed output data on a Jupyter notebook. Finally the molality of Calcium and pH are plotted with time.

Tutorial

Phreeqc input file

TITLE Kinetic dissolution of calcite

SOLUTION 1
    temp 10
    pH   6
    C    1

EQUILIBRIUM_PHASES 1
    CO2(g)  -1.5

KINETICS 1
    Calcit2
    formula CaCO3
    -m0 1
    -steps 30000 in 20 steps

RATES
    Calcit2
    -start
    10 rate=10^-6.91 - 10^-1.52*(tot("Ca"))^2
    20 save 1 * rate * time
    -end

END

Code

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#solution composition 
compDf = pd.read_csv('solutionComposition.csv', index_col=[0,1,2])
compDf.head()

Element Molality Moles
Simulation Type Number
1 initial 1 C 0.001000 0.001000
batch 1 C 0.002326 0.002326
1 Ca 0.000184 0.000184
2 C 0.002688 0.002688
2 Ca 0.000365 0.000365
#caDf = compDf.loc[(compDf.index.get_level_values('Type') == 'batch') & (compDf.Element == 'Ca')]
caDf = compDf.loc[compDf.Element == 'Ca']
caDf.head()

Element Molality Moles
Simulation Type Number
1 batch 1 Ca 0.000184 0.000184
2 Ca 0.000365 0.000365
3 Ca 0.000540 0.000540
4 Ca 0.000707 0.000707
5 Ca 0.000863 0.000863
#solution description for ph values
descDf = pd.read_csv('solutionDescription.csv', index_col=[0,1,2])
descDf.head()

Parameter Value
Simulation Type Number
1 initial 1 pH 6.00000
1 pe 4.00000
1 Specific Conductance (µS/cm, 10°C) 8.00000
1 Density (g/cm³) 0.99972
1 Volume (L) 1.00033
#phDf = descDf.loc[(descDf.index.get_level_values('Type') == 'batch') & (descDf.Parameter == 'pH')]
phDf = descDf.loc[descDf.Parameter == 'pH']
phDf.head()

Parameter Value
Simulation Type Number
1 initial 1 pH 6.000
batch 1 pH 6.017
2 pH 6.210
3 pH 6.338
4 pH 6.432
#define time list
timeList = np.linspace(0,30000,21)
timeList
array([    0.,  1500.,  3000.,  4500.,  6000.,  7500.,  9000., 10500.,
       12000., 13500., 15000., 16500., 18000., 19500., 21000., 22500.,
       24000., 25500., 27000., 28500., 30000.])
#plot Ca molality
plt.plot(timeList[1:],caDf.Molality*1000)
plt.ylabel('Ca (mMoles)')
plt.xlabel('Time Seconds')
Text(0.5, 0, 'Time Seconds')

#plot pH
plt.plot(timeList,phDf.Value)
plt.xlabel('pH')
plt.xlabel('Time (Seconds)')
Text(0.5, 0, 'Time (Seconds)')

Input data

You can download the input files from this link.

—————
TRANSCOM ISPFree Sigma HSE Email
Level 6 Domain Names are FREE – Register Now.

Related Posts

Hydrate

EGU2024

The mountain hydrology team will have full presence at EGU2024. Below you’ll find a list of the primary presentations by our team.

Full programme can be

Boost Inflight Internet- Business Hosting- Secure Email Account- Dropcatch Domain Names- Antisnoop Email- Free Secure Email- Cheap VOIP Calls- Free Hosting and Email- Aero Connectivity- Premium Domains for Sale- Transcom Telecom- Satphone Airtime- Mobile Plans- Free Domain Names- Organic Products- Aviation News
Transcom ISP - Transcom VOIP - Free Secure Email - Dropcatch Software - FastApn Inflight - Aero Connect - Premium Domains