OGS
PhreeqcKernelData/AqueousSolution.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6// clang-format off
7#include <phreeqcpp/common/phrqtype.h>
8#include <phreeqcpp/Solution.h>
9// clang-format on
10
11#include <memory>
12
13namespace ChemistryLib
14{
15namespace PhreeqcKernelData
16{
17class AqueousSolution final : private cxxSolution
18{
19public:
20 AqueousSolution(double const temperature, double const pressure,
21 double const pe_value,
22 cxxISolution const& initial_aqueous_solution);
23
24 std::unique_ptr<cxxISolution const> getInitialAqueousSolution() const
25 {
26 return std::make_unique<cxxISolution const>(*Get_initial_data());
27 }
28
29 void setChemicalSystemID(std::size_t const chemical_system_id)
30 {
31 Set_n_user_both(chemical_system_id);
32 }
33
34 cxxSolution const* castToBaseClass() const
35 {
36 return static_cast<cxxSolution const*>(this);
37 }
38
39 std::unique_ptr<cxxSolution const> castToBaseClassNoninitialized()
40 {
41 Destroy_initial_data();
42 return std::make_unique<cxxSolution const>(*castToBaseClass());
43 }
44};
45} // namespace PhreeqcKernelData
46} // namespace ChemistryLib
std::unique_ptr< cxxSolution const > castToBaseClassNoninitialized()
std::unique_ptr< cxxISolution const > getInitialAqueousSolution() const
void setChemicalSystemID(std::size_t const chemical_system_id)
AqueousSolution(double const temperature, double const pressure, double const pe_value, cxxISolution const &initial_aqueous_solution)