OGS
EquilibriumReactants.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 <phreeqcpp/PPassemblage.h>
7
8#include <set>
9#include <string>
10#include <vector>
11
12namespace ChemistryLib
13{
14namespace PhreeqcKernelData
15{
16class PhaseComponent final : private cxxPPassemblageComp
17{
18public:
19 PhaseComponent(std::string&& name_, double const initial_amount,
20 double const saturation_index);
21
22 cxxPPassemblageComp const* castToBaseClass() const
23 {
24 return static_cast<cxxPPassemblageComp const*>(this);
25 }
26
27 std::string const& getName() const { return Get_name(); }
28};
29
30class EquilibriumReactants final : private cxxPPassemblage
31{
32public:
33 explicit EquilibriumReactants(
34 std::vector<PhaseComponent> const& phase_components);
35
36 void setChemicalSystemID(std::size_t const chemical_system_id)
37 {
38 Set_n_user_both(chemical_system_id);
39 }
40
41 cxxPPassemblage const* castToBaseClass() const
42 {
43 return static_cast<cxxPPassemblage const*>(this);
44 }
45
46 std::map<std::string, cxxPPassemblageComp> const& getPhaseComponents() const
47 {
48 return castToBaseClass()->Get_pp_assemblage_comps();
49 }
50};
51
52} // namespace PhreeqcKernelData
53} // namespace ChemistryLib
EquilibriumReactants(std::vector< PhaseComponent > const &phase_components)
void setChemicalSystemID(std::size_t const chemical_system_id)
std::map< std::string, cxxPPassemblageComp > const & getPhaseComponents() const
PhaseComponent(std::string &&name_, double const initial_amount, double const saturation_index)
cxxPPassemblageComp const * castToBaseClass() const