OGS
ChemicalSystem.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 <memory>
7#include <variant>
8#include <vector>
9
10#include "AqueousSolution.h"
11#include "EquilibriumReactant.h"
12#include "Exchange.h"
13#include "KineticReactant.h"
14#include "Surface.h"
15
44namespace ChemistryLib
45{
46namespace PhreeqcIOData
47{
61{
62 ChemicalSystem(std::unique_ptr<AqueousSolution>&& aqueous_solution_,
63 std::vector<KineticReactant>&& kinetic_reactants_,
64 std::vector<EquilibriumReactant>&& equilibrium_reactants_,
65 std::vector<ExchangeSite>&& exchangers_,
66 std::vector<std::variant<DensityBasedSurfaceSite,
67 MoleBasedSurfaceSite>>&& surface_)
68 : aqueous_solution(std::move(aqueous_solution_)),
69 kinetic_reactants(std::move(kinetic_reactants_)),
70 equilibrium_reactants(std::move(equilibrium_reactants_)),
71 exchangers(std::move(exchangers_)),
72 surface(std::move(surface_))
73 {
74 }
75
76 void initialize(std::size_t const num_chemical_systems);
77
78 std::unique_ptr<AqueousSolution> aqueous_solution;
79 std::vector<KineticReactant> kinetic_reactants;
80 std::vector<EquilibriumReactant> equilibrium_reactants;
81 std::vector<ExchangeSite> exchangers;
82 std::vector<std::variant<DensityBasedSurfaceSite, MoleBasedSurfaceSite>>
84};
85} // namespace PhreeqcIOData
86} // namespace ChemistryLib
Per-system aqueous state exchanged with PHREEQC.
std::unique_ptr< AqueousSolution > aqueous_solution
std::vector< KineticReactant > kinetic_reactants
ChemicalSystem(std::unique_ptr< AqueousSolution > &&aqueous_solution_, std::vector< KineticReactant > &&kinetic_reactants_, std::vector< EquilibriumReactant > &&equilibrium_reactants_, std::vector< ExchangeSite > &&exchangers_, std::vector< std::variant< DensityBasedSurfaceSite, MoleBasedSurfaceSite > > &&surface_)
std::vector< EquilibriumReactant > equilibrium_reactants
std::vector< std::variant< DensityBasedSurfaceSite, MoleBasedSurfaceSite > > surface
void initialize(std::size_t const num_chemical_systems)