OGS
ChemistryLib/PhreeqcIOData/Output.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <algorithm>
7#include <iosfwd>
8#include <iterator>
9#include <string>
10#include <vector>
11
12namespace ChemistryLib
13{
14namespace PhreeqcIOData
15{
29{
30public:
31 explicit BasicOutputSetups(std::string const& project_file_name,
32 bool const use_high_precision_);
33
40
46
47 friend std::ostream& operator<<(
48 std::ostream& os, BasicOutputSetups const& basic_output_setups);
49
50 std::string const output_file;
51
52private:
53 static const bool display_simulation_id = false;
54 static const bool display_state = true;
55 static const bool display_solution_id = true;
56 static const bool display_distance = false;
57 static const bool display_current_time = false;
58 static const bool display_time_step = false;
59 static const bool display_pH = true;
60 static const bool display_pe = true;
62};
63
80
90{
91 OutputItem(std::string name_, ItemType item_type_)
92 : name(std::move(name_)), item_type(item_type_)
93 {
94 }
95
96 std::string const name;
98};
99
122struct Output
123{
124 Output(BasicOutputSetups&& basic_output_setups_,
125 std::vector<OutputItem>&& accepted_items_,
126 std::vector<int>&& dropped_item_ids_)
127 : basic_output_setups(std::move(basic_output_setups_)),
128 accepted_items(std::move(accepted_items_)),
129 dropped_item_ids(std::move(dropped_item_ids_))
130 {
131 }
132
133 std::vector<OutputItem> getOutputItemsByItemType(ItemType item_type) const
134 {
135 std::vector<OutputItem> matching_items;
136 std::copy_if(accepted_items.cbegin(),
137 accepted_items.cend(),
138 std::back_inserter(matching_items),
139 [&item_type](OutputItem const& accepted_item)
140 { return accepted_item.item_type == item_type; });
141 return matching_items;
142 }
143
144 friend std::ostream& operator<<(std::ostream& os, Output const& output);
145
147 std::vector<OutputItem> const accepted_items;
148 std::vector<int> const dropped_item_ids;
149};
150} // namespace PhreeqcIOData
151} // namespace ChemistryLib
Controls which built-in PHREEQC columns appear in the output file.
friend std::ostream & operator<<(std::ostream &os, BasicOutputSetups const &basic_output_setups)
BasicOutputSetups(std::string const &project_file_name, bool const use_high_precision_)
ItemType
Category used to interpret a PHREEQC output column.
One PHREEQC output column that OpenGeoSys will keep.
OutputItem(std::string name_, ItemType item_type_)
Specification of which PHREEQC output columns are imported into OpenGeoSys.
friend std::ostream & operator<<(std::ostream &os, Output const &output)
Output(BasicOutputSetups &&basic_output_setups_, std::vector< OutputItem > &&accepted_items_, std::vector< int > &&dropped_item_ids_)
std::vector< OutputItem > getOutputItemsByItemType(ItemType item_type) const