OGS
ChemistryLib::PhreeqcIOData::Output Struct Reference

Detailed Description

Specification of which PHREEQC output columns are imported into OpenGeoSys.

PHREEQC writes a table of values (pH, pe, total component amounts, equilibrium phase amounts, kinetic phase amounts, user-defined quantities, etc.) for every chemical_system_id. OpenGeoSys does not use all columns.

Output defines the subset that will be read back:

  • basic_output_setups describes how the PHREEQC SELECTED_OUTPUT / USER_PUNCH is configured (file name, precision, which built-in columns like pH and pe are requested, which are dropped),
  • accepted_items lists the columns that OpenGeoSys will parse and map back into its state (AqueousSolution, reactant inventories, secondary variables),
  • dropped_item_ids records PHREEQC columns that are printed but ignored.

The ordering in accepted_items matches the column ordering produced by PHREEQC. After each chemistry step, PhreeqcIO iterates over these items, per chemical_system_id, to assign the updated chemical state.

Definition at line 122 of file ChemistryLib/PhreeqcIOData/Output.h.

#include <Output.h>

Collaboration diagram for ChemistryLib::PhreeqcIOData::Output:
[legend]

Public Member Functions

 Output (BasicOutputSetups &&basic_output_setups_, std::vector< OutputItem > &&accepted_items_, std::vector< int > &&dropped_item_ids_)
std::vector< OutputItemgetOutputItemsByItemType (ItemType item_type) const

Public Attributes

BasicOutputSetups const basic_output_setups
std::vector< OutputItem > const accepted_items
std::vector< int > const dropped_item_ids

Friends

std::ostream & operator<< (std::ostream &os, Output const &output)

Constructor & Destructor Documentation

◆ Output()

ChemistryLib::PhreeqcIOData::Output::Output ( BasicOutputSetups && basic_output_setups_,
std::vector< OutputItem > && accepted_items_,
std::vector< int > && dropped_item_ids_ )
inline

Definition at line 124 of file ChemistryLib/PhreeqcIOData/Output.h.

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 }

References accepted_items, basic_output_setups, and dropped_item_ids.

Referenced by operator<<.

Member Function Documentation

◆ getOutputItemsByItemType()

std::vector< OutputItem > ChemistryLib::PhreeqcIOData::Output::getOutputItemsByItemType ( ItemType item_type) const
inline

Definition at line 133 of file ChemistryLib/PhreeqcIOData/Output.h.

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 }

References accepted_items.

Referenced by operator<<.

◆ operator<<

std::ostream & operator<< ( std::ostream & os,
Output const & output )
friend

Definition at line 61 of file ChemistryLib/PhreeqcIOData/Output.cpp.

62{
63 os << output.basic_output_setups;
64
65 auto const component_items =
66 output.getOutputItemsByItemType(ItemType::Component);
67 os << "-totals";
68 for (auto const& component_item : component_items)
69 {
70 os << " " << component_item.name;
71 }
72 os << "\n";
73
74 auto const equilibrium_phase_items =
75 output.getOutputItemsByItemType(ItemType::EquilibriumReactant);
76 if (!equilibrium_phase_items.empty())
77 {
78 os << "-equilibrium_phases";
79 for (auto const& equilibrium_phase_item : equilibrium_phase_items)
80 {
81 os << " " << equilibrium_phase_item.name;
82 }
83 os << "\n";
84 }
85
86 auto const kinetic_reactant_items =
87 output.getOutputItemsByItemType(ItemType::KineticReactant);
88 if (!kinetic_reactant_items.empty())
89 {
90 os << "-kinetic_reactants";
91 for (auto const& kinetic_reactant_item : kinetic_reactant_items)
92 {
93 os << " " << kinetic_reactant_item.name;
94 }
95 os << "\n";
96 }
97
98 return os;
99}

References Output(), basic_output_setups, ChemistryLib::PhreeqcIOData::Component, ChemistryLib::PhreeqcIOData::EquilibriumReactant, getOutputItemsByItemType(), and ChemistryLib::PhreeqcIOData::KineticReactant.

Member Data Documentation

◆ accepted_items

std::vector<OutputItem> const ChemistryLib::PhreeqcIOData::Output::accepted_items

Definition at line 147 of file ChemistryLib/PhreeqcIOData/Output.h.

Referenced by Output(), and getOutputItemsByItemType().

◆ basic_output_setups

BasicOutputSetups const ChemistryLib::PhreeqcIOData::Output::basic_output_setups

Definition at line 146 of file ChemistryLib/PhreeqcIOData/Output.h.

Referenced by Output(), and operator<<.

◆ dropped_item_ids

std::vector<int> const ChemistryLib::PhreeqcIOData::Output::dropped_item_ids

Definition at line 148 of file ChemistryLib/PhreeqcIOData/Output.h.

Referenced by Output().


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