CoolProp 8.0.0
An open-source fluid property and humid air property database
TTSEBackend.h
Go to the documentation of this file.
1#ifndef TTSEBACKEND_H
2#define TTSEBACKEND_H
3
4#include <utility>
5
6#include "TabularBackends.h"
8
9namespace CoolProp {
10
12{
13 public:
14 std::string backend_name() override {
16 }
18 TTSEBackend(shared_ptr<CoolProp::AbstractState> AS) : TabularBackend(std::move(AS)) {
20 // If a pure fluid or a predefined mixture, don't need to set fractions, go ahead and build
21 if (!this->AS->get_mole_fractions().empty()) {
25 dataset->build_coeffs(single_phase_logph, dataset->coeffs_ph);
26 dataset->build_coeffs(single_phase_logpT, dataset->coeffs_pT);
27 is_mixture = (this->AS->get_mole_fractions().size() > 1);
28 }
29 }
30 double evaluate_single_phase(SinglePhaseGriddedTableData& table, parameters output, double x, double y, std::size_t i, std::size_t j);
31 double evaluate_single_phase_transport(SinglePhaseGriddedTableData& table, parameters output, double x, double y, std::size_t i, std::size_t j);
32 double evaluate_single_phase_phmolar(parameters output, std::size_t i, std::size_t j) override {
34 return evaluate_single_phase(single_phase_logph, output, _hmolar, _p, i, j);
35 }
36 double evaluate_single_phase_pT(parameters output, std::size_t i, std::size_t j) override {
38 return evaluate_single_phase(single_phase_logpT, output, _T, _p, i, j);
39 }
40 double evaluate_single_phase_phmolar_transport(parameters output, std::size_t i, std::size_t j) override {
42 return evaluate_single_phase_transport(single_phase_logph, output, _hmolar, _p, i, j);
43 }
44 double evaluate_single_phase_pT_transport(parameters output, std::size_t i, std::size_t j) override {
46 return evaluate_single_phase_transport(single_phase_logpT, output, _T, _p, i, j);
47 }
48 void invert_single_phase_x(const SinglePhaseGriddedTableData& table, const std::vector<std::vector<CellCoeffs>>& coeffs, parameters output,
49 double x, double y, std::size_t i, std::size_t j) override;
50 void invert_single_phase_y(const SinglePhaseGriddedTableData& table, const std::vector<std::vector<CellCoeffs>>& coeffs, parameters output,
51 double y, double x, std::size_t i, std::size_t j) override;
52
54 void find_native_nearest_good_indices(SinglePhaseGriddedTableData& table, const std::vector<std::vector<CellCoeffs>>& coeffs, double x, double y,
55 std::size_t& i, std::size_t& j) override {
56 return table.find_native_nearest_good_neighbor(x, y, i, j);
57 };
59 void find_nearest_neighbor(SinglePhaseGriddedTableData& table, const std::vector<std::vector<CellCoeffs>>& coeffs, const parameters variable1,
60 const double value1, const parameters otherkey, const double otherval, std::size_t& i, std::size_t& j) override {
61 table.find_nearest_neighbor(variable1, value1, otherkey, otherval, cached_single_phase_i, cached_single_phase_j);
62 };
63
76 double evaluate_single_phase_derivative(SinglePhaseGriddedTableData& table, parameters output, double x, double y, std::size_t i, std::size_t j,
77 std::size_t Nx, std::size_t Ny);
78 double evaluate_single_phase_phmolar_derivative(parameters output, std::size_t i, std::size_t j, std::size_t Nx, std::size_t Ny) override {
80 return evaluate_single_phase_derivative(single_phase_logph, output, _hmolar, _p, i, j, Nx, Ny);
81 };
82 double evaluate_single_phase_pT_derivative(parameters output, std::size_t i, std::size_t j, std::size_t Nx, std::size_t Ny) override {
84 return evaluate_single_phase_derivative(single_phase_logpT, output, _T, _p, i, j, Nx, Ny);
85 };
86};
87
88} // namespace CoolProp
89
90#endif // TTSEBACKEND_H