OGS
ChemistryLib::PhreeqcIOData::ChemicalSystem Struct Reference

Detailed Description

Complete description of one local reactive system passed to PHREEQC.

For each chemical_system_id, ChemicalSystem groups the aqueous solution state, kinetic reactants, equilibrium reactants, ion exchangers, and surface complexation sites. PhreeqcIO uses this object to build PHREEQC input for each chemical_system_id, run PHREEQC, and collect the reacted state.

initialize(num_chemical_systems) resizes/initializes internal data so that all per-system vectors are ready for every chemical_system_id.

Definition at line 60 of file ChemicalSystem.h.

#include <ChemicalSystem.h>

Public Member Functions

 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_)
void initialize (std::size_t const num_chemical_systems)

Public Attributes

std::unique_ptr< AqueousSolutionaqueous_solution
std::vector< KineticReactantkinetic_reactants
std::vector< EquilibriumReactantequilibrium_reactants
std::vector< ExchangeSiteexchangers
std::vector< std::variant< DensityBasedSurfaceSite, MoleBasedSurfaceSite > > surface

Constructor & Destructor Documentation

◆ ChemicalSystem()

ChemistryLib::PhreeqcIOData::ChemicalSystem::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_ )
inline

Definition at line 62 of file ChemicalSystem.h.

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 }
std::unique_ptr< AqueousSolution > aqueous_solution
std::vector< KineticReactant > kinetic_reactants
std::vector< EquilibriumReactant > equilibrium_reactants
std::vector< std::variant< DensityBasedSurfaceSite, MoleBasedSurfaceSite > > surface

References aqueous_solution, equilibrium_reactants, exchangers, kinetic_reactants, and surface.

Member Function Documentation

◆ initialize()

void ChemistryLib::PhreeqcIOData::ChemicalSystem::initialize ( std::size_t const num_chemical_systems)

Definition at line 14 of file ChemicalSystem.cpp.

15{
17 MathLib::MatrixVectorTraits<GlobalVector>::newInstance(
18 num_chemical_systems);
19
20 aqueous_solution->pe->resize(num_chemical_systems, aqueous_solution->pe0);
21
22 auto& components = aqueous_solution->components;
23 for (auto& component : components)
24 {
25 component.amount =
26 MathLib::MatrixVectorTraits<GlobalVector>::newInstance(
27 num_chemical_systems);
28 }
29
30 for (auto& kinetic_reactant : kinetic_reactants)
31 {
32 kinetic_reactant.molality->resize(num_chemical_systems);
33 kinetic_reactant.molality_prev->resize(num_chemical_systems);
34 kinetic_reactant.volume_fraction->resize(num_chemical_systems);
35 kinetic_reactant.volume_fraction_prev->resize(num_chemical_systems);
36 }
37
38 for (auto& equilibrium_reactant : equilibrium_reactants)
39 {
40 equilibrium_reactant.molality->resize(num_chemical_systems);
41 equilibrium_reactant.molality_prev->resize(num_chemical_systems);
42 equilibrium_reactant.volume_fraction->resize(num_chemical_systems);
43 equilibrium_reactant.volume_fraction_prev->resize(num_chemical_systems);
44 }
45
46 for (auto& exchanger : exchangers)
47 {
48 exchanger.molality->resize(num_chemical_systems);
49 }
50
51 for (auto& surface_site : surface)
52 {
53 if (auto const surface_site_ptr =
54 std::get_if<MoleBasedSurfaceSite>(&surface_site))
55 {
56 surface_site_ptr->molality->resize(num_chemical_systems);
57 }
58 }
59}

References aqueous_solution, equilibrium_reactants, exchangers, kinetic_reactants, and surface.

Member Data Documentation

◆ aqueous_solution

std::unique_ptr<AqueousSolution> ChemistryLib::PhreeqcIOData::ChemicalSystem::aqueous_solution

◆ equilibrium_reactants

std::vector<EquilibriumReactant> ChemistryLib::PhreeqcIOData::ChemicalSystem::equilibrium_reactants

◆ exchangers

std::vector<ExchangeSite> ChemistryLib::PhreeqcIOData::ChemicalSystem::exchangers

Definition at line 81 of file ChemicalSystem.h.

Referenced by ChemicalSystem(), and initialize().

◆ kinetic_reactants

std::vector<KineticReactant> ChemistryLib::PhreeqcIOData::ChemicalSystem::kinetic_reactants

◆ surface

std::vector<std::variant<DensityBasedSurfaceSite, MoleBasedSurfaceSite> > ChemistryLib::PhreeqcIOData::ChemicalSystem::surface

Definition at line 83 of file ChemicalSystem.h.

Referenced by ChemicalSystem(), and initialize().


The documentation for this struct was generated from the following files: