OGS
ChemicalSystem.cpp
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#include "ChemicalSystem.h"
5
6#include "AqueousSolution.h"
7
8namespace ChemistryLib
9{
10namespace PhreeqcIOData
11{
12void ChemicalSystem::initialize(std::size_t const num_chemical_systems)
13{
14 aqueous_solution->H_plus_activity.resize(num_chemical_systems);
15
16 aqueous_solution->pe->resize(num_chemical_systems, aqueous_solution->pe0);
17
18 auto& components = aqueous_solution->components;
19 for (auto& component : components)
20 {
21 component.amount.resize(num_chemical_systems);
22 }
23
24 for (auto& kinetic_reactant : kinetic_reactants)
25 {
26 kinetic_reactant.molality->resize(num_chemical_systems);
27 kinetic_reactant.molality_prev->resize(num_chemical_systems);
28 kinetic_reactant.volume_fraction->resize(num_chemical_systems);
29 kinetic_reactant.volume_fraction_prev->resize(num_chemical_systems);
30 }
31
32 for (auto& equilibrium_reactant : equilibrium_reactants)
33 {
34 equilibrium_reactant.molality->resize(num_chemical_systems);
35 equilibrium_reactant.molality_prev->resize(num_chemical_systems);
36 equilibrium_reactant.volume_fraction->resize(num_chemical_systems);
37 equilibrium_reactant.volume_fraction_prev->resize(num_chemical_systems);
38 }
39
40 for (auto& exchanger : exchangers)
41 {
42 exchanger.molality->resize(num_chemical_systems);
43 }
44
45 for (auto& surface_site : surface)
46 {
47 if (auto const surface_site_ptr =
48 std::get_if<MoleBasedSurfaceSite>(&surface_site))
49 {
50 surface_site_ptr->molality->resize(num_chemical_systems);
51 }
52 }
53}
54} // namespace PhreeqcIOData
55} // namespace ChemistryLib
Definition of one reactive chemical system for PHREEQC coupling.
Per-system aqueous state exchanged with PHREEQC.
std::unique_ptr< AqueousSolution > aqueous_solution
std::vector< KineticReactant > kinetic_reactants
std::vector< EquilibriumReactant > equilibrium_reactants
std::vector< std::variant< DensityBasedSurfaceSite, MoleBasedSurfaceSite > > surface
void initialize(std::size_t const num_chemical_systems)