From 1ce1fd01f1eb6a2a772f00fadd1796bf5f7415f9 Mon Sep 17 00:00:00 2001
From: renchao_lu <renchao.lu@gmail.com>
Date: Tue, 9 Jun 2020 22:55:03 +0200
Subject: [PATCH] [CL] initialize num_chemical systems.

---
 ChemistryLib/ChemicalSolverInterface.h |  2 ++
 ChemistryLib/PhreeqcIO.cpp             | 10 ++++++++++
 ChemistryLib/PhreeqcIO.h               |  3 +++
 3 files changed, 15 insertions(+)

diff --git a/ChemistryLib/ChemicalSolverInterface.h b/ChemistryLib/ChemicalSolverInterface.h
index ed55c782aad..1572924bc35 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 54ec132c52c..33778212c4c 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 4c59ca563b2..0f8dcf15650 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
-- 
GitLab