diff --git a/ChemistryLib/ChemicalSolverInterface.h b/ChemistryLib/ChemicalSolverInterface.h
index ed55c782aad66a923289a042046f812093608b44..1572924bc356c5c1c554ef5c582ceb169bde5d7c 100644
--- a/ChemistryLib/ChemicalSolverInterface.h
+++ b/ChemistryLib/ChemicalSolverInterface.h
@@ -17,6 +17,8 @@ namespace ChemistryLib
 class ChemicalSolverInterface
 {
 public:
+    virtual void initialize() {}
+
     virtual void executeInitialCalculation(
         std::vector<GlobalVector*>& process_solutions) = 0;
 
diff --git a/ChemistryLib/PhreeqcIO.cpp b/ChemistryLib/PhreeqcIO.cpp
index 54ec132c52c9a7c9708803fae7fe39ee9d75fea9..33778212c4c020fac1cc4c4d7b1c5754d405594d 100644
--- a/ChemistryLib/PhreeqcIO.cpp
+++ b/ChemistryLib/PhreeqcIO.cpp
@@ -15,6 +15,7 @@
 #include <boost/algorithm/string.hpp>
 #include <cmath>
 #include <fstream>
+#include <numeric>
 
 #include "BaseLib/Algorithm.h"
 #include "BaseLib/ConfigTreeUtil.h"
@@ -101,6 +102,15 @@ PhreeqcIO::PhreeqcIO(std::string const project_file_name,
     }
 }
 
+void PhreeqcIO::initialize()
+{
+    _num_chemical_systems = std::accumulate(
+        begin(chemical_system_index_map), end(chemical_system_index_map), 0,
+        [](auto result, auto const& chemical_system_index) {
+            return result + chemical_system_index.size();
+        });
+}
+
 void PhreeqcIO::executeInitialCalculation(
     std::vector<GlobalVector*>& process_solutions)
 {
diff --git a/ChemistryLib/PhreeqcIO.h b/ChemistryLib/PhreeqcIO.h
index 4c59ca563b295b92f38f76e7ebc2aa1066177baf..0f8dcf1565083ee3cf00e551a91137f1b1bfde5c 100644
--- a/ChemistryLib/PhreeqcIO.h
+++ b/ChemistryLib/PhreeqcIO.h
@@ -51,6 +51,8 @@ public:
               std::unique_ptr<Dump>&& dump,
               Knobs&& knobs);
 
+    void initialize() override;
+
     void executeInitialCalculation(
         std::vector<GlobalVector*>& process_solutions) override;
 
@@ -97,6 +99,7 @@ private:
     Knobs const _knobs;
     double _dt = std::numeric_limits<double>::quiet_NaN();
     const int phreeqc_instance_id = 0;
+    int _num_chemical_systems = -1;
 };
 }  // namespace PhreeqcIOData
 }  // namespace ChemistryLib