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
21namespace MeshLib
22{
23template <typename PROP_VAL_TYPE>
24class PropertyVector;
25}
26
27namespace ChemistryLib
28{
29enum class ChargeBalance;
30
31namespace PhreeqcIOData
32{
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(bool const fixing_pe_, double temperature_,
49 double pressure_, MeshLib::PropertyVector<double>* pe_,
50 double const pe0_, std::vector<Component>&& components_,
51 ChargeBalance charge_balance_)
52 : fixing_pe(fixing_pe_),
53 temperature(temperature_),
54 pressure(pressure_),
55 pe(pe_),
56 pe0(pe0_),
57 components(std::move(components_)),
58 charge_balance(charge_balance_)
59 {
60 }
61
62 void print(std::ostream& os, std::size_t const chemical_system_id) const;
63
66 bool const fixing_pe;
67 double const temperature;
68 double const pressure;
69 std::unique_ptr<GlobalVector> pH;
71 double const pe0;
72 std::vector<Component> components;
74};
75} // namespace PhreeqcIOData
76} // namespace ChemistryLib
AqueousSolution(bool const fixing_pe_, 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