From 54136c8e0c638d0dc47e85cef1428822b6c1512d Mon Sep 17 00:00:00 2001 From: Max Luebke Date: Wed, 13 Mar 2024 23:49:57 +0100 Subject: [PATCH] Add module sizes --- poet/include/IPhreeqcPOET.hpp | 16 ++++++++++++++++ poet/src/IPhreeqcPOET.cpp | 16 ++++++++-------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/poet/include/IPhreeqcPOET.hpp b/poet/include/IPhreeqcPOET.hpp index b17f88b5..0b66bf90 100644 --- a/poet/include/IPhreeqcPOET.hpp +++ b/poet/include/IPhreeqcPOET.hpp @@ -9,11 +9,15 @@ #include #include #include +#include #include #include #include +#include #include +enum { POET_SOL = 0, POET_EXCH, POET_KIN, POET_EQUIL, POET_SURF }; + class IPhreeqcPOET : public IPhreeqc { public: std::vector @@ -48,6 +52,7 @@ public: std::vector getSolutionIds() const { return this->solution_ids; } + std::map raw_dumps() { std::map dumps; @@ -62,6 +67,17 @@ public: return dumps; } + using ModulesArray = std::array; + + ModulesArray getModuleSizes() const { + ModulesArray module_sizes; + for (std::uint8_t i = 0; i < 5; i++) { + module_sizes[i] = this->initial_names[i].size(); + } + + return module_sizes; + } + private: using essential_names = std::array, 5>; diff --git a/poet/src/IPhreeqcPOET.cpp b/poet/src/IPhreeqcPOET.cpp index 131848eb..a64a6be6 100644 --- a/poet/src/IPhreeqcPOET.cpp +++ b/poet/src/IPhreeqcPOET.cpp @@ -44,15 +44,15 @@ void IPhreeqcPOET::valuesFromModule(const std::string &module_name, std::size_t dest_module_i = 0; std::vector to_insert; if (module_name == "exchange") { // 1 - this->Get_exchange(cell_number)->dump_essential_names(names[1]); + this->Get_exchange(cell_number)->dump_essential_names(names[POET_EXCH]); this->Get_exchange(cell_number)->get_essential_values(to_insert); dest_module_i = 1; } else if (module_name == "kinetics") { // 2 - this->Get_kinetic(cell_number)->dump_essential_names(names[2]); + this->Get_kinetic(cell_number)->dump_essential_names(names[POET_KIN]); this->Get_kinetic(cell_number)->get_essential_values(to_insert); dest_module_i = 2; } else if (module_name == "surface") { // 4 - this->Get_surface(cell_number)->dump_essential_names(names[4]); + this->Get_surface(cell_number)->dump_essential_names(names[POET_SURF]); this->Get_surface(cell_number)->get_essential_values(to_insert); dest_module_i = 4; } @@ -191,31 +191,31 @@ IPhreeqcPOET::dump_essential_names(std::size_t cell_number) { // Solutions if (this->Get_solution(cell_number) != NULL) { - std::vector &eSolNames = eNames[0]; + std::vector &eSolNames = eNames[POET_SOL]; this->Get_solution(cell_number)->dump_essential_names(eSolNames); } // Exchange if (this->Get_exchange(cell_number) != NULL) { - std::vector &eExchNames = eNames[1]; + std::vector &eExchNames = eNames[POET_EXCH]; this->Get_exchange(cell_number)->dump_essential_names(eExchNames); } // Kinetics if (this->Get_kinetic(cell_number) != NULL) { - std::vector &eKinNames = eNames[2]; + std::vector &eKinNames = eNames[POET_KIN]; this->Get_kinetic(cell_number)->dump_essential_names(eKinNames); } // PPassemblage if (this->Get_equilibrium(cell_number) != NULL) { - std::vector &eEquNames = eNames[3]; + std::vector &eEquNames = eNames[POET_EQUIL]; this->Get_equilibrium(cell_number)->dump_essential_names(eEquNames); } // Surface if (this->Get_surface(cell_number) != NULL) { - std::vector &eSurfNames = eNames[4]; + std::vector &eSurfNames = eNames[POET_SURF]; this->Get_surface(cell_number)->dump_essential_names(eSurfNames); }