25 std::optional<BaseLib::ConfigTree>
const& config,
MeshLib::Mesh& mesh)
32 std::vector<EquilibriumReactant> equilibrium_reactants;
34 auto const& equilibrium_reactant_config :
36 config->getConfigSubtreeList(
"phase_component"))
40 equilibrium_reactant_config.getConfigParameter<std::string>(
"name");
42 double const saturation_index =
44 equilibrium_reactant_config.getConfigParameter<
double>(
47 auto reaction_irreversibility =
49 equilibrium_reactant_config.getConfigParameter<std::string>(
50 "reaction_irreversibility",
"");
52 if (!reaction_irreversibility.empty() &&
53 (reaction_irreversibility !=
"dissolve_only" &&
54 reaction_irreversibility !=
"precipitate_only"))
57 "{:s}: reaction direction only allows `dissolve_only` or "
62 auto molality = MeshLib::getOrCreateMeshProperty<double>(
65 auto molality_prev = MeshLib::getOrCreateMeshProperty<double>(
68 auto volume_fraction = MeshLib::getOrCreateMeshProperty<double>(
71 auto volume_fraction_prev = MeshLib::getOrCreateMeshProperty<double>(
73 "phi_" + name +
"_prev",
77 auto mesh_prop_molality = MeshLib::getOrCreateMeshProperty<double>(
81 equilibrium_reactants.emplace_back(std::move(name),
88 std::move(reaction_irreversibility));
91 return equilibrium_reactants;