OGS
ChemicalSystem.h
Go to the documentation of this file.
1
11#pragma once
12
13#include <memory>
14#include <variant>
15#include <vector>
16
17#include "AqueousSolution.h"
18#include "EquilibriumReactant.h"
19#include "Exchange.h"
20#include "KineticReactant.h"
21#include "Surface.h"
22
23namespace ChemistryLib
24{
25namespace PhreeqcIOData
26{
28{
29 ChemicalSystem(std::unique_ptr<AqueousSolution>&& aqueous_solution_,
30 std::vector<KineticReactant>&& kinetic_reactants_,
31 std::vector<EquilibriumReactant>&& equilibrium_reactants_,
32 std::vector<ExchangeSite>&& exchangers_,
33 std::vector<std::variant<DensityBasedSurfaceSite,
34 MoleBasedSurfaceSite>>&& surface_)
35 : aqueous_solution(std::move(aqueous_solution_)),
36 kinetic_reactants(std::move(kinetic_reactants_)),
37 equilibrium_reactants(std::move(equilibrium_reactants_)),
38 exchangers(std::move(exchangers_)),
39 surface(std::move(surface_))
40 {
41 }
42
43 void initialize(std::size_t const num_chemical_systems);
44
45 std::unique_ptr<AqueousSolution> aqueous_solution;
46 std::vector<KineticReactant> kinetic_reactants;
47 std::vector<EquilibriumReactant> equilibrium_reactants;
48 std::vector<ExchangeSite> exchangers;
49 std::vector<std::variant<DensityBasedSurfaceSite, MoleBasedSurfaceSite>>
51};
52} // namespace PhreeqcIOData
53} // namespace ChemistryLib
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)