From c86b1359e4546c1fc6ed22d20e2be8ea13cf4137 Mon Sep 17 00:00:00 2001 From: renchao_lu <renchao.lu@gmail.com> Date: Fri, 15 Apr 2022 11:39:44 +0200 Subject: [PATCH] [CL] specify phreeqc I/O file name. --- ChemistryLib/PhreeqcIO.cpp | 5 ++++- ChemistryLib/PhreeqcIOData/Dump.h | 5 ++++- ChemistryLib/PhreeqcIOData/Output.cpp | 25 +++++++++++++++++++++++++ ChemistryLib/PhreeqcIOData/Output.h | 6 +----- 4 files changed, 34 insertions(+), 7 deletions(-) diff --git a/ChemistryLib/PhreeqcIO.cpp b/ChemistryLib/PhreeqcIO.cpp index 8fc0d98c443..349820eeabc 100644 --- a/ChemistryLib/PhreeqcIO.cpp +++ b/ChemistryLib/PhreeqcIO.cpp @@ -262,6 +262,9 @@ static double averageReactantMolality( } } // namespace +extern std::string specifyFileName(std::string const& project_file_name, + std::string const& file_extension); + PhreeqcIO::PhreeqcIO(MeshLib::Mesh const& mesh, GlobalLinearSolver& linear_solver, std::string const& project_file_name, @@ -273,7 +276,7 @@ PhreeqcIO::PhreeqcIO(MeshLib::Mesh const& mesh, std::unique_ptr<Dump>&& dump, Knobs&& knobs) : ChemicalSolverInterface(mesh, linear_solver), - _phreeqc_input_file(project_file_name + "_phreeqc.inp"), + _phreeqc_input_file(specifyFileName(project_file_name, ".inp")), _database(std::move(database)), _chemical_system(std::move(chemical_system)), _reaction_rates(std::move(reaction_rates)), diff --git a/ChemistryLib/PhreeqcIOData/Dump.h b/ChemistryLib/PhreeqcIOData/Dump.h index 55e3b60aede..d79a89bb759 100644 --- a/ChemistryLib/PhreeqcIOData/Dump.h +++ b/ChemistryLib/PhreeqcIOData/Dump.h @@ -21,10 +21,13 @@ namespace ChemistryLib { namespace PhreeqcIOData { +extern std::string specifyFileName(std::string const& project_file_name, + std::string const& file_extension); + struct Dump { explicit Dump(std::string const& project_file_name) - : dump_file(project_file_name + ".dmp") + : dump_file(specifyFileName(project_file_name, ".dmp")) { try { diff --git a/ChemistryLib/PhreeqcIOData/Output.cpp b/ChemistryLib/PhreeqcIOData/Output.cpp index 4e2928c41eb..59d5bc96a22 100644 --- a/ChemistryLib/PhreeqcIOData/Output.cpp +++ b/ChemistryLib/PhreeqcIOData/Output.cpp @@ -12,10 +12,35 @@ #include <ostream> +#ifdef USE_PETSC +#include <mpi.h> +#endif + namespace ChemistryLib { namespace PhreeqcIOData { +std::string specifyFileName(std::string const& project_file_name, + std::string const& file_extension) +{ +#ifdef USE_PETSC + int mpi_rank; + + MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank); + return project_file_name + "_phreeqc_pid_" + std::to_string(mpi_rank) + + file_extension; +#endif + + return project_file_name + "_phreeqc" + file_extension; +} + +BasicOutputSetups::BasicOutputSetups(std::string const& project_file_name, + bool const use_high_precision_) + : output_file(specifyFileName(project_file_name, ".out")), + use_high_precision(use_high_precision_) +{ +} + std::ostream& operator<<(std::ostream& os, BasicOutputSetups const& basic_output_setups) { diff --git a/ChemistryLib/PhreeqcIOData/Output.h b/ChemistryLib/PhreeqcIOData/Output.h index 1f270a943eb..99a264511b1 100644 --- a/ChemistryLib/PhreeqcIOData/Output.h +++ b/ChemistryLib/PhreeqcIOData/Output.h @@ -24,11 +24,7 @@ class BasicOutputSetups { public: explicit BasicOutputSetups(std::string const& project_file_name, - bool const use_high_precision_) - : output_file(project_file_name + "_phreeqc.out"), - use_high_precision(use_high_precision_) - { - } + bool const use_high_precision_); static int getNumberOfItemsInDisplay() { -- GitLab