19 template <
typename ReactionRate>
21 std::optional<BaseLib::ConfigTree>
const& config)
28 std::vector<ReactionRate> reaction_rates;
29 for (
auto const& rate_config :
31 config->getConfigSubtreeList(
"rate"))
33 auto kinetic_reactant =
35 rate_config.getConfigParameter<std::string>(
"kinetic_reactant");
37 auto const expression_config =
39 rate_config.getConfigSubtree(
"expression");
40 auto const& statements =
42 expression_config.getConfigParameterList<std::string>(
"statement");
44 std::vector<std::string> expression_statements;
45 expression_statements.reserve(statements.size());
48 back_inserter(expression_statements));
50 reaction_rates.emplace_back(std::move(kinetic_reactant),
51 std::move(expression_statements));
54 return reaction_rates;
57 template std::vector<PhreeqcIOData::ReactionRate>
58 createReactionRates<PhreeqcIOData::ReactionRate>(
59 std::optional<BaseLib::ConfigTree>
const& config);
61 template std::vector<PhreeqcKernelData::ReactionRate>
62 createReactionRates<PhreeqcKernelData::ReactionRate>(
63 std::optional<BaseLib::ConfigTree>
const& config);
std::vector< ReactionRate > createReactionRates(std::optional< BaseLib::ConfigTree > const &config)
void copy(PETScVector const &x, PETScVector &y)