#include #include #include "ChemPlugin.h" int main(int argc, char** argv) { std::cout << "ChemPlugin example -- pH titration" << std::endl << std::endl; std::cout << std::fixed << std::setprecision(2); // Create a ChemPlugin instance. ChemPlugin cp("stdout"); // Configure the instance. cp.Config("Ca++ = 1 mmol/kg; Na+ = 1 mmol/kg"); cp.Config("Cl- = 3 mmol/kg; HCO3- = 2 mmol/kg; pH = 4"); cp.Config("react 3 mmol/kg NaOH; delxi = 0.1"); // Initialize the instance. cp.Initialize(); int nsp = cp.Report(NULL, "species"); char **spec = new char*[nsp]; double *conc = new double[nsp]; cp.Report(spec, "species"); // Time marching loop. while (true) { double deltat = cp.ReportTimeStep(); if (cp.AdvanceTimeStep(deltat)) break; if (cp.AdvanceChemical()) break; cp.Report(conc, "concentration aqueous", "umol/kg"); for (int i=0; i= 10.0) std::cout << spec[i] << " = " << conc[i] << " umol/kg" << std::endl; std::cout << std::endl; } delete[] spec; delete[] conc; // Any keystroke closes the console. std::cin.get(); return 0; }