From fab9811c5ccfeed9713ca5d58ab99855be16766c Mon Sep 17 00:00:00 2001 From: Ian Bell Date: Wed, 26 Nov 2014 16:41:00 -0500 Subject: [PATCH] Can get long name from the incompressible fluid Something like rr = get_fluid_param_string("INCOMP::MEG","long_name"); Closes https://github.com/CoolProp/CoolProp/issues/244 Signed-off-by: Ian Bell --- .../Incompressible/IncompressibleBackend.h | 2 ++ src/CoolProp.cpp | 22 +++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/Backends/Incompressible/IncompressibleBackend.h b/src/Backends/Incompressible/IncompressibleBackend.h index 8604d539..3b8c0c5f 100644 --- a/src/Backends/Incompressible/IncompressibleBackend.h +++ b/src/Backends/Incompressible/IncompressibleBackend.h @@ -124,6 +124,8 @@ public: long double calc_fraction_max(void){return fluid->getxmax();}; long double calc_T_freeze(void){ return fluid->Tfreeze(_p, _fractions[0]);}; + + std::string calc_name(void){return fluid->getDescription();}; }; } /* namespace CoolProp */ diff --git a/src/CoolProp.cpp b/src/CoolProp.cpp index 43228f48..4f2d35e8 100644 --- a/src/CoolProp.cpp +++ b/src/CoolProp.cpp @@ -29,6 +29,7 @@ #include "MatrixMath.h" #include "Backends/Helmholtz/Fluids/FluidLibrary.h" #include "Backends/Incompressible/IncompressibleLibrary.h" +#include "Backends/Incompressible/IncompressibleBackend.h" #include "Backends/Helmholtz/HelmholtzEOSBackend.h" #include "Backends/Helmholtz/MixtureParameters.h" #include "DataStructures.h" @@ -526,10 +527,26 @@ TEST_CASE("Check inputs to get_global_param_string","[get_global_param_string]") std::string get_fluid_param_string(std::string FluidName, std::string ParamName) { + std::string backend, fluid; + extract_backend(FluidName, backend, fluid); + if (backend == "INCOMP"){ + try{ + shared_ptr INCOMP(new CoolProp::IncompressibleBackend(fluid)); + + if (!ParamName.compare("long_name")){ + return INCOMP->calc_name(); + } + else{ + throw ValueError(format("Input value [%s] is invalid for Fluid [%s]",ParamName.c_str(),FluidName.c_str())); + } + } + catch(std::exception &e){ throw ValueError(format("CoolProp error: %s", e.what())); } + catch(...){ throw ValueError("CoolProp error: Indeterminate error"); } + } + try{ - std::vector comps(1,FluidName); + std::vector comps(1, FluidName); shared_ptr HEOS(new CoolProp::HelmholtzEOSMixtureBackend(comps)); - CoolProp::CoolPropFluid *fluid = HEOS->get_components()[0]; if (!ParamName.compare("aliases")){ @@ -574,6 +591,7 @@ TEST_CASE("Check inputs to get_fluid_param_string", "[get_fluid_param_string]") CHECK_THROWS(CoolProp::get_fluid_param_string("Water","BibTeX-")); }; #endif + std::string phase_lookup_string(phases Phase) { switch (Phase)