From e5588a2ee973976f3ba9504879457db9591e9b2b Mon Sep 17 00:00:00 2001 From: Max Luebke Date: Wed, 18 Dec 2024 17:34:46 +0100 Subject: [PATCH] feat: add support for redox in PhreeqcMatrix initialization --- ext/iphreeqc | 2 +- src/Init/GridInit.cpp | 10 +++++++++- src/Init/InitialList.hpp | 7 ++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/ext/iphreeqc b/ext/iphreeqc index 2c8c31193..6e727e2f8 160000 --- a/ext/iphreeqc +++ b/ext/iphreeqc @@ -1 +1 @@ -Subproject commit 2c8c311934cd54f0923d8b92dcccd9894825ce1b +Subproject commit 6e727e2f896e853745b4dd123c5772a9b40ad705 diff --git a/src/Init/GridInit.cpp b/src/Init/GridInit.cpp index 6b0e4ae15..52ce6943a 100644 --- a/src/Init/GridInit.cpp +++ b/src/Init/GridInit.cpp @@ -179,7 +179,15 @@ PhreeqcMatrix InitialList::prepareGrid(const Rcpp::List &grid_input, throw std::runtime_error("Grid size must be positive."); } - PhreeqcMatrix pqc_mat = PhreeqcMatrix(database, script, include_h0_o0); + bool with_redox = + grid_input.containsElementNamed( + GRID_MEMBER_STR(GridMembers::PQC_WITH_REDOX)) + ? Rcpp::as( + grid_input[GRID_MEMBER_STR(GridMembers::PQC_WITH_REDOX)]) + : false; + + PhreeqcMatrix pqc_mat = + PhreeqcMatrix(database, script, include_h0_o0, with_redox); this->transport_names = pqc_mat.getSolutionNames(); diff --git a/src/Init/InitialList.hpp b/src/Init/InitialList.hpp index d3d1bf871..03132983e 100644 --- a/src/Init/InitialList.hpp +++ b/src/Init/InitialList.hpp @@ -75,6 +75,7 @@ private: enum class GridMembers { PQC_SCRIPT_STRING, PQC_SCRIPT_FILE, + PQC_WITH_REDOX, PQC_DB_STRING, PQC_DB_FILE, GRID_DEF, @@ -88,9 +89,9 @@ private: static_cast(InitialList::GridMembers::ENUM_SIZE); static constexpr std::array - GridMembersString = {"pqc_in_string", "pqc_in_file", "pqc_db_string", - "pqc_db_file", "grid_def", "grid_size", - "constant_cells", "porosity"}; + GridMembersString = {"pqc_in_string", "pqc_in_file", "pqc_with_redox", + "pqc_db_string", "pqc_db_file", "grid_def", + "grid_size", "constant_cells", "porosity"}; constexpr const char *GRID_MEMBER_STR(GridMembers member) const { return GridMembersString[static_cast(member)];