From ddec0be08e3fe437fc28d2cf4c59a2e494e105f4 Mon Sep 17 00:00:00 2001 From: Ian Bell Date: Wed, 30 Sep 2015 21:57:29 -0600 Subject: [PATCH] Fix (and test) all the snippets; closes #823 --- CMakeLists.txt | 27 ++++++++------ .../snippets/HighLevelLowLevel.cxx.output | 8 +---- .../snippets/mixture_derivative_table.cxx | 14 ++++---- .../mixture_derivative_table.cxx.output | 36 +++++++++---------- Web/coolprop/snippets/propssi.cxx | 5 +-- src/AbstractState.cpp | 2 +- 6 files changed, 46 insertions(+), 46 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ede7c92..61821e2b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1270,27 +1270,32 @@ if (COOLPROP_SNIPPETS) foreach (snippet ${snippets}) get_filename_component(snippet_name ${snippet} NAME) + get_filename_component(snippet_exe ${snippet} NAME_WE) message(STATUS "snippet_name = ${snippet_name}") - add_executable (${snippet_name} ${snippet}) - add_dependencies (${snippet_name} CoolProp) - target_link_libraries (${snippet_name} CoolProp) + add_executable (${snippet_exe} ${snippet}) + add_dependencies (${snippet_exe} CoolProp) + target_link_libraries (${snippet_exe} CoolProp) if(UNIX) - target_link_libraries (${snippet_name} ${CMAKE_DL_LIBS}) + target_link_libraries (${snippet_exe} ${CMAKE_DL_LIBS}) endif() if ( MSVC ) - set_target_properties( ${snippet_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin ) - set_target_properties( ${snippet_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_BINARY_DIR}/bin ) - set_target_properties( ${snippet_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_BINARY_DIR}/bin ) + set_target_properties( ${snippet_exe} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin ) + set_target_properties( ${snippet_exe} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_BINARY_DIR}/bin ) + set_target_properties( ${snippet_exe} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_BINARY_DIR}/bin ) # etc for the other available configuration types (MinSizeRel, RelWithDebInfo) + set(BIN_PATH "${CMAKE_CURRENT_BINARY_DIR}/bin") + else() + set(BIN_PATH "${CMAKE_CURRENT_BINARY_DIR}") endif () - # Run it and save the output to a file with .output appended - message(STATUS "${CMAKE_CURRENT_BINARY_DIR}/bin/${snippet_name} > ${CMAKE_CURRENT_BINARY_DIR}/bin/${snippet_name}.output") + + SET_PROPERTY(TARGET ${snippet_exe} APPEND_STRING PROPERTY COMPILE_FLAGS " -DEXTERNC") - add_custom_command(TARGET ${snippet_name} + # Run it and save the output to a file with .output appended + add_custom_command(TARGET ${snippet_exe} POST_BUILD - COMMAND ${CMAKE_CURRENT_BINARY_DIR}/bin/${snippet_name} > ${CMAKE_CURRENT_SOURCE_DIR}/Web/coolprop/snippets/${snippet_name}.output) + COMMAND ${BIN_PATH}/${snippet_exe} > ${CMAKE_CURRENT_SOURCE_DIR}/Web/coolprop/snippets/${snippet_name}.output) endforeach() diff --git a/Web/coolprop/snippets/HighLevelLowLevel.cxx.output b/Web/coolprop/snippets/HighLevelLowLevel.cxx.output index 0bfa07ec..59dafe0e 100644 --- a/Web/coolprop/snippets/HighLevelLowLevel.cxx.output +++ b/Web/coolprop/snippets/HighLevelLowLevel.cxx.output @@ -1,7 +1 @@ -Loading table: C:\Users\Belli/.CoolProp/Tables/HelmholtzEOSBackend(Water)/single_phase_logph.bin.z -Loaded table: C:\Users\Belli/.CoolProp/Tables/HelmholtzEOSBackend(Water)/single_phase_logph.bin.z in 0.139 sec. -Loading table: C:\Users\Belli/.CoolProp/Tables/HelmholtzEOSBackend(Water)/single_phase_logpT.bin.z -Loaded table: C:\Users\Belli/.CoolProp/Tables/HelmholtzEOSBackend(Water)/single_phase_logpT.bin.z in 0.133 sec. -Loading table: C:\Users\Belli/.CoolProp/Tables/HelmholtzEOSBackend(Water)/pure_saturation.bin.z -Loaded table: C:\Users\Belli/.CoolProp/Tables/HelmholtzEOSBackend(Water)/pure_saturation.bin.z in 0.003 sec. -value(all): 8339004.420912, 0.45 us/call +value(all): 8339004.432517, 0.59425 us/call diff --git a/Web/coolprop/snippets/mixture_derivative_table.cxx b/Web/coolprop/snippets/mixture_derivative_table.cxx index c7c602c6..35f6bff7 100644 --- a/Web/coolprop/snippets/mixture_derivative_table.cxx +++ b/Web/coolprop/snippets/mixture_derivative_table.cxx @@ -1,5 +1,5 @@ #include "CoolProp.h" -#include "MixtureDerivatives.h" +#include "Backends/Helmholtz/MixtureDerivatives.h" #include using namespace CoolProp; int main() @@ -11,7 +11,7 @@ int main() shared_ptr HEOS(new HelmholtzEOSMixtureBackend(components)); HelmholtzEOSMixtureBackend &rHEOS = *(HEOS.get()); HEOS->set_mole_fractions(z); - HEOS->specify_phase(iphase_gas); // So that we don't do a + HEOS->specify_phase(iphase_gas); // So that we don't do a phase check HEOS->update(DmolarT_INPUTS, 300, 300); std::vector terms; @@ -43,7 +43,7 @@ int main() for (std::vector::iterator it = terms.begin(); it != terms.end(); ++it) { if (!it->compare("p")){ - printf("p: %0.16Lg\n", HEOS->p()); + printf("p: %0.16g\n", HEOS->p()); } else if (!it->compare("p2(deriv)")){ printf("p calculated by rho*R*T*(1+delta*deltadar_dDelta): %0.16Lg\n", HEOS->rhomolar()*HEOS->gas_constant()*HEOS->T()*(1+HEOS->delta()*HEOS->dalphar_dDelta())); @@ -52,16 +52,16 @@ int main() printf("dalphar_dDelta: %0.16Lg\n", HEOS->dalphar_dDelta()); } else if (!it->compare("rhor")){ - printf("rhor: %0.16Lg\n", HEOS->get_reducing_state().rhomolar); + printf("rhor: %0.16g\n", HEOS->get_reducing_state().rhomolar); } else if (!it->compare("Tr")){ - printf("Tr: %0.16Lg\n", HEOS->get_reducing_state().T); + printf("Tr: %0.16g\n", HEOS->get_reducing_state().T); } else if (!it->compare("dTr_dxi")){ - printf("dTr_dxi: %0.16Lg\n", HEOS->Reducing.p->dTrdxi__constxj(rHEOS.get_mole_fractions(), 0, XN_DEPENDENT)); + printf("dTr_dxi: %0.16Lg\n", HEOS->Reducing->dTrdxi__constxj(rHEOS.get_mole_fractions(), 0, XN_DEPENDENT)); } else if (!it->compare("drhor_dxi")){ - printf("drhor_dxi: %0.16Lg\n", HEOS->Reducing.p->drhormolardxi__constxj(rHEOS.get_mole_fractions(), 0, XN_DEPENDENT)); + printf("drhor_dxi: %0.16Lg\n", HEOS->Reducing->drhormolardxi__constxj(rHEOS.get_mole_fractions(), 0, XN_DEPENDENT)); } else if(!it->compare("ndpdV__constT_n")){ printf("ndpdV__constT_n: %0.16Lg\n", MixtureDerivatives::ndpdV__constT_n(rHEOS)); diff --git a/Web/coolprop/snippets/mixture_derivative_table.cxx.output b/Web/coolprop/snippets/mixture_derivative_table.cxx.output index 26686455..18068be9 100644 --- a/Web/coolprop/snippets/mixture_derivative_table.cxx.output +++ b/Web/coolprop/snippets/mixture_derivative_table.cxx.output @@ -1,25 +1,25 @@ -p: 675616.5260238834 -p calculated by rho*R*T*(1+delta*deltadar_dDelta): 675616.5260238834 +p: 675615.7215706832 +p calculated by rho*R*T*(1+delta*deltadar_dDelta): 675615.7215706832 rhor: 5375.073740431392 Tr: 354.7802371525603 dalphar_dDelta: -1.740349537597104 -dTr_dxi: -60.84527088778825 -drhor_dxi: 1587.916430678275 -ndpdV__constT_n: -181257322.2040499 -dpdxj__constT_V_xi(0): 48181.54565089135 -dalphar_dxi|T,V,xk(0): 0.06467412878843236 -dalphar_dxi|tau_delta_xk(0): 4.187330988393492e-005 -ln_fugacity_coefficient(0): -0.04441530290159221 +dTr_dxi: -60.84527088778821 +drhor_dxi: 1587.916430678276 +ndpdV__constT_n: -181257106.3818679 +dpdxj__constT_V_xi(0): 48181.48828136717 +dalphar_dxi|T,V,xk(0): 0.06467412878843232 +dalphar_dxi|tau_delta_xk(0): 4.187330988391106e-05 +ln_fugacity_coefficient(0): -0.04441530290159228 ln_fugacity_coefficient(1): -0.1090894316900246 -ndpdni__constT_V_nj(0): 640327.2332516684 -tau*d_ndalphardni_dTau(0): -0.09709340835471267 -tau*d_ndalphardni_dTau(1): -0.2484618994956092 -delta*d_ndalphardni_dDelta(0): -0.04715912844791718 +ndpdni__constT_V_nj(0): 640326.4708172516 +tau*d_ndalphardni_dTau(0): -0.09709340835471265 +tau*d_ndalphardni_dTau(1): -0.2484618994956091 +delta*d_ndalphardni_dDelta(0): -0.04715912844791722 delta*d_ndalphardni_dDelta(1): -0.1115469220723501 -d_ndalphardni_dxj__constdelta_tau_xi(0, 0): -0.04493881035511202 -d_ndalphardni_dxj__constT_V_xi(0, 0): -0.01435530858047472 +d_ndalphardni_dxj__constdelta_tau_xi(0, 0): -0.04493881035511207 +d_ndalphardni_dxj__constT_V_xi(0, 0): -0.01435530858047477 dln_fugacity_coefficient_dxj__constT_p_xi(0,0): -0.01791995312054628 -dln_fugacity_coefficient_dxj__constT_p_xi(1,0): 0.005973317706848738 -d2nalphar_dxj_dni__constT_V(0,0): 0.05031882020795764 +dln_fugacity_coefficient_dxj__constT_p_xi(1,0): 0.005973317706848762 +d2nalphar_dxj_dni__constT_V(0,0): 0.05031882020795755 d2nalphar_dxj_dni__constT_V(1,0): 0 -delta*d2alphar_dxi_dDelta(0): 0.001221607211340736 +delta*d2alphar_dxi_dDelta(0): 0.00122160721133991 diff --git a/Web/coolprop/snippets/propssi.cxx b/Web/coolprop/snippets/propssi.cxx index 4e324314..e2530639 100644 --- a/Web/coolprop/snippets/propssi.cxx +++ b/Web/coolprop/snippets/propssi.cxx @@ -12,9 +12,10 @@ int main() // Second type (C++ only, a bit faster, allows for vector inputs and outputs) std::vector fluids; fluids.push_back("Propane"); fluids.push_back("Ethane"); std::vector outputs; outputs.push_back("Dmolar"); - std::vector T(1,298), p(1e5); - std::cout << PropsSImulti(outputs,"T", T, "P", p, "", fluids, z)[0][0] << std::endl; + std::vector T(1,298), p(1,1e5); + std::cout << PropsSImulti(outputs,"T", T, "P", p, "", fluids, z)[0][0] << std::endl; // Default backend is HEOS std::cout << PropsSImulti(outputs,"T", T, "P", p, "HEOS", fluids, z)[0][0] << std::endl; + // Comment me out if REFPROP is not installed std::cout << PropsSImulti(outputs,"T", T, "P", p, "REFPROP", fluids, z)[0][0] << std::endl; return EXIT_SUCCESS; diff --git a/src/AbstractState.cpp b/src/AbstractState.cpp index 9b4ba17b..a1aa1b4c 100644 --- a/src/AbstractState.cpp +++ b/src/AbstractState.cpp @@ -74,7 +74,7 @@ AbstractState * AbstractState::factory(const std::string &backend, const std::ve { throw ValueError("TREND backend not yet implemented"); } - else if (!backend.compare("?")) + else if (!backend.compare("?") || backend.empty()) { std::size_t idel = fluid_names[0].find("::"); // Backend has not been specified, and we have to figure out what the backend is by parsing the string