diff --git a/ChemistryLib/PhreeqcIO.cpp b/ChemistryLib/PhreeqcIO.cpp index 66ac3d659beebc6bb2f14d06f4ebb8f90a6ea01a..d3733726b9bea6a1bf5c68773f3d023496d4d01d 100644 --- a/ChemistryLib/PhreeqcIO.cpp +++ b/ChemistryLib/PhreeqcIO.cpp @@ -164,20 +164,20 @@ void setReactantMolality(Reactant& reactant, (*reactant.molality)[chemical_system_id]; } -template <typename Exchanger> -void initializeExchangerMolality(Exchanger& exchanger, - GlobalIndexType const& chemical_system_id, - MaterialPropertyLib::Phase const& solid_phase, - ParameterLib::SpatialPosition const& pos, - double const t) +template <typename Site> +void initializeSiteMolality(Site& site, + GlobalIndexType const& chemical_system_id, + MaterialPropertyLib::Phase const& solid_phase, + ParameterLib::SpatialPosition const& pos, + double const t) { - auto const& solid_constituent = solid_phase.component(exchanger.name); + auto const& solid_constituent = solid_phase.component(site.name); auto const molality = solid_constituent[MaterialPropertyLib::PropertyType::molality] .template initialValue<double>(pos, t); - (*exchanger.molality)[chemical_system_id] = molality; + (*site.molality)[chemical_system_id] = molality; } template <typename Reactant> @@ -339,8 +339,18 @@ void PhreeqcIO::initializeChemicalSystemConcrete( for (auto& exchanger : _chemical_system->exchangers) { - initializeExchangerMolality(exchanger, chemical_system_id, solid_phase, - pos, t); + initializeSiteMolality(exchanger, chemical_system_id, solid_phase, pos, + t); + } + + for (auto& surface_site : _chemical_system->surface) + { + if (auto const surface_site_ptr = + std::get_if<MoleBasedSurfaceSite>(&surface_site)) + { + initializeSiteMolality(*surface_site_ptr, chemical_system_id, + solid_phase, pos, t); + } } } diff --git a/ChemistryLib/PhreeqcIOData/ChemicalSystem.cpp b/ChemistryLib/PhreeqcIOData/ChemicalSystem.cpp index c3b704f0ee0439aa9f94147fc282fa1c9badec67..b1c4956410fba618679e4531e8ed4ed8e4075e80 100644 --- a/ChemistryLib/PhreeqcIOData/ChemicalSystem.cpp +++ b/ChemistryLib/PhreeqcIOData/ChemicalSystem.cpp @@ -56,6 +56,15 @@ void ChemicalSystem::initialize(std::size_t const num_chemical_systems) { exchanger.molality->resize(num_chemical_systems); } + + for (auto& surface_site : surface) + { + if (auto const surface_site_ptr = + std::get_if<MoleBasedSurfaceSite>(&surface_site)) + { + surface_site_ptr->molality->resize(num_chemical_systems); + } + } } } // namespace PhreeqcIOData } // namespace ChemistryLib