OGS
AqueousSolution.h
Go to the documentation of this file.
1 
11 #pragma once
12 
13 #include <iosfwd>
14 #include <memory>
15 #include <string>
16 #include <vector>
17 
19 #include "Output.h"
20 
21 namespace MeshLib
22 {
23 template <typename PROP_VAL_TYPE>
24 class PropertyVector;
25 }
26 
27 namespace ChemistryLib
28 {
29 enum class ChargeBalance;
30 
31 namespace PhreeqcIOData
32 {
33 struct Component
34 {
35  explicit Component(std::string name_, std::string chemical_formula_)
36  : name(std::move(name_)), chemical_formula(std::move(chemical_formula_))
37  {
38  }
39 
40  std::string const name;
41  std::string const chemical_formula;
42  std::unique_ptr<GlobalVector> amount;
44 };
45 
47 {
48  AqueousSolution(double temperature_, double pressure_,
49  MeshLib::PropertyVector<double>* pe_, double const pe0_,
50  std::vector<Component>&& components_,
51  ChargeBalance charge_balance_)
52  : temperature(temperature_),
53  pressure(pressure_),
54  pe(pe_),
55  pe0(pe0_),
56  components(std::move(components_)),
57  charge_balance(charge_balance_)
58  {
59  }
60 
61  void print(std::ostream& os, std::size_t const chemical_system_id) const;
62 
63  double const temperature;
64  double const pressure;
65  std::unique_ptr<GlobalVector> pH;
67  double const pe0;
68  std::vector<Component> components;
70 };
71 } // namespace PhreeqcIOData
72 } // namespace ChemistryLib
std::unique_ptr< GlobalVector > pH
AqueousSolution(double temperature_, double pressure_, MeshLib::PropertyVector< double > *pe_, double const pe0_, std::vector< Component > &&components_, ChargeBalance charge_balance_)
MeshLib::PropertyVector< double > * pe
void print(std::ostream &os, std::size_t const chemical_system_id) const
Component(std::string name_, std::string chemical_formula_)
std::unique_ptr< GlobalVector > amount