# specmicp/e19767784417master

# README.md

## SpecMiCP

### Overview

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 number of moles "nl", the equilibrium condition is :

nl >= 0, 1-(IAP/K) >= 0, nl*(1-(IAP/K) = 0

where IAP is the ion activity product and K the equilibrium constant. This condition is reformulated using [C-function][1] and the system is solved using a semismooth method.

### Modules

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, ...**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][2] database.

The **micpsolver** and **odeint** modules can be use independantly.

Examples of use are provided in the tests. In particular, files in tests/specmicps/ show some reaction paths modeling and a kinetic example.

### About

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.

[1] Finite-Dimensional Variational Inequalities and Complementarity Problems, Facchinei and Pang, Springer, 2003