OGS
ChemistryLib::PhreeqcIOData::Dump Struct Reference

Detailed Description

Definition at line 20 of file Dump.h.

#include <Dump.h>

Public Member Functions

 Dump ()=default
 Dump (std::string const &project_file_name)
void print (std::ostream &os, std::size_t const num_chemical_systems) const
void readDumpFile (std::istream &in, std::size_t const num_chemical_systems)
void readDumpFromString (std::string_view dump_content, std::size_t const num_chemical_systems)
void readDumpFromStringForSystem (std::string_view dump_content, std::size_t const chemical_system_id, std::size_t const num_chemical_systems)

Public Attributes

std::string dump_file
std::vector< std::string > aqueous_solutions_prev

Constructor & Destructor Documentation

◆ Dump() [1/2]

ChemistryLib::PhreeqcIOData::Dump::Dump ( )
default

◆ Dump() [2/2]

ChemistryLib::PhreeqcIOData::Dump::Dump ( std::string const & project_file_name)
inlineexplicit

Definition at line 24 of file Dump.h.

25 : dump_file(specifyFileName(project_file_name, ".dmp"))
26 {
27 try
28 {
29 if (std::filesystem::remove(dump_file))
30 {
31 INFO("Deleted the redundant phreeqc dump file {:s}\n",
32 dump_file);
33 }
34 }
35 catch (std::filesystem::filesystem_error const& e)
36 {
37 ERR("filesystem error: {:s}\n", e.what());
38 }
39 }
void INFO(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:28
void ERR(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:40
std::string specifyFileName(std::string const &project_file_name, std::string const &file_extension)

References dump_file, ERR(), INFO(), and ChemistryLib::PhreeqcIOData::specifyFileName().

Member Function Documentation

◆ print()

void ChemistryLib::PhreeqcIOData::Dump::print ( std::ostream & os,
std::size_t const num_chemical_systems ) const

Definition at line 60 of file Dump.cpp.

61{
62 os << "DUMP"
63 << "\n";
64 os << "-file " << dump_file << "\n";
65 os << "-append false"
66 << "\n";
67 os << "-solution 1-" << num_chemical_systems << "\n";
68 os << "END"
69 << "\n";
70}

References dump_file.

◆ readDumpFile()

void ChemistryLib::PhreeqcIOData::Dump::readDumpFile ( std::istream & in,
std::size_t const num_chemical_systems )

Definition at line 72 of file Dump.cpp.

74{
75 aqueous_solutions_prev = parseDumpContent(in, num_chemical_systems);
76}
std::vector< std::string > parseDumpContent(std::istream &in, std::size_t const num_chemical_systems, std::size_t const start_id=0)
Definition Dump.cpp:15
std::vector< std::string > aqueous_solutions_prev
Definition Dump.h:56

References aqueous_solutions_prev.

Referenced by readDumpFromString().

◆ readDumpFromString()

void ChemistryLib::PhreeqcIOData::Dump::readDumpFromString ( std::string_view dump_content,
std::size_t const num_chemical_systems )

Definition at line 78 of file Dump.cpp.

80{
81 std::istringstream in{std::string(dump_content)};
82 readDumpFile(in, num_chemical_systems);
83}
void readDumpFile(std::istream &in, std::size_t const num_chemical_systems)
Definition Dump.cpp:72

References readDumpFile().

◆ readDumpFromStringForSystem()

void ChemistryLib::PhreeqcIOData::Dump::readDumpFromStringForSystem ( std::string_view dump_content,
std::size_t const chemical_system_id,
std::size_t const num_chemical_systems )

Parse dump data for a single chemical system from parallel execution. In parallel mode, each PHREEQC instance produces dump for solution 1, which needs to be mapped to the correct chemical_system_id.

Definition at line 85 of file Dump.cpp.

88{
89 if (aqueous_solutions_prev.size() < num_chemical_systems)
90 {
91 aqueous_solutions_prev.resize(num_chemical_systems);
92 }
93
94 std::istringstream in{std::string(dump_content)};
95 auto parsed =
96 parseDumpContent(in, num_chemical_systems, chemical_system_id);
97 if (parsed.empty())
98 {
99 WARN("No SOLUTION_RAW found in dump for chemical system {}.",
100 chemical_system_id);
101 return;
102 }
103 aqueous_solutions_prev[chemical_system_id] = std::move(parsed[0]);
104}
void WARN(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:34

References aqueous_solutions_prev, and WARN().

Member Data Documentation

◆ aqueous_solutions_prev

std::vector<std::string> ChemistryLib::PhreeqcIOData::Dump::aqueous_solutions_prev

Definition at line 56 of file Dump.h.

Referenced by readDumpFile(), and readDumpFromStringForSystem().

◆ dump_file

std::string ChemistryLib::PhreeqcIOData::Dump::dump_file

Definition at line 55 of file Dump.h.

Referenced by Dump(), and print().


The documentation for this struct was generated from the following files: