18 std::vector<std::pair<int, std::string>>
const&
19 process_id_to_component_name_map)
21 std::map<std::string, cxxISolutionComp> components;
25 auto const& component_config :
27 comp_config.getConfigSubtreeList(
"component"))
29 auto const component_name = component_config.getValue<std::string>();
31 components.emplace(component_name, component);
34 for (
auto const& component : components)
36 auto process_id_to_component_name_pair =
37 std::find_if(process_id_to_component_name_map.begin(),
38 process_id_to_component_name_map.end(),
39 [&component](
auto const& pair)
40 { return pair.second == component.first; });
42 if (process_id_to_component_name_pair ==
43 process_id_to_component_name_map.end())
46 "Component {:s} given in <solution>/<components> is not found "
47 "in specified coupled processes (see "
48 "<process>/<process_variables>/<concentration>).",
53 if (components.size() + 1 != process_id_to_component_name_map.size())
56 "The number of components given in <solution>/<components> is not "
57 "in line with the number of transport processes - 1 which stands "
58 "for the transport process of hydrogen.");
65 component.Set_equation_name(
"charge");
66 components.emplace(
"H(1)", component);
71 "Adjusting pe value for charge balance is unsupported yet with the "
72 "chemical solver 'PhreeqcKernel'. Please use the chemical solver "
73 "'Phreeqc' for this functionality.");