Chemical kinetics for mineral reactions using custom surface area models#

Written by Allan Leal (ETH Zurich) on Nov 30th, 2022

This tutorial is unfinished. We will show you here how to define your own surface area model to be used together with heterogeneous reactions (such as mineral dissolution/precipitation reactions). For example, we’ll show how to define the following surface area model below commonly used by geochemical modeling software (e.g., PHREEQC [Parkhurst and Appelo, 2013]):

def areafn(props: ChemicalProps):
    q0 = 1.0  # the initial amount of calcite (in mol)
    A0 = 0.1  # the initial surface area of calcite (in m2)
    q = props.speciesAmount("Calcite")  # current amount of calcite during the simulation
    return A0 * pow(q / q0, p)

system = ChemicalSystem(db, 
    ...
    MineralSurface("Calcite").setAreaModel(areafn)
    ...
) 

Stay tuned!