Reaktoro
A unified framework for modeling chemically reactive systems
MineralPhase.hpp
1 // Reaktoro is a unified framework for modeling chemically reactive systems.
2 //
3 // Copyright (C) 2014-2018 Allan Leal
4 //
5 // This library is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU Lesser General Public
7 // License as published by the Free Software Foundation; either
8 // version 2.1 of the License, or (at your option) any later version.
9 //
10 // This library is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 // Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public License
16 // along with this library. If not, see <http://www.gnu.org/licenses/>.
17 
18 #pragma once
19 
20 // C++ includes
21 #include <memory>
22 
23 // Reaktoro includes
24 #include <Reaktoro/Core/Phase.hpp>
25 
26 namespace Reaktoro {
27 
28 // Forward declarations
29 class MineralMixture;
30 class MineralSpecies;
31 
33 class MineralPhase : public Phase
34 {
35 public:
37  MineralPhase();
38 
40  explicit MineralPhase(const MineralMixture& mixture);
41 
43  explicit MineralPhase(const MineralSpecies& species);
44 
47 
59  auto setChemicalModelRedlichKister(double a0, double a1, double a2) -> MineralPhase&;
60 
62  auto mixture() const -> const MineralMixture&;
63 
64 private:
65  struct Impl;
66 
67  std::shared_ptr<Impl> pimpl;
68 };
69 
70 } // namespace Reaktoro
auto setChemicalModelRedlichKister(double a0, double a1, double a2) -> MineralPhase &
Set the chemical model of the phase with the Redlich-Kister solid solution binary model.
Definition: MineralPhase.cpp:90
A type to describe the attributes of a mineral species.
Definition: MineralSpecies.hpp:28
Provide a computational representation of a mineral mixture.
Definition: MineralMixture.hpp:38
The namespace containing all components of the Reaktoro library.
Definition: ChemicalScalar.hpp:24
Class that defines a mineral phase.
Definition: MineralPhase.hpp:34
A type used to define a phase and its attributes.
Definition: Phase.hpp:42
MineralPhase()
Construct a default MineralPhase instance.
Definition: MineralPhase.cpp:58
auto mixture() const -> const MineralMixture &
Return the MineralMixture instance.
Definition: MineralPhase.cpp:97
auto setChemicalModelIdeal() -> MineralPhase &
Set the chemical model of the phase with the ideal solution model.
Definition: MineralPhase.cpp:83
auto species() const -> const std::vector< Species > &
Return the species of the phase.
Definition: Phase.cpp:134