SpecMiCP is a speciation solver to find the equilibrium state of a chemical system. The system is based on a mixed complementarity formulation of the equilibrium condition for minerals.
For a mineral with volume fraction Sm, the equilibrium condition is :
Sm >= 0, -log(IAPm/K) >= 0, -Sm*log(IAPm/K) = 0
where IAPm is the ion activity product and K the equilibrium constant. This condition is reformulated using [C-function] and the system is solved using a semismooth method.
SpecMiCP is not (yet) a program but a set of libraries that can be used to solve specific problems.
The following modules are already available :
- database : manage the database, parse it from a file, swap the basis, select the correct species, ...
- micpsolver : Solve a Mixed Complementarity problem
- odeint : integration methods for the solving ordinary differential equations (for problem involving kinetics for example)
- specmicp : *core* of the library, set the system, solve it, solve a reaction path model, ...
- reactmicp : the reactive transport solver
- data : contains two example of database in JSON format. 'specmicp_database.js' is just an example, mainly for the tests. 'cemdata_specmicp.js' is a partial translation of the [CEMDATA07] database.
The micpsolver and odeint modules can be use independantly.
Examples of use are provided in the examples directory.
SpecMiCP is developped by F. Georget (fabieng aT princeton DoT edu). It is part of my PhD work. The purpose of the PhD is to develop a reactive transport model to model the coupling between hydration, drying and carbonation in cement paste.
References : F. Georget, J. H. Prévost, and R. J. Vanderbei. A speciation solver for cement paste modeling and the semismooth Newton method . Cement and Concrete Research, 68(0):139--147, 2015.
 Finite-Dimensional Variational Inequalities and Complementarity Problems, Facchinei and Pang, Springer, 2003