diff --git a/CMakeLists.txt b/CMakeLists.txt index 6913bbe1..2ce6807a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,14 +143,18 @@ if (COOLPROP_SHARED_LIBRARY) list(APPEND APP_SOURCES "${CMAKE_SOURCE_DIR}/src/CoolPropLib.cpp") endif() -if (COOLPROP_STATIC_LIBRARY_MODULE OR COOLPROP_STATIC_LIBRARY) +if (COOLPROP_STATIC_LIBRARY_MODULE OR COOLPROP_STATIC_LIBRARY OR COOLPROP_EXTERNC_STATIC_LIBRARY) list(APPEND APP_SOURCES "${CMAKE_SOURCE_DIR}/src/CoolPropLib.cpp") add_library(${app_name} STATIC ${APP_SOURCES}) add_dependencies (${app_name} generate_headers) - set_target_properties (${app_name} PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -DEXTERNC") install (TARGETS ${app_name} DESTINATION static_library/${CMAKE_SYSTEM_NAME}) endif() +if (COOLPROP_EXTERNC_STATIC_LIBRARY) + set_target_properties (${app_name} PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} -DEXTERNC") +endif() + + if (COOLPROP_64BIT_SHARED_LIBRARY_MODULE OR COOLPROP_64BIT_SHARED_LIBRARY) list(APPEND APP_SOURCES "${CMAKE_SOURCE_DIR}/src/CoolPropLib.cpp") add_library(${app_name} SHARED ${APP_SOURCES}) @@ -657,15 +661,9 @@ if (COOLPROP_PYTHON_BINARIES) endif() if (COOLPROP_PYTHON_PYPI) - - if (DEFINED AND_UPLOAD) - set(_AND_UPLOAD upload) - else() - set(_AND_UPLOAD ) - endif() add_custom_target(CoolProp - COMMAND python prepare_pypi.py ${_AND_UPLOAD} --dist-dir=${CMAKE_INSTALL_PREFIX}/Python + COMMAND python prepare_pypi.py --dist-dir=${CMAKE_INSTALL_PREFIX}/Python WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/wrappers/Python/pypi ) endif() diff --git a/CoolPropBibTeXLibrary.bib b/CoolPropBibTeXLibrary.bib index 01a32444..3e4d7629 100644 --- a/CoolPropBibTeXLibrary.bib +++ b/CoolPropBibTeXLibrary.bib @@ -3,7 +3,7 @@ @ARTICLE{Abramson-HPR-2011, author = {Evan H. Abramson}, - title = {Melting curves of argon and methane}, + title = {{Melting curves of argon and methane}}, journal = {High Pressure Research}, year = {2011}, volume = {31}, @@ -13,9 +13,32 @@ timestamp = {2014.06.09} } +@CONFERENCE{Akasaka-Purdue-2014, + author = {Ryo Akasaka}, + title = {{A Thermodynamic Property Model for the R-134a/245fa Mixtures}}, + booktitle = {15th International Refrigeration and Air Conditioning Conference + at Purdue, July 14-17, 2014}, + year = {2014}, + owner = {Belli}, + timestamp = {2014.09.27} +} + +@ARTICLE{Akasaka-FPE-2013, + author = {Ryo Akasaka}, + title = {{Thermodynamic property models for the difluoromethane (R-32) + trans-1,3,3,3-tetrafluoropropene + (R-1234ze(E)) and difluoromethane + 2,3,3,3-tetrafluoropropene (R-1234yf) + mixtures}}, + journal = {Fluid Phase Equilib.}, + year = {2013}, + volume = {358}, + pages = {98-104}, + owner = {Belli}, + timestamp = {2014.09.27} +} + @CONFERENCE{Akasaka-PU-2014, author = {Ryo Akasaka and Yukihiro Higashi}, - title = {A Thermodynamic Property Model for the R-134a/245fa Mixtures}, + title = {{A Thermodynamic Property Model for the R-134a/245fa Mixtures}}, booktitle = {15 th International Refrigeration and Air Conditioning Conference at Purdue, July 14-17, 2014}, year = {2014}, @@ -187,7 +210,7 @@ } @ARTICLE{Avgeri-JPCRD-2014-Benzene, - author = {S. Avgeri and M. J. Assael and M. L. Huber and R. A. Perkins}, + author = {S. Avgeri and M. J. Assael and M. L. Huber and R. A. Perkins}, title = {{Reference Correlation of the Viscosity of Benzene from the Triple Point to 675 K and up to 300 MPa}}, journal = {J. Phys. Chem. Ref. Data}, @@ -351,10 +374,19 @@ timestamp = {2010.06.30} } +@PHDTHESIS{Gernert-Thesis-2013, + author = {Georg Johannes Gernert}, + title = {{A New Helmholtz Energy Model for Humid Gases and CCS Mixtures}}, + school = {Ruhr-Universit{\:a}t Bochum}, + year = {2013}, + owner = {Belli}, + timestamp = {2014.09.27} +} + @ARTICLE{Gernert-FPE-2014, author = {Johannes Gernert and Andreas J{\"a}ger and Roland Span}, - title = {Calculation of phase equilibria for multi-component mixtures using - highly accurate Helmholtz energy equations of state}, + title = {{Calculation of phase equilibria for multi-component mixtures using + highly accurate Helmholtz energy equations of state}}, journal = {Fluid Phase Equilib.}, year = {2014}, volume = {375}, diff --git a/Doxyfile b/Doxyfile index 8766f43b..f1e58218 100644 --- a/Doxyfile +++ b/Doxyfile @@ -2049,7 +2049,7 @@ TAGFILES = # tag file that is based on the input files it reads. See section "Linking to # external documentation" for more information about the usage of tag files. -GENERATE_TAGFILE = CoolPropDoxyLink.tag +GENERATE_TAGFILE = Web/_static/doxygen/CoolPropDoxyLink.tag # If the ALLEXTERNALS tag is set to YES all external class will be listed in the # class index. If set to NO only the inherited external classes will be listed. diff --git a/Readme.rst b/Readme.rst new file mode 100644 index 00000000..e8ed9ca4 --- /dev/null +++ b/Readme.rst @@ -0,0 +1,37 @@ + +Welcome to CoolProp +=================== + +CoolProp is a thermophysical property database and wrappers for a selection of programming environments. +It offers similar functionality to REFPROP, but CoolProp is open-source and free, +It was originally developed by Ian Bell, currently a post-doc at the University of Liege, in Liege, Belgium. + +* CoolProp has flexible licensing terms: Commercial - ok! Academic? - ok! |license| + +* You can get the development binaries for each platform at http://www.coolprop.dreamhosters.com:8010/binaries/. + +* For Python, you can get latest stable version |version| via pip install coolprop |downloads| + +* The development docs for the v5 release are at http://www.coolprop.dreamhosters.com:8010/sphinx/ + +* Travis CI helps us to keep track of integration issues |travis| + +* Please, if there are any issues of any kind, file an issue at https://github.com/CoolProp/CoolProp/issues + +* Also, check out our FAQ: https://github.com/CoolProp/CoolProp/blob/master/FAQ.md + +.. |travis| image:: https://travis-ci.org/CoolProp/CoolProp.png?branch=master + :target: https://travis-ci.org/CoolProp/CoolProp + :alt: travis-ci + +.. |downloads| image:: https://pypip.in/d/CoolProp/badge.png + :target: http://pypi.python.org/pypi/CoolProp/ + :alt: downloads + +.. |version| image:: https://pypip.in/v/CoolProp/badge.png + :target: http://pypi.python.org/pypi/CoolProp/ + :alt: latest stable version + +.. |license| image:: https://pypip.in/license/CoolProp/badge.png + :target: http://pypi.python.org/pypi/CoolProp/ + :alt: license \ No newline at end of file diff --git a/Readme.txt b/Readme.txt deleted file mode 100644 index d6154091..00000000 --- a/Readme.txt +++ /dev/null @@ -1,14 +0,0 @@ -CoolProp is a thermophysical property database and wrappers for a selection of programming environments - -It offers similar functionality to REFPROP, but CoolProp is open-source and free, with flexible licensing terms. Commercial - ok! Academic? - ok! - -It was originally developed by Ian Bell, currently a post-doc at the University of Liege, in Liege, Belgium. - -The development docs for the v5 release are at http://www.coolprop.dreamhosters.com:8010/sphinx/ - -The development binaries for each platform are at http://www.coolprop.dreamhosters.com:8010/binaries/. - -Please, if there are any issues of any kind, file an issue at https://github.com/CoolProp/CoolProp/issues - -Also, check out our FAQ: https://github.com/CoolProp/CoolProp/blob/master/FAQ.md - diff --git a/Web/BuildCPDocs.bat b/Web/BuildCPDocs.bat index db42b457..2c76430f 100644 --- a/Web/BuildCPDocs.bat +++ b/Web/BuildCPDocs.bat @@ -9,5 +9,5 @@ REM ~ pdflatex CoolPropdoc.tex REM ~ copy /Y CoolPropdoc.pdf ..\..\_static\ REM ~ cd ..\.. -sphinx-apidoc -T -f -o apidoc ../CoolProp +sphinx-apidoc -T -f -e -o apidoc C:\\Miniconda\\lib\\site-packages\\coolprop-5.0.0-py2.7-win-amd64.egg\\CoolProp mingw32-make html \ No newline at end of file diff --git a/Web/apidoc/AbstractState.rst b/Web/apidoc/AbstractState.rst deleted file mode 100644 index d24581c6..00000000 --- a/Web/apidoc/AbstractState.rst +++ /dev/null @@ -1,6 +0,0 @@ -AbstractState Module -==================== - -.. automodule:: CoolProp.AbstractState - :members: AbstractState - :undoc-members: \ No newline at end of file diff --git a/Web/apidoc/CoolProp.BibtexParser.rst b/Web/apidoc/CoolProp.BibtexParser.rst new file mode 100644 index 00000000..9f168e0c --- /dev/null +++ b/Web/apidoc/CoolProp.BibtexParser.rst @@ -0,0 +1,7 @@ +CoolProp.BibtexParser module +============================ + +.. automodule:: CoolProp.BibtexParser + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.CoolProp.rst b/Web/apidoc/CoolProp.CoolProp.rst new file mode 100644 index 00000000..f4ddf66e --- /dev/null +++ b/Web/apidoc/CoolProp.CoolProp.rst @@ -0,0 +1,7 @@ +CoolProp.CoolProp module +======================== + +.. automodule:: CoolProp.CoolProp + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.GUI.CoolPropGUI.rst b/Web/apidoc/CoolProp.GUI.CoolPropGUI.rst new file mode 100644 index 00000000..2f085292 --- /dev/null +++ b/Web/apidoc/CoolProp.GUI.CoolPropGUI.rst @@ -0,0 +1,7 @@ +CoolProp.GUI.CoolPropGUI module +=============================== + +.. automodule:: CoolProp.GUI.CoolPropGUI + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.GUI.PsychScript.rst b/Web/apidoc/CoolProp.GUI.PsychScript.rst new file mode 100644 index 00000000..d6bf0100 --- /dev/null +++ b/Web/apidoc/CoolProp.GUI.PsychScript.rst @@ -0,0 +1,7 @@ +CoolProp.GUI.PsychScript module +=============================== + +.. automodule:: CoolProp.GUI.PsychScript + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.GUI.rst b/Web/apidoc/CoolProp.GUI.rst new file mode 100644 index 00000000..0fd5d3b0 --- /dev/null +++ b/Web/apidoc/CoolProp.GUI.rst @@ -0,0 +1,18 @@ +CoolProp.GUI package +==================== + +Submodules +---------- + +.. toctree:: + + CoolProp.GUI.CoolPropGUI + CoolProp.GUI.PsychScript + +Module contents +--------------- + +.. automodule:: CoolProp.GUI + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.HumidAirProp.rst b/Web/apidoc/CoolProp.HumidAirProp.rst new file mode 100644 index 00000000..74fc648c --- /dev/null +++ b/Web/apidoc/CoolProp.HumidAirProp.rst @@ -0,0 +1,7 @@ +CoolProp.HumidAirProp module +============================ + +.. automodule:: CoolProp.HumidAirProp + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.Plots.Common.rst b/Web/apidoc/CoolProp.Plots.Common.rst new file mode 100644 index 00000000..4d00d0d3 --- /dev/null +++ b/Web/apidoc/CoolProp.Plots.Common.rst @@ -0,0 +1,7 @@ +CoolProp.Plots.Common module +============================ + +.. automodule:: CoolProp.Plots.Common + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.Plots.Plots.rst b/Web/apidoc/CoolProp.Plots.Plots.rst new file mode 100644 index 00000000..1df0790c --- /dev/null +++ b/Web/apidoc/CoolProp.Plots.Plots.rst @@ -0,0 +1,7 @@ +CoolProp.Plots.Plots module +=========================== + +.. automodule:: CoolProp.Plots.Plots + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.Plots.PsychChart.rst b/Web/apidoc/CoolProp.Plots.PsychChart.rst new file mode 100644 index 00000000..ef9bba7d --- /dev/null +++ b/Web/apidoc/CoolProp.Plots.PsychChart.rst @@ -0,0 +1,7 @@ +CoolProp.Plots.PsychChart module +================================ + +.. automodule:: CoolProp.Plots.PsychChart + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.Plots.PsychScript.rst b/Web/apidoc/CoolProp.Plots.PsychScript.rst new file mode 100644 index 00000000..b27bc46f --- /dev/null +++ b/Web/apidoc/CoolProp.Plots.PsychScript.rst @@ -0,0 +1,7 @@ +CoolProp.Plots.PsychScript module +================================= + +.. automodule:: CoolProp.Plots.PsychScript + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.Plots.SimpleCycles.rst b/Web/apidoc/CoolProp.Plots.SimpleCycles.rst new file mode 100644 index 00000000..813298f0 --- /dev/null +++ b/Web/apidoc/CoolProp.Plots.SimpleCycles.rst @@ -0,0 +1,7 @@ +CoolProp.Plots.SimpleCycles module +================================== + +.. automodule:: CoolProp.Plots.SimpleCycles + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.Plots.Tests.rst b/Web/apidoc/CoolProp.Plots.Tests.rst new file mode 100644 index 00000000..9c6dc6f0 --- /dev/null +++ b/Web/apidoc/CoolProp.Plots.Tests.rst @@ -0,0 +1,7 @@ +CoolProp.Plots.Tests module +=========================== + +.. automodule:: CoolProp.Plots.Tests + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.Plots.rst b/Web/apidoc/CoolProp.Plots.rst index 9b2e2487..f7b0ede8 100644 --- a/Web/apidoc/CoolProp.Plots.rst +++ b/Web/apidoc/CoolProp.Plots.rst @@ -1,35 +1,22 @@ -Plots Package -============= +CoolProp.Plots package +====================== -:mod:`Plots` Package --------------------- +Submodules +---------- + +.. toctree:: + + CoolProp.Plots.Common + CoolProp.Plots.Plots + CoolProp.Plots.PsychChart + CoolProp.Plots.PsychScript + CoolProp.Plots.SimpleCycles + CoolProp.Plots.Tests + +Module contents +--------------- .. automodule:: CoolProp.Plots :members: :undoc-members: :show-inheritance: - -:mod:`Plots` Module -------------------- - -.. automodule:: CoolProp.Plots.Plots - :members: - :undoc-members: - :show-inheritance: - -:mod:`PsychChart` Module ------------------------- - -.. automodule:: CoolProp.Plots.PsychChart - :members: - :undoc-members: - :show-inheritance: - -:mod:`SimpleCycles` Module --------------------------- - -.. automodule:: CoolProp.Plots.SimpleCycles - :members: - :undoc-members: - :show-inheritance: - diff --git a/Web/apidoc/CoolProp.State.rst b/Web/apidoc/CoolProp.State.rst new file mode 100644 index 00000000..0e6a41c4 --- /dev/null +++ b/Web/apidoc/CoolProp.State.rst @@ -0,0 +1,7 @@ +CoolProp.State module +===================== + +.. automodule:: CoolProp.State + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.constants.rst b/Web/apidoc/CoolProp.constants.rst new file mode 100644 index 00000000..2ac6591d --- /dev/null +++ b/Web/apidoc/CoolProp.constants.rst @@ -0,0 +1,7 @@ +CoolProp.constants module +========================= + +.. automodule:: CoolProp.constants + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.rst b/Web/apidoc/CoolProp.rst index 889bc959..329a027e 100644 --- a/Web/apidoc/CoolProp.rst +++ b/Web/apidoc/CoolProp.rst @@ -1,9 +1,32 @@ -CoolProp Module -=============== +CoolProp package +================ -.. automodule:: CoolProp.CoolProp - :synopsis: +Subpackages +----------- + +.. toctree:: + + CoolProp.GUI + CoolProp.Plots + CoolProp.tests + +Submodules +---------- + +.. toctree:: + + CoolProp.BibtexParser + CoolProp.CoolProp + CoolProp.CoolProp + CoolProp.HumidAirProp + CoolProp.State + CoolProp.constants + CoolProp.constants + +Module contents +--------------- + +.. automodule:: CoolProp :members: :undoc-members: :show-inheritance: - :exclude-members: State,HAProps,HAProps_Aux,PureFluidClass \ No newline at end of file diff --git a/Web/apidoc/CoolProp.tests.rst b/Web/apidoc/CoolProp.tests.rst new file mode 100644 index 00000000..9c058cbd --- /dev/null +++ b/Web/apidoc/CoolProp.tests.rst @@ -0,0 +1,27 @@ +CoolProp.tests package +====================== + +Submodules +---------- + +.. toctree:: + + CoolProp.tests.runner + CoolProp.tests.test_CoolPropState + CoolProp.tests.test_HAProps + CoolProp.tests.test_Props + CoolProp.tests.test_Props1 + CoolProp.tests.test_Saturation + CoolProp.tests.test_State + CoolProp.tests.test_Units_CPState + CoolProp.tests.test_consistency + CoolProp.tests.test_param_getters + CoolProp.tests.test_plots + +Module contents +--------------- + +.. automodule:: CoolProp.tests + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.tests.runner.rst b/Web/apidoc/CoolProp.tests.runner.rst new file mode 100644 index 00000000..1116c6a4 --- /dev/null +++ b/Web/apidoc/CoolProp.tests.runner.rst @@ -0,0 +1,7 @@ +CoolProp.tests.runner module +============================ + +.. automodule:: CoolProp.tests.runner + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.tests.test_CoolPropState.rst b/Web/apidoc/CoolProp.tests.test_CoolPropState.rst new file mode 100644 index 00000000..ad1610f8 --- /dev/null +++ b/Web/apidoc/CoolProp.tests.test_CoolPropState.rst @@ -0,0 +1,7 @@ +CoolProp.tests.test_CoolPropState module +======================================== + +.. automodule:: CoolProp.tests.test_CoolPropState + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.tests.test_HAProps.rst b/Web/apidoc/CoolProp.tests.test_HAProps.rst new file mode 100644 index 00000000..a20adca2 --- /dev/null +++ b/Web/apidoc/CoolProp.tests.test_HAProps.rst @@ -0,0 +1,7 @@ +CoolProp.tests.test_HAProps module +================================== + +.. automodule:: CoolProp.tests.test_HAProps + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.tests.test_Props.rst b/Web/apidoc/CoolProp.tests.test_Props.rst new file mode 100644 index 00000000..e340245f --- /dev/null +++ b/Web/apidoc/CoolProp.tests.test_Props.rst @@ -0,0 +1,7 @@ +CoolProp.tests.test_Props module +================================ + +.. automodule:: CoolProp.tests.test_Props + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.tests.test_Props1.rst b/Web/apidoc/CoolProp.tests.test_Props1.rst new file mode 100644 index 00000000..99592e13 --- /dev/null +++ b/Web/apidoc/CoolProp.tests.test_Props1.rst @@ -0,0 +1,7 @@ +CoolProp.tests.test_Props1 module +================================= + +.. automodule:: CoolProp.tests.test_Props1 + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.tests.test_Saturation.rst b/Web/apidoc/CoolProp.tests.test_Saturation.rst new file mode 100644 index 00000000..e71ef65d --- /dev/null +++ b/Web/apidoc/CoolProp.tests.test_Saturation.rst @@ -0,0 +1,7 @@ +CoolProp.tests.test_Saturation module +===================================== + +.. automodule:: CoolProp.tests.test_Saturation + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.tests.test_State.rst b/Web/apidoc/CoolProp.tests.test_State.rst new file mode 100644 index 00000000..c7b9cbe3 --- /dev/null +++ b/Web/apidoc/CoolProp.tests.test_State.rst @@ -0,0 +1,7 @@ +CoolProp.tests.test_State module +================================ + +.. automodule:: CoolProp.tests.test_State + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.tests.test_Units_CPState.rst b/Web/apidoc/CoolProp.tests.test_Units_CPState.rst new file mode 100644 index 00000000..101ea276 --- /dev/null +++ b/Web/apidoc/CoolProp.tests.test_Units_CPState.rst @@ -0,0 +1,7 @@ +CoolProp.tests.test_Units_CPState module +======================================== + +.. automodule:: CoolProp.tests.test_Units_CPState + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.tests.test_consistency.rst b/Web/apidoc/CoolProp.tests.test_consistency.rst new file mode 100644 index 00000000..e5806299 --- /dev/null +++ b/Web/apidoc/CoolProp.tests.test_consistency.rst @@ -0,0 +1,7 @@ +CoolProp.tests.test_consistency module +====================================== + +.. automodule:: CoolProp.tests.test_consistency + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.tests.test_param_getters.rst b/Web/apidoc/CoolProp.tests.test_param_getters.rst new file mode 100644 index 00000000..55fdb73e --- /dev/null +++ b/Web/apidoc/CoolProp.tests.test_param_getters.rst @@ -0,0 +1,7 @@ +CoolProp.tests.test_param_getters module +======================================== + +.. automodule:: CoolProp.tests.test_param_getters + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/CoolProp.tests.test_plots.rst b/Web/apidoc/CoolProp.tests.test_plots.rst new file mode 100644 index 00000000..4bcbb8f5 --- /dev/null +++ b/Web/apidoc/CoolProp.tests.test_plots.rst @@ -0,0 +1,7 @@ +CoolProp.tests.test_plots module +================================ + +.. automodule:: CoolProp.tests.test_plots + :members: + :undoc-members: + :show-inheritance: diff --git a/Web/apidoc/HumidAirProp.rst b/Web/apidoc/HumidAirProp.rst deleted file mode 100644 index fa4a109c..00000000 --- a/Web/apidoc/HumidAirProp.rst +++ /dev/null @@ -1,7 +0,0 @@ -HumidAirProp Module -=================== - -.. automodule:: CoolProp.HumidAirProp - :members: HAProps, HAProps_Aux - :undoc-members: - :show-inheritance: \ No newline at end of file diff --git a/Web/apidoc/Plots.rst b/Web/apidoc/Plots.rst deleted file mode 100644 index 00b1df46..00000000 --- a/Web/apidoc/Plots.rst +++ /dev/null @@ -1,42 +0,0 @@ -Plots Package -============= - -:mod:`CoolProp.Plots` Package ------------------------------ - -.. automodule:: CoolProp.Plots - :members: - :undoc-members: - :show-inheritance: - -:mod:`CoolProp.Plots.Common` Module -------------------------------------- - -.. automodule:: CoolProp.Plots.Common - :members: - :undoc-members: - :show-inheritance: - -:mod:`CoolProp.Plots.Plots` Module ----------------------------------- - -.. automodule:: CoolProp.Plots.Plots - :members: - :undoc-members: - :show-inheritance: - -:mod:`CoolProp.Plots.PsychChart` Module ---------------------------------------- - -.. automodule:: CoolProp.Plots.PsychChart - :members: - :undoc-members: - :show-inheritance: - -:mod:`SimpleCycles` Module --------------------------- - -.. automodule:: CoolProp.Plots.SimpleCycles - :members: - :undoc-members: - :show-inheritance: diff --git a/Web/apidoc/State.rst b/Web/apidoc/State.rst deleted file mode 100644 index dec29521..00000000 --- a/Web/apidoc/State.rst +++ /dev/null @@ -1,6 +0,0 @@ -State Module -============ - -.. automodule:: CoolProp.State - :members: State, PureFluidClass - :undoc-members: \ No newline at end of file diff --git a/Web/apidoc/modules.rst b/Web/apidoc/modules.rst deleted file mode 100644 index 507350d6..00000000 --- a/Web/apidoc/modules.rst +++ /dev/null @@ -1,11 +0,0 @@ -CoolProp API -============ - -.. toctree:: - :maxdepth: 4 - - CoolProp - HumidAirProp - Plots - State - AbstractState diff --git a/Web/conf.py b/Web/conf.py index eb4966c1..a02e9706 100644 --- a/Web/conf.py +++ b/Web/conf.py @@ -13,6 +13,7 @@ # serve to show the default. import sys, os + sys.path.insert(0, os.path.abspath('_ext')) try: import sphinxcontrib.doxylink @@ -20,13 +21,24 @@ except ImportError: print('Unable to import sphinxcontrib.doxylink; try to run "pip install sphinxcontrib-doxylink"') + +import glob +import subprocess + +# This part finds all scripts and runs them +scripts = glob.glob(os.path.join('scripts','*.py')) +for script in scripts: + subprocess.call('python {0}'.format(os.path.basename(script)), cwd='scripts', shell=True) + + + #~ # If your extensions are in another directory, add it here. If the directory #~ # is relative to the documentation root, use os.path.abspath to make it #~ # absolute, like shown here. #~ sys.path.append(os.path.abspath('sphinxext')) doxylink = { - 'cpapi' : ('_static/doxygen/CoolPropDoxyLink.tag', '_static/doxygen/html') + 'cpapi' : ('_static/doxygen/CoolPropDoxyLink.tag', '../_static/doxygen/html') } # -- General configuration ----------------------------------------------------- diff --git a/Web/coolprop/build_parametric_table.py b/Web/coolprop/build_parametric_table.py index 6d727608..3c0123fa 100644 --- a/Web/coolprop/build_parametric_table.py +++ b/Web/coolprop/build_parametric_table.py @@ -1,15 +1,15 @@ -import CoolProp5 +import CoolProp import pandas grouping = dict() grouping2 = [] # Group aliases -for parameter in CoolProp5.get('parameter_list').split(','): +for parameter in CoolProp.get('parameter_list').split(','): - index = CoolProp5.CoolProp.get_parameter_index(parameter) - units = CoolProp5.CoolProp.get_parameter_information(index, 'units').replace('-',' ') - IO = CoolProp5.CoolProp.get_parameter_information(index, 'IO') - long = CoolProp5.CoolProp.get_parameter_information(index, 'long') - short = CoolProp5.CoolProp.get_parameter_information(index, 'short') + index = CoolProp.CoolProp.get_parameter_index(parameter) + units = CoolProp.CoolProp.get_parameter_information(index, 'units').replace('-',' ') + IO = CoolProp.CoolProp.get_parameter_information(index, 'IO') + long = CoolProp.CoolProp.get_parameter_information(index, 'long') + short = CoolProp.CoolProp.get_parameter_information(index, 'short') RHS = (units, IO, long) if RHS not in grouping: diff --git a/Web/coolprop/parameter_table.rst.in b/Web/coolprop/parameter_table.rst.in index 9e371782..9dbc32ab 100644 --- a/Web/coolprop/parameter_table.rst.in +++ b/Web/coolprop/parameter_table.rst.in @@ -1,48 +1,67 @@ .. constructed with the build_parameter_table.py script in this folder -================================= ======= ============ ========================================================= -Parameter Units Input/Output Description -================================= ======= ============ ========================================================= -``D``, ``Dmass`` kg/m^3 IO Mass density -``Delta`` IO Reduced density (rho/rhoc) -``Dmolar`` mol/m^3 IO Molar density -``H``, ``Hmass`` J/kg IO Mass specific enthalpy -``Hmolar`` J/mol IO Molar specific enthalpy -``P`` Pa IO Pressure -``Q`` mol/mol IO Mass vapor quality -``S``, ``Smass`` J/kg/K IO Mass specific entropy -``Smolar`` J/mol/K IO Molar specific entropy -``T`` K IO Temperature -``Tau`` IO Reciprocal reduced temperature (Tc/T) -``U``, ``Umass`` J/kg IO Mass specific internal energy -``Umolar`` J/mol IO Molar specific internal energy -``Bvirial`` O Second virial coefficient -``C``, ``Cpmass`` J/kg/K O Mass specific constant presssure specific heat -``Cpmolar`` J/mol/K O Molar specific constant presssure specific heat -``Cvirial`` O Third virial coefficient -``Cvmass``, ``O`` J/kg/K O Mass specific constant volume specific heat -``Cvmolar`` J/mol/K O Molar specific constant volume specific heat -``FH`` O Flammability hazard -``GWP100`` O 100-year gobal warming potential -``GWP20`` O 20-year gobal warming potential -``GWP500`` O 500-year gobal warming potential -``HH`` O Health hazard -``L``, ``conductivity`` W/m/K O Thermal conductivity -``ODP`` O Ozone depletion potential -``PH`` O Physical hazard -``T_critical``, ``Tcrit`` K O Temperature at the critical point -``T_max`` K O Maximum temperature limit -``T_min`` K O Minimum temperature limit -``T_reducing`` K O Temperature at the reducing point -``T_triple``, ``Ttriple`` K O Temperature at the triple point -``V``, ``viscosity`` Pa s O Viscosity -``dBvirial_dT`` O Derivative of second virial coefficient with respect to T -``dCvirial_dT`` O Derivative of third virial coefficient with respect to T -``isothermal_compressibility`` 1/Pa O Isothermal compressibility -``molar_mass`` kg/mol O Molar mass -``p_critical``, ``pcrit`` Pa O Pressure at the critical point -``rhocrit``, ``rhomass_critical`` kg/m^3 O Mass density at critical point -``rhomolar_critical`` mol/m^3 O Molar density at critical point -``rhomolar_reducing`` mol/m^3 O Molar density at reducing point -``speed_of_sound`` m/s O Speed of sound -================================= ======= ============ ========================================================= +====================================================================================== ======= ============ ========================================================= +Parameter Units Input/Output Description +====================================================================================== ======= ============ ========================================================= +``DELTA``, ``Delta`` IO Reduced density (rho/rhoc) +``DMOLAR``, ``Dmolar`` mol/m^3 IO Molar density +``D``, ``DMASS``, ``Dmass`` kg/m^3 IO Mass density +``GMASS``, ``Gmass`` J/kg IO Mass specific Gibbs energy +``GMOLAR``, ``Gmolar`` J/mol IO Molar specific Gibbs energy +``HMOLAR``, ``Hmolar`` J/mol IO Molar specific enthalpy +``H``, ``HMASS``, ``Hmass`` J/kg IO Mass specific enthalpy +``P`` Pa IO Pressure +``Q`` mol/mol IO Mass vapor quality +``SMOLAR``, ``Smolar`` J/mol/K IO Molar specific entropy +``S``, ``SMASS``, ``Smass`` J/kg/K IO Mass specific entropy +``TAU``, ``Tau`` IO Reciprocal reduced temperature (Tc/T) +``T`` K IO Temperature +``UMOLAR``, ``Umolar`` J/mol IO Molar specific internal energy +``U``, ``UMASS``, ``Umass`` J/kg IO Mass specific internal energy +``ALPHA0``, ``alpha0`` O Ideal Helmholtz energy +``ALPHAR``, ``alphar`` O Residual Helmholtz energy +``A``, ``SPEED_OF_SOUND``, ``speed_of_sound`` m/s O Speed of sound +``BVIRIAL``, ``Bvirial`` O Second virial coefficient +``CONDUCTIVITY``, ``L``, ``conductivity`` W/m/K O Thermal conductivity +``CP0MASS``, ``Cp0mass`` J/kg/K O Ideal gas mass specific constant presssure specific heat +``CP0MOLAR``, ``Cp0molar`` J/mol/K O Ideal gas molar specific constant presssure specific heat +``CPMOLAR``, ``Cpmolar`` J/mol/K O Molar specific constant presssure specific heat +``CVIRIAL``, ``Cvirial`` O Third virial coefficient +``CVMASS``, ``Cvmass``, ``O`` J/kg/K O Mass specific constant volume specific heat +``CVMOLAR``, ``Cvmolar`` J/mol/K O Molar specific constant volume specific heat +``C``, ``CPMASS``, ``Cpmass`` J/kg/K O Mass specific constant presssure specific heat +``DALPHA0_DDELTA_CONSTTAU``, ``dalpha0_ddelta_consttau`` O Derivative of ideal Helmholtz energy with delta +``DALPHA0_DTAU_CONSTDELTA``, ``dalpha0_dtau_constdelta`` O Derivative of ideal Helmholtz energy with tau +``DALPHAR_DDELTA_CONSTTAU``, ``dalphar_ddelta_consttau`` O Derivative of residual Helmholtz energy with delta +``DALPHAR_DTAU_CONSTDELTA``, ``dalphar_dtau_constdelta`` O Derivative of residual Helmholtz energy with tau +``DBVIRIAL_DT``, ``dBvirial_dT`` O Derivative of second virial coefficient with respect to T +``DCVIRIAL_DT``, ``dCvirial_dT`` O Derivative of third virial coefficient with respect to T +``FH`` O Flammability hazard +``FUNDAMENTAL_DERIVATIVE_OF_GAS_DYNAMICS``, ``fundamental_derivative_of_gas_dynamics`` O Fundamental_derivative_of_gas_dynamics +``GWP100`` O 100-year gobal warming potential +``GWP20`` O 20-year gobal warming potential +``GWP500`` O 500-year gobal warming potential +``HH`` O Health hazard +``ISOBARIC_EXPANSION_COEFFICIENT``, ``isobaric_expansion_coefficient`` 1/K O Isobaric expansion coefficient +``ISOTHERMAL_COMPRESSIBILITY``, ``isothermal_compressibility`` 1/Pa O Isothermal compressibility +``M``, ``MOLAR_MASS``, ``MOLEMASS``, ``molar_mass``, ``molemass`` kg/mol O Molar mass +``ODP`` O Ozone depletion potential +``PCRIT``, ``P_CRITICAL``, ``p_critical``, ``pcrit`` Pa O Pressure at the critical point +``PH`` O Physical hazard +``PMAX``, ``P_MAX``, ``P_max``, ``pmax`` Pa O Maximum pressure limit +``PRANDTL``, ``Prandtl`` O Prandtl number +``PTRIPLE``, ``P_TRIPLE``, ``p_triple``, ``ptriple`` Pa O Pressure at the triple point (pure only) +``P_MIN``, ``P_min`` Pa O Minimum pressure limit +``RHOCRIT``, ``RHOMASS_CRITICAL``, ``rhocrit``, ``rhomass_critical`` kg/m^3 O Mass density at critical point +``RHOMASS_REDUCING``, ``rhomass_reducing`` kg/m^3 O Mass density at reducing point +``RHOMOLAR_CRITICAL``, ``rhomolar_critical`` mol/m^3 O Molar density at critical point +``RHOMOLAR_REDUCING``, ``rhomolar_reducing`` mol/m^3 O Molar density at reducing point +``SURFACE_TENSION``, ``surface_tension`` N/m O Surface tension +``TCRIT``, ``T_CRITICAL``, ``T_critical``, ``Tcrit`` K O Temperature at the critical point +``TMAX``, ``T_MAX``, ``T_max``, ``Tmax`` K O Maximum temperature limit +``TMIN``, ``T_MIN``, ``T_min``, ``Tmin`` K O Minimum temperature limit +``TTRIPLE``, ``T_TRIPLE``, ``T_triple``, ``Ttriple`` K O Temperature at the triple point +``T_REDUCING``, ``T_reducing`` K O Temperature at the reducing point +``V``, ``VISCOSITY``, ``viscosity`` Pa s O Viscosity +``Z`` O Compressibility factor +====================================================================================== ======= ============ ========================================================= diff --git a/Web/coolprop/wrappers/Csharp/index.rst b/Web/coolprop/wrappers/Csharp/index.rst index 40da6b29..913420ff 100644 --- a/Web/coolprop/wrappers/Csharp/index.rst +++ b/Web/coolprop/wrappers/Csharp/index.rst @@ -67,7 +67,7 @@ Once mono c# is installed, you can run the builder and tests using:: # Move into the folder you just created cd CoolProp # Make a build folder - mkdir -p build/Csharp && cd build + mkdir build && cd build # Build the makefile using CMake cmake .. -DCOOLPROP_CSHARP_MODULE=ON -DBUILD_TESTING=ON # Make the C# files (by default files will be generated in folder install_root/Csharp relative to CMakeLists.txt file) diff --git a/Web/coolprop/wrappers/FORTRAN/index.rst b/Web/coolprop/wrappers/FORTRAN/index.rst index 3a3e316e..6b6ac011 100644 --- a/Web/coolprop/wrappers/FORTRAN/index.rst +++ b/Web/coolprop/wrappers/FORTRAN/index.rst @@ -9,7 +9,7 @@ Compilers On linux, you need gcc and gfortran, which are easy to install using your package manager. -On windows, the most reliable mixed compilation seems to be using the mingw-provided gfortran/gcc combination from mingw-get. Theese are the versions used as of June 20, 2014:: +On windows, the most reliable mixed compilation seems to be using the mingw-provided gfortran/gcc combination from mingw-get. These are the versions used as of June 20, 2014:: >gfortran --version GNU Fortran (GCC) 4.8.1 @@ -30,14 +30,14 @@ On linux/OSX, start in root folder of recursively-cloned CoolProp repo and do:: mkdir build && cd build mkdir gccstatic && cd gccstatic - cmake ../.. -DCOOLPROP_STATIC_LIBRARY=ON + cmake ../.. -DCOOLPROP_EXTERNC_STATIC_LIBRARY=ON cmake --build . -On Windows, the call to CMake should be done using the MinGW generator, but otherwise procedure is the same:: +On Windows, the call to CMake should be done using the MinGW generator, but otherwise the procedure is the same:: mkdir build && cd build mkdir gccstatic && cd gccstatic - cmake ../.. -G "MinGW Makefiles" -DCOOLPROP_STATIC_LIBRARY=ON + cmake ../.. -G "MinGW Makefiles" -DCOOLPROP_EXTERNC_STATIC_LIBRARY=ON cmake --build . This will generate the file libCoolProp.a which is a GCC static library that can be linked with GCC/GFORTRAN code. Copy this .a file into the directory with the coolprop FORTRAN example ``cool_fortran_bind.f90``: diff --git a/Web/coolprop/wrappers/StaticLibrary/index.rst b/Web/coolprop/wrappers/StaticLibrary/index.rst new file mode 100644 index 00000000..a7ad8cdc --- /dev/null +++ b/Web/coolprop/wrappers/StaticLibrary/index.rst @@ -0,0 +1,36 @@ +.. _static_library: + +************** +Static Library +************** + +Static libraries can be used to compile all of CoolProp into one compilation unit, and then link that with user code. This can be advantageous as CoolProp only needs to be compiled once and fast compilation of the user-defined code is then possible. + +When writing your own C++ code, it is advised to compile CoolProp to a static library and then link CoolProp and your own code + +Pre-compiled Binaries +===================== +Pre-compiled release binaries can be downloaded from :sfdownloads:`static_library`. Development binaries coming from the buildbot server can be found at :bbbinaries:`static_library`. These static libraries are only useful if the compiler used to make the static library agrees with the static library that will be used to build your other code. So best to follow the below instructions to build your own static library. + +User-Compiled Binaries +====================== + +Common Requirements +------------------- +Compilation of the static library requires a few :ref:`common wrapper pre-requisites ` + +Compile +------- + +You can build the static library using:: + + # Check out the sources for CoolProp + git clone https://github.com/CoolProp/CoolProp --recursive + # Move into the folder you just created + cd CoolProp + # Make a build folder + mkdir -p build && cd build + # Build the makefile using CMake + cmake .. -DCOOLPROP_STATIC_LIBRARY=ON + # Make the static library + make VERBOSE=1 diff --git a/Web/coolprop/wrappers/index.rst b/Web/coolprop/wrappers/index.rst index 9a3cba8e..3c792ea8 100644 --- a/Web/coolprop/wrappers/index.rst +++ b/Web/coolprop/wrappers/index.rst @@ -9,8 +9,9 @@ CoolProp at its core is a C++ library, but it can be of interest to use this cod Downloads and instructions for each wrapper are included in the page for the wrapper given in the table below. ======================================= =========================== ======================================= -Language Operating Systems Notes +Target Operating Systems Notes ======================================= =========================== ======================================= +:ref:`Static library ` linux, OSX, win :ref:`Python ` linux, OSX, win Wrapper is Cython based :ref:`Octave ` linux, OSX, win Wrapper is SWIG based :ref:`C# ` linux, OSX, win Wrapper is SWIG based @@ -90,3 +91,4 @@ OSX should come with a c++ compiler (clang), for git and cmake your best bet is LibreOffice/index.rst Excel/index.rst Maple/index.rst + StaticLibrary/index.rst diff --git a/Web/develop/buildbot.rst b/Web/develop/buildbot.rst index dbacc41c..6bb64d4b 100644 --- a/Web/develop/buildbot.rst +++ b/Web/develop/buildbot.rst @@ -3,6 +3,54 @@ Buildbot ******** +Buildbot masters and slaves +=========================== + +Master +------ + +From the root of the git checkout (this will use the master.cfg from CoolProp):: + + pip install buildbot + cd dev/buildbot + buildbot create-master master + buildbot start master + +The file ``buildbot-private.py`` (which is a python module with the passwords for the slaves as well as the buildbot website), should also be placed in the master folder next to master.cfg. Alternatively, you can put the ``buildbot_private.py`` in another folder on the master's computer and make a soft-link in the master folder to point to the buildbot_private.py file. + +If you want to completely restart the master, you can do:: + + buildbot restart master + +but usually a:: + + buildbot reconfig master + +will do the job since it will just reparse the configuration file without signing you out of the server + +To ensure that the buildbot server stays online, you can make a script with the contents:: + + buildbot start /path/to/master_folder + +and add it to a cron job + +Slaves +------ + +To start a slave connected to a buildbot master at IP address 10.0.0.2 (default for host for VirtualBox), with a slave named ``example-slave`` and passsword ``pass``, run the command:: + + buildslave create-slave slave 10.0.0.2:9989 example-slave pass + buildslave start slave + + +If the master is somewhere else, just change the IP address. As of Sept, 2014, the master was at www.coolprop.dreamhosters.com. The buildbot_private.py on the master holds the required passwords. + +On linux, you can add the following lines to the end of your ``~/.profile`` file (similar ideas apply on other platforms) to autostart the slave when the user logs in:: + + # Connect to the buildbot master + buildslave start ~/slave + + Setting MIME type handler ========================= diff --git a/Web/fluid_properties/Incompressibles.bib b/Web/fluid_properties/Incompressibles.bib index 972f6c07..b857b7cf 100644 --- a/Web/fluid_properties/Incompressibles.bib +++ b/Web/fluid_properties/Incompressibles.bib @@ -3,11 +3,10 @@ @Book{ASHRAE2001, - Title = {2001 ASHRAE Handbook: Fundamentals}, - Author = {American Society of Heating, Refrigerating and Air-Conditioning Engineers}, - Publisher = {ASHRAE}, + Title = {{2001 ASHRAE Handbook: Fundamentals}}, + Author = {{American Society of Heating, Refrigerating and Air-Conditioning Engineers}}, + Publisher = {{ASHRAE}}, Year = {2001}, - Series = {Ashrae Handbook Fundamentals Systems-international Metric System}, Volume = {111}, ISBN = {9781883413880}, @@ -15,22 +14,24 @@ Timestamp = {2014.09.17} } -@Article{Cesar2013, - Title = {An amazing title}, - Author = {Jean C{\'e}sar}, - Journal = {Nice Journal}, - Year = {2013}, +@Manual{Jones2001, + Title = {{SciPy}: Open source scientific tools for {Python}}, + Author = {Eric Jones and Travis Oliphant and Pearu Peterson and others}, - Month = jan, - Pages = {12--23}, - Volume = {12}, - - Abstract = {This is an abstract. This line should be long enough to test - multilines...}, - Comments = {A comment}, - Keywords = {keyword1, keyword2}, Owner = {jowr}, - Timestamp = {2014.09.15} + Timestamp = {2014.09.24}, + Url = {http://www.scipy.org/} +} + +@TechReport{Kauffeld2001, + Title = {{RP-1166---Behavior of Ice Slurries in Thermal Storage Systems}}, + Author = {Michael Kauffeld}, + Institution = {{Danish Technological Institute}}, + Year = {2001}, + Note = {{Sponsored by ASHRAE Technical Committee 6.9 Thermal Storage}}, + + Owner = {jowr}, + Timestamp = {2014.09.22} } @Book{Melinder2010, @@ -43,10 +44,53 @@ Timestamp = {2014.09.17} } +@Article{Patek2006, + Title = {{A computationally effective formulation of the thermodynamic properties of LiBr-H2O solutions from 273 to 500 K over full composition range}}, + Author = {Jaroslav P\'atek and Jaroslav Klomfar}, + Journal = {International Journal of Refrigeration}, + Year = {2006}, + + Month = {June}, + Number = {4}, + Pages = {566--578}, + Volume = {29}, + + Doi = {10.1016/j.ijrefrig.2005.10.007}, + Owner = {jowr}, + Timestamp = {2013.11.22} +} + +@InBook{Preisegger2010, + Title = {VDI Heat Atlas}, + Author = {Ewald Preisegger and Felix Flohr and Gernot Krakat and Andreas Gl{\"u}ck and Dietmar Hunold}, + Chapter = {D4 Properties of Industrial Heat Transfer Media}, + Editor = {Peter Stephan}, + Pages = {419--512}, + Publisher = {Springer}, + Year = {2010}, + + Address = {Berlin Heidelberg}, + Edition = {2nd}, + + Doi = {10.1007/978-3-540-77877-6_20}, + Owner = {jowr}, + Timestamp = {2013.06.18} +} + +@Book{Schmidt1979, + Title = {Properties of Water and Steam in SI-Units}, + Author = {Ernst Schmidt}, + Publisher = {Springer}, + Year = {1979}, + Edition = {2nd}, + + Owner = {jowr}, + Timestamp = {2014.09.22} +} + @Manual{Skovrup2013, - Title = {SecCool Properties}, + Title = {{SecCool Properties v1.33}}, Author = {Morten Juel Skovrup}, - Edition = {v1.33}, Organization = {IPU Refrigeration and Energy Technology}, Year = {2013}, @@ -55,9 +99,29 @@ Url = {http://en.ipu.dk/Indhold/refrigeration-and-energy-technology/seccool.aspx} } +@TechReport{Zavoico2001, + Title = {{Solar Power Tower Design Basis Document}}, + Author = {Alexis B. Zavoico}, + Institution = {Sandia National Laboratories}, + Year = {2001}, + Month = {July}, + + Owner = {jowr}, + Timestamp = {2013.10.23}, + Url = {http://prod.sandia.gov/techlib/access-control.cgi/2001/012100.pdf} +} + +@Manual{Dynalene2014, + Title = {{Technical Data Sheet}}, + Organization = {{Dynalene Inc.}}, + Year = {2014}, + + Owner = {jowr}, + Timestamp = {2014.09.22} +} + @Manual{Therminol2014, - Title = {{Therminol Heat Transfer Reference Disk}}, - Edition = {v5.1}, + Title = {{Therminol Heat Transfer Reference Disk v5.1}}, Organization = {{Eastman Chemical Company}}, Year = {2014}, @@ -66,3 +130,121 @@ Url = {http://www.therminol.com/resources/therminol-reference-disk} } +@Manual{Paratherm2013, + Title = {{Thermal Properties Calculator v6.4}}, + Organization = {{Paratherm Ltd.}}, + Year = {2013}, + + Owner = {jowr}, + Timestamp = {2014.09.22}, + Url = {http://paracalc.paratherm.com} +} + +@Manual{Arteco2010, + Title = {{Technical Information}}, + Organization = {{Arteco NV/SA}}, + Year = {2010}, + + Owner = {jowr}, + Timestamp = {2014.09.22} +} + +@Manual{3M2007, + Title = {{Technical Information}}, + Organization = {{3M Company}}, + Year = {2007}, + + Owner = {jowr}, + Timestamp = {2014.09.22} +} + +@Manual{PKS2005, + Title = {{Technical Data Sheet}}, + Organization = {{pro K{\"u}hlsole GmbH}}, + Year = {2005}, + + Owner = {jowr}, + Timestamp = {2014.09.22} +} + +@Manual{Chevron2004, + Title = {{Technical Data Sheet}}, + Organization = {{Chevron Products Company}}, + Year = {2004}, + + Owner = {jowr}, + Timestamp = {2014.09.22} +} + +@Manual{Aspen2001, + Title = {{Technical Data Sheet}}, + Organization = {{Aspen Petroleum AB}}, + Year = {2001}, + + Owner = {jowr}, + Timestamp = {2014.09.22} +} + +@Manual{Clariant2000, + Title = {{Technical Data Sheet}}, + Organization = {{Clariant GmbH}}, + Year = {2000}, + + Owner = {jowr}, + Timestamp = {2014.09.22} +} + +@Manual{Hydro2000, + Title = {{Technical Information}}, + Organization = {{Hydro Chemicals}}, + Year = {2000}, + + Owner = {jowr}, + Timestamp = {2014.09.22} +} + +@Manual{Sulzer1999, + Title = {{Technical Information}}, + Organization = {{Sulzer Chemtech AG}}, + Year = {1999}, + + Owner = {jowr}, + Timestamp = {2014.09.22} +} + +@Manual{Tyfoprop1999, + Title = {{Technical Information}}, + Organization = {{Tyforop Chemie Gmbh}}, + Year = {1999}, + + Owner = {jowr}, + Timestamp = {2014.09.22} +} + +@Manual{Kemira1998, + Title = {{Technical Data Sheet}}, + Organization = {{Kemira Chemicals OY}}, + Year = {1998}, + + Owner = {jowr}, + Timestamp = {2014.09.22} +} + +@Manual{Dow1997, + Title = {{Technical Data Sheet}}, + Organization = {{The Dow Chemical Company}}, + Year = {1997}, + + Owner = {jowr}, + Timestamp = {2014.09.22} +} + +@Manual{Hoechst1995, + Title = {{Technical Information}}, + Organization = {{Hoechst AG}}, + Year = {1995}, + + Owner = {jowr}, + Timestamp = {2014.09.22} +} + diff --git a/Web/fluid_properties/Incompressibles.rst b/Web/fluid_properties/Incompressibles.rst index f309231b..af66c76a 100644 --- a/Web/fluid_properties/Incompressibles.rst +++ b/Web/fluid_properties/Incompressibles.rst @@ -1,11 +1,14 @@ -.. |degC| replace:: :math:`^\circ\!\!` C .. _Incompressibles: Incompressible Fluids ===================== + +General Introduction +-------------------- + In CoolProp, the incompressible fluids are divided into three major groups. * :ref:`Pure fluids `. @@ -29,19 +32,44 @@ specific fluid. To get an overview over all the fits, there are also combined documents with all the :download:`pure fluids and all the aqueous solutions`. You can read more about these reports in a dedicated -:ref:`section` called :ref:`Fitting Reports` below. +:ref:`section` called :ref:`Fitting Reports`. + +All incompressible fluids have an arbitrary reference state for enthalpy and entropy. +During initialisation, the reference state is defined as a temperature of 20 °C +and a pressure of 1 atm according to the U.S. National Institute of Standards and +Technology (`NIST `_). + +.. math:: + T_\text{ref} &= 293.15\:\text{K} &= 68\:\text{°F} \\ + p_\text{ref} &= 101325\:\text{Pa} &= 14.696\:\text{psi} \\ + h_\text{ref} &= 0\:\text{J}\,\text{kg}^{-1} & \\ + s_\text{ref} &= 0\:\text{J}\,\text{kg}^{-1}\,\text{K}^{-1} & \\ + +.. note:: + If you use a mixture, the reference state gets updated each time you change + the composition. Furthermore, not all temperatures can be used as reference + temperature since the fraction :math:`T_\text{in,1} / T_\text{in,0}` occurs in the integral used to + calculate entropy. The centered fits have a base temperature and setting + :math:`T_\text{ref}` equal to :math:`T_\text{base}` yields :math:`T_\text{in,0}=0\:\text{K}`, + which obviously is a problem. For non-centred fits, the base temperature is + equal to 0 K. Read on :ref:`below` for more details. + + +Pure Fluid Examples +------------------- Incompressible fluids only allow for a limited subset of input variables. The -following input pairs are supported: :math:`f(p,T)`, :math:`f(h,p)`, :math:`f(\rho,T)`, -:math:`f(p,u)` and :math:`f(p,s)`. All functions iterate on :math:`f(p,T)` calls +following input pairs are supported: :math:`f(p,T)`, :math:`f(p,h)`, :math:`f(p,\rho)`, +:math:`f(p,u)` and :math:`f(p,s)`. Some fluids also provide saturation state +information as :math:`f(Q,T)` with :math:`Q=0`. All functions iterate on :math:`f(p,T)` calls internally, which makes this combination by far the fastest. However, also the other inputs should be fast compared to the full Helmholtz-based EOS implemented for then compressible fluids. -A call to the top-level function ``PropsSI`` can provide : density, heat capacity, -internal energy, enthalpy, entropy, viscosity and thermal conductivity. Hence, -the available output keys are: ``D``, ``C``, ``U``, ``H``, ``S``, ``V``, ``L``, -``Tmin``, ``Tmax`` and ``Psat``. +A call to the top-level function ``PropsSI`` can provide: temperature, pressure, +density, heat capacity, internal energy, enthalpy, entropy, viscosity and +thermal conductivity. Hence, the available output keys are: ``T``, ``P``, ``D``, +``C``, ``U``, ``H``, ``S``, ``V``, ``L``, ``Tmin`` and ``Tmax``. .. ipython:: @@ -53,20 +81,10 @@ the available output keys are: ``D``, ``C``, ``U``, ``H``, ``S``, ``V``, ``L``, #Specific heat capacity of Downtherm Q at 500 K and 1 atm In [1]: PropsSI('C','T',500,'P',101325,'INCOMP::DowQ') - #Internal energy of Downtherm Q at 500 K and 1 atm - In [1]: PropsSI('U','T',500,'P',101325,'INCOMP::DowQ') + In [1]: PropsSI('C','D',809.0659,'P',101325,'INCOMP::DowQ') - #Enthalpy of Downtherm Q at 500 K and 1 atm - In [1]: PropsSI('H','T',500,'P',101325,'INCOMP::DowQ') - - #Entropy of Downtherm Q at 500 K and 1 atm - In [1]: PropsSI('S','T',500,'P',101325,'INCOMP::DowQ') - - #Viscosity of Downtherm Q at 500 K and 1 atm - In [1]: PropsSI('V','T',500,'P',101325,'INCOMP::DowQ') - - #Thermal conductivity of Downtherm Q at 500 K and 1 atm - In [1]: PropsSI('L','T',500,'P',101325,'INCOMP::DowQ') + #Saturation pressure of Downtherm Q at 500 K + In [1]: PropsSI('P','T',500,'Q',0,'INCOMP::DowQ') #Minimum temperature for Downtherm Q In [1]: PropsSI('Tmin','T',0,'P',0,'INCOMP::DowQ') @@ -75,65 +93,47 @@ the available output keys are: ``D``, ``C``, ``U``, ``H``, ``S``, ``V``, ``L``, In [1]: PropsSI('Tmax','T',0,'P',0,'INCOMP::DowQ') -.. #Vapour pressure of Downtherm Q at 500 K, note the dummy pressure to work around https://github.com/CoolProp/CoolProp/issues/145 - In [1]: PropsSI('Psat','T',500,'P',1e8,'INCOMP::DowQ') + +Mixture Examples +---------------- + +Almost the same syntax can be used for mixtures. Please note that the mixture +interface developed for CoolProp 5 has not been ported to the incompressible +fluids, yet. For now, you have to use the ``PropsSI`` function with a special +composition notation. Depending on your fluid, you have to supply either the +:ref:`mass fraction` or the :ref:`volume fraction` as additional +parameter. This is done via the fluid name by appending a dash and the +fraction of the substance other than water. The fraction notation can be in the +form of percent, ``LiBr-23%``, or as a fraction, ``LiBr[0.23]``, which +corresponds to the new mixture syntax in CoolProp5. + +.. In addition to the properties available for the pure fluids (``D``, ``C``, + ``U``, ``H``, ``S``, ``V``, ``L``,``Tmin`` and ``Tmax``, some mixtures also + provide the freezing temperature ``Tfreeze`` as a function of composition. +.. ipython:: -Pure Fluids ------------ + In [1]: from CoolProp.CoolProp import PropsSI -For refrigeration applications, 8 fluids were implemented from Aake Melinder's -book "Properties of Secondary Working Fluids for Indirect Systems" published in 2010 -by IIR :cite:`Melinder-BOOK-2010` with coefficients obtained from a fit between --80 |degC| and +100 |degC|: DEB, HCM, HFE, PMS1, PMS2, SAB, HCB and TCO. + #Density of a lithium bromide solution at 300 K and 1 atm. + In [1]: PropsSI('D','T',300,'P',101325,'INCOMP::LiBr[0.23]') -Some additional secondary cooling fluids are based on data compiled by Morten -Juel Skovrup in his `SecCool software `_ -provided by his employer `IPU `_. Fits have been made for the -manufacturer data stored in the software. The Aspen Temper fluids (AS10, AS20, -AS30, AS40, AS55) are a blend of potassium formate and sodiumpropionate and the -Zitrec S group (ZS10, ZS25, ZS40, ZS45 and ZS55) consists mainly of potassium -acetate and potassium formate. + #Specific heat capacity of a lithium bromide solution at 300 K and 1 atm + In [1]: PropsSI('C','T',300,'P',101325,'INCOMP::LiBr-0.23%') -There are also a few high temperature heat transfer fluids with individual -temperature ranges. Please refer to the table below for a complete overview. -For these fluids, information from commercial data sheets was used to obtain -coefficients. + #Specific enthalpy of a lithium bromide solution at 300 K and 1 atm + In [1]: PropsSI('H','T',300,'P',101325,'INCOMP::LiBr-0.23%') -.. _Pure: - -.. csv-table:: All incompressible pure fluids included in CoolProp - :widths: 10, 35, 25, 15, 15 - :header-rows: 1 - :file: ../_static/fluid_properties/incompressible/table/pure-fluids.csv + In [1]: PropsSI('T','H',28627,'P',101325,'INCOMP::LiBr-0.23%') +.. warning:: + Some mixture function have a non-monotonic behaviour, this can lead to misleading + results when using other inputs than :math:`f(p,T)`. Keep that in mind and + implement a way to validate the results you get from these functions. At the same + time, mixture solvers are likely to produce errors due to the same reason... -Aqueous Mixtures - Solutions and Brines ---------------------------------------- - - -.. _MassMix: - -.. csv-table:: All incompressible mass-based binary mixtures included in CoolProp - :widths: 10, 30, 20, 10, 10, 10, 10 - :header-rows: 1 - :file: ../_static/fluid_properties/incompressible/table/mass-based-fluids.csv - -.. .. _MoleMix: - -.. .. csv-table:: All incompressible mole-based binary mixtures included in CoolProp - :widths: 10, 30, 20, 10, 10, 10, 10 - :header-rows: 1 - :file: ../_static/fluid_properties/incompressible/table/mole-based-fluids.csv - -.. _VoluMix: - -.. csv-table:: All incompressible volume-based binary mixtures included in CoolProp - :widths: 10, 30, 20, 10, 10, 10, 10 - :header-rows: 1 - :file: ../_static/fluid_properties/incompressible/table/volume-based-fluids.csv @@ -143,14 +143,14 @@ Fitting Reports --------------------------------------- A file with all fitting reports for the incompressible fluids can be obtained -from :download:`here `. These reports help you to +from :download:`here`. These reports help you to get an overview over the different incompressible fluids included in CoolProp. The reports start with some basic information about -the fluid. There is the name by which it can be accessed through the -interface in the title "Fitting Report for *FluidName*" as well as a description -of what the fluid actually is, this could also be a trade name or a commonly -used non-scientific name. The next item tells you where we got the data from. This -would typically be a data sheet from a manufacturers homepage, some other software +the fluid. The fluid name used in CoolProp is in the title "Fitting Report for *FluidName*" +and there is also a description of what the fluid actually consists of. The latter +could also be a trade name or a commonly used non-scientific name. The next item +tells you where we got the data from. This +would typically be a data sheet from a manufacturer's homepage, some other software database, a scientific publication or experimental data. .. figure:: /_static/fluid_properties/incompressible/report/report2up.jpg @@ -161,10 +161,10 @@ database, a scientific publication or experimental data. fluid and a binary mixture. You can also have a look at the :download:`PDF version` of the reports side by side. -If all data is available, there is a graphs for each of the basic quantities +If all data are available, there is a graph for each of the basic quantities: density :math:`\rho`, specific heat capacity :math:`c`, thermal conductivity :math:`\lambda`, dynamic viscosity :math:`\mu`, saturation pressure -:math:`p_{sat}`, and freezing temperature :math:`T_{freeze}`. These graphs show +:math:`p_\text{sat}`, and freezing temperature :math:`T_\text{freeze}`. These graphs show data points in dark blue, the fitted function from CoolProp as a red line and the relative error in light blue dots. Note that the relative error uses the ordinate on the right hand side while the other two data series refer to the axis on the @@ -173,221 +173,165 @@ that typically lies in the middle of the allowed range. Dashed red lines indicat the limits in terms of concentration as well as the freezing temperature. +.. _Equations: Equations ----------------------- +--------- -Exp or log for visc, other poly or log poly - - - -Incompressible Liquids ----------------------- -There is also a selection of incompressible liquids implemented. These only allow for calls with -temperature and pressure as input and provide only a subset of thermophysical properties, namely: -density, heat capacity, internal energy, enthalpy, entropy, viscosity and thermal conductivity. -Hence, the available output keys for the ``Props`` function are: "D", "C", "U", "H", "S", "V", "L", -"Tmin", "Tmax" and "Psat". An internal iteration allows us to use enthalpy and pressure as inputs, -but be aware of the reduced computational efficiency. - -.. ipython:: - - In [1]: from CoolProp.CoolProp import PropsSI - - #Density of HFE-7100 at 300 K and 1 atm. - In [1]: PropsSI('D','T',300,'P',101325,'INCOMP::HFE') - - -For refrigeration applications, 8 fluids were implemented from Aake Melinder "Properties of -Secondary Working Fluids for Indirect Systems" published in 2010 by IIR and coefficients are -obtained from a fit between -80 and +100 degrees Celsius. - -========================== =================================================== -Fluid Name Description -========================== =================================================== -``DEB`` Diethyl Benzene -``HCM`` Hydrocarbon Mixture (Therminol D12 Solutia) -``HFE`` Hydrofluoroether HFE-7100 -``PMS1`` Polydimethylsiloxan 1. -``PMS2`` Polydimethylsiloxan 2. -``SAB`` Synthetic alkyl benzene -``HCB`` Hydrocarbon blend (Dynalene MV) -``TCO`` Terpene from citrus oils -========================== =================================================== - -Some additional secondary cooling fluids are based on data compiled by Morten Juel Skovrup in -his `SecCool software `_ -provided by his employer `IPU `_. Fits have been made according to the manufacturer -data stored in the sodtware. The Aspen Temper fluids are a blend of potassium formate and sodiumpropionate -and the Zitrec S group consists mainly of potassium acetate and potassium formate. - -========================== =================================================== -Fluid Name Description -========================== =================================================== -``AS10`` Aspen Temper -10 (-10 to +27.5 C) -``AS20`` Aspen Temper -20 (-20 to +27.5 C) -``AS30`` Aspen Temper -30 (-30 to +27.5 C) -``AS40`` Aspen Temper -40 (-40 to +27.5 C) -``AS55`` Aspen Temper -55 (-55 to +27.5 C) -``ZS10`` Zitrec S -10 (-10 to +85 C) -``ZS25`` Zitrec S -25 (-25 to +85 C) -``ZS40`` Zitrec S -40 (-40 to +85 C) -``ZS45`` Zitrec S -45 (-45 to +85 C) -``ZS55`` Zitrec S -55 (-55 to +85 C) -========================== =================================================== - -There are also a few high temperature heat transfer fluids with individual temperature ranges. Please -refer to the file IncompLiquid.h for a complete overview. For these fluids, information from commercial -data sheets was used to obtain coefficients. - -========================== =================================================== -Fluid Name Description -========================== =================================================== -``TD12`` Therminol D12 (-85 to +230 C) -``TVP1`` Therminol VP-1 (+12 to +397 C) -``T72`` Therminol 72 (-10 to +380 C) -``T66`` Therminol 66 (0 to +345 C) -``DowJ`` Dowtherm J (-80 to +345 C) -``DowQ`` Dowtherm Q (-35 to +360 C) -``TX22`` Texatherm 22 (0 to +350 C) -``NaK`` Nitrate Salt Blend (+300 to +600 C) -``XLT`` Syltherm XLT (-100 to +260 C) -``HC10`` Dynalene HC-10 (-10 to +218 C) -``HC20`` Dynalene HC-20 (-20 to +210 C) -``HC30`` Dynalene HC-30 (-30 to +210 C) -``HC40`` Dynalene HC-40 (-40 to +200 C) -``HC50`` Dynalene HC-50 (-50 to +210 C) -========================== =================================================== - -All fluids are implemented with polynomials for density and heat capacity with typically 4 coefficients -and hence a third order polynomial. Thermal conductivity is a second order polynomial and viscosity and -vapour pressure are exponential functions. +There are only four different equations used to calculate the thermophysical +properties of incompressible fluids in CoolProp: .. math:: - \rho &= \sum_{i=0}^n C_{\rho}[i] \cdot T^i \\ - c &= \sum_{i=0}^n C_{c}[i] \cdot T^i \\ - u &= \int_{0}^{1} c\left( T \right) dT - = \sum_{i=0}^n \frac{1}{i+1} \cdot C_{c}[i] - \cdot \left( T_1^{i+1} - T_0^{i+1} \right) \\ - s &= \int_{0}^{1} \frac{c\left( T \right)}{T} dT - = C_{c}[0] \cdot \ln\left(\frac{T_1}{T_0}\right) - + \sum_{i=0}^{n-1} \frac{1}{i+1} \cdot C_{c}[i+1] - \cdot \left( T_1^{i+1} - T_0^{i+1} \right) \\ - \lambda &= \sum_{i=0}^n C_{\lambda}[i] \cdot T^i \\ - \mu &= \exp\left( \frac{C_{\mu}[0]}{T+C_{\mu}[1]} - C_{\mu}[2] \right) \\ - p_{sat} &= \exp\left( \frac{C_{sat}[0]}{T+C_{sat}[1]} - C_{sat}[2] \right) \\ + f(T) &= \exp \left( \frac{C[0]}{T+C[1]} - C[2] \right) \text{, } \\ + f(T) &= \exp \left( \log \left( \sum_{i=0}^l \left( T+C[0] \right)^{-i-1} \right) \cdot C[1] + C[2] \right) \text{, } \\ + f(T,x)&= \sum_{i=0}^n x^i \cdot \sum_{j=0}^m C[i,j] \cdot T^j \text{ and } \\ + f(T,x)&= \exp \left( \sum_{i=0}^n x^i \cdot \sum_{j=0}^m C[i,j] \cdot T^j \right) \text{. } \\ +Only the last two are suitable for mixtures with the input parameter :math:`x` +denoting the fraction of component other than water. Following the works of +Melinder :cite:`Melinder2010` and Skovrup :cite:`Skovrup2013`, the exponents +for the polynomials are arranged in a triangular matrix to avoid overfitting. +These conditions satisfy :math:`0 \leq i \leq n`, :math:`0 \leq j \leq m` +and :math:`i + j \leq \max(n,m)`. It is only for the freezing temperature calculation +that the implemented procedures differ from what is presented in Melinder's +book :cite:`Melinder2010`. Freezing temperature is only a function of concentration +and the dependency on the fluid temperature has been removed. For mixtures, +:math:`m=5` and :math:`n=3` are assigned as default values. +Omitting the composition term with :math:`n=0` yields the pure fluid formulations +for which we selected :math:`l=1` and :math:`m=4`. -Brines and Solutions --------------------- -All the brines and solutions can be accessed through the Props function. To use them, the fluid name -is something like ``"MEG-20%"`` which is a 20% by mass ethylene glycol solution. Note that these fluids -have an arbitrary reference state: Be careful with enthalpy and entropy calculations. Again, only -temperature and pressure inputs are supported directly to calculate the same subset of thermophysical -properties as above , namely: density, heat capacity, internal energy, enthalpy, entropy, viscosity -and thermal conductivity. Hence, the available output keys for the ``Props`` function are: "D", "C", -"U", "H", "S", "V", "L", "Tmin", Tmax" and "Tfreeze". An internal iteration allows us to use enthalpy -and pressure as inputs, but be aware of the reduced computational efficiency. +The standard polynomials are used for the density, heat capacity and thermal +conductivity functions, while viscosity, vapour pressure and freezing temperature +are exponential functions. For exponential functions of only one variable +(:math:`\mu(T)`, :math:`p_\text{sat}(T)`, :math:`T_\text{freeze}(x)`), we start by fitting the +first equation. If the fit quality is poor, we try the second exponential function. +The exponential polynomial is used as a fall-back function for single variable +fits and it is the only function used for multivariate fits, e.g. :math:`\mu(T,x)`. -.. ipython:: +If you would like to know more about the fitting procedures, you can have a look +at this `Python notebook `_, +which describes the basics of the multivariate polynomial fits employed in this +software. Non-polynomial functions are fitted using the minimisation routines +accessible through SciPy :cite:`Jones2001`. For the extremely curious, the +Python module `CPIncomp `_ +contains the source code for the fits used in CoolProp as well as the code to +generate the fitting reports. Feel free to browse the code. - In [1]: from CoolProp.CoolProp import PropsSI +Using only polynomials for the heat capacity functions, we can derive internal +energy and entropy by integrating the specific heat capacity - #Specific heat 20% mass ethylene glycol solution at 300 K and 1 atm. - In [1]: PropsSI('C','T',300,'P',101.325,'INCOMP::MEG-20%') - -For Lithium-Bromide, the publication by Patek and Klomfar from 2005 was implemented based on the -source code provided by the authors. The `paper `_ -covering the equations can be found in the -`International Journal of Refrigeration `_. Data is -available for temperatures from 0 C to 225 C and for the full composition range. Use ``LiBr`` to acccess -the functions. - -A number of aqueous solutions are implemented using the coefficients from Aake Melinder "Properties of -Secondary Working Fluids for Indirect Systems" published in 2010 by IIR. According to the book, 2D -polynomials are given in a form that satisfies :math:`0 \leq i \leq 5`, :math:`0 \leq j \leq 3` -and :math:`i + j \leq 5` yielding a triangular matrix of coefficients. It is only for the freezing -temperature calculation that the implemented procedures differ from what is presented in Melinder's -book the dependency on the current temperature is removed. In CoolProp, :math:`T_{freeze}` only depends -on concentration. - -========================== =================================================== ================= ================= -Melinder Fluids Description max. T max. x -========================== =================================================== ================= ================= -``MEG`` Ethylene Glycol (C2H6O2) +100 C 60 % -``MPG`` Propylene Glycol (C3H8O2) +100 C 60 % -``MEA`` Ethyl Alcohol, Ethanol (C2H6O) +40 C 60 % -``MMA`` Methyl Alcohol, Methanol (CH4O) +40 C 60 % -``MGL`` Glycerol (C3H8O3) +40 C 60 % -``MAM`` Ammonia (NH3) +30 C 30 % -``MKC`` Potassium Carbonate (K2CO3) +40 C 40 % -``MCA`` Calcium Chloride (CaCl2) +40 C 30 % -``MMG`` Magnesium Chloride (MgCl2) +40 C 30 % -``MNA`` Sodium Chloride (NaCl) +40 C 23 % -``MKA`` Potassium Acetate (CH3CO2K) +40 C 45 % -``MKF`` Potassium Formate (CHKO2) +40 C 48 % -``MLI`` Lithium Chloride (LiCl) +40 C 24 % -========================== =================================================== ================= ================= - -Furthermore, there is a number of other secondary fluids that can be accessed in the same way. Most -information is based on the data compiled by Morten Juel Skovrup in his `SecCool software `_ -provided by his employer `IPU `_. The coefficient matrix of the SecCool-based fluids -has the same structure as mentioned above. - -For slurry ice, the concentration :math:`x` refers to the solid content and the heat capacity includes the heat of fusion. -It might be necessary to adjust the solid content during heat transfer. The implementation is based on the data available -in SecCool, which was originally recorded at the `Danish Technological Institute (DTI) `_. - -========================== =================================================== ================= ================= -SecCool Fluids Description max. T max. x -========================== =================================================== ================= ================= -``ZiAC`` ZitrecAC (corrosion inhibitor) +100 C 50 % -``IceEA`` Ethanol-water mixture with slurry ice -10 C 35 % -``IcePG`` Propylene glycol-water mixture with slurry ice -10 C 35 % -``IceNA`` Sodium chloride-water mixture with slurry ice -5 C 35 % -``PK2000`` Pekasol 2000 (Potassium acetate and formate) +100 C 100 % -========================== =================================================== ================= ================= - - - -In both of the above cases, :math:`i` is the exponent for the concentration :math:`x` and :math:`j` -is used with the temperature :math:`T`. Properties are modelled with the following polynomials: +.. _BaseValue: .. math:: - \rho &= \sum_{i=0}^n x^i \cdot \sum_{j=0}^m C_{\rho}[i,j] \cdot T^j \\ - c &= \sum_{i=0}^n x^i \cdot \sum_{j=0}^m C_{c}[i,j] \cdot T^j \\ + c &= \sum_{i=0}^n x^i \cdot \sum_{j=0}^m C_{c}[i,j] \cdot T^j \text{ yielding } \\ u &= \int_{0}^{1} c\left( x,T \right) dT = \sum_{i=0}^n x^i \cdot \sum_{j=0}^m \frac{1}{j+1} \cdot C_{c}[i,j] - \cdot \left( T_1^{j+1} - T_0^{j+1} \right) \\ + \cdot \left( T_{1}^{j+1} - T_{0}^{j+1} \right) \text{ and } \\ s &= \int_{0}^{1} \frac{c\left( x,T \right)}{T} dT = \sum_{i=0}^n x^i \cdot \left( - C_{c}[i,0] \cdot \ln\left(\frac{T_1}{T_0}\right) - + \sum_{j=0}^{m-1} \frac{1}{j+1} \cdot C_{c}[i,j+1] \cdot \left( T_1^{j+1} - T_0^{j+1} \right) + C_{c}[i,0] \cdot \ln\left(\frac{T_{1}}{T_{0}}\right) + + \sum_{j=0}^{m-1} \frac{1}{j+1} \cdot C_{c}[i,j+1] \cdot \left( T_{1}^{j+1} - T_{0}^{j+1} \right) \right) \\ - \lambda &= \sum_{i=0}^n x^i \cdot \sum_{j=0}^m C_{\lambda}[i,j] \cdot T^j \\ - \mu &= \exp \left( \sum_{i=0}^n x^i \cdot \sum_{j=0}^m C_{\mu}[i,j] \cdot T^j \right) \\ - T_{freeze} &= \sum_{i=0}^n C_{freeze}[i] \cdot x^i \\ -Using a centered approach for the independent variables, -the fit quality can be enhanced. Therefore, all solutions have a reference temperature and concentration -in the original work by Melinder and Skovrup as well as in CoolProp: :math:`x = x_{real} - x_{ref}` -and :math:`T = T_{real} - T_{ref}`, this technique does not affect the calculation +According to Melinder :cite:`Melinder2010` and Skovrup :cite:`Skovrup2013`, +using a centred approach for the independent variables enhances the fit quality. +Therefore, all solutions have a base temperature and concentration in the original +works as well as in CoolProp: :math:`x_\text{in} = x - x_\text{base}` +and :math:`T_\text{in} = T - T_\text{base}`, this technique does not affect the calculation of the derived quantity internal energy since the formula contains temperature differences. -However, integrating :math:`c(x,T)T^{-1}dT` for the entropy requires some changes due to -the logarithm. To structure the problem, we introduce a variable :math:`d(j,T_{real})`, which will be expressed by a third sum. -As a first step for simplification, one has to expand the the binomial :math:`(T_{real}-T_{ref})^n` to a series. -Only containing :math:`j` and :math:`T_{real}`, :math:`d` is independent from :math:`x` and can be -computed outside the loop for enhanced computational efficiency. An integration of the expanded binomial -then yields the final factor :math:`D` to be multiplied with the other coefficients and the concentration. +However, integrating :math:`c(x_\text{in},T_\text{in})T_\text{in}^{-1}dT_\text{in}` for the entropy requires some changes due to +the logarithm. + +.. warning:: + You must **not** use the base temperature :math:`T_\text{base}` + as reference temperature for your thermodynamic states. This will lead to an + error caused by a division by zero during the integration carried out to + obtain the entropy. + +To structure the problem, we introduce a variable :math:`f(j,T)`, +which will be expressed by a third sum. As a first step for simplification, one +has to expand the the binomial :math:`(T-T_{base})^n` to a series. Only +containing :math:`j` and :math:`T`, :math:`f` is independent from :math:`x_\text{in}` and +can be computed outside the loop for enhanced computational efficiency. An +integration of the expanded binomial then yields the final factor :math:`F` to +be multiplied with the other coefficients and the concentration. .. math:: - s &= \int_{0}^{1} \frac{c\left( x,T \right)}{T} dT = \sum_{i=0}^n x^i \cdot \sum_{j=0}^m C_{c}[i,j] \cdot D(j,T_0,T_1) \\ - D &= (-1)^j \cdot \ln \left( \frac{T_1}{T_0} \right) \cdot T_{ref}^j + \sum_{k=0}^{j-1} \binom{j}{k} \cdot \frac{(-1)^k}{j-k} \cdot \left( T_1^{j-k} - T_0^{j-k} \right) \cdot T_{ref}^k + s &= \int_{0}^{1} \frac{c\left( x_\text{in},T_\text{in} \right)}{T_\text{in}} dT_\text{in} = \sum_{i=0}^n x_\text{in}^i \cdot \sum_{j=0}^m C_{c}[i,j] \cdot F(j,T_\text{in,0},T_\text{in,1}) \\ + F &= (-1)^j \cdot \ln \left( \frac{T_\text{in,1}}{T_\text{in,0}} \right) \cdot T_{base}^j + \sum_{k=0}^{j-1} \binom{j}{k} \cdot \frac{(-1)^k}{j-k} \cdot \left( T_\text{in,1}^{j-k} - T_\text{in,0}^{j-k} \right) \cdot T_{base}^k -.. bibliography:: ../../CoolPropBibTeXLibrary.bib - :style: unsrt +The Different Fluids +-------------------- + +The fluids implemented in CoolProp cover a wide range of industrial heat +transfer media. This database has initially been developed with refrigeration +systems in mind. That is why the majority of fluids are secondary refrigerants +with application temperatures close to the freezing point of water. Besides those, +there is also incompressible water, high temperature heat transfer oils and a +molten salt mixture for extreme temperatures. + +Besides the different technical data sheets and calculation tools provided by +manufactures, two specific publications provided a lot of data used for the +incompressible fluids: Åke Melinder's book *Properties of Secondary Working +Fluids for Indirect Systems* :cite:`Melinder2010` has inspired both, the work on +pure fluids and aqueous solutions. The second major source of inspiration is the +`SecCool `_ +:cite:`Skovrup2013` software, which contains data compiled by Morten Juel +Skovrup. It is provided free of charge by his employer `IPU `_. + + +.. _Pure: + +.. csv-table:: All incompressible pure fluids included in CoolProp + :widths: 10, 35, 13, 14, 14, 14 + :header-rows: 1 + :file: ../_static/fluid_properties/incompressible/table/pure-fluids.csv + + +There are also a number of water-based mixtures implemented in CoolProp. Most of them +are secondary heat transfer fluids, but there are also aqueous solutions of +ammonia :cite:`Melinder2010`, :download:`MAM<../_static/fluid_properties/incompressible/report/MAM_fitreport.pdf>`, +and lithium bromide :cite:`Patek2006`, :download:`LiBr<../_static/fluid_properties/incompressible/report/LiBr_fitreport.pdf>`, +which can be used to model absorption chillers. + + +.. _MassMix: + +.. csv-table:: All incompressible mass-based binary mixtures included in CoolProp + :widths: 10, 30, 11, 11, 11, 11, 8, 8 + :header-rows: 1 + :file: ../_static/fluid_properties/incompressible/table/mass-based-fluids.csv + +.. .. _MoleMix: + +.. .. csv-table:: All incompressible mole-based binary mixtures included in CoolProp + :widths: 10, 30, 11, 11, 11, 11, 8, 8 + :header-rows: 1 + :file: ../_static/fluid_properties/incompressible/table/mole-based-fluids.csv + +.. _VoluMix: + +.. csv-table:: All incompressible volume-based binary mixtures included in CoolProp + :widths: 10, 30, 11, 11, 11, 11, 8, 8 + :header-rows: 1 + :file: ../_static/fluid_properties/incompressible/table/volume-based-fluids.csv + + +For slurry ice, the concentration :math:`x` refers to the solid content and the +heat capacity includes the heat of fusion. It might be necessary to adjust the +solid content during heat transfer. The implementation is based on the data +available in `SecCool `_, +which was originally recorded at the Danish Technological Institute `(DTI) `_. + + +References +---------- + +.. bibliography:: Incompressibles.bib + :filter: docname in docnames + :style: unsrt diff --git a/Web/fluid_properties/Mixtures.rst b/Web/fluid_properties/Mixtures.rst index 776fbd4c..6b3b352c 100644 --- a/Web/fluid_properties/Mixtures.rst +++ b/Web/fluid_properties/Mixtures.rst @@ -1,12 +1,18 @@ .. _mixtures: +.. contents:: :depth: 2 + ******** Mixtures ******** -Mixtures docs will go here when they are written. +Theoretical description +----------------------- +The mixture modeling used in CoolProp is based on the work of Kunz et al. :cite:`Kunz-BOOK-2007,Kunz-JCED-2012` and Lemmon :cite:`Lemmon-JPCRD-2000,Lemmon-JPCRD-2004,Lemmon-IJT-1999` -The treatment of mixtures in CoolProp as of v5 is quite rudimentary, though it will be improved in the very near future. +A mixture is composed of a number of components, and for each pair of components, it is necessary to have information for the excess Helmholtz energy term as well as the reducing function. See below for what binary pairs are included in CoolProp. + +The numerical methods required for mixtures are far more complicated than those for pure fluids, so the number of flash routines that are currently available are relatively small compared to pure fluids. The only types of inputs that are allowed for mixtures right now are @@ -14,21 +20,46 @@ The only types of inputs that are allowed for mixtures right now are - Temperature/quality - Temperature/pressure +.. Used in Python script later on +.. role:: raw-html(raw) + :format: html + +Binary pairs +------------ + +.. note:: + Please hover the mouse pointer over the coefficients to get the full accuracy + for the listed coefficients. You can also get more information on references + that are not in bibliography. + +.. csv-table:: All binary pairs included in CoolProp + :header-rows: 1 + :file: mixture_binary_pairs.csv + +Phase Envelope +-------------- .. plot:: import CoolProp import matplotlib.pyplot as plt - HEOS = CoolProp.AbstractState('HEOS','R32&R134a') + HEOS = CoolProp.AbstractState('HEOS','Methane&Ethane') for x0 in [0.02, 0.2, 0.4, 0.6, 0.8, 0.98]: HEOS.set_mole_fractions([x0, 1 - x0]) try: HEOS.build_phase_envelope("dummy") except ValueError as VE: - print VE + print(VE) PE = HEOS.get_phase_envelope_data() - plt.plot(PE.rhomolar_vap, PE.rhomolar_liq, 'o-') + plt.plot(PE.T, PE.p, 'o-') plt.xlabel('Temperature [K]') plt.ylabel('Pressure [Pa]') - plt.tight_layout() \ No newline at end of file + plt.tight_layout() + +References +---------- + +.. bibliography:: ../../CoolPropBibTeXLibrary.bib + :filter: docname in docnames + :style: unsrt \ No newline at end of file diff --git a/Web/scripts/CPWeb/BibtexTools.py b/Web/scripts/CPWeb/BibtexTools.py new file mode 100644 index 00000000..0e09bb17 --- /dev/null +++ b/Web/scripts/CPWeb/BibtexTools.py @@ -0,0 +1,54 @@ +''' +Created on 26 Sep 2014 + +@author: jowr +''' +import os +from CoolProp.BibtexParser import BibTeXerClass + +def getPath(filename, search=True): + # Path to root + coolprop_dir = os.path.abspath(os.path.join(os.path.dirname(__file__),'..','..')) + # Test for file + fname = filename + if os.path.exists(fname): return os.path.abspath(fname) + # Test relative to this file + fname = os.path.join(os.path.dirname(__file__),filename) + if os.path.exists(fname): return os.path.abspath(fname) + # Test relative to root notation + fname = os.path.join(coolprop_dir,filename) + if os.path.exists(fname): return os.path.abspath(fname) + # Search in root tree + fname = os.path.basename(filename) + if search: + result = [] + for root, dirs, files in os.walk(coolprop_dir): + if fname in files: + result.append(os.path.join(root, fname)) + if len(result)==1: + return os.path.abspath(result[0]) + elif len(result)>1: + print "Found multiple files with the name {0}. Try to specify the path as well.".format(fname) + print result + return os.path.abspath(result[0]) + + raise ValueError("Found no file with the name {0}. Try to specify the path as well.".format(fname)) + + +def getBibtexParser(filename = '../../../CoolPropBibTeXLibrary.bib'): + """Create a parser object that can be used to extract entries from a + library in Bibtex format.""" + fpath = getPath(filename) + bibtexer = BibTeXerClass(fpath) + return bibtexer + + +def getCitationOrAlternative(bibtexer, bibtex_key): + """Find the key in the library and convert to a citation, if it is not found, + we return a footnote string for sphinx.""" + bibtex_key = bibtex_key.strip() + + if bibtex_key in bibtexer.library.entries: + return u':cite:`{0}`'.format(bibtex_key) + else: + return u':raw-html:`Source`'.format(bibtex_key) diff --git a/Web/scripts/CPWeb/UnicodeTools.py b/Web/scripts/CPWeb/UnicodeTools.py new file mode 100644 index 00000000..7be24171 --- /dev/null +++ b/Web/scripts/CPWeb/UnicodeTools.py @@ -0,0 +1,69 @@ +''' +Created on 26 Sep 2014 + +@author: jowr +''' +import codecs +import csv +import cStringIO + +class UTF8Recoder: + """ + Iterator that reads an encoded stream and reencodes the input to UTF-8 + """ + def __init__(self, f, encoding): + self.reader = codecs.getreader(encoding)(f) + + def __iter__(self): + return self + + def next(self): + return self.reader.next().encode("utf-8") + +class UnicodeReader: + """ + A CSV reader which will iterate over lines in the CSV file "f", + which is encoded in the given encoding. + """ + + def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): + f = UTF8Recoder(f, encoding) + self.reader = csv.reader(f, dialect=dialect, **kwds) + + def next(self): + row = self.reader.next() + return [unicode(s, "utf-8") for s in row] + + def __iter__(self): + return self + +class UnicodeWriter: + """ + A CSV writer which will write rows to CSV file "f", + which is encoded in the given encoding. + """ + + def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): + # Redirect output to a queue + self.queue = cStringIO.StringIO() + self.writer = csv.writer(self.queue, dialect=dialect, **kwds) + self.stream = f + self.encoder = codecs.getincrementalencoder(encoding)() + + def writerow(self, row): + self.writer.writerow([s.encode("utf-8") for s in row]) + # Fetch UTF-8 output from the queue ... + data = self.queue.getvalue() + data = data.decode("utf-8") + # ... and reencode it into the target encoding + data = self.encoder.encode(data) + # write to the target stream + self.stream.write(data) + # empty queue + self.queue.truncate(0) + + def writerows(self, rows): + for row in rows: + self.writerow(row) + + diff --git a/Web/scripts/CPWeb/__init__.py b/Web/scripts/CPWeb/__init__.py new file mode 100644 index 00000000..a67290f7 --- /dev/null +++ b/Web/scripts/CPWeb/__init__.py @@ -0,0 +1,21 @@ +""" +CPWeb - A collection of commonly used routines to produce CoolProp's online documentation +===== + +""" +from __future__ import division, absolute_import, print_function + +import codecs +import csv +import cStringIO + + + + + +def get_version(): + return 5.0 + +if __name__ == "__main__": + print('You are using version %s of the Python package for creating CoolProp\' online documentation.'%(get_version())) + print() diff --git a/Web/scripts/fluid_properties.Mixtures.py b/Web/scripts/fluid_properties.Mixtures.py new file mode 100644 index 00000000..024aaab9 --- /dev/null +++ b/Web/scripts/fluid_properties.Mixtures.py @@ -0,0 +1,68 @@ + + +from CPWeb.BibtexTools import getCitationOrAlternative, getBibtexParser +import CoolProp +import os.path + +web_dir = os.path.abspath(os.path.join(os.path.dirname(__file__),'..')) +csvfile = os.path.join(web_dir,'fluid_properties','mixture_binary_pairs.csv') + +def merge_args(*args): + return " :raw-html:`
` ".join(list(args)) + +def printCoeff(number): + if number is None or \ + len(str(number).strip())<1: + return " " + number = float(number) + short = "{0:.4e}".format(number) + long = "{0:.14e}".format(number) + return u':raw-html:`{0}`'.format(short,long) + +class Dossier: + def __init__(self): + self.data = {} + def add(self, key, value): + if key not in self.data: + self.data[key] = [] + self.data[key].append(value) + +d = Dossier() + +pairs = CoolProp.get('mixture_binary_pairs_list') +for pair in pairs.split(','): + CAS1, CAS2 = pair.split('&') + d.add('CAS1', CAS1) + d.add('CAS2', CAS2) + for key in ['name1','name2','F','function','BibTeX','xi','zeta','betaT','betaV','gammaT','gammaV']: + try: + d.add(key, CoolProp.CoolProp.get_mixture_binary_pair_data(CAS1, CAS2, key)) + except BaseException as BE: + d.add(key, '') + +import pandas +df = pandas.DataFrame(d.data) +df = df.sort(['BibTeX','name1'], ascending = [0, 1]) + +bibtexer = getBibtexParser()#filename = '../../../CoolPropBibTeXLibrary.bib') + +with open(csvfile,'w') as fp: + header = 'Ref.,Name1,Name2,function,F,' + header += merge_args("xi","zeta,") + header += merge_args("betaT","betaV,") + header += merge_args("gammaT","gammaV") + header += '\n' + fp.write(header) + + for index, row in df.iterrows(): + text = ','.join([ \ + getCitationOrAlternative(bibtexer,row['BibTeX']), + row['name1'], + row['name2'], + row['function'], + row['F'], + merge_args(printCoeff(row['xi']),printCoeff(row['zeta'])), + merge_args(printCoeff(row['betaT']),printCoeff(row['betaV'])), + merge_args(printCoeff(row['gammaT']),printCoeff(row['gammaV'])) + ])+'\n' + fp.write(text) \ No newline at end of file diff --git a/dev/JSON_to_CPP.py b/dev/JSON_to_CPP.py deleted file mode 100644 index 93733fe9..00000000 --- a/dev/JSON_to_CPP.py +++ /dev/null @@ -1,90 +0,0 @@ -from __future__ import print_function - -import json as pyjson -from datetime import datetime -import struct -import os -import argparse, textwrap -import sys -import generate_headers - -# 0: Input file path relative to dev folder -# 1: Output file path relative to include folder -# 2: Name of variable -values = [ - ('all_fluids.json','all_fluids_JSON.h','all_fluids_JSON'), - ('all_incompressibles.json','all_incompressibles_JSON.h','all_incompressibles_JSON'), - ('mixtures/mixture_excess_term.json', 'mixture_excess_term_JSON.h', 'mixture_excess_term_JSON'), - ('mixtures/mixture_reducing_parameters.json', 'mixture_reducing_parameters_JSON.h', 'mixture_reducing_parameters_JSON') -] - -def TO_CPP(root_dir, hashes): - def to_chunks(l, n): - if n<1: - n=1 - return [l[i:i+n] for i in range(0, len(l), n)] - - # Normalise path name - root_dir = os.path.normpath(root_dir) - - # First we package up the JSON files - import package_json - package_json.combine_json(root_dir) - - for infile,outfile,variable in values: - - json = open(os.path.join(root_dir,'dev',infile),'r').read() - - # convert each character to hex and add a terminating NULL character to end the - # string, join into a comma separated string - if sys.version_info[0] == 2: - h = [hex(struct.unpack("b",b)[0]) for b in json] + ['0x00'] - else: - # Encode as ASCII characters - json = json.encode('ascii') - h = [str(hex(b)) for b in json] + [str('0x00')] - - # Break up the file into lines of 16 hex characters - chunks = to_chunks(h, 16) - - # Put the lines back together again - # The chunks are joined together with commas, and then EOL are used to join the rest - hex_string = ',\n'.join([', '.join(chunk) for chunk in chunks]) - - # Check if hash is up to date based on using variable as key - if variable not in hashes or (variable in hashes and hashes[variable] != generate_headers.get_hash(hex_string)): - - # Generate the output string - output = '// File generated by the script dev/JSON_to_CPP.py on '+ str(datetime.now()) + '\n\n' - output += '// JSON file encoded in binary form\n' - output += 'const unsigned char '+variable+'_binary[] = {\n' + hex_string + '\n};'+'\n\n' - output += '// Combined into a single std::string \n' - output += 'std::string {v:s}({v:s}_binary, {v:s}_binary + sizeof({v:s}_binary)/sizeof({v:s}_binary[0]));'.format(v = variable) - - # Write it to file - f = open(os.path.join(root_dir,'include',outfile), 'w') - f.write(output) - f.close() - - # Store the hash of the data that was written to file (not including the header) - hashes[variable] = generate_headers.get_hash(hex_string) - else: - print(outfile + ' is up to date') - -if __name__=='__main__': - parser = argparse.ArgumentParser( - formatter_class=argparse.RawDescriptionHelpFormatter, - description=textwrap.dedent("""CoolProp - This program converts the JSON files from dev/fluid etc - to header files. It is necessary to give this program the - value for --path, this is the root directory where - dev/ can be found.""") - ) - - parser.add_argument('--path', required=False, - help='Location of the root folder', - default=None) - - args = parser.parse_args() - - TO_CPP(args.path) \ No newline at end of file diff --git a/dev/buildbot/docs.md b/dev/buildbot/docs.md deleted file mode 100644 index f2ff45f9..00000000 --- a/dev/buildbot/docs.md +++ /dev/null @@ -1,50 +0,0 @@ -Buildbot masters and slaves -=========================== - -Master ------- - -From the root of the git checkout (this will use the master.cfg from CoolProp) -``` -pip install buildbot -cd dev/buildbot -buildbot create-master master -buildbot start master -``` - -The file ``buildbot-private.py`` (which is a python module with the passwords for the slaves as well as the buildbot website), should also be placed in the master folder next to master.cfg. Alternatively, you can put the ``buildbot_private.py`` in another folder on the master's computer and make a soft-link in the master folder to point to the buildbot_private.py file. - -If you want to completely restart the master, you can do -``` -buildbot restart master -``` -but usually a -``` -buildbot reconfig master -``` -will do the job since it will just reparse the configuration file without signing you out of the server - -To ensure that the buildbot server stays online, you can make a script with the contents -``` -buildbot start /path/to/master_folder -``` -and add it to a cron job - -Slaves ------- - -To start a slave connected to a buildbot master at IP address 10.0.0.2 (default for host for VirtualBox), with a slave named ``example-slave`` and passsword ``pass``, run the command - -``` -buildslave create-slave slave 10.0.0.2:9989 example-slave pass -buildslave start slave -``` - -If the master is somewhere else, just change the IP address. - -On linux, you can add the following lines to the end of your ``~/.profile`` file (similar ideas apply on other platforms) to autostart the slave when the user logs in: - -``` -# Connect to the buildbot master -buildslave start ~/slave -``` diff --git a/dev/buildbot/master/master.cfg b/dev/buildbot/master/master.cfg index 224913d5..d4cc6e30 100644 --- a/dev/buildbot/master/master.cfg +++ b/dev/buildbot/master/master.cfg @@ -97,7 +97,7 @@ def sphinx_slave(platform, git_mode = 'incremental'): # Run sphinx build factory.addStep(ShellCommand(command=["python", "-c", "\"import CoolProp; print(CoolProp.__file___)\""], workdir= 'build/wrappers/Python', haltOnFailure = True)) # Run doxygen build - factory.addStep(ShellCommand(command=' '.join(["doxygen","Doxyfile","&&","mv","CoolPropDoxyLink.tag","Web/_static/doxygen"]), workdir= 'build', haltOnFailure = True)) + factory.addStep(ShellCommand(command=' '.join(["doxygen","Doxyfile"]), workdir= 'build', haltOnFailure = True)) # Run sphinx apidoc #factory.addStep(ShellCommand(command=["sphinx-apidoc","-T","-f","-o","apidoc","../CoolProp"],workdir= 'build/Web', haltOnFailure = True)) # Run sphinx build @@ -151,6 +151,25 @@ def python_slave(key, platform, conda_env, cmake_args = [], cmake_env = {}, buil return factory +def python_source_slave(key, platform, conda_env, cmake_args = [], cmake_env = {}, build_args = [], git_mode = 'incremental'): + factory = BuildFactory() + working_folder = "build/build" + + factory.addStep(ShellCommand(command=cleanCommand, description='fullclean?', workdir="")) + # Check out sources + factory.addStep(Git(repourl='git://github.com/CoolProp/CoolProp', mode=git_mode, submodules = True, progress=True, haltOnFailure = True)) + # Remove the temporary folder for installs + factory.addStep(RemoveDirectory(dir="build/install_root", haltOnFailure = True)) + factory.addStep(MakeDirectory(dir=working_folder, haltOnFailure = True)) + + factory.addStep(ShellCommand(command = ' '.join(['source',"activate",conda_env,"&&","cmake", "..", "-DCOOLPROP_PYTHON_PYPI=ON","&&","cmake","--build","."]+cmake_args), + env = cmake_env, + workdir= working_folder, + haltOnFailure = True)) + factory.addStep(DirectoryUpload(slavesrc="install_root", masterdest="public_html/binaries", url="binaries", compress="bz2")) + + return factory + def deb_slave(git_mode = 'incremental'): factory = BuildFactory() working_folder = "build/wrappers/DEB" @@ -298,7 +317,7 @@ BuilderConfig(name="Javascript-linux", c['builders'].append( BuilderConfig(name="Python-sdist", slavenames=["OSX-slave"], - factory = python_slave("PYPI", platform = 'OSX', conda_env = 'py27') + factory = python_source_slave("PYPI", platform = 'OSX', conda_env = 'py27') ) ) diff --git a/dev/codelite/coolprop.project b/dev/codelite/coolprop.project index 28c86cc6..ff164ef4 100644 --- a/dev/codelite/coolprop.project +++ b/dev/codelite/coolprop.project @@ -134,8 +134,6 @@ - - diff --git a/dev/fluids/Acetone.json b/dev/fluids/Acetone.json index d6ae2536..cc5ee12d 100644 --- a/dev/fluids/Acetone.json +++ b/dev/fluids/Acetone.json @@ -353,22 +353,22 @@ ], "critical_region_splines": { "T_max": 508.1, - "T_min": 508.0999999999062, + "T_min": 508.09697325761744, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -4.656219323212737e-09, - 508.10002188423084 + -1.5123933548972854e-11, + -1.7185082712306687e-08, + 0.0011638028537861549, + 504.579957217175 ], "cV": [ - 0.0, - 0.0, - 4.64031360324759e-09, - 508.0999781905261 + 1.9536072269032177e-10, + -2.983480058312324e-06, + 0.015098157455448244, + 482.76079813563524 ], - "rhomolar_max": 4700.020155407677, - "rhomolar_min": 4699.9797791519495 + "rhomolar_max": 4814.181193727979, + "rhomolar_min": 4590.050467927069 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/Argon.json b/dev/fluids/Argon.json index a7112733..6d27ddb1 100644 --- a/dev/fluids/Argon.json +++ b/dev/fluids/Argon.json @@ -506,22 +506,22 @@ ], "critical_region_splines": { "T_max": 150.687, - "T_min": 150.68674395835467, + "T_min": 150.68697834063298, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ 0.0, 0.0, - -2.124793992189458e-06, - 150.7154880259892 + -6.171554333557227e-07, + 150.69527446806111 ], "cV": [ 0.0, 0.0, - 2.1223479463722503e-06, - 150.65854476919804 + 6.072607995401675e-07, + 150.67885819354578 ], - "rhomolar_max": 13527.931526630135, - "rhomolar_min": 13286.788909807183 + "rhomolar_max": 13442.525139946354, + "rhomolar_min": 13371.76233564158 }, "gas_constant": 8.31451, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/CarbonMonoxide.json b/dev/fluids/CarbonMonoxide.json index e7feb685..29310093 100644 --- a/dev/fluids/CarbonMonoxide.json +++ b/dev/fluids/CarbonMonoxide.json @@ -367,22 +367,22 @@ ], "critical_region_splines": { "T_max": 132.86, - "T_min": 132.85999999951312, + "T_min": 132.85867131966137, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -4.587508257048314e-09, - 132.8600497744646 + 3.1174266374072594e-11, + -1.0578676813227408e-06, + 0.011945990965038183, + 87.96227472439597 ], "cV": [ - 0.0, - 0.0, - 4.611514127080118e-09, - 132.85994996507173 + -2.7988602187391993e-11, + 8.673443114829891e-07, + -0.008936706896165105, + 163.4668663127422 ], - "rhomolar_max": 10850.106136720144, - "rhomolar_min": 10849.894418190801 + "rhomolar_max": 11038.842068491349, + "rhomolar_min": 10664.189840198747 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/CycloHexane.json b/dev/fluids/CycloHexane.json index 54ccad0b..c19f34ca 100644 --- a/dev/fluids/CycloHexane.json +++ b/dev/fluids/CycloHexane.json @@ -1,7 +1,7 @@ { "ALIASES": [ "Cyclohexane", - "CYCLOHEXANE", + "CYCLOHEXANE", "CYCLOHEX" ], "ANCILLARIES": { @@ -450,22 +450,22 @@ ], "critical_region_splines": { "T_max": 553.6, - "T_min": 553.5999997660659, + "T_min": 553.5979946139788, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -8.175876311970891e-07, - 553.602635902523 + 1.56104739484658e-08, + -0.00015385588557227471, + 0.5052887091787223, + 0.6345188298942561 ], "cV": [ - 0.0, - 0.0, - 8.181583620573008e-07, - 553.5973622574407 + -1.5338245208003638e-08, + 0.0001454870563719106, + -0.45981527881664047, + 1037.8236160527126 ], - "rhomolar_max": 3224.286127290438, - "rhomolar_min": 3223.7140723774714 + "rhomolar_max": 3252.773506033089, + "rhomolar_min": 3195.2323910542696 }, "gas_constant": 8.3144621, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/CycloPropane.json b/dev/fluids/CycloPropane.json index 7c096640..3964b5e8 100644 --- a/dev/fluids/CycloPropane.json +++ b/dev/fluids/CycloPropane.json @@ -2,7 +2,7 @@ "ALIASES": [ "cyclopropane", "Cyclopropane", - "CYCLOPROPANE", + "CYCLOPROPANE", "CYCLOPRO" ], "ANCILLARIES": { diff --git a/dev/fluids/Cyclopentane.json b/dev/fluids/Cyclopentane.json index 6c29f598..12445da3 100644 --- a/dev/fluids/Cyclopentane.json +++ b/dev/fluids/Cyclopentane.json @@ -2,7 +2,7 @@ "ALIASES": [ "CycloPentane", "cyclopentane", - "CYCLOPENTANE", + "CYCLOPENTANE", "CYCLOPEN" ], "ANCILLARIES": { @@ -388,22 +388,22 @@ ], "critical_region_splines": { "T_max": 511.72, - "T_min": 511.71999999967744, + "T_min": 511.7095934234679, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -3.3125554580735164e-08, - 511.72012653961855 + -4.880588052926918e-09, + 5.252717316693226e-05, + -0.18764912368477027, + 734.1005944101676 ], "cV": [ - 0.0, - 0.0, - 3.3109614501400934e-08, - 511.71987352127263 + 5.250582737174832e-09, + -6.357124543112242e-05, + 0.2558285044919253, + 169.4290891702673 ], - "rhomolar_max": 3820.0097389577454, - "rhomolar_min": 3819.990256554135 + "rhomolar_max": 3873.2904355172786, + "rhomolar_min": 3766.813756733369 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/D6.json b/dev/fluids/D6.json index 7288b907..3c083da9 100644 --- a/dev/fluids/D6.json +++ b/dev/fluids/D6.json @@ -352,22 +352,22 @@ ], "critical_region_splines": { "T_max": 645.78, - "T_min": 642.4672205036263, + "T_min": 645.4997615767367, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - -6.230392935143472e-05, - 0.07816508273019042, - 621.263969382756 + -1.554702914197144e-07, + 0.00027871311312902783, + -0.16613864293822964, + 678.7008854032358 ], "cV": [ - 3.6584356889802007e-07, - -0.0006916100001806448, - 0.43580969539355185, - 554.2417982977918 + 2.1732433324774884e-07, + -0.00042927603672073575, + 0.28201442644063596, + 584.1491278422845 ], - "rhomolar_max": 857.8775266580042, - "rhomolar_min": 421.67935851484685 + "rhomolar_max": 725.3981107757561, + "rhomolar_min": 542.276230072255 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/Deuterium.json b/dev/fluids/Deuterium.json index f59c9a51..ff11483d 100644 --- a/dev/fluids/Deuterium.json +++ b/dev/fluids/Deuterium.json @@ -440,22 +440,22 @@ ], "critical_region_splines": { "T_max": 38.34, - "T_min": 38.339416735480214, + "T_min": 38.3399506598222, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ 0.0, 0.0, - -2.853182978628294e-06, - 38.389160342721766 + -8.339819490855398e-07, + 38.35436950898275 ], "cV": [ 0.0, 0.0, - 2.8554684120896426e-06, - 38.2908002792597 + 8.380089288669903e-07, + 38.325561106155625 ], - "rhomolar_max": 17434.42590754112, - "rhomolar_min": 17025.73770897889 + "rhomolar_max": 17289.162165151512, + "rhomolar_min": 17171.122133543762 }, "gas_constant": 8.3144621, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/DimethylCarbonate.json b/dev/fluids/DimethylCarbonate.json index bfebb640..75a676d8 100644 --- a/dev/fluids/DimethylCarbonate.json +++ b/dev/fluids/DimethylCarbonate.json @@ -409,22 +409,22 @@ ], "critical_region_splines": { "T_max": 557.0, - "T_min": 556.9998876027566, + "T_min": 556.9999904919641, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ 0.0, 0.0, - -1.3572331448181178e-06, - 557.0054289325793 + -2.1173490191325178e-07, + 557.0008469396076 ], "cV": [ 0.0, 0.0, - 1.2967566129304942e-06, - 556.9948129735483 + 2.0050706260121842e-07, + 556.9991979717496 ], - "rhomolar_max": 4082.813512058265, - "rhomolar_min": 3913.3243337382946 + "rhomolar_max": 4044.9053782587557, + "rhomolar_min": 3952.580044972171 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/DimethylEther.json b/dev/fluids/DimethylEther.json index 7f41ce79..df7e2788 100644 --- a/dev/fluids/DimethylEther.json +++ b/dev/fluids/DimethylEther.json @@ -1,6 +1,6 @@ { "ALIASES": [ - "DIMETHYLETHER", + "DIMETHYLETHER", "DME" ], "ANCILLARIES": { @@ -390,22 +390,22 @@ ], "critical_region_splines": { "T_max": 400.378, - "T_min": 400.37110506132734, + "T_min": 400.3774167354802, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - -1.2340856080204133e-11, - -3.6668010216655235e-07, - 0.005662449102513134, - 382.2672995716492 + 0.0, + 0.0, + -1.846177917829548e-05, + 400.48766296831906 ], "cV": [ - 3.2678596450956466e-11, - -1.1690463919857066e-06, - 0.010429215559579295, - 372.82769480948826 + 0.0, + 0.0, + 1.8536722158567707e-05, + 400.2678918703781 ], - "rhomolar_max": 6048.293446297928, - "rhomolar_min": 5831.9191440537215 + "rhomolar_max": 5971.593082884313, + "rhomolar_min": 5908.534646267459 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/EthylBenzene.json b/dev/fluids/EthylBenzene.json index 2c479441..f471b99f 100644 --- a/dev/fluids/EthylBenzene.json +++ b/dev/fluids/EthylBenzene.json @@ -1,7 +1,7 @@ { "ALIASES": [ "ethylbenzene", - "ETHYLBENZENE", + "ETHYLBENZENE", "EBENZENE" ], "ANCILLARIES": { @@ -382,22 +382,22 @@ ], "critical_region_splines": { "T_max": 617.12, - "T_min": 617.1169732576175, + "T_min": 617.1197439583547, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - -5.889287007942239e-10, - 2.7489748115156017e-06, - -0.0017958058182523087, - 613.5170511389289 + 0.0, + 0.0, + -2.3245131740117315e-05, + 617.1837152780217 ], "cV": [ - 2.7233018397998547e-10, - -4.332169254554028e-06, - 0.017610902629837312, - 595.7882622446201 + 0.0, + 0.0, + 2.3091817015124984e-05, + 617.0567049600925 ], - "rhomolar_max": 2778.835947943192, - "rhomolar_min": 2703.079602802352 + "rhomolar_max": 2752.0308502563307, + "rhomolar_min": 2729.928018264121 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/Ethylene.json b/dev/fluids/Ethylene.json index a046b22e..2e187b34 100644 --- a/dev/fluids/Ethylene.json +++ b/dev/fluids/Ethylene.json @@ -510,22 +510,22 @@ ], "critical_region_splines": { "T_max": 282.35, - "T_min": 282.34697325761744, + "T_min": 282.3497439583547, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - -5.3490529714823425e-11, - 1.1806509186406972e-06, - -0.008673975227377104, - 303.55881549532984 + 0.0, + 0.0, + -3.634935446259431e-06, + 282.37775915135825 ], "cV": [ - 5.6266047158959514e-11, - -1.3340632313871347e-06, - 0.010531516936650963, - 254.66645559595844 + 0.0, + 0.0, + 3.6437107681563877e-06, + 282.3221738335621 ], - "rhomolar_max": 7866.912063903078, - "rhomolar_min": 7408.049532488636 + "rhomolar_max": 7707.205098345808, + "rhomolar_min": 7566.496505023215 }, "gas_constant": 8.31451, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/HFE143m.json b/dev/fluids/HFE143m.json index 4d36471c..88f17f92 100644 --- a/dev/fluids/HFE143m.json +++ b/dev/fluids/HFE143m.json @@ -362,22 +362,22 @@ ], "critical_region_splines": { "T_max": 377.921, - "T_min": 377.92099999999897, + "T_min": 377.88522000242136, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -6.93839214284477e-10, - 377.9210032250623 + 4.9355266611563965e-11, + -1.1363349519029853e-06, + 0.00736469652648742, + 363.2831553274167 ], "cV": [ - 0.0, - 0.0, - 5.712986843822467e-10, - 377.9209973445233 + -1.6224665103344288e-10, + 1.8467354481248633e-06, + -0.0066516525010036605, + 385.2331741502011 ], - "rhomolar_max": 4648.142188502035, - "rhomolar_min": 4648.138929822613 + "rhomolar_max": 4935.29110614525, + "rhomolar_min": 4335.002308503029 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/Helium.json b/dev/fluids/Helium.json index 18079b20..76792d7d 100644 --- a/dev/fluids/Helium.json +++ b/dev/fluids/Helium.json @@ -440,22 +440,22 @@ ], "critical_region_splines": { "T_max": 5.1953000000000005, - "T_min": 5.141297013055385, + "T_min": 5.19073171770731, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - -4.82863868046167e-13, - 2.5798878786242034e-08, - -0.0004593197751427837, - 7.920274522054607 + -3.0333435224167437e-13, + 1.5607506016709e-08, + -0.00026681298442982895, + 6.710133323667334 ], "cV": [ 0.0, - -1.5275455601862228e-09, - 5.538880201235252e-05, - 4.693200509758024 + -4.479989405503328e-10, + 1.624444158435496e-05, + 5.048044137037824 ], - "rhomolar_max": 22647.96434858185, - "rhomolar_min": 12184.179354171467 + "rhomolar_max": 19915.76431162559, + "rhomolar_min": 14936.712852945791 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/Hydrogen.json b/dev/fluids/Hydrogen.json index b0748cb0..0a14fb57 100644 --- a/dev/fluids/Hydrogen.json +++ b/dev/fluids/Hydrogen.json @@ -412,22 +412,22 @@ ], "critical_region_splines": { "T_max": 33.145, - "T_min": 33.144999999992066, + "T_min": 33.13810506132737, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -3.5640307070519154e-10, - 33.145005527098824 + 3.1007578284721566e-12, + -1.5869880447859634e-07, + 0.0026850233556669507, + 18.107690278950276 ], "cV": [ - 0.0, - 0.0, - 3.1573424275146666e-10, - 33.14499510359337 + -2.3396699485553584e-12, + 9.516798742074658e-08, + -0.0012636720187622463, + 38.58044486815464 ], - "rhomolar_max": 15508.022271289323, - "rhomolar_min": 15507.974851755711 + "rhomolar_max": 16262.923237049079, + "rhomolar_min": 14746.877675758724 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/IsoButane.json b/dev/fluids/IsoButane.json index be181220..43dcab68 100644 --- a/dev/fluids/IsoButane.json +++ b/dev/fluids/IsoButane.json @@ -4,7 +4,7 @@ "Isobutane", "ISOBUTANE", "R600A", - "R600a", + "R600a", "ISOBUTAN" ], "ANCILLARIES": { @@ -455,22 +455,22 @@ ], "critical_region_splines": { "T_max": 407.817, - "T_min": 406.8534813947396, + "T_min": 407.73549293470376, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - -9.941703745512649e-10, - 1.1401780743865456e-05, - -0.04357798580431196, - 463.3231742084145 + -5.728389280296945e-10, + 6.296755366265217e-06, + -0.022991762972926447, + 435.69130219666266 ], "cV": [ - 0.0, - -1.0815601793791963e-06, - 0.00839238089576816, - 391.53680162488934 + 5.562666408422913e-10, + -6.761233991678565e-06, + 0.027344254864717768, + 371.015481302833 ], - "rhomolar_max": 4815.639002152002, - "rhomolar_min": 2935.903033135107 + "rhomolar_max": 4253.160501655689, + "rhomolar_min": 3479.687062549918 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/IsoButene.json b/dev/fluids/IsoButene.json index 5759b905..8ebe2d25 100644 --- a/dev/fluids/IsoButene.json +++ b/dev/fluids/IsoButene.json @@ -1,7 +1,7 @@ { "ALIASES": [ "Isobutene", - "ISOBUTENE", + "ISOBUTENE", "IBUTENE" ], "ANCILLARIES": { @@ -350,22 +350,22 @@ ], "critical_region_splines": { "T_max": 418.09000000000003, - "T_min": 418.08999999951317, + "T_min": 418.08543171770737, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -2.0580323178237388e-08, - 418.09008581994766 + 1.0856405178489673e-09, + -1.4451084442137125e-05, + 0.06388776104495195, + 324.24484504699296 ], "cV": [ - 0.0, - 0.0, - 2.0591910110230444e-08, - 418.0899141317349 + -6.230035048466998e-10, + 6.9227418610441575e-06, + -0.02523563018482191, + 448.11876326463465 ], - "rhomolar_max": 4170.023655555847, - "rhomolar_min": 4169.976356154625 + "rhomolar_max": 4246.188019158735, + "rhomolar_min": 4095.5716752458243 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/Isopentane.json b/dev/fluids/Isopentane.json index bbb9b1d0..f73cafef 100644 --- a/dev/fluids/Isopentane.json +++ b/dev/fluids/Isopentane.json @@ -2,7 +2,7 @@ "ALIASES": [ "ipentane", "R601a", - "ISOPENTANE", + "ISOPENTANE", "IPENTANE" ], "ANCILLARIES": { @@ -366,22 +366,22 @@ ], "critical_region_splines": { "T_max": 460.35, - "T_min": 460.34999999967744, + "T_min": 460.34697325761744, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -1.3800199316984639e-08, - 460.350045140452 + 8.005022701910341e-10, + -8.44526357152168e-06, + 0.029554133854069683, + 426.02215187987395 ], "cV": [ - 0.0, - 0.0, - 1.384341277338779e-08, - 460.34995471819684 + -5.384468503556533e-10, + 4.689391032778603e-06, + -0.013394755215389163, + 472.83487531264404 ], - "rhomolar_max": 3271.023375025736, - "rhomolar_min": 3270.9766981300554 + "rhomolar_max": 3346.612383148717, + "rhomolar_min": 3197.125647678554 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/Krypton.json b/dev/fluids/Krypton.json index a84bcc4d..bb4de36a 100644 --- a/dev/fluids/Krypton.json +++ b/dev/fluids/Krypton.json @@ -349,22 +349,22 @@ ], "critical_region_splines": { "T_max": 209.48000000000002, - "T_min": 209.47999999926515, + "T_min": 209.47310506132737, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -9.371176887927681e-09, - 209.48010167726926 + 6.390300964893231e-11, + -2.199509680360674e-06, + 0.02516089390363733, + 113.79346021244321 ], "cV": [ - 0.0, - 0.0, - 9.068846146505593e-09, - 209.47990160301933 + -3.436623953002642e-11, + 1.0066209446840255e-06, + -0.009706635600422744, + 240.19068612286947 ], - "rhomolar_max": 10850.078419187403, - "rhomolar_min": 10849.918967439311 + "rhomolar_max": 11108.82129459245, + "rhomolar_min": 10591.412518037536 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/Methane.json b/dev/fluids/Methane.json index 31c06a56..5f8c44c3 100644 --- a/dev/fluids/Methane.json +++ b/dev/fluids/Methane.json @@ -518,22 +518,22 @@ ], "critical_region_splines": { "T_max": 190.564, - "T_min": 190.56361355465157, + "T_min": 190.5639673093741, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ 0.0, 0.0, - -2.9498492462244708e-06, - 190.59390889908818 + -8.298041773773189e-07, + 190.57241349076935 ], "cV": [ 0.0, 0.0, - 3.00418301102579e-06, - 190.53354020391578 + 8.001489626516288e-07, + 190.5558871872486 ], - "rhomolar_max": 10270.133117949952, - "rhomolar_min": 10010.492245451042 + "rhomolar_max": 10178.523590876614, + "rhomolar_min": 10098.272325109083 }, "gas_constant": 8.31451, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/MethylLinoleate.json b/dev/fluids/MethylLinoleate.json index eddf1661..3e7f6be0 100644 --- a/dev/fluids/MethylLinoleate.json +++ b/dev/fluids/MethylLinoleate.json @@ -1,6 +1,6 @@ { "ALIASES": [ - "METHYLLINOLEATE", + "METHYLLINOLEATE", "MLINOLEA" ], "ANCILLARIES": { diff --git a/dev/fluids/MethylLinolenate.json b/dev/fluids/MethylLinolenate.json index c749c051..a085f885 100644 --- a/dev/fluids/MethylLinolenate.json +++ b/dev/fluids/MethylLinolenate.json @@ -1,6 +1,6 @@ { "ALIASES": [ - "METHYLLINOLENATE", + "METHYLLINOLENATE", "MLINOLEN" ], "ANCILLARIES": { diff --git a/dev/fluids/MethylOleate.json b/dev/fluids/MethylOleate.json index 7eae9745..987297c8 100644 --- a/dev/fluids/MethylOleate.json +++ b/dev/fluids/MethylOleate.json @@ -1,6 +1,6 @@ { "ALIASES": [ - "METHYLOLEATE", + "METHYLOLEATE", "MOLEATE" ], "ANCILLARIES": { diff --git a/dev/fluids/MethylPalmitate.json b/dev/fluids/MethylPalmitate.json index 59224a69..323b91f6 100644 --- a/dev/fluids/MethylPalmitate.json +++ b/dev/fluids/MethylPalmitate.json @@ -1,6 +1,6 @@ { "ALIASES": [ - "METHYLPALMITATE", + "METHYLPALMITATE", "MPALMITA" ], "ANCILLARIES": { @@ -396,22 +396,22 @@ ], "critical_region_splines": { "T_max": 755.0, - "T_min": 754.9999999319605, + "T_min": 754.9979946139788, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -1.7213757676923328e-06, - 755.0015440740636 + -8.453804974988888e-07, + 0.0022314430347624794, + -1.9626065342276378, + 1330.1589912157262 ], "cV": [ - 0.0, - 0.0, - 1.7239651981209695e-06, - 754.9984536032173 + 8.346377269227008e-07, + -0.002289692013105165, + 2.0930363910460232, + 117.46650514532276 ], - "rhomolar_max": 897.0395262628024, - "rhomolar_min": 896.9605331088118 + "rhomolar_max": 903.4045446436754, + "rhomolar_min": 890.603960171529 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/MethylStearate.json b/dev/fluids/MethylStearate.json index 5e080b9b..93f340c6 100644 --- a/dev/fluids/MethylStearate.json +++ b/dev/fluids/MethylStearate.json @@ -1,6 +1,6 @@ { "ALIASES": [ - "METHYLSTEARATE", + "METHYLSTEARATE", "MSTEARAT" ], "ANCILLARIES": { diff --git a/dev/fluids/Neon.json b/dev/fluids/Neon.json index 12050cbf..3c3beb12 100644 --- a/dev/fluids/Neon.json +++ b/dev/fluids/Neon.json @@ -427,22 +427,22 @@ ], "critical_region_splines": { "T_max": 44.491800000000005, - "T_min": 44.48723171770732, + "T_min": 44.49141355465158, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - -1.1025814119387474e-13, - 1.491524533973909e-09, - 0.00011741598951019355, - 42.338817257479654 + 0.0, + 0.0, + -1.5811616648711508e-06, + 44.52956130288046 ], "cV": [ - 1.7438239837612905e-13, - -1.890874143571898e-08, - 0.0006047801629533931, - 38.4577598458307 + 0.0, + 0.0, + 1.5834258838542428e-06, + 44.4539846230418 ], - "rhomolar_max": 24720.30951969461, - "rhomolar_min": 23047.532486140095 + "rhomolar_max": 24126.40596873362, + "rhomolar_min": 23637.943519451463 }, "gas_constant": 8.31434, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/Neopentane.json b/dev/fluids/Neopentane.json index f1f726d4..846a63ce 100644 --- a/dev/fluids/Neopentane.json +++ b/dev/fluids/Neopentane.json @@ -349,22 +349,22 @@ ], "critical_region_splines": { "T_max": 433.74, - "T_min": 433.73999999926514, + "T_min": 433.73543171770734, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -2.793653710159193e-08, - 433.7400913524763 + 1.8157110662036835e-09, + -1.8874192929720874e-05, + 0.0651915711809464, + 358.895660684941 ], "cV": [ - 0.0, - 0.0, - 2.7689755256340264e-08, - 433.7399094545003 + -2.2365486585331262e-09, + 2.089693784319932e-05, + -0.06492040004203695, + 500.7835165371252 ], - "rhomolar_max": 3270.026304880335, - "rhomolar_min": 3269.973461489175 + "rhomolar_max": 3339.892894257803, + "rhomolar_min": 3198.06041887194 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/Nitrogen.json b/dev/fluids/Nitrogen.json index 22146fc4..43535332 100644 --- a/dev/fluids/Nitrogen.json +++ b/dev/fluids/Nitrogen.json @@ -501,22 +501,22 @@ ], "critical_region_splines": { "T_max": 126.19200000000001, - "T_min": 126.19199984500558, + "T_min": 126.19199998688855, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ 0.0, 0.0, - -1.7874713257311775e-07, - 126.19399909031777 + -1.547800694886972e-07, + 126.19373104504585 ], "cV": [ 0.0, 0.0, - 1.1629442664483669e-08, - 126.19186993745916 + 9.95463660457675e-10, + 126.19198886683252 ], - "rhomolar_max": 11184.76858012661, - "rhomolar_min": 11170.573704081868 + "rhomolar_max": 11183.986174852074, + "rhomolar_min": 11170.73026187868 }, "gas_constant": 8.31451, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/OrthoDeuterium.json b/dev/fluids/OrthoDeuterium.json index 9184c5b9..e1178cc2 100644 --- a/dev/fluids/OrthoDeuterium.json +++ b/dev/fluids/OrthoDeuterium.json @@ -417,22 +417,22 @@ ], "critical_region_splines": { "T_max": 38.34, - "T_min": 38.33961355465158, + "T_min": 38.33996730937413, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ 0.0, 0.0, - -2.3235096620580277e-06, - 38.38003407147726 + -6.850188755192064e-07, + 38.3518028752252 ], "cV": [ 0.0, 0.0, - 2.3247053545885936e-06, - 38.29994532674044 + 6.843466890793785e-07, + 38.328208706547166 ], - "rhomolar_max": 17396.319664916562, - "rhomolar_min": 17063.76588019465 + "rhomolar_max": 17277.722226405003, + "rhomolar_min": 17182.23089934681 }, "gas_constant": 8.3144621, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/OrthoHydrogen.json b/dev/fluids/OrthoHydrogen.json index d16c8272..b148da88 100644 --- a/dev/fluids/OrthoHydrogen.json +++ b/dev/fluids/OrthoHydrogen.json @@ -2,7 +2,7 @@ "ALIASES": [ "Orthohydrogen", "orthohydrogen", - "ORTHOHYDROGEN", + "ORTHOHYDROGEN", "ORTHOHYD" ], "ANCILLARIES": { @@ -380,22 +380,22 @@ ], "critical_region_splines": { "T_max": 33.22, - "T_min": 33.21999999998802, + "T_min": 33.216973257617425, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -4.57432325893615e-10, - 33.220007064832 + 4.066468806855226e-12, + -2.0485786362827496e-07, + 0.003417899984425546, + 14.316580566669387 ], "cV": [ - 0.0, - 0.0, - 4.301031431449862e-10, - 33.219993357254666 + -3.379814959674437e-12, + 1.404217131242082e-07, + -0.0019188970430762365, + 41.812545688089735 ], - "rhomolar_max": 15444.566501913807, - "rhomolar_min": 15444.512461229047 + "rhomolar_max": 15899.98591137461, + "rhomolar_min": 14989.857909343546 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/ParaDeuterium.json b/dev/fluids/ParaDeuterium.json index 6cc7a143..9801f3aa 100644 --- a/dev/fluids/ParaDeuterium.json +++ b/dev/fluids/ParaDeuterium.json @@ -415,22 +415,22 @@ ], "critical_region_splines": { "T_max": 38.34, - "T_min": 38.33961355465158, + "T_min": 38.33996730937413, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ 0.0, 0.0, - -2.3234750017306126e-06, - 38.38003347427982 + -6.849502299785245e-07, + 38.35180169246253 ], "cV": [ 0.0, 0.0, - 2.3248386159631863e-06, - 38.29994303064696 + 6.848389037037868e-07, + 38.32820022568919 ], - "rhomolar_max": 17396.32214598207, - "rhomolar_min": 17063.77540885253 + "rhomolar_max": 17277.727009113827, + "rhomolar_min": 17182.26523245882 }, "gas_constant": 8.3144621, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/ParaHydrogen.json b/dev/fluids/ParaHydrogen.json index 9fec9ec6..89ad7232 100644 --- a/dev/fluids/ParaHydrogen.json +++ b/dev/fluids/ParaHydrogen.json @@ -2,7 +2,7 @@ "ALIASES": [ "Parahydrogen", "parahydrogen", - "PARAHYDROGEN", + "PARAHYDROGEN", "PARAHYD" ], "ANCILLARIES": { @@ -420,22 +420,22 @@ ], "critical_region_splines": { "T_max": 32.938, - "T_min": 32.93799999997271, + "T_min": 32.93599461397884, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -6.176636722223463e-10, - 32.938009597258144 + 4.253205081213295e-12, + -2.116493776473347e-07, + 0.0034966692458426726, + 13.749966028178376 ], "cV": [ - 0.0, - 0.0, - 5.786265121310599e-10, - 32.93799100930126 + -3.141534424322369e-12, + 1.338646257848717e-07, + -0.0018846003827776433, + 41.68699310689614 ], - "rhomolar_max": 15538.044190612114, - "rhomolar_min": 15537.952830972841 + "rhomolar_max": 15953.359013823481, + "rhomolar_min": 15115.765516662266 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/Propylene.json b/dev/fluids/Propylene.json index 4d47650c..d7ccad9f 100644 --- a/dev/fluids/Propylene.json +++ b/dev/fluids/Propylene.json @@ -459,22 +459,22 @@ ], "critical_region_splines": { "T_max": 364.211, - "T_min": 364.20410506132737, + "T_min": 364.21041673548024, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - -2.0397446597019764e-10, - 3.2958687540071058e-06, - -0.017748737115287072, - 396.06517964228243 + 0.0, + 0.0, + -6.505035916897591e-06, + 364.2464979809985 ], "cV": [ - 2.0280477994216778e-10, - -3.3625914669476956e-06, - 0.018581444515139024, - 329.9897393682322 + 0.0, + 0.0, + 6.4811926293276935e-06, + 364.17563213182177 ], - "rhomolar_max": 5722.778431306117, - "rhomolar_min": 5189.89767929224 + "rhomolar_max": 5546.663535640788, + "rhomolar_min": 5367.006606323258 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R113.json b/dev/fluids/R113.json index 34644248..a75d08ee 100644 --- a/dev/fluids/R113.json +++ b/dev/fluids/R113.json @@ -376,22 +376,22 @@ ], "critical_region_splines": { "T_max": 487.21000000000004, - "T_min": 487.2031050613274, + "T_min": 487.20941673548026, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 3.6894468782358206e-10, - -4.073513681283046e-06, - 0.014462353513138904, - 470.5229580953627 + 0.0, + 0.0, + -2.1155772356204888e-05, + 487.27322739169836 ], "cV": [ - 1.1946318431162753e-09, - -1.1482911409880193e-05, - 0.03662536226299625, - 448.42495860364784 + 0.0, + 0.0, + 2.1763182218616364e-05, + 487.1449572672853 ], - "rhomolar_max": 3085.865073202007, - "rhomolar_min": 2900.0292736747374 + "rhomolar_max": 3016.2291002048787, + "rhomolar_min": 2961.858589771953 }, "gas_constant": 8.314471, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R116.json b/dev/fluids/R116.json index 227f2b6a..dc6b8bb5 100644 --- a/dev/fluids/R116.json +++ b/dev/fluids/R116.json @@ -346,22 +346,22 @@ ], "critical_region_splines": { "T_max": 293.03000000000003, - "T_min": 293.02999999985843, + "T_min": 293.02697325761744, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -7.658301925164341e-09, - 293.0300340334938 + 5.973701413916427e-10, + -8.378309573561642e-06, + 0.039073782995767505, + 232.42219731732985 ], "cV": [ - 0.0, - 0.0, - 7.708669659796271e-09, - 293.02996574267206 + -4.2587664193266785e-10, + 5.257573775768188e-06, + -0.02149722855677295, + 322.1082759616395 ], - "rhomolar_max": 4444.018490179812, - "rhomolar_min": 4443.981630049213 + "rhomolar_max": 4535.77641861197, + "rhomolar_min": 4355.023810307573 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R12.json b/dev/fluids/R12.json index ab66fac9..35f64219 100644 --- a/dev/fluids/R12.json +++ b/dev/fluids/R12.json @@ -394,22 +394,22 @@ ], "critical_region_splines": { "T_max": 385.12, - "T_min": 385.11310506132736, + "T_min": 385.11941673548023, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 1.384320477183494e-11, - -6.214242836621232e-07, - 0.004900765150571461, - 374.37610683053464 + 0.0, + 0.0, + -1.583911139375003e-05, + 385.1940127028315 ], "cV": [ - 1.8819672379934522e-10, - -3.0664139289381314e-06, - 0.01632960178423799, - 356.56849340248095 + 0.0, + 0.0, + 1.5981068543804365e-05, + 385.04532396245855 ], - "rhomolar_max": 4800.06197048058, - "rhomolar_min": 4549.199865356502 + "rhomolar_max": 4709.605576782584, + "rhomolar_min": 4636.284039366143 }, "gas_constant": 8.314471, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R123.json b/dev/fluids/R123.json index 0e19a3a4..070555d8 100644 --- a/dev/fluids/R123.json +++ b/dev/fluids/R123.json @@ -470,22 +470,22 @@ ], "critical_region_splines": { "T_max": 456.831, - "T_min": 456.83099999999655, + "T_min": 456.7079808473738, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -1.497293042906961e-09, - 456.83100538489015 + -5.2516982254248e-10, + 4.95822393582125e-06, + -0.015285703141563677, + 472.1032632289936 ], "cV": [ - 0.0, - 0.0, - 1.577833587606056e-09, - 456.8309943254525 + 5.019316578137991e-10, + -6.104407328102757e-06, + 0.024431712288804266, + 424.57182248409964 ], - "rhomolar_max": 3596.419300284971, - "rhomolar_min": 3596.414813901929 + "rhomolar_max": 3965.7364882421543, + "rhomolar_min": 3221.873367889577 }, "gas_constant": 8.31451, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R1233zd(E).json b/dev/fluids/R1233zd(E).json index d939fa78..93671a01 100644 --- a/dev/fluids/R1233zd(E).json +++ b/dev/fluids/R1233zd(E).json @@ -2,7 +2,7 @@ "ALIASES": [ "R1233zdE", "R1233ZDE", - "R1233ZD(E)", + "R1233ZD(E)", "R1233ZD" ], "ANCILLARIES": { diff --git a/dev/fluids/R1234yf.json b/dev/fluids/R1234yf.json index e7b589f6..1a155b21 100644 --- a/dev/fluids/R1234yf.json +++ b/dev/fluids/R1234yf.json @@ -392,22 +392,22 @@ ], "critical_region_splines": { "T_max": 367.85, - "T_min": 367.84799461397887, + "T_min": 367.84983035809745, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - -6.280447767869642e-11, - 4.941333351258848e-07, - -0.0008447696692286383, - 367.3343146300655 + 0.0, + 0.0, + -7.28092281910778e-06, + 367.8803614481557 ], "cV": [ - 8.488656120290226e-11, - -1.3525258087977996e-06, - 0.006851813473070161, - 356.6416038903997 + 0.0, + 0.0, + 7.273842039048367e-06, + 367.8196680786972 ], - "rhomolar_max": 4252.211021596844, - "rhomolar_min": 4087.906435621643 + "rhomolar_max": 4193.299505682264, + "rhomolar_min": 4146.67781322612 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R1234ze(E).json b/dev/fluids/R1234ze(E).json index 7dd0cf22..6a38a492 100644 --- a/dev/fluids/R1234ze(E).json +++ b/dev/fluids/R1234ze(E).json @@ -405,22 +405,22 @@ ], "critical_region_splines": { "T_max": 382.52, - "T_min": 382.5194167354802, + "T_min": 382.5199506598222, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ 0.0, 0.0, - -4.227168461645191e-06, - 382.53813455270046 + -7.9305911732753e-07, + 382.5234022236133 ], "cV": [ 0.0, 0.0, - 3.54150649256091e-06, - 382.5048069371469 + 6.090875342473237e-07, + 382.51738701447806 ], - "rhomolar_max": 4427.979956342802, - "rhomolar_min": 4125.306098974923 + "rhomolar_max": 4352.215006013345, + "rhomolar_min": 4208.993289113025 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R1234ze(Z).json b/dev/fluids/R1234ze(Z).json index ddca1f48..47b0a526 100644 --- a/dev/fluids/R1234ze(Z).json +++ b/dev/fluids/R1234ze(Z).json @@ -1,6 +1,6 @@ { "ALIASES": [ - "R1234ZE(Z)", + "R1234ZE(Z)", "R1234ZE" ], "ANCILLARIES": { @@ -349,22 +349,22 @@ ], "critical_region_splines": { "T_max": 423.27, - "T_min": 423.26999999889085, + "T_min": 423.26310506132734, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -2.4196343285339583e-08, - 423.27009972047097 + -1.0661006391670194e-09, + 1.2653370461499062e-05, + -0.04997314613163001, + 488.933234607043 ], "cV": [ - 0.0, - 0.0, - 3.019678505019119e-08, - 423.2698755498882 + -8.160851613585538e-10, + 9.267609720003654e-06, + -0.03480529660648677, + 466.4282367596696 ], - "rhomolar_max": 4121.349202957066, - "rhomolar_min": 4121.266633051825 + "rhomolar_max": 4225.213370352157, + "rhomolar_min": 4025.0245673273625 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R134a.json b/dev/fluids/R134a.json index 81b438c6..94ba8301 100644 --- a/dev/fluids/R134a.json +++ b/dev/fluids/R134a.json @@ -380,22 +380,22 @@ ], "critical_region_splines": { "T_max": 374.21, - "T_min": 373.5716150640238, + "T_min": 374.15599701305536, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - -3.1676460727923154e-10, - 4.632248820128229e-06, - -0.022560800178147874, - 410.803318485873 + -2.358891970526994e-10, + 3.35250579170572e-06, + -0.015826824353177796, + 399.0175702243528 ], "cV": [ - 3.734362612529562e-10, - -5.680300209122729e-06, - 0.02879764276811166, - 325.5497395319938 + 2.033032586375043e-10, + -3.2541387283179285e-06, + 0.017300443262052236, + 343.6482870886872 ], - "rhomolar_max": 6152.557816507652, - "rhomolar_min": 3872.298405322532 + "rhomolar_max": 5442.556273932187, + "rhomolar_min": 4580.218882520725 }, "gas_constant": 8.314471, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R143a.json b/dev/fluids/R143a.json index 86fee42a..9b0758a5 100644 --- a/dev/fluids/R143a.json +++ b/dev/fluids/R143a.json @@ -381,22 +381,22 @@ ], "critical_region_splines": { "T_max": 345.857, - "T_min": 345.8556713196614, + "T_min": 345.85688760275673, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - -2.8895140603394883e-11, - 2.005756782258384e-07, - 0.00022262855324051985, - 343.3373934663645 + 0.0, + 0.0, + -5.242214594297355e-06, + 345.88388443543613 ], "cV": [ - 5.7189072201719986e-11, - -1.123885386251343e-06, - 0.0070151907568205005, - 331.72539959954764 + 0.0, + 0.0, + 5.221395136669298e-06, + 345.8302223361114 ], - "rhomolar_max": 5201.926128087604, - "rhomolar_min": 5055.283375792975 + "rhomolar_max": 5149.890794010884, + "rhomolar_min": 5106.923714331294 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R152A.json b/dev/fluids/R152A.json index 425ee71c..5c23d7e5 100644 --- a/dev/fluids/R152A.json +++ b/dev/fluids/R152A.json @@ -468,22 +468,22 @@ ], "critical_region_splines": { "T_max": 386.411, - "T_min": 386.41099999999204, + "T_min": 386.2879808473738, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -1.441541916647247e-09, - 386.41100803148214 + -1.1446811820239007e-10, + 1.646295645058246e-06, + -0.007684872988074046, + 397.9206701191548 ], "cV": [ - 0.0, - 0.0, - 1.4566499622392455e-09, - 386.4109918843441 + 1.0521854870590392e-10, + -2.0174071540863595e-06, + 0.012681483095329345, + 360.1823139464937 ], - "rhomolar_max": 5571.457898124929, - "rhomolar_min": 5571.4469054491965 + "rhomolar_max": 6176.35151183272, + "rhomolar_min": 4954.90121849081 }, "gas_constant": 8.314471, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R161.json b/dev/fluids/R161.json index e43d37f8..8d1eabf3 100644 --- a/dev/fluids/R161.json +++ b/dev/fluids/R161.json @@ -397,22 +397,22 @@ ], "critical_region_splines": { "T_max": 375.25, - "T_min": 375.24867131966136, + "T_min": 375.2498876027567, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ 0.0, - -2.3597508647707754e-08, - 0.00029638470861520266, - 374.31935201494827 + 0.0, + -1.0274211653082636e-06, + 375.25645220491816 ], "cV": [ 0.0, - -1.4520865417565774e-08, - 0.00018238206964464205, - 374.6773203013158 + 0.0, + 6.800670480519312e-07, + 375.24572917893823 ], - "rhomolar_max": 6517.288765706664, - "rhomolar_min": 5977.507922869694 + "rhomolar_max": 6389.397438091061, + "rhomolar_min": 6114.726232371929 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R218.json b/dev/fluids/R218.json index e980d6bb..6d452975 100644 --- a/dev/fluids/R218.json +++ b/dev/fluids/R218.json @@ -344,22 +344,22 @@ ], "critical_region_splines": { "T_max": 345.02, - "T_min": 345.01999999990613, + "T_min": 345.01867131966134, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -1.156582542340429e-08, - 345.0200386298569 + 2.115849844779737e-09, + -2.2622652824384362e-05, + 0.08030859728161308, + 250.32261200217556 ], "cV": [ - 0.0, - 0.0, - 1.1490855119850737e-08, - 345.0199616205439 + -1.5113366978895236e-09, + 1.3734866737761167e-05, + -0.04116930680731554, + 385.6167633643665 ], - "rhomolar_max": 3340.008115750424, - "rhomolar_min": 3339.9918305420742 + "rhomolar_max": 3371.3072650243957, + "rhomolar_min": 3308.7608519066903 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R22.json b/dev/fluids/R22.json index d5e218bd..83b474ca 100644 --- a/dev/fluids/R22.json +++ b/dev/fluids/R22.json @@ -473,22 +473,22 @@ ], "critical_region_splines": { "T_max": 369.295, - "T_min": 369.29499999999473, + "T_min": 369.29299461397886, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -8.277256091856358e-10, - 369.29500501454385 + -6.068711638786403e-11, + 9.60793099642547e-07, + -0.004959370923967982, + 377.5706211619357 ], "cV": [ - 0.0, - 0.0, - 9.036108521741466e-10, - 369.2949945257267 + 2.0197560844726486e-11, + -5.076049994717274e-07, + 0.003926491093801074, + 359.64667998370135 ], - "rhomolar_max": 6058.226375538457, - "rhomolar_min": 6058.214137613641 + "rhomolar_max": 6174.151068396738, + "rhomolar_min": 5939.762656878844 }, "gas_constant": 8.31451, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R227EA.json b/dev/fluids/R227EA.json index 7dad8218..06f10a78 100644 --- a/dev/fluids/R227EA.json +++ b/dev/fluids/R227EA.json @@ -416,22 +416,22 @@ ], "critical_region_splines": { "T_max": 374.90000000000003, - "T_min": 374.89999999993785, + "T_min": 374.8931050613274, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -4.848721869600648e-09, - 374.90001694628296 + -5.875126621910152e-10, + 5.780632973589872e-06, + -0.01887717891595377, + 395.3469681114307 ], "cV": [ - 0.0, - 0.0, - 4.855705508254663e-09, - 374.8999830293093 + 1.1730303150524067e-10, + -1.607222079285808e-06, + 0.006935903946970884, + 365.2834297632339 ], - "rhomolar_max": 3495.0128237303156, - "rhomolar_min": 3494.9871917055066 + "rhomolar_max": 3618.508261092158, + "rhomolar_min": 3362.517912603551 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R236EA.json b/dev/fluids/R236EA.json index f28c1b38..10778525 100644 --- a/dev/fluids/R236EA.json +++ b/dev/fluids/R236EA.json @@ -394,22 +394,22 @@ ], "critical_region_splines": { "T_max": 412.44, - "T_min": 407.44, + "T_min": 412.01703429466085, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - -7.988424303242158e-10, - 8.554876458658245e-06, - -0.030487020885094897, - 448.58939769263844 + -9.065638596766866e-10, + 9.956613016634915e-06, + -0.036442262498707786, + 456.8904836061875 ], "cV": [ - 0.0, - -1.915826026167026e-06, - 0.01423841902647334, - 385.9850174488125 + 8.719771420305249e-10, + -9.978606681376363e-06, + 0.03803850767350116, + 364.13631933098907 ], - "rhomolar_max": 5423.60551214582, - "rhomolar_min": 2100.4999798205076 + "rhomolar_max": 4440.255966785143, + "rhomolar_min": 3017.4925122772956 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R245fa.json b/dev/fluids/R245fa.json index 7115f57e..fa53974d 100644 --- a/dev/fluids/R245fa.json +++ b/dev/fluids/R245fa.json @@ -387,22 +387,22 @@ ], "critical_region_splines": { "T_max": 427.01, - "T_min": 427.00867131966135, + "T_min": 427.0096135546516, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ 0.0, - -3.531037635318706e-08, - 0.0002736554167372022, - 426.47979263007164 + 0.0, + -2.7068259197787627e-06, + 427.02048895043913 ], "cV": [ 0.0, - -4.30215593700091e-08, - 0.00033341708511756433, - 426.3640043975847 + 0.0, + 3.086102462886277e-06, + 426.9980413529563 ], - "rhomolar_max": 4068.9809495988143, - "rhomolar_min": 3699.261392719093 + "rhomolar_max": 4017.7669749909037, + "rhomolar_min": 3749.7788341360238 }, "gas_constant": 8.3144621, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R32.json b/dev/fluids/R32.json index 5d309c0a..fedd446a 100644 --- a/dev/fluids/R32.json +++ b/dev/fluids/R32.json @@ -374,22 +374,22 @@ ], "critical_region_splines": { "T_max": 351.255, - "T_min": 351.254978340633, + "T_min": 351.25499816776613, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ 0.0, 0.0, - -9.240003401086692e-07, - 351.2625306809423 + -4.041924265889875e-07, + 351.25829420247135 ], "cV": [ 0.0, 0.0, - 8.673043856669974e-07, - 351.24793139588286 + 1.4328717651880036e-07, + 351.2538321973893 ], - "rhomolar_max": 8173.525464736033, - "rhomolar_min": 8125.111398713756 + "rhomolar_max": 8154.617673148497, + "rhomolar_min": 8137.297455089546 }, "gas_constant": 8.314471, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/R41.json b/dev/fluids/R41.json index fc176445..b1635982 100644 --- a/dev/fluids/R41.json +++ b/dev/fluids/R41.json @@ -357,22 +357,22 @@ ], "critical_region_splines": { "T_max": 317.28000000000003, - "T_min": 317.2799999997863, + "T_min": 317.2695934234679, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -5.946649378688733e-09, - 317.2800553038393 + 8.947784934150927e-11, + -2.661886245206215e-06, + 0.0262942665921942, + 230.99772757769114 ], "cV": [ - 0.0, - 0.0, - 5.876648086292159e-09, - 317.2799453471728 + -8.480951160041928e-11, + 2.20398173327229e-06, + -0.018988536263903795, + 371.46813146596344 ], - "rhomolar_max": 9300.035945660456, - "rhomolar_min": 9299.963628495072 + "rhomolar_max": 9571.518280811737, + "rhomolar_min": 9026.378810480832 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/SES36.json b/dev/fluids/SES36.json index fdf15e4e..06453809 100644 --- a/dev/fluids/SES36.json +++ b/dev/fluids/SES36.json @@ -50,23 +50,21 @@ "Tmax": 449.7, "Tmin": 200.0, "description": "rho' = rhoc*(1+sum(n_i*theta^t_i))", - "max_abserror_percentage": 32.94120614200753, + "max_abserror_percentage": -1, "n": [ - 514.1312054060722, - -1848.2456018708629, - 8650.456163417914, - -72548.98608130115, - 94049.29472462909, - -496673.06801196904 + -0.3968, + 17.9889, + -52.375, + 67.9231, + -31.7301 ], "reducing_value": 2800.0, "t": [ - 2.448, - 3.217, - 5.164, - 7.701, - 8.763, - 17.504 + 0.33333333333, + 0.66666666666, + 1.0, + 1.333333333333, + 1.666666666666 ], "type": "rhoLnoexp", "using_tau_r": false diff --git a/dev/fluids/Toluene.json b/dev/fluids/Toluene.json index 29322593..b83537b6 100644 --- a/dev/fluids/Toluene.json +++ b/dev/fluids/Toluene.json @@ -351,22 +351,22 @@ ], "critical_region_splines": { "T_max": 591.75, - "T_min": 591.7499999988909, + "T_min": 591.7342932852254, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -5.244356221448451e-08, - 591.7501661936486 + 3.3834089871987155e-09, + -3.464558495481263e-05, + 0.11764944401792847, + 459.1727413679192 ], "cV": [ - 0.0, - 0.0, - 5.267522401490593e-08, - 591.7498330722151 + -2.3379515587297088e-09, + 1.972502928601055e-05, + -0.05458017218397031, + 641.0297738234855 ], - "rhomolar_max": 3169.0211483621283, - "rhomolar_min": 3168.9789444501107 + "rhomolar_max": 3253.6261257770193, + "rhomolar_min": 3086.5243371577894 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/Water.json b/dev/fluids/Water.json index 1cee1d86..1d7bf141 100644 --- a/dev/fluids/Water.json +++ b/dev/fluids/Water.json @@ -643,22 +643,22 @@ ], "critical_region_splines": { "T_max": 647.096, - "T_min": 647.0891050613274, + "T_min": 647.0954167354802, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - -4.042762309098527e-12, - 2.0584764946656947e-07, - -0.0034839041164477923, - 666.6888430405046 + 0.0, + 0.0, + -2.6319631259532804e-06, + 647.1430429930077 ], "cV": [ - 3.9619849743940495e-12, - -2.2308973462071218e-07, - 0.004177682638992649, - 621.0723284163671 + 0.0, + 0.0, + 2.6053577217441603e-06, + 647.0494325447503 ], - "rhomolar_max": 18580.861739248718, - "rhomolar_min": 17158.467276424304 + "rhomolar_max": 18095.336161027783, + "rhomolar_min": 17649.856810851063 }, "gas_constant": 8.314371357587, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/Xenon.json b/dev/fluids/Xenon.json index 9f18c9d8..4aed0c3f 100644 --- a/dev/fluids/Xenon.json +++ b/dev/fluids/Xenon.json @@ -352,22 +352,22 @@ ], "critical_region_splines": { "T_max": 289.733, - "T_min": 289.73299999832597, + "T_min": 289.72843171770734, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -1.954188845616281e-08, - 289.73316415186304 + 2.4311831644858725e-10, + -6.354625581839551e-06, + 0.05529442454906748, + 129.54501621008842 ], "cV": [ - 0.0, - 0.0, - 1.9705426830168584e-08, - 289.73283447441463 + -2.2130895526715094e-10, + 5.34493631486394e-06, + -0.04294825043876369, + 404.53030033147684 ], - "rhomolar_max": 8400.08566414265, - "rhomolar_min": 8399.915046038452 + "rhomolar_max": 8554.90344650679, + "rhomolar_min": 8248.286253998665 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/cis-2-Butene.json b/dev/fluids/cis-2-Butene.json index cebb04cc..890423ab 100644 --- a/dev/fluids/cis-2-Butene.json +++ b/dev/fluids/cis-2-Butene.json @@ -1,7 +1,7 @@ { "ALIASES": [ "Cis-2-Butene", - "CIS-2-BUTENE", + "CIS-2-BUTENE", "C2BUTENE" ], "ANCILLARIES": { diff --git a/dev/fluids/m-Xylene.json b/dev/fluids/m-Xylene.json index eed91d6e..03721dfb 100644 --- a/dev/fluids/m-Xylene.json +++ b/dev/fluids/m-Xylene.json @@ -386,22 +386,22 @@ ], "critical_region_splines": { "T_max": 616.89, - "T_min": 616.8899255305433, + "T_min": 616.8899937003947, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ 0.0, 0.0, - -1.5295569802554634e-06, - 616.8940762693524 + -2.3188404050194553e-07, + 616.8906179709679 ], "cV": [ 0.0, 0.0, - 1.4085684731752365e-06, - 616.886246165019 + 2.1811620743863226e-07, + 616.8894187203072 ], - "rhomolar_max": 2713.686945041748, - "rhomolar_min": 2612.131106477632 + "rhomolar_max": 2692.1670497921914, + "rhomolar_min": 2636.1181240342576 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/n-Butane.json b/dev/fluids/n-Butane.json index 99b99137..bf205ab1 100644 --- a/dev/fluids/n-Butane.json +++ b/dev/fluids/n-Butane.json @@ -451,22 +451,22 @@ ], "critical_region_splines": { "T_max": 425.125, - "T_min": 425.12499999999653, + "T_min": 425.1219732576174, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -1.594275970224201e-09, - 425.12500625397735 + -1.6020493306008252e-10, + 1.133822562422527e-06, + -0.0014996904947787396, + 423.23116044183894 ], "cV": [ - 0.0, - 0.0, - 1.671186275109249e-09, - 425.12499344432126 + 5.058796197557434e-11, + -1.3472509771444817e-06, + 0.008234549282093268, + 410.50072741365295 ], - "rhomolar_max": 3922.7717979270105, - "rhomolar_min": 3922.767549762673 + "rhomolar_max": 3985.810039412961, + "rhomolar_min": 3859.458487995192 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/n-Decane.json b/dev/fluids/n-Decane.json index a00edce3..23819acc 100644 --- a/dev/fluids/n-Decane.json +++ b/dev/fluids/n-Decane.json @@ -351,22 +351,22 @@ ], "critical_region_splines": { "T_max": 617.7, - "T_min": 617.6999999974735, + "T_min": 617.6842932852254, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -1.726981763252328e-07, - 617.7002832250092 + 3.811704985816065e-08, + -0.00019945721156220926, + 0.3466608020285197, + 417.5042285213912 ], "cV": [ - 0.0, - 0.0, - 1.8026843741974914e-07, - 617.6997043597627 + -3.8653700756418197e-08, + 0.00017824366286806788, + -0.2727502335438755, + 756.1055367913187 ], - "rhomolar_max": 1640.014630074043, - "rhomolar_min": 1639.9859844635084 + "rhomolar_max": 1678.7818428517664, + "rhomolar_min": 1601.198950562281 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/n-Dodecane.json b/dev/fluids/n-Dodecane.json index a1f0541e..a82403bc 100644 --- a/dev/fluids/n-Dodecane.json +++ b/dev/fluids/n-Dodecane.json @@ -3,7 +3,7 @@ "nDodecane", "Dodecane", "DODECANE", - "N-DODECANE", + "N-DODECANE", "C12" ], "ANCILLARIES": { @@ -360,22 +360,22 @@ ], "critical_region_splines": { "T_max": 658.1, - "T_min": 658.0842932852254, + "T_min": 658.0986713196614, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ 0.0, - -8.162186259380569e-07, - 0.002171141544995267, - 656.6561908725781 + -2.1192739463715689e-07, + 0.0005637268697348361, + 657.7251216316264 ], "cV": [ - 0.0, - -1.7627161847925473e-06, - 0.00468882505154816, - 654.9819313407205 + 1.345410821444352e-08, + -5.389362597299564e-05, + 0.07196012902658075, + 626.0728305909759 ], - "rhomolar_max": 1468.7201111458296, - "rhomolar_min": 1235.6044584051854 + "rhomolar_max": 1409.180220111776, + "rhomolar_min": 1288.4723365719328 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/n-Nonane.json b/dev/fluids/n-Nonane.json index e2c97cd8..471a0280 100644 --- a/dev/fluids/n-Nonane.json +++ b/dev/fluids/n-Nonane.json @@ -350,22 +350,22 @@ ], "critical_region_splines": { "T_max": 594.5500000000001, - "T_min": 594.5499999988909, + "T_min": 594.5262937515283, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -9.62836132236938e-08, - 594.55017427334 + 2.6268572567217745e-08, + -0.00015162277736042532, + 0.2906990422823534, + 409.3502826161235 ], "cV": [ - 0.0, - 0.0, - 1.0501270033534904e-07, - 594.5498099270125 + -2.3832710380126962e-08, + 0.00012016817674452382, + -0.2007737723861744, + 705.5893640684056 ], - "rhomolar_max": 1810.011518970226, - "rhomolar_min": 1809.9894381092934 + "rhomolar_max": 1866.189822592916, + "rhomolar_min": 1755.3631417347385 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/n-Propane.json b/dev/fluids/n-Propane.json index 6397f516..83125fbd 100644 --- a/dev/fluids/n-Propane.json +++ b/dev/fluids/n-Propane.json @@ -56,7 +56,7 @@ "T_0": 85.525, "T_max": 175, "T_min": 85.525, - "a": 718000000.0, + "a": 718000000.0, "c": 1.283, "p_0": 0.00017207065534365437 } @@ -432,22 +432,22 @@ ], "critical_region_splines": { "T_max": 369.89, - "T_min": 369.8899999999947, + "T_min": 369.88310506132734, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - 0.0, - 0.0, - -1.1383796297589533e-09, - 369.8900056918981 + -1.2699463565482216e-10, + 1.6385267569449435e-06, + -0.0068606698953377855, + 379.1045100099181 ], "cV": [ - 0.0, - 0.0, - 1.237688468336273e-09, - 369.88999381155764 + 1.3753113621718563e-10, + -2.32949579930026e-06, + 0.012980122776713688, + 346.03538907178984 ], - "rhomolar_max": 5000.004634865591, - "rhomolar_min": 4999.995734219138 + "rhomolar_max": 5155.238965206609, + "rhomolar_min": 4845.222396586998 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/p-Xylene.json b/dev/fluids/p-Xylene.json index ed97d2da..1901a966 100644 --- a/dev/fluids/p-Xylene.json +++ b/dev/fluids/p-Xylene.json @@ -384,22 +384,22 @@ ], "critical_region_splines": { "T_max": 616.168, - "T_min": 616.1634317177073, + "T_min": 616.1676135546516, "_note": "Coefficients for the critical cubic spline. T = c[0]*rho^3 + c[1]*rho^2 + c[2]*rho + c[3] with rho in mol/m^3 and T in K", "cL": [ - -5.4532827442939e-09, - 4.400267120267819e-05, - -0.11835258016741836, - 722.277453847427 + 0.0, + 0.0, + -1.1132572209863086e-05, + 616.1979902589276 ], "cV": [ 0.0, - -3.3155928616944385e-07, - 0.0017863883843951315, - 613.7618063017552 + 0.0, + 8.534367674093475e-06, + 616.1450090962354 ], - "rhomolar_max": 2784.1283761391046, - "rhomolar_min": 2576.5395234223492 + "rhomolar_max": 2728.633033173596, + "rhomolar_min": 2648.6389243240715 }, "gas_constant": 8.314472, "gas_constant_units": "J/mol/K", diff --git a/dev/fluids/trans-2-Butene.json b/dev/fluids/trans-2-Butene.json index 365e6421..553078fb 100644 --- a/dev/fluids/trans-2-Butene.json +++ b/dev/fluids/trans-2-Butene.json @@ -1,7 +1,7 @@ { "ALIASES": [ "Trans-2-Butene", - "TRANS-2-BUTENE", + "TRANS-2-BUTENE", "T2BUTENE" ], "ANCILLARIES": { diff --git a/dev/generate_headers.py b/dev/generate_headers.py index e050368d..9c4f2c9d 100644 --- a/dev/generate_headers.py +++ b/dev/generate_headers.py @@ -38,7 +38,8 @@ values = [ ('all_fluids.json','all_fluids_JSON.h','all_fluids_JSON'), ('all_incompressibles.json','all_incompressibles_JSON.h','all_incompressibles_JSON'), ('mixtures/mixture_departure_functions.json', 'mixture_departure_functions_JSON.h', 'mixture_departure_functions_JSON'), - ('mixtures/mixture_binary_pairs.json', 'mixture_binary_pairs_JSON.h', 'mixture_binary_pairs_JSON') + ('mixtures/mixture_binary_pairs.json', 'mixture_binary_pairs_JSON.h', 'mixture_binary_pairs_JSON'), + ('mixtures/predefined_mixtures.json', 'predefined_mixtures_JSON.h', 'predefined_mixtures_JSON') ] def TO_CPP(root_dir, hashes): @@ -59,7 +60,13 @@ def TO_CPP(root_dir, hashes): # Confirm that the JSON file can be loaded and doesn't have any formatting problems with open(os.path.join(root_dir,'dev',infile), 'r') as fp: - jj = json.load(fp) + try: + jj = json.load(fp) + except ValueError: + file = os.path.join(root_dir,'dev',infile) + print('"python -mjson.tool '+file+'" returns ->', end='') + subprocess.call('python -mjson.tool '+file, shell = True) + raise ValueError('unable to decode file %s' % file) json = open(os.path.join(root_dir,'dev',infile),'r').read().encode('ascii') @@ -82,7 +89,7 @@ def TO_CPP(root_dir, hashes): if variable not in hashes or (variable in hashes and hashes[variable] != get_hash(hex_string.encode('ascii'))): # Generate the output string - output = '// File generated by the script dev/JSON_to_CPP.py on '+ str(datetime.now()) + '\n\n' + output = '// File generated by the script dev/generate_headers.py on '+ str(datetime.now()) + '\n\n' output += '// JSON file encoded in binary form\n' output += 'const unsigned char '+variable+'_binary[] = {\n' + hex_string + '\n};'+'\n\n' output += '// Combined into a single std::string \n' diff --git a/dev/incompressible_liquids/CPIncomp/BaseObjects.py b/dev/incompressible_liquids/CPIncomp/BaseObjects.py index 5875f9e6..7d69686c 100644 --- a/dev/incompressible_liquids/CPIncomp/BaseObjects.py +++ b/dev/incompressible_liquids/CPIncomp/BaseObjects.py @@ -135,14 +135,21 @@ class IncompressibleData(object): eqnType=self.type, \ coeffs=self.coeffs, DEBUG=self.DEBUG) - elif self.type==IncompressibleData.INCOMPRESSIBLE_LOGEXPONENTIAL and self.data.size>10: - if self.DEBUG: print("Poor solution found with log exponential, trying once more with exponential polynomial.") - self.type=IncompressibleData.INCOMPRESSIBLE_EXPPOLYNOMIAL - self.coeffs = np.zeros((4,6)) - res,sErr = IncompressibleFitter.fitter(x=x, y=y, z=self.data, \ - xbase=xbase, ybase=ybase, \ - eqnType=self.type, \ - coeffs=self.coeffs, DEBUG=self.DEBUG) + elif self.type==IncompressibleData.INCOMPRESSIBLE_LOGEXPONENTIAL: + xLen = np.round([len(x)/1.5]) + yLen = np.round([len(y)/1.5]) + xLen = np.min([xLen,4]) + yLen = np.min([yLen,6]) + + if (xLen+yLen) > 2: + if self.DEBUG: print("Poor solution found with log exponential, trying once more with exponential polynomial.") + self.type=IncompressibleData.INCOMPRESSIBLE_EXPPOLYNOMIAL + + self.coeffs = np.zeros((xLen,yLen)) + res,sErr = IncompressibleFitter.fitter(x=x, y=y, z=self.data, \ + xbase=xbase, ybase=ybase, \ + eqnType=self.type, \ + coeffs=self.coeffs, DEBUG=self.DEBUG) # elif self.type==IncompressibleData.INCOMPRESSIBLE_EXPPOLYNOMIAL: # if self.DEBUG: print("Poor solution found with exponential polynomial, trying once more with normal polynomial.") @@ -485,7 +492,7 @@ class IncompressibleFitter(object): expLog = True xData = np.array(x_in.flat) - if expLog: zData = np.log(z_in.flat) + if expLog: zData = np.log(np.clip(z_in.flat,1e-10,IncompressibleData.maxLin)) else: zData = np.array(z_in.flat) # Remove np.nan elements diff --git a/dev/incompressible_liquids/CPIncomp/CoefficientFluids.py b/dev/incompressible_liquids/CPIncomp/CoefficientFluids.py index c830ac95..e8832dda 100644 --- a/dev/incompressible_liquids/CPIncomp/CoefficientFluids.py +++ b/dev/incompressible_liquids/CPIncomp/CoefficientFluids.py @@ -4,29 +4,29 @@ from CPIncomp.DataObjects import CoefficientData,PureData class NitrateSalt(PureData,CoefficientData): - """ + """ Heat transfer fluid based on 60% NaNO3 and 40% KNO3 """ def __init__(self): CoefficientData.__init__(self) - PureData.__init__(self) - self.name = "NaK" - self.description = "NitrateSalt" - self.reference = "Solar Power Tower Design Basis Document, Alexis B. Zavoico, Sandia Labs, USA" - + PureData.__init__(self) + self.name = "NaK" + self.description = "Nitrate salt, heat transfer fluid based on 60% NaNO3 and 40% KNO3" + self.reference = "Zavoico2001" + self.Tmin = 300 + 273.15 self.Tmax = 600 + 273.15 - self.TminPsat = self.Tmax - + self.TminPsat = self.Tmax + self.Tbase = 273.15 - + #self.temperature.data = self.getTrange() #self.concentration.data = np.array([ 0 ]) # mass fraction - + self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL self.density.source = self.density.SOURCE_COEFFS self.density.coeffs = np.array([[2090],[-0.636]]) - + self.specific_heat.type = self.specific_heat.INCOMPRESSIBLE_POLYNOMIAL self.specific_heat.source = self.specific_heat.SOURCE_COEFFS self.specific_heat.coeffs = np.array([[1443],[+0.172]]) @@ -38,5 +38,4 @@ class NitrateSalt(PureData,CoefficientData): self.viscosity.type = self.viscosity.INCOMPRESSIBLE_POLYNOMIAL self.viscosity.source = self.viscosity.SOURCE_COEFFS self.viscosity.coeffs = np.array([[22.714],[-0.120],[2.281 * 1e-4],[-1.474 * 1e-7]])/1e3 - - \ No newline at end of file + diff --git a/dev/incompressible_liquids/CPIncomp/DataObjects.py b/dev/incompressible_liquids/CPIncomp/DataObjects.py index 288c8698..23b945e5 100644 --- a/dev/incompressible_liquids/CPIncomp/DataObjects.py +++ b/dev/incompressible_liquids/CPIncomp/DataObjects.py @@ -33,8 +33,8 @@ class SolutionData(object): self.xmin = 0.0 # Minimum concentration self.xid = self.ifrac_undefined # Concentration is mole, mass or volume-based self.TminPsat = None # Minimum saturation temperature in K - self.Tbase = 0.0 # Base value for temperature fits - self.xbase = 0.0 # Base value for concentration fits + self.Tbase = None # Base value for temperature fits + self.xbase = None # Base value for concentration fits self.temperature = IncompressibleData() # Temperature for data points in K self.concentration = IncompressibleData() # Concentration data points in weight fraction @@ -248,6 +248,7 @@ class PureData(SolutionData): __metaclass__ = ABCMeta def __init__(self): SolutionData.__init__(self) + self.xbase = 0.0 self.xid = self.ifrac_pure self.concentration.data = np.array([ 0 ]) # mass fraction @@ -467,7 +468,7 @@ class CoefficientData(SolutionData): if len(array)!=18: raise ValueError("The lenght is not equal to 18!") - self.reference = "Melinder Book" + #self.reference = "Melinder Book" array = np.array(array) tmp = np.zeros((6,4)) diff --git a/dev/incompressible_liquids/CPIncomp/DigitalFluids.py b/dev/incompressible_liquids/CPIncomp/DigitalFluids.py index 1d4b0bff..09fc797d 100644 --- a/dev/incompressible_liquids/CPIncomp/DigitalFluids.py +++ b/dev/incompressible_liquids/CPIncomp/DigitalFluids.py @@ -20,7 +20,7 @@ class HyCool20(PureData,DigitalData): self.name = "HY20" self.description = "HYCOOL 20, Potassium formate" - self.reference = "Hydro Chemicals" + self.reference = "Hydro2000" self.Tmax = 50 + 273.15 self.Tmin = -20 + 273.15 @@ -61,8 +61,8 @@ class HyCool30(PureData,DigitalData): PureData.__init__(self) self.name = "HY30" - self.description = "HYCOOL 30, Potassium formate" - self.reference = "Hydro Chemicals" + self.description = "HyCool 30, Potassium formate" + self.reference = "Hydro2000" self.Tmax = 50 + 273.15 self.Tmin = -30 + 273.15 @@ -103,8 +103,8 @@ class HyCool40(PureData,DigitalData): PureData.__init__(self) self.name = "HY40" - self.description = "HYCOOL 40, Potassium formate" - self.reference = "Hydro Chemicals" + self.description = "HyCool 40, Potassium formate" + self.reference = "Hydro2000" self.Tmax = 20 + 273.15 self.Tmin = -40 + 273.15 @@ -139,8 +139,8 @@ class HyCool45(PureData,DigitalData): PureData.__init__(self) self.name = "HY45" - self.description = "HYCOOL 45, Potassium formate" - self.reference = "Hydro Chemicals" + self.description = "HyCool 45, Potassium formate" + self.reference = "Hydro2000" self.Tmax = 20 + 273.15 self.Tmin = -45 + 273.15 @@ -175,8 +175,8 @@ class HyCool50(PureData,DigitalData): PureData.__init__(self) self.name = "HY50" - self.description = "HYCOOL 50, Potassium formate" - self.reference = "Hydro Chemicals" + self.description = "HyCool 50, Potassium formate" + self.reference = "Hydro2000" self.Tmax = 20 + 273.15 self.Tmin = -50 + 273.15 diff --git a/dev/incompressible_liquids/CPIncomp/ExampleObjects.py b/dev/incompressible_liquids/CPIncomp/ExampleObjects.py index 249451af..f0901042 100644 --- a/dev/incompressible_liquids/CPIncomp/ExampleObjects.py +++ b/dev/incompressible_liquids/CPIncomp/ExampleObjects.py @@ -5,20 +5,20 @@ from CPIncomp.DataObjects import PureData, SolutionData, DigitalData,\ class PureExample(PureData): def __init__(self): - PureData.__init__(self) + PureData.__init__(self) self.name = "ExamplePure" self.description = "Heat transfer fluid TherminolD12 by Solutia" self.reference = "Solutia data sheet" self.Tmax = 150 + 273.15 self.Tmin = 50 + 273.15 self.TminPsat = self.Tmax - + self.density.source = self.density.SOURCE_DATA self.specific_heat.source = self.specific_heat.SOURCE_DATA self.conductivity.source = self.conductivity.SOURCE_DATA self.viscosity.source = self.viscosity.SOURCE_DATA self.saturation_pressure.source = self.saturation_pressure.SOURCE_DATA - + self.temperature.data = np.array([ 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150])+273.15 # Kelvin self.density.data = np.array([ 740, 733, 726, 717, 710, 702, 695, 687, 679, 670, 662]) # kg/m3 self.specific_heat.data = np.array([ 2235, 2280, 2326, 2361, 2406, 2445, 2485, 2528, 2571, 2607, 2645]) # J/kg-K @@ -30,14 +30,14 @@ class PureExample(PureData): class SolutionExample(SolutionData): def __init__(self): - SolutionData.__init__(self) + SolutionData.__init__(self) self.name = "ExampleSolution" self.description = "Ethanol ice slurry" - self.reference = "SecCool software" - + self.reference = "SecCool software,Skovrup2013" + self.temperature.data = np.array([ -45 , -40 , -35 , -30 , -25 , -20 , -15 , -10])+273.15 # Kelvin self.concentration.data = np.array([ 5 , 10 , 15 , 20 , 25 , 30 , 35 ])/100.0 # mass fraction - + self.density.data = np.array([ [1064.0, 1054.6, 1045.3, 1036.3, 1027.4, 1018.6, 1010.0], [1061.3, 1052.1, 1043.1, 1034.3, 1025.6, 1017.0, 1008.6], @@ -47,12 +47,12 @@ class SolutionExample(SolutionData): [1040.7, 1033.2, 1025.7, 1018.4, 1011.2, 1004.0, 997.0], [1032.3, 1025.3, 1018.5, 1011.7, 1005.1, 998.5, 992.0], [1021.5, 1015.3, 1009.2, 1003.1, 997.1, 991.2, 985.4]]) # kg/m3 - + self.specific_heat.data = np.copy(self.density.data) - + self.density.source = self.density.SOURCE_DATA self.specific_heat.source = self.specific_heat.SOURCE_DATA - + self.Tmax = np.max(self.temperature.data) self.Tmin = np.min(self.temperature.data) self.xmax = np.max(self.concentration.data) @@ -63,51 +63,51 @@ class SolutionExample(SolutionData): class DigitalExample(DigitalData): def __init__(self): - DigitalData.__init__(self) + DigitalData.__init__(self) self.name = "ExampleDigital" self.description = "some fluid" self.reference = "none" - + self.Tmin = 273.00; self.Tmax = 500.00; self.xmax = 1.0 self.xmin = 0.0 self.xid = self.ifrac_mass self.TminPsat = self.Tmin; - + self.temperature.data = self.getTrange() self.concentration.data = self.getxrange() - + def funcRho(T,x): return T + x*100.0 + T*(x+0.5) self.density.xData,self.density.yData,self.density.data = self.getArray(dataID="D", func=funcRho, x_in=self.temperature.data, y_in=self.concentration.data,DEBUG=self.density.DEBUG) self.density.source = self.density.SOURCE_EQUATION - + def funcCp(T,x): return T + x*50.0 + T*(x+0.6) self.specific_heat.xData,self.specific_heat.yData,self.specific_heat.data = self.getArray(dataID="C", func=funcCp, x_in=self.temperature.data, y_in=self.concentration.data,DEBUG=self.specific_heat.DEBUG) self.specific_heat.source = self.specific_heat.SOURCE_EQUATION - + class DigitalExamplePure(PureData,DigitalData): def __init__(self): - DigitalData.__init__(self) - PureData.__init__(self) + DigitalData.__init__(self) + PureData.__init__(self) self.name = "ExampleDigitalPure" self.description = "water at 100 bar" self.reference = "none" - + self.Tmin = 280.00; self.Tmax = 500.00; self.TminPsat = self.Tmin; - + self.temperature.data = self.getTrange() self.concentration.data = self.getxrange() - + import CoolProp.CoolProp as CP - + def funcD(T,x): return CP.PropsSI('D','T',T,'P',1e7,'water') def funcC(T,x): @@ -118,34 +118,34 @@ class DigitalExamplePure(PureData,DigitalData): return CP.PropsSI('V','T',T,'P',1e7,'water') def funcP(T,x): return CP.PropsSI('P','T',T,'Q',0.0,'water') - + self.density.xData,self.density.yData,self.density.data = self.getArray(dataID="D", func=funcD, x_in=self.temperature.data, y_in=self.concentration.data,DEBUG=self.density.DEBUG) self.density.source = self.density.SOURCE_EQUATION self.specific_heat.xData,self.specific_heat.yData,self.specific_heat.data = self.getArray(dataID="C", func=funcC, x_in=self.temperature.data, y_in=self.concentration.data,DEBUG=self.specific_heat.DEBUG) self.specific_heat.source = self.specific_heat.SOURCE_EQUATION - + self.conductivity.xData,self.conductivity.yData,self.conductivity.data = self.getArray(dataID="L", func=funcL, x_in=self.temperature.data, y_in=self.concentration.data,DEBUG=self.conductivity.DEBUG) self.conductivity.source = self.conductivity.SOURCE_EQUATION - + self.viscosity.xData,self.viscosity.yData,self.viscosity.data = self.getArray(dataID="V", func=funcV, x_in=self.temperature.data, y_in=self.concentration.data,DEBUG=self.viscosity.DEBUG) self.viscosity.source = self.viscosity.SOURCE_EQUATION - + self.saturation_pressure.xData,self.saturation_pressure.yData,self.saturation_pressure.data = self.getArray(dataID="P", func=funcP, x_in=self.temperature.data, y_in=self.concentration.data,DEBUG=self.saturation_pressure.DEBUG) self.saturation_pressure.source = self.saturation_pressure.SOURCE_EQUATION - - - - - + + + + + class SecCoolExample(CoefficientData): - """ + """ Ethanol-Water mixture according to Melinder book Source: SecCool Software - """ + """ def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "ExampleSecCool" self.description = "Methanol solution" #self.reference = "SecCool software" @@ -155,17 +155,17 @@ class SecCoolExample(CoefficientData): self.xmin = 0.0 self.xid = self.ifrac_mass self.TminPsat = 20 + 273.15 - + self.Tbase = -4.48 + 273.15 self.xbase = 31.57 / 100.0 - + self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL self.density.coeffs = self.convertSecCoolArray(np.array([ - 960.24665800, - -1.2903839100, - -0.0161042520, - -0.0001969888, - 1.131559E-05, + 960.24665800, + -1.2903839100, + -0.0161042520, + -0.0001969888, + 1.131559E-05, 9.181999E-08, -0.4020348270, -0.0162463989, @@ -176,12 +176,12 @@ class SecCoolExample(CoefficientData): 0.0001101514, -2.320217E-07, 7.794999E-08, - 9.937483E-06, + 9.937483E-06, -1.346886E-06, 4.141999E-08])) - - - + + + self.specific_heat.type = self.specific_heat.INCOMPRESSIBLE_POLYNOMIAL self.specific_heat.coeffs = self.convertSecCoolArray(np.array([ 3822.9712300, @@ -189,97 +189,97 @@ class SecCoolExample(CoefficientData): 0.0678775826, 0.0022413893, -0.0003045332, - -4.758000E-06, - 2.3501449500, - 0.1788839410, - 0.0006828000, - 0.0002101166, - -9.812000E-06, - -0.0004724176, - -0.0003317949, - 0.0001002032, - -5.306000E-06, - 4.242194E-05, - 2.347190E-05, + -4.758000E-06, + 2.3501449500, + 0.1788839410, + 0.0006828000, + 0.0002101166, + -9.812000E-06, + -0.0004724176, + -0.0003317949, + 0.0001002032, + -5.306000E-06, + 4.242194E-05, + 2.347190E-05, -1.894000E-06])) self.conductivity.type = self.conductivity.INCOMPRESSIBLE_POLYNOMIAL self.conductivity.coeffs = self.convertSecCoolArray(np.array([ - 0.4082066700, - -0.0039816870, - 1.583368E-05, - -3.552049E-07, - -9.884176E-10, - 4.460000E-10, - 0.0006629321, - -2.686475E-05, - 9.039150E-07, - -2.128257E-08, - -5.562000E-10, - 3.685975E-07, - 7.188416E-08, - -1.041773E-08, - 2.278001E-10, - 4.703395E-08, - 7.612361E-11, + 0.4082066700, + -0.0039816870, + 1.583368E-05, + -3.552049E-07, + -9.884176E-10, + 4.460000E-10, + 0.0006629321, + -2.686475E-05, + 9.039150E-07, + -2.128257E-08, + -5.562000E-10, + 3.685975E-07, + 7.188416E-08, + -1.041773E-08, + 2.278001E-10, + 4.703395E-08, + 7.612361E-11, -2.734000E-10])) self.viscosity.type = self.viscosity.INCOMPRESSIBLE_EXPPOLYNOMIAL self.viscosity.coeffs = self.convertSecCoolArray(np.array([ - 1.4725525500, - 0.0022218998, - -0.0004406139, - 6.047984E-06, - -1.954730E-07, - -2.372000E-09, - -0.0411841566, - 0.0001784479, - -3.564413E-06, - 4.064671E-08, - 1.915000E-08, - 0.0002572862, - -9.226343E-07, - -2.178577E-08, - -9.529999E-10, - -1.699844E-06, - -1.023552E-07, + 1.4725525500, + 0.0022218998, + -0.0004406139, + 6.047984E-06, + -1.954730E-07, + -2.372000E-09, + -0.0411841566, + 0.0001784479, + -3.564413E-06, + 4.064671E-08, + 1.915000E-08, + 0.0002572862, + -9.226343E-07, + -2.178577E-08, + -9.529999E-10, + -1.699844E-06, + -1.023552E-07, 4.482000E-09])) self.T_freeze.type = self.T_freeze.INCOMPRESSIBLE_POLYOFFSET self.T_freeze.coeffs = np.array([ 27.755555600/100.0, - -22.973221700+273.15, - -1.1040507200*100.0, - -0.0120762281*100.0*100.0, + -22.973221700+273.15, + -1.1040507200*100.0, + -0.0120762281*100.0*100.0, -9.343458E-05*100.0*100.0*100.0]) - + self.density.source = self.density.SOURCE_COEFFS self.specific_heat.source = self.specific_heat.SOURCE_COEFFS self.conductivity.source = self.conductivity.SOURCE_COEFFS self.viscosity.source = self.viscosity.SOURCE_COEFFS self.T_freeze.source = self.T_freeze.SOURCE_COEFFS - - + + class MelinderExample(CoefficientData): - """ + """ Methanol-Water mixture according to Melinder book Source: Book - """ + """ def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "ExampleMelinder" self.description = "Methanol solution" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmax = 40 + 273.15 self.Tmin = -50 + 273.15 self.xmax = 0.6 self.xmin = 0.0 self.xid = self.ifrac_mass self.TminPsat = self.Tmax - + self.Tbase = 3.5359 + 273.15; self.xbase = 30.5128 / 100.0 - + coeffs = np.array([ [-26.29 , 958.1 ,3887 , 0.4175 , 1.153 ], [ -0.000002575 , -0.4151 , 7.201 , 0.0007271 , -0.03866 ], @@ -300,7 +300,6 @@ class MelinderExample(CoefficientData): [ -0.0000000005407, -0.0000001325 , 0.000007373 , -0.0000000000004573, -0.0000000009105 ], [ 0.00000002363 , -0.00000007727 , 0.000006433 , -0.0000000002033 , -0.0000000008472 ] ]) - + self.setMelinderMatrix(coeffs) - - \ No newline at end of file + diff --git a/dev/incompressible_liquids/CPIncomp/MelinderFluids.py b/dev/incompressible_liquids/CPIncomp/MelinderFluids.py index c5a98d7c..55a55946 100644 --- a/dev/incompressible_liquids/CPIncomp/MelinderFluids.py +++ b/dev/incompressible_liquids/CPIncomp/MelinderFluids.py @@ -5,19 +5,20 @@ from CPIncomp.BaseObjects import IncompressibleFitter class DEBLiquidClass(CoefficientData,PureData): - """ + """ Pure fluid according to Melinder's book - """ + """ def __init__(self): CoefficientData.__init__(self) - PureData.__init__(self) + PureData.__init__(self) self.name = "DEB" self.description = "Diethylbenzene mixture - Dowtherm J Dow Chemical Co." - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin = -80.0 + 273.15 self.Tmax = 100.0 + 273.15 self.TminPsat = self.Tmax + self.Tbase = 0.0 self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL _,_,self.density.coeffs = IncompressibleFitter.shapeArray(np.array([1076.5,-0.731182])) @@ -29,8 +30,8 @@ class DEBLiquidClass(CoefficientData,PureData): _,_,self.viscosity.coeffs = IncompressibleFitter.shapeArray(np.array([3.5503,-0.0566396,7.03331e-05])) self.conductivity.type = self.conductivity.INCOMPRESSIBLE_POLYNOMIAL - _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([0.000189132,-2.06364e-07])) - + _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([0000.189132,-2.06364e-04])) + self.density.source = self.density.SOURCE_COEFFS self.specific_heat.source = self.specific_heat.SOURCE_COEFFS self.conductivity.source = self.conductivity.SOURCE_COEFFS @@ -38,19 +39,20 @@ class DEBLiquidClass(CoefficientData,PureData): class HCMLiquidClass(CoefficientData,PureData): - """ + """ Pure fluid according to Melinder's book - """ + """ def __init__(self): - CoefficientData.__init__(self) - PureData.__init__(self) + CoefficientData.__init__(self) + PureData.__init__(self) self.name = "HCM" self.description = "Hydrocarbon mixture (synthetic) - Therminol D12 (Gilotherm D12) Solutia" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin = -80.0 + 273.15 self.Tmax = 100.0 + 273.15 self.TminPsat = self.Tmax + self.Tbase = 0.0 self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL _,_,self.density.coeffs = IncompressibleFitter.shapeArray(np.array([971.725,-0.718788])) @@ -62,8 +64,8 @@ class HCMLiquidClass(CoefficientData,PureData): _,_,self.viscosity.coeffs = IncompressibleFitter.shapeArray(np.array([18.3237,-0.14706,0.000209096])) self.conductivity.type = self.conductivity.INCOMPRESSIBLE_POLYNOMIAL - _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([0.000153716,-1.51212e-07])) - + _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([0000.153716,-1.51212e-04])) + self.density.source = self.density.SOURCE_COEFFS self.specific_heat.source = self.specific_heat.SOURCE_COEFFS self.conductivity.source = self.conductivity.SOURCE_COEFFS @@ -71,19 +73,20 @@ class HCMLiquidClass(CoefficientData,PureData): class HFELiquidClass(CoefficientData,PureData): - """ + """ Pure fluid according to Melinder's book - """ + """ def __init__(self): - CoefficientData.__init__(self) - PureData.__init__(self) + CoefficientData.__init__(self) + PureData.__init__(self) self.name = "HFE" self.description = "Hydrofluoroether - HFE-7100 3M Novec" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin = -80.0 + 273.15 self.Tmax = 100.0 + 273.15 self.TminPsat = self.Tmax + self.Tbase = 0.0 self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL _,_,self.density.coeffs = IncompressibleFitter.shapeArray(np.array([1822.37,-0.918485])) @@ -95,8 +98,8 @@ class HFELiquidClass(CoefficientData,PureData): _,_,self.viscosity.coeffs = IncompressibleFitter.shapeArray(np.array([-4.22878,-0.0114765,7.39823e-06])) self.conductivity.type = self.conductivity.INCOMPRESSIBLE_POLYNOMIAL - _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([9.92958e-05,-8.33333e-08])) - + _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([9.92958e-01,-8.33333e-05])) + self.density.source = self.density.SOURCE_COEFFS self.specific_heat.source = self.specific_heat.SOURCE_COEFFS self.conductivity.source = self.conductivity.SOURCE_COEFFS @@ -104,19 +107,20 @@ class HFELiquidClass(CoefficientData,PureData): class PMS1LiquidClass(CoefficientData,PureData): - """ + """ Pure fluid according to Melinder's book - """ + """ def __init__(self): - CoefficientData.__init__(self) - PureData.__init__(self) + CoefficientData.__init__(self) + PureData.__init__(self) self.name = "PMS1" self.description = "Polydimethylsiloxan 1. - Baysilone KT3" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin = -80.0 + 273.15 self.Tmax = 100.0 + 273.15 self.TminPsat = self.Tmax + self.Tbase = 0.0 self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL _,_,self.density.coeffs = IncompressibleFitter.shapeArray(np.array([1172.35,-0.9025])) @@ -128,8 +132,8 @@ class PMS1LiquidClass(CoefficientData,PureData): _,_,self.viscosity.coeffs = IncompressibleFitter.shapeArray(np.array([6.36183,-0.0636352,7.51428e-05])) self.conductivity.type = self.conductivity.INCOMPRESSIBLE_POLYNOMIAL - _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([0.000207526,-2.84167e-07])) - + _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([0000.207526,-2.84167e-04])) + self.density.source = self.density.SOURCE_COEFFS self.specific_heat.source = self.specific_heat.SOURCE_COEFFS self.conductivity.source = self.conductivity.SOURCE_COEFFS @@ -137,19 +141,20 @@ class PMS1LiquidClass(CoefficientData,PureData): class PMS2LiquidClass(CoefficientData,PureData): - """ + """ Pure fluid according to Melinder's book - """ + """ def __init__(self): - CoefficientData.__init__(self) - PureData.__init__(self) + CoefficientData.__init__(self) + PureData.__init__(self) self.name = "PMS2" self.description = "Polydimethylsiloxan 2. - Syltherm XLT Dow Corning Co." - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin = -80.0 + 273.15 self.Tmax = 100.0 + 273.15 self.TminPsat = self.Tmax + self.Tbase = 0.0 self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL _,_,self.density.coeffs = IncompressibleFitter.shapeArray(np.array([1155.94,-1.02576])) @@ -161,8 +166,8 @@ class PMS2LiquidClass(CoefficientData,PureData): _,_,self.viscosity.coeffs = IncompressibleFitter.shapeArray(np.array([5.66926,-0.065582,8.09988e-05])) self.conductivity.type = self.conductivity.INCOMPRESSIBLE_POLYNOMIAL - _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([0.000172305,-2.11212e-07])) - + _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([0000.172305,-2.11212e-04])) + self.density.source = self.density.SOURCE_COEFFS self.specific_heat.source = self.specific_heat.SOURCE_COEFFS self.conductivity.source = self.conductivity.SOURCE_COEFFS @@ -170,19 +175,20 @@ class PMS2LiquidClass(CoefficientData,PureData): class SABLiquidClass(CoefficientData,PureData): - """ + """ Pure fluid according to Melinder's book - """ + """ def __init__(self): - CoefficientData.__init__(self) - PureData.__init__(self) + CoefficientData.__init__(self) + PureData.__init__(self) self.name = "SAB" self.description = "Synthetic alkyl benzene - Marlotherm X" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin = -80.0 + 273.15 self.Tmax = 100.0 + 273.15 self.TminPsat = self.Tmax + self.Tbase = 0.0 self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL _,_,self.density.coeffs = IncompressibleFitter.shapeArray(np.array([1102.34,-0.801667])) @@ -194,8 +200,8 @@ class SABLiquidClass(CoefficientData,PureData): _,_,self.viscosity.coeffs = IncompressibleFitter.shapeArray(np.array([5.21288,-0.0665792,8.5066e-05])) self.conductivity.type = self.conductivity.INCOMPRESSIBLE_POLYNOMIAL - _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([0.000208374,-2.61667e-07])) - + _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([0000.208374,-2.61667e-04])) + self.density.source = self.density.SOURCE_COEFFS self.specific_heat.source = self.specific_heat.SOURCE_COEFFS self.conductivity.source = self.conductivity.SOURCE_COEFFS @@ -203,19 +209,20 @@ class SABLiquidClass(CoefficientData,PureData): class HCBLiquidClass(CoefficientData,PureData): - """ + """ Pure fluid according to Melinder's book - """ + """ def __init__(self): - CoefficientData.__init__(self) - PureData.__init__(self) + CoefficientData.__init__(self) + PureData.__init__(self) self.name = "HCB" self.description = "Hydrocarbon blend - Dynalene MV" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin = -80.0 + 273.15 self.Tmax = 100.0 + 273.15 self.TminPsat = self.Tmax + self.Tbase = 0.0 self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL _,_,self.density.coeffs = IncompressibleFitter.shapeArray(np.array([1071.78,-0.772024])) @@ -227,8 +234,8 @@ class HCBLiquidClass(CoefficientData,PureData): _,_,self.viscosity.coeffs = IncompressibleFitter.shapeArray(np.array([7.16819,-0.0863212,0.000130604])) self.conductivity.type = self.conductivity.INCOMPRESSIBLE_POLYNOMIAL - _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([0.000203186,-2.3869e-07])) - + _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([0000.203186,-2.3869e-04])) + self.density.source = self.density.SOURCE_COEFFS self.specific_heat.source = self.specific_heat.SOURCE_COEFFS self.conductivity.source = self.conductivity.SOURCE_COEFFS @@ -236,19 +243,20 @@ class HCBLiquidClass(CoefficientData,PureData): class TCOLiquidClass(CoefficientData,PureData): - """ + """ Pure fluid according to Melinder's book - """ + """ def __init__(self): - CoefficientData.__init__(self) - PureData.__init__(self) + CoefficientData.__init__(self) + PureData.__init__(self) self.name = "TCO" self.description = "Terpene from citrus oils - d-Limonene" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin = -80.0 + 273.15 self.Tmax = 100.0 + 273.15 self.TminPsat = self.Tmax + self.Tbase = 0.0 self.density.type = self.density.INCOMPRESSIBLE_POLYNOMIAL _,_,self.density.coeffs = IncompressibleFitter.shapeArray(np.array([1071.02,-0.778166])) @@ -260,8 +268,8 @@ class TCOLiquidClass(CoefficientData,PureData): _,_,self.viscosity.coeffs = IncompressibleFitter.shapeArray(np.array([-3.47971,-0.0107031,1.14086e-06])) self.conductivity.type = self.conductivity.INCOMPRESSIBLE_POLYNOMIAL - _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([0.000174156,-1.85052e-07])) - + _,_,self.conductivity.coeffs = IncompressibleFitter.shapeArray(np.array([0000.174156,-1.85052e-04])) + self.density.source = self.density.SOURCE_COEFFS self.specific_heat.source = self.specific_heat.SOURCE_COEFFS self.conductivity.source = self.conductivity.SOURCE_COEFFS @@ -275,18 +283,18 @@ class TCOLiquidClass(CoefficientData,PureData): - - + + class EGSolution(CoefficientData): def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "MEG" self.description = "Ethylene Glycol" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin =-100 + 273.15 self.Tmax = 100 + 273.15 - self.TminPsat = self.Tmax + self.TminPsat = self.Tmax self.xmin = 0.0 self.xmax = 0.6 @@ -317,18 +325,18 @@ class EGSolution(CoefficientData): ]) self.setMelinderMatrix(coeffs) - + class PGSolution(CoefficientData): def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "MPG" self.description = "Propylene Glycol" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin =-100 + 273.15 self.Tmax = 100 + 273.15 - self.TminPsat = self.Tmax + self.TminPsat = self.Tmax self.xmin = 0.0 self.xmax = 0.6 @@ -359,18 +367,18 @@ class PGSolution(CoefficientData): ]) self.setMelinderMatrix(coeffs) - + class EASolution(CoefficientData): def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "MEA" self.description = "Ethyl Alcohol (Ethanol)" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin =-100 + 273.15 self.Tmax = 40 + 273.15 - self.TminPsat = self.Tmax + self.TminPsat = self.Tmax self.xmin = 0.0 self.xmax = 0.6 @@ -401,18 +409,18 @@ class EASolution(CoefficientData): ]) self.setMelinderMatrix(coeffs) - + class MASolution(CoefficientData): def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "MMA" self.description = "Methyl Alcohol (Methanol)" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin =-100 + 273.15 self.Tmax = 40 + 273.15 - self.TminPsat = self.Tmax + self.TminPsat = self.Tmax self.xmin = 0.0 self.xmax = 0.6 @@ -444,18 +452,18 @@ class MASolution(CoefficientData): ]) self.setMelinderMatrix(coeffs) - + class GLSolution(CoefficientData): def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "MGL" self.description = "Glycerol" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin =-100 + 273.15 self.Tmax = 40 + 273.15 - self.TminPsat = self.Tmax + self.TminPsat = self.Tmax self.xmin = 0.0 self.xmax = 0.6 @@ -486,18 +494,18 @@ class GLSolution(CoefficientData): ]) self.setMelinderMatrix(coeffs) - + class AMSolution(CoefficientData): def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "MAM" self.description = "Ammonia (NH3)" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin =-100 + 273.15 self.Tmax = 30 + 273.15 - self.TminPsat = self.Tmax + self.TminPsat = self.Tmax self.xmin = 0.0 self.xmax = 0.3 @@ -528,18 +536,18 @@ class AMSolution(CoefficientData): ]) self.setMelinderMatrix(coeffs) - + class KCSolution(CoefficientData): def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "MKC" self.description = "Potassium Carbonate (K2CO3)" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin =-100 + 273.15 self.Tmax = 40 + 273.15 - self.TminPsat = self.Tmax + self.TminPsat = self.Tmax self.xmin = 0.0 self.xmax = 0.4 @@ -570,18 +578,18 @@ class KCSolution(CoefficientData): ]) self.setMelinderMatrix(coeffs) - + class CASolution(CoefficientData): def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "MCA" self.description = "Calcium Chloride (CaCl2)" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin =-100.0 + 273.15 self.Tmax = 40.0 + 273.15 - self.TminPsat = self.Tmax + self.TminPsat = self.Tmax self.xmin = 0.0 self.xmax = 0.3 @@ -612,18 +620,18 @@ class CASolution(CoefficientData): ]) self.setMelinderMatrix(coeffs) - + class MGSolution(CoefficientData): def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "MMG" self.description = "(MgCl2)" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin =-100.0 + 273.15 self.Tmax = 40.0 + 273.15 - self.TminPsat = self.Tmax + self.TminPsat = self.Tmax self.xmin = 0.0 self.xmax = 0.3 @@ -654,18 +662,18 @@ class MGSolution(CoefficientData): ]) self.setMelinderMatrix(coeffs) - + class NASolution(CoefficientData): def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "MNA" self.description = "Sodium Chloride (NaCl)" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin =-100.0 + 273.15 self.Tmax = 40.0 + 273.15 - self.TminPsat = self.Tmax + self.TminPsat = self.Tmax self.xmin = 0.0 self.xmax = 0.23 @@ -696,18 +704,18 @@ class NASolution(CoefficientData): ]) self.setMelinderMatrix(coeffs) - + class KASolution(CoefficientData): def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "MKA" self.description = "Potassium Acetate (CH3CO2K)" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin =-100.0 + 273.15 self.Tmax = 40.0 + 273.15 - self.TminPsat = self.Tmax + self.TminPsat = self.Tmax self.xmin = 0.0 self.xmax = 0.45 @@ -738,18 +746,18 @@ class KASolution(CoefficientData): ]) self.setMelinderMatrix(coeffs) - + class KFSolution(CoefficientData): def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "MKF" self.description = "Potassium Formate (CHKO2)" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin =-100.0 + 273.15 self.Tmax = 40.0 + 273.15 - self.TminPsat = self.Tmax + self.TminPsat = self.Tmax self.xmin = 0.0 self.xmax = 0.48 @@ -780,18 +788,18 @@ class KFSolution(CoefficientData): ]) self.setMelinderMatrix(coeffs) - + class LISolution(CoefficientData): def __init__(self): - CoefficientData.__init__(self) + CoefficientData.__init__(self) self.name = "MLI" self.description = "Lithium Chloride (LiCl)" - self.reference = "Melinder-BOOK-2010" + self.reference = "Melinder2010" self.Tmin =-100.0 + 273.15 self.Tmax = 40.0 + 273.15 - self.TminPsat = self.Tmax + self.TminPsat = self.Tmax self.xmin = 0.0 self.xmax = 0.24 @@ -822,4 +830,4 @@ class LISolution(CoefficientData): ]) self.setMelinderMatrix(coeffs) - + diff --git a/dev/incompressible_liquids/CPIncomp/PureFluids.py b/dev/incompressible_liquids/CPIncomp/PureFluids.py index 97825273..70c72901 100644 --- a/dev/incompressible_liquids/CPIncomp/PureFluids.py +++ b/dev/incompressible_liquids/CPIncomp/PureFluids.py @@ -1,13 +1,13 @@ from __future__ import division, print_function import numpy as np from CPIncomp.DataObjects import PureData - + class TherminolD12(PureData): - """ + """ Heat transfer fluid Therminol D12 by Solutia """ def __init__(self): - PureData.__init__(self) + PureData.__init__(self) self.density.source = self.density.SOURCE_DATA self.specific_heat.source = self.specific_heat.SOURCE_DATA self.conductivity.source = self.conductivity.SOURCE_DATA @@ -17,22 +17,22 @@ class TherminolD12(PureData): self.density.data = np.array([+8.35000E+2, +8.32000E+2, +8.28000E+2, +8.25000E+2, +8.22000E+2, +8.18000E+2, +8.15000E+2, +8.11000E+2, +8.08000E+2, +8.05000E+2, +8.01000E+2, +7.98000E+2, +7.94000E+2, +7.91000E+2, +7.87000E+2, +7.84000E+2, +7.80000E+2, +7.77000E+2, +7.73000E+2, +7.70000E+2, +7.66000E+2, +7.62000E+2, +7.59000E+2, +7.55000E+2, +7.52000E+2, +7.48000E+2, +7.44000E+2, +7.41000E+2, +7.37000E+2, +7.33000E+2, +7.29000E+2, +7.26000E+2, +7.22000E+2, +7.18000E+2, +7.14000E+2, +7.10000E+2, +7.06000E+2, +7.03000E+2, +6.99000E+2, +6.95000E+2, +6.91000E+2, +6.87000E+2, +6.82000E+2, +6.78000E+2, +6.74000E+2, +6.70000E+2, +6.66000E+2, +6.61000E+2, +6.57000E+2, +6.53000E+2, +6.48000E+2, +6.44000E+2, +6.39000E+2, +6.35000E+2, +6.30000E+2, +6.25000E+2, +6.20000E+2, +6.16000E+2, +6.11000E+2, +6.06000E+2, +6.00000E+2, +5.95000E+2, +5.90000E+2, +5.84000E+2]) # kg/m3 self.specific_heat.data = np.array([+1.69400E+0, +1.71200E+0, +1.73100E+0, +1.75000E+0, +1.76800E+0, +1.78700E+0, +1.80600E+0, +1.82400E+0, +1.84300E+0, +1.86200E+0, +1.88100E+0, +1.90000E+0, +1.91900E+0, +1.93800E+0, +1.95700E+0, +1.97700E+0, +1.99600E+0, +2.01500E+0, +2.03500E+0, +2.05400E+0, +2.07300E+0, +2.09300E+0, +2.11300E+0, +2.13200E+0, +2.15200E+0, +2.17200E+0, +2.19100E+0, +2.21100E+0, +2.23100E+0, +2.25100E+0, +2.27100E+0, +2.29100E+0, +2.31200E+0, +2.33200E+0, +2.35200E+0, +2.37300E+0, +2.39300E+0, +2.41400E+0, +2.43400E+0, +2.45500E+0, +2.47600E+0, +2.49600E+0, +2.51700E+0, +2.53800E+0, +2.55900E+0, +2.58000E+0, +2.60200E+0, +2.62300E+0, +2.64400E+0, +2.66600E+0, +2.68700E+0, +2.70900E+0, +2.73100E+0, +2.75300E+0, +2.77500E+0, +2.79700E+0, +2.82000E+0, +2.84200E+0, +2.86500E+0, +2.88800E+0, +2.91100E+0, +2.93500E+0, +2.95900E+0, +2.98300E+0])*1000. # J/kg-K self.conductivity.data = np.array([+1.24400E-1, +1.23800E-1, +1.23200E-1, +1.22500E-1, +1.21900E-1, +1.21300E-1, +1.20600E-1, +1.20000E-1, +1.19300E-1, +1.18600E-1, +1.18000E-1, +1.17300E-1, +1.16600E-1, +1.15900E-1, +1.15200E-1, +1.14500E-1, +1.13700E-1, +1.13000E-1, +1.12200E-1, +1.11500E-1, +1.10700E-1, +1.10000E-1, +1.09200E-1, +1.08400E-1, +1.07600E-1, +1.06800E-1, +1.06000E-1, +1.05200E-1, +1.04400E-1, +1.03500E-1, +1.02700E-1, +1.01900E-1, +1.01000E-1, +1.00100E-1, +9.93000E-2, +9.84000E-2, +9.75000E-2, +9.66000E-2, +9.57000E-2, +9.48000E-2, +9.39000E-2, +9.29000E-2, +9.20000E-2, +9.10000E-2, +9.01000E-2, +8.91000E-2, +8.82000E-2, +8.72000E-2, +8.62000E-2, +8.52000E-2, +8.42000E-2, +8.32000E-2, +8.22000E-2, +8.12000E-2, +8.01000E-2, +7.91000E-2, +7.80000E-2, +7.70000E-2, +7.59000E-2, +7.48000E-2, +7.38000E-2, +7.27000E-2, +7.16000E-2, +7.05000E-2]) # W/m-K - self.viscosity.data = np.array([+3.59000E-1, +1.77000E-1, +9.59000E-2, +5.64000E-2, +3.55000E-2, +2.36000E-2, +1.65000E-2, +1.20000E-2, +9.07000E-3, +7.06000E-3, +5.63000E-3, +4.60000E-3, +3.82000E-3, +3.24000E-3, +2.78000E-3, +2.41000E-3, +2.12000E-3, +1.88000E-3, +1.69000E-3, +1.52000E-3, +1.38000E-3, +1.26000E-3, +1.16000E-3, +1.07000E-3, +9.88000E-4, +9.18000E-4, +8.56000E-4, +8.00000E-4, +7.50000E-4, +7.05000E-4, +6.64000E-4, +6.26000E-4, +5.92000E-4, +5.61000E-4, +5.31000E-4, +5.04000E-4, +4.79000E-4, +4.56000E-4, +4.35000E-4, +4.14000E-4, +3.95000E-4, +3.78000E-4, +3.61000E-4, +3.45000E-4, +3.30000E-4, +3.16000E-4, +3.03000E-4, +2.90000E-4, +2.78000E-4, +2.67000E-4, +2.57000E-4, +2.46000E-4, +2.37000E-4, +2.27000E-4, +2.19000E-4, +2.10000E-4, +2.02000E-4, +1.95000E-4, +1.87000E-4, +1.80000E-4, +1.74000E-4, +1.67000E-4, +1.61000E-4, +1.56000E-4]) # Pa-s - self.saturation_pressure.data = np.array([+4.75000E-9, +2.07000E-8, +8.08000E-8, +2.81000E-7, +8.86000E-7, +2.56000E-6, +6.82000E-6, +1.70000E-5, +3.96000E-5, +8.75000E-5, +1.84000E-4, +3.68000E-4, +7.06000E-4, +1.30000E-3, +2.33000E-3, +4.02000E-3, +6.75000E-3, +1.10000E-2, +1.76000E-2, +2.73000E-2, +4.16000E-2, +6.21000E-2, +9.10000E-2, +1.31000E-1, +1.86000E-1, +2.59000E-1, +3.56000E-1, +4.84000E-1, +6.48000E-1, +8.59000E-1, +1.13000E+0, +1.46000E+0, +1.88000E+0, +2.39000E+0, +3.01000E+0, +3.77000E+0, +4.68000E+0, +5.76000E+0, +7.05000E+0, +8.57000E+0, +1.03000E+1, +1.24000E+1, +1.48000E+1, +1.76000E+1, +2.08000E+1, +2.44000E+1, +2.85000E+1, +3.32000E+1, +3.84000E+1, +4.43000E+1, +5.09000E+1, +5.83000E+1, +6.64000E+1, +7.55000E+1, +8.55000E+1, +9.65000E+1, +1.09000E+2, +1.22000E+2, +1.36000E+2, +1.52000E+2, +1.69000E+2, +1.88000E+2, +2.08000E+2, +2.29000E+2])*1000. # Pa + self.viscosity.data = np.array([+3.59000E-1, +1.77000E-1, +9.59000E-2, +5.64000E-2, +3.55000E-2, +2.36000E-2, +1.65000E-2, +1.20000E-2, +9.07000E-3, +7.06000E-3, +5.63000E-3, +4.60000E-3, +3.82000E-3, +3.24000E-3, +2.78000E-3, +2.41000E-3, +2.12000E-3, +1.88000E-3, +1.69000E-3, +1.52000E-3, +1.38000E-3, +1.26000E-3, +1.16000E-3, +1.07000E-3, +9.88000E-4, +9.18000E-4, +8.56000E-4, +8.00000E-4, +7.50000E-4, +7.05000E-4, +6.64000E-4, +6.26000E-4, +5.92000E-4, +5.61000E-4, +5.31000E-4, +5.04000E-4, +4.79000E-4, +4.56000E-4, +4.35000E-4, +4.14000E-4, +3.95000E-4, +3.78000E-4, +3.61000E-4, +3.45000E-4, +3.30000E-4, +3.16000E-4, +3.03000E-4, +2.90000E-4, +2.78000E-4, +2.67000E-4, +2.57000E-4, +2.46000E-4, +2.37000E-4, +2.27000E-4, +2.19000E-4, +2.10000E-4, +2.02000E-4, +1.95000E-4, +1.87000E-4, +1.80000E-4, +1.74000E-4, +1.67000E-4, +1.61000E-4, +1.56000E-4]) # Pa-s + self.saturation_pressure.data = np.array([+4.75000E-9, +2.07000E-8, +8.08000E-8, +2.81000E-7, +8.86000E-7, +2.56000E-6, +6.82000E-6, +1.70000E-5, +3.96000E-5, +8.75000E-5, +1.84000E-4, +3.68000E-4, +7.06000E-4, +1.30000E-3, +2.33000E-3, +4.02000E-3, +6.75000E-3, +1.10000E-2, +1.76000E-2, +2.73000E-2, +4.16000E-2, +6.21000E-2, +9.10000E-2, +1.31000E-1, +1.86000E-1, +2.59000E-1, +3.56000E-1, +4.84000E-1, +6.48000E-1, +8.59000E-1, +1.13000E+0, +1.46000E+0, +1.88000E+0, +2.39000E+0, +3.01000E+0, +3.77000E+0, +4.68000E+0, +5.76000E+0, +7.05000E+0, +8.57000E+0, +1.03000E+1, +1.24000E+1, +1.48000E+1, +1.76000E+1, +2.08000E+1, +2.44000E+1, +2.85000E+1, +3.32000E+1, +3.84000E+1, +4.43000E+1, +5.09000E+1, +5.83000E+1, +6.64000E+1, +7.55000E+1, +8.55000E+1, +9.65000E+1, +1.09000E+2, +1.22000E+2, +1.36000E+2, +1.52000E+2, +1.69000E+2, +1.88000E+2, +2.08000E+2, +2.29000E+2])*1000. # Pa self.Tmin = np.min(self.temperature.data) self.Tmax = np.max(self.temperature.data) self.TminPsat = self.Tmin - self.name = "TD12" + self.name = "TD12" self.description = "TherminolD12" - self.reference = "Therminol Heat Transfer Reference Disk" + self.reference = "Therminol2014" self.reshapeAll() class TherminolVP1(PureData): - """ + """ Heat transfer fluid Therminol VP-1 by Solutia """ def __init__(self): - PureData.__init__(self) + PureData.__init__(self) self.density.source = self.density.SOURCE_DATA self.specific_heat.source = self.specific_heat.SOURCE_DATA self.conductivity.source = self.conductivity.SOURCE_DATA @@ -42,23 +42,23 @@ class TherminolVP1(PureData): self.density.data = np.array([+1.07000E+3, +1.07000E+3, +1.06000E+3, +1.06000E+3, +1.05000E+3, +1.05000E+3, +1.05000E+3, +1.04000E+3, +1.04000E+3, +1.03000E+3, +1.03000E+3, +1.03000E+3, +1.02000E+3, +1.02000E+3, +1.01000E+3, +1.01000E+3, +1.01000E+3, +1.00000E+3, +9.97000E+2, +9.93000E+2, +9.88000E+2, +9.84000E+2, +9.80000E+2, +9.76000E+2, +9.72000E+2, +9.67000E+2, +9.63000E+2, +9.59000E+2, +9.55000E+2, +9.50000E+2, +9.46000E+2, +9.42000E+2, +9.37000E+2, +9.33000E+2, +9.29000E+2, +9.24000E+2, +9.20000E+2, +9.15000E+2, +9.11000E+2, +9.06000E+2, +9.02000E+2, +8.98000E+2, +8.93000E+2, +8.89000E+2, +8.84000E+2, +8.79000E+2, +8.75000E+2, +8.70000E+2, +8.65000E+2, +8.60000E+2, +8.56000E+2, +8.51000E+2, +8.46000E+2, +8.41000E+2, +8.36000E+2, +8.31000E+2, +8.25000E+2, +8.20000E+2, +8.15000E+2, +8.10000E+2, +8.04000E+2, +7.99000E+2, +7.93000E+2, +7.88000E+2, +7.82000E+2, +7.76000E+2, +7.70000E+2, +7.65000E+2, +7.59000E+2, +7.52000E+2, +7.46000E+2, +7.40000E+2, +7.33000E+2, +7.27000E+2, +7.20000E+2, +7.13000E+2, +7.06000E+2, +6.99000E+2]) # kg/m3 self.specific_heat.data = np.array([+1.52300E+0, +1.53700E+0, +1.55200E+0, +1.56600E+0, +1.58100E+0, +1.59600E+0, +1.61000E+0, +1.62400E+0, +1.63900E+0, +1.65300E+0, +1.66800E+0, +1.68200E+0, +1.69600E+0, +1.71000E+0, +1.72400E+0, +1.73900E+0, +1.75300E+0, +1.76700E+0, +1.78100E+0, +1.79500E+0, +1.80900E+0, +1.82200E+0, +1.83600E+0, +1.85000E+0, +1.86400E+0, +1.87800E+0, +1.89100E+0, +1.90500E+0, +1.91900E+0, +1.93200E+0, +1.94600E+0, +1.95900E+0, +1.97300E+0, +1.98600E+0, +2.00000E+0, +2.01300E+0, +2.02700E+0, +2.04000E+0, +2.05400E+0, +2.06700E+0, +2.08000E+0, +2.09300E+0, +2.10700E+0, +2.12000E+0, +2.13300E+0, +2.14700E+0, +2.16000E+0, +2.17300E+0, +2.18600E+0, +2.19900E+0, +2.21300E+0, +2.22600E+0, +2.23900E+0, +2.25200E+0, +2.26600E+0, +2.27900E+0, +2.29300E+0, +2.30600E+0, +2.31900E+0, +2.33300E+0, +2.34700E+0, +2.36000E+0, +2.37400E+0, +2.38800E+0, +2.40200E+0, +2.41600E+0, +2.43100E+0, +2.44600E+0, +2.46000E+0, +2.47600E+0, +2.49100E+0, +2.50700E+0, +2.52300E+0, +2.54000E+0, +2.55800E+0, +2.57600E+0, +2.59500E+0, +2.61500E+0])*1000. # J/kg-K self.conductivity.data = np.array([+1.37000E-1, +1.36600E-1, +1.36100E-1, +1.35600E-1, +1.35200E-1, +1.34700E-1, +1.34200E-1, +1.33600E-1, +1.33100E-1, +1.32600E-1, +1.32000E-1, +1.31500E-1, +1.30900E-1, +1.30400E-1, +1.29800E-1, +1.29200E-1, +1.28600E-1, +1.28000E-1, +1.27400E-1, +1.26800E-1, +1.26200E-1, +1.25600E-1, +1.24900E-1, +1.24300E-1, +1.23600E-1, +1.22900E-1, +1.22300E-1, +1.21600E-1, +1.20900E-1, +1.20200E-1, +1.19500E-1, +1.18700E-1, +1.18000E-1, +1.17300E-1, +1.16500E-1, +1.15800E-1, +1.15000E-1, +1.14200E-1, +1.13500E-1, +1.12700E-1, +1.11900E-1, +1.11100E-1, +1.10300E-1, +1.09400E-1, +1.08600E-1, +1.07800E-1, +1.06900E-1, +1.06000E-1, +1.05200E-1, +1.04300E-1, +1.03400E-1, +1.02500E-1, +1.01600E-1, +1.00700E-1, +9.98000E-2, +9.89000E-2, +9.79000E-2, +9.70000E-2, +9.60000E-2, +9.51000E-2, +9.41000E-2, +9.31000E-2, +9.21000E-2, +9.11000E-2, +9.01000E-2, +8.91000E-2, +8.81000E-2, +8.71000E-2, +8.60000E-2, +8.50000E-2, +8.39000E-2, +8.29000E-2, +8.18000E-2, +8.07000E-2, +7.96000E-2, +7.85000E-2, +7.74000E-2, +7.63000E-2]) # W/m-K - self.viscosity.data = np.array([+5.48000E-3, +4.68000E-3, +4.05000E-3, +3.54000E-3, +3.12000E-3, +2.78000E-3, +2.49000E-3, +2.24000E-3, +2.04000E-3, +1.86000E-3, +1.70000E-3, +1.57000E-3, +1.45000E-3, +1.34000E-3, +1.25000E-3, +1.16000E-3, +1.09000E-3, +1.02000E-3, +9.62000E-4, +9.06000E-4, +8.56000E-4, +8.10000E-4, +7.68000E-4, +7.29000E-4, +6.93000E-4, +6.60000E-4, +6.30000E-4, +6.01000E-4, +5.75000E-4, +5.51000E-4, +5.28000E-4, +5.06000E-4, +4.86000E-4, +4.67000E-4, +4.50000E-4, +4.33000E-4, +4.18000E-4, +4.03000E-4, +3.89000E-4, +3.76000E-4, +3.64000E-4, +3.52000E-4, +3.41000E-4, +3.30000E-4, +3.20000E-4, +3.10000E-4, +3.01000E-4, +2.93000E-4, +2.84000E-4, +2.77000E-4, +2.69000E-4, +2.62000E-4, +2.55000E-4, +2.48000E-4, +2.42000E-4, +2.36000E-4, +2.30000E-4, +2.25000E-4, +2.19000E-4, +2.14000E-4, +2.09000E-4, +2.04000E-4, +2.00000E-4, +1.96000E-4, +1.91000E-4, +1.87000E-4, +1.83000E-4, +1.80000E-4, +1.76000E-4, +1.72000E-4, +1.69000E-4, +1.66000E-4, +1.62000E-4, +1.59000E-4, +1.56000E-4, +1.53000E-4, +1.51000E-4, +1.48000E-4]) # Pa-s - self.saturation_pressure.data = np.array([+5.76000E-4, +9.86000E-4, +1.65000E-3, +2.68000E-3, +4.27000E-3, +6.67000E-3, +1.02000E-2, +1.53000E-2, +2.26000E-2, +3.29000E-2, +4.71000E-2, +6.65000E-2, +9.26000E-2, +1.27000E-1, +1.73000E-1, +2.32000E-1, +3.09000E-1, +4.07000E-1, +5.30000E-1, +6.85000E-1, +8.77000E-1, +1.11000E+0, +1.40000E+0, +1.76000E+0, +2.18000E+0, +2.70000E+0, +3.31000E+0, +4.03000E+0, +4.88000E+0, +5.88000E+0, +7.05000E+0, +8.40000E+0, +9.96000E+0, +1.18000E+1, +1.38000E+1, +1.62000E+1, +1.89000E+1, +2.19000E+1, +2.53000E+1, +2.92000E+1, +3.35000E+1, +3.84000E+1, +4.37000E+1, +4.97000E+1, +5.63000E+1, +6.37000E+1, +7.17000E+1, +8.06000E+1, +9.03000E+1, +1.01000E+2, +1.13000E+2, +1.25000E+2, +1.39000E+2, +1.54000E+2, +1.70000E+2, +1.87000E+2, +2.06000E+2, +2.26000E+2, +2.48000E+2, +2.71000E+2, +2.96000E+2, +3.23000E+2, +3.51000E+2, +3.82000E+2, +4.14000E+2, +4.48000E+2, +4.85000E+2, +5.24000E+2, +5.64000E+2, +6.08000E+2, +6.54000E+2, +7.02000E+2, +7.53000E+2, +8.06000E+2, +8.62000E+2, +9.21000E+2, +9.83000E+2, +1.05000E+3])*1000. # Pa + self.viscosity.data = np.array([+5.48000E-3, +4.68000E-3, +4.05000E-3, +3.54000E-3, +3.12000E-3, +2.78000E-3, +2.49000E-3, +2.24000E-3, +2.04000E-3, +1.86000E-3, +1.70000E-3, +1.57000E-3, +1.45000E-3, +1.34000E-3, +1.25000E-3, +1.16000E-3, +1.09000E-3, +1.02000E-3, +9.62000E-4, +9.06000E-4, +8.56000E-4, +8.10000E-4, +7.68000E-4, +7.29000E-4, +6.93000E-4, +6.60000E-4, +6.30000E-4, +6.01000E-4, +5.75000E-4, +5.51000E-4, +5.28000E-4, +5.06000E-4, +4.86000E-4, +4.67000E-4, +4.50000E-4, +4.33000E-4, +4.18000E-4, +4.03000E-4, +3.89000E-4, +3.76000E-4, +3.64000E-4, +3.52000E-4, +3.41000E-4, +3.30000E-4, +3.20000E-4, +3.10000E-4, +3.01000E-4, +2.93000E-4, +2.84000E-4, +2.77000E-4, +2.69000E-4, +2.62000E-4, +2.55000E-4, +2.48000E-4, +2.42000E-4, +2.36000E-4, +2.30000E-4, +2.25000E-4, +2.19000E-4, +2.14000E-4, +2.09000E-4, +2.04000E-4, +2.00000E-4, +1.96000E-4, +1.91000E-4, +1.87000E-4, +1.83000E-4, +1.80000E-4, +1.76000E-4, +1.72000E-4, +1.69000E-4, +1.66000E-4, +1.62000E-4, +1.59000E-4, +1.56000E-4, +1.53000E-4, +1.51000E-4, +1.48000E-4]) # Pa-s + self.saturation_pressure.data = np.array([+5.76000E-4, +9.86000E-4, +1.65000E-3, +2.68000E-3, +4.27000E-3, +6.67000E-3, +1.02000E-2, +1.53000E-2, +2.26000E-2, +3.29000E-2, +4.71000E-2, +6.65000E-2, +9.26000E-2, +1.27000E-1, +1.73000E-1, +2.32000E-1, +3.09000E-1, +4.07000E-1, +5.30000E-1, +6.85000E-1, +8.77000E-1, +1.11000E+0, +1.40000E+0, +1.76000E+0, +2.18000E+0, +2.70000E+0, +3.31000E+0, +4.03000E+0, +4.88000E+0, +5.88000E+0, +7.05000E+0, +8.40000E+0, +9.96000E+0, +1.18000E+1, +1.38000E+1, +1.62000E+1, +1.89000E+1, +2.19000E+1, +2.53000E+1, +2.92000E+1, +3.35000E+1, +3.84000E+1, +4.37000E+1, +4.97000E+1, +5.63000E+1, +6.37000E+1, +7.17000E+1, +8.06000E+1, +9.03000E+1, +1.01000E+2, +1.13000E+2, +1.25000E+2, +1.39000E+2, +1.54000E+2, +1.70000E+2, +1.87000E+2, +2.06000E+2, +2.26000E+2, +2.48000E+2, +2.71000E+2, +2.96000E+2, +3.23000E+2, +3.51000E+2, +3.82000E+2, +4.14000E+2, +4.48000E+2, +4.85000E+2, +5.24000E+2, +5.64000E+2, +6.08000E+2, +6.54000E+2, +7.02000E+2, +7.53000E+2, +8.06000E+2, +8.62000E+2, +9.21000E+2, +9.83000E+2, +1.05000E+3])*1000. # Pa self.Tmin = np.min(self.temperature.data) self.Tmax = np.max(self.temperature.data) - self.TminPsat = self.Tmin - self.name = "TVP1" + self.TminPsat = self.Tmin + self.name = "TVP1" self.description = "TherminolVP1" - self.reference = "Therminol Heat Transfer Reference Disk" + self.reference = "Therminol2014" self.reshapeAll() - - + + class Therminol66(PureData): - """ + """ Heat transfer fluid Therminol 66 by Solutia """ def __init__(self): - PureData.__init__(self) + PureData.__init__(self) self.density.source = self.density.SOURCE_DATA self.specific_heat.source = self.specific_heat.SOURCE_DATA self.conductivity.source = self.conductivity.SOURCE_DATA @@ -72,19 +72,19 @@ class Therminol66(PureData): self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, 1.0000E+01, 2.0000E+01, 3.0000E+01, 5.0000E+01, 8.0000E+01, 1.2000E+02, 1.8000E+02, 2.7000E+02, 4.0000E+02, 5.8000E+02, 8.3000E+02, 1.1700E+03, 1.6200E+03, 2.2300E+03, 3.0200E+03, 4.0600E+03, 5.3900E+03, 7.1000E+03, 9.2500E+03, 1.1950E+04, 1.5310E+04, 1.9460E+04, 2.4550E+04, 3.0730E+04, 3.8220E+04, 4.7200E+04, 5.7940E+04, 7.0680E+04, 8.5740E+04, 1.0342E+05, 1.2409E+05, 1.4813E+05]) self.Tmin = np.min(self.temperature.data) self.Tmax = np.max(self.temperature.data) - self.TminPsat = 70+273.15 - self.name = "T66" + self.TminPsat = 70+273.15 + self.name = "T66" self.description = "Therminol66" - self.reference = "Therminol Heat Transfer Reference Disk" - self.reshapeAll() - - + self.reference = "Therminol2014" + self.reshapeAll() + + class Therminol72(PureData): - """ + """ Heat transfer fluid Therminol 72 by Solutia """ def __init__(self): - PureData.__init__(self) + PureData.__init__(self) self.density.source = self.density.SOURCE_DATA self.specific_heat.source = self.specific_heat.SOURCE_DATA self.conductivity.source = self.conductivity.SOURCE_DATA @@ -94,24 +94,24 @@ class Therminol72(PureData): self.density.data = np.array([+1.11000E+3, +1.10000E+3, +1.10000E+3, +1.09000E+3, +1.09000E+3, +1.08000E+3, +1.08000E+3, +1.07000E+3, +1.07000E+3, +1.07000E+3, +1.06000E+3, +1.06000E+3, +1.05000E+3, +1.05000E+3, +1.04000E+3, +1.04000E+3, +1.03000E+3, +1.03000E+3, +1.02000E+3, +1.02000E+3, +1.02000E+3, +1.01000E+3, +1.01000E+3, +1.00000E+3, +9.97000E+2, +9.93000E+2, +9.88000E+2, +9.84000E+2, +9.79000E+2, +9.74000E+2, +9.70000E+2, +9.65000E+2, +9.61000E+2, +9.56000E+2, +9.52000E+2, +9.47000E+2, +9.43000E+2, +9.38000E+2, +9.34000E+2, +9.29000E+2, +9.25000E+2, +9.20000E+2, +9.16000E+2, +9.11000E+2, +9.06000E+2, +9.02000E+2, +8.98000E+2, +8.93000E+2, +8.89000E+2, +8.84000E+2, +8.80000E+2, +8.75000E+2, +8.71000E+2, +8.66000E+2, +8.62000E+2, +8.57000E+2, +8.53000E+2, +8.48000E+2, +8.44000E+2, +8.39000E+2, +8.34000E+2, +8.30000E+2, +8.25000E+2, +8.21000E+2, +8.16000E+2, +8.12000E+2, +8.07000E+2, +8.03000E+2, +7.98000E+2, +7.94000E+2, +7.89000E+2, +7.85000E+2, +7.80000E+2, +7.76000E+2, +7.71000E+2, +7.66000E+2, +7.62000E+2, +7.57000E+2, +7.53000E+2]) # kg/m3 self.specific_heat.data = np.array([+1.47100E+0, +1.48400E+0, +1.49800E+0, +1.51200E+0, +1.52500E+0, +1.53900E+0, +1.55200E+0, +1.56600E+0, +1.57900E+0, +1.59300E+0, +1.60600E+0, +1.62000E+0, +1.63400E+0, +1.64700E+0, +1.66100E+0, +1.67400E+0, +1.68800E+0, +1.70100E+0, +1.71500E+0, +1.72800E+0, +1.74200E+0, +1.75500E+0, +1.76900E+0, +1.78300E+0, +1.79600E+0, +1.81000E+0, +1.82300E+0, +1.83700E+0, +1.85000E+0, +1.86400E+0, +1.87700E+0, +1.89100E+0, +1.90500E+0, +1.91800E+0, +1.93200E+0, +1.94500E+0, +1.95900E+0, +1.97200E+0, +1.98600E+0, +1.99900E+0, +2.01300E+0, +2.02600E+0, +2.04000E+0, +2.05400E+0, +2.06700E+0, +2.08100E+0, +2.09400E+0, +2.10800E+0, +2.12100E+0, +2.13500E+0, +2.14800E+0, +2.16200E+0, +2.17600E+0, +2.18900E+0, +2.20300E+0, +2.21600E+0, +2.23000E+0, +2.24300E+0, +2.25700E+0, +2.27000E+0, +2.28400E+0, +2.29700E+0, +2.31100E+0, +2.32500E+0, +2.33800E+0, +2.35200E+0, +2.36500E+0, +2.37900E+0, +2.39200E+0, +2.40600E+0, +2.41900E+0, +2.43300E+0, +2.44600E+0, +2.46000E+0, +2.47400E+0, +2.48700E+0, +2.50100E+0, +2.51400E+0, +2.52800E+0])*1000. # J/kg-K self.conductivity.data = np.array([+1.43200E-1, +1.42600E-1, +1.42000E-1, +1.41400E-1, +1.40800E-1, +1.40200E-1, +1.39600E-1, +1.39000E-1, +1.38400E-1, +1.37800E-1, +1.37100E-1, +1.36500E-1, +1.35900E-1, +1.35300E-1, +1.34700E-1, +1.34100E-1, +1.33500E-1, +1.32900E-1, +1.32300E-1, +1.31700E-1, +1.31100E-1, +1.30500E-1, +1.29900E-1, +1.29300E-1, +1.28700E-1, +1.28000E-1, +1.27400E-1, +1.26800E-1, +1.26200E-1, +1.25600E-1, +1.25000E-1, +1.24400E-1, +1.23800E-1, +1.23200E-1, +1.22600E-1, +1.22000E-1, +1.21400E-1, +1.20800E-1, +1.20200E-1, +1.19600E-1, +1.18900E-1, +1.18300E-1, +1.17700E-1, +1.17100E-1, +1.16500E-1, +1.15900E-1, +1.15300E-1, +1.14700E-1, +1.14100E-1, +1.13500E-1, +1.12900E-1, +1.12300E-1, +1.11700E-1, +1.11100E-1, +1.10500E-1, +1.09800E-1, +1.09200E-1, +1.08600E-1, +1.08000E-1, +1.07400E-1, +1.06800E-1, +1.06200E-1, +1.05600E-1, +1.05000E-1, +1.04400E-1, +1.03800E-1, +1.03200E-1, +1.02600E-1, +1.02000E-1, +1.01400E-1, +1.00700E-1, +1.00100E-1, +9.95000E-2, +9.89000E-2, +9.83000E-2, +9.77000E-2, +9.71000E-2, +9.65000E-2, +9.59000E-2]) # W/m-K - self.viscosity.data = np.array([+3.83000E-1, +1.19000E-1, +5.92000E-2, +3.60000E-2, +2.44000E-2, +1.77000E-2, +1.35000E-2, +1.07000E-2, +8.68000E-3, +7.21000E-3, +6.09000E-3, +5.21000E-3, +4.52000E-3, +3.96000E-3, +3.50000E-3, +3.12000E-3, +2.79000E-3, +2.52000E-3, +2.28000E-3, +2.08000E-3, +1.90000E-3, +1.75000E-3, +1.61000E-3, +1.49000E-3, +1.38000E-3, +1.29000E-3, +1.20000E-3, +1.12000E-3, +1.05000E-3, +9.86000E-4, +9.28000E-4, +8.74000E-4, +8.25000E-4, +7.79000E-4, +7.38000E-4, +6.99000E-4, +6.64000E-4, +6.31000E-4, +6.00000E-4, +5.72000E-4, +5.45000E-4, +5.20000E-4, +4.97000E-4, +4.75000E-4, +4.55000E-4, +4.36000E-4, +4.18000E-4, +4.01000E-4, +3.85000E-4, +3.70000E-4, +3.55000E-4, +3.42000E-4, +3.29000E-4, +3.17000E-4, +3.05000E-4, +2.95000E-4, +2.84000E-4, +2.74000E-4, +2.65000E-4, +2.56000E-4, +2.47000E-4, +2.39000E-4, +2.31000E-4, +2.24000E-4, +2.17000E-4, +2.10000E-4, +2.03000E-4, +1.97000E-4, +1.91000E-4, +1.85000E-4, +1.80000E-4, +1.75000E-4, +1.69000E-4, +1.65000E-4, +1.60000E-4, +1.55000E-4, +1.51000E-4, +1.47000E-4, +1.43000E-4]) # Pa-s - self.saturation_pressure.data = np.array([+9.60000E-1, +1.05000E+0, +1.14000E+0, +1.24000E+0, +1.35000E+0, +1.47000E+0, +1.60000E+0, +1.74000E+0, +1.89000E+0, +2.06000E+0, +2.24000E+0, +2.44000E+0, +2.65000E+0, +2.88000E+0, +3.14000E+0, +3.41000E+0, +3.71000E+0, +4.03000E+0, +4.39000E+0, +4.77000E+0, +5.18000E+0, +5.63000E+0, +6.12000E+0, +6.66000E+0, +7.23000E+0, +7.86000E+0, +8.54000E+0, +9.27000E+0, +1.01000E+1, +1.10000E+1, +1.19000E+1, +1.29000E+1, +1.40000E+1, +1.52000E+1, +1.65000E+1, +1.80000E+1, +1.95000E+1, +2.12000E+1, +2.30000E+1, +2.49000E+1, +2.71000E+1, +2.94000E+1, +3.19000E+1, +3.46000E+1, +3.75000E+1, +4.07000E+1, +4.42000E+1, +4.79000E+1, +5.20000E+1, +5.64000E+1, +6.11000E+1, +6.63000E+1, +7.19000E+1, +7.79000E+1, +8.45000E+1, +9.15000E+1, +9.92000E+1, +1.08000E+2, +1.17000E+2, +1.26000E+2, +1.37000E+2, +1.48000E+2, +1.61000E+2, +1.74000E+2, +1.89000E+2, +2.04000E+2, +2.21000E+2, +2.40000E+2, +2.60000E+2, +2.81000E+2, +3.04000E+2, +3.30000E+2, +3.57000E+2, +3.86000E+2, +4.18000E+2, +4.53000E+2, +4.90000E+2, +5.30000E+2, +5.74000E+2])*1000. # Pa + self.viscosity.data = np.array([+3.83000E-1, +1.19000E-1, +5.92000E-2, +3.60000E-2, +2.44000E-2, +1.77000E-2, +1.35000E-2, +1.07000E-2, +8.68000E-3, +7.21000E-3, +6.09000E-3, +5.21000E-3, +4.52000E-3, +3.96000E-3, +3.50000E-3, +3.12000E-3, +2.79000E-3, +2.52000E-3, +2.28000E-3, +2.08000E-3, +1.90000E-3, +1.75000E-3, +1.61000E-3, +1.49000E-3, +1.38000E-3, +1.29000E-3, +1.20000E-3, +1.12000E-3, +1.05000E-3, +9.86000E-4, +9.28000E-4, +8.74000E-4, +8.25000E-4, +7.79000E-4, +7.38000E-4, +6.99000E-4, +6.64000E-4, +6.31000E-4, +6.00000E-4, +5.72000E-4, +5.45000E-4, +5.20000E-4, +4.97000E-4, +4.75000E-4, +4.55000E-4, +4.36000E-4, +4.18000E-4, +4.01000E-4, +3.85000E-4, +3.70000E-4, +3.55000E-4, +3.42000E-4, +3.29000E-4, +3.17000E-4, +3.05000E-4, +2.95000E-4, +2.84000E-4, +2.74000E-4, +2.65000E-4, +2.56000E-4, +2.47000E-4, +2.39000E-4, +2.31000E-4, +2.24000E-4, +2.17000E-4, +2.10000E-4, +2.03000E-4, +1.97000E-4, +1.91000E-4, +1.85000E-4, +1.80000E-4, +1.75000E-4, +1.69000E-4, +1.65000E-4, +1.60000E-4, +1.55000E-4, +1.51000E-4, +1.47000E-4, +1.43000E-4]) # Pa-s + self.saturation_pressure.data = np.array([+9.60000E-1, +1.05000E+0, +1.14000E+0, +1.24000E+0, +1.35000E+0, +1.47000E+0, +1.60000E+0, +1.74000E+0, +1.89000E+0, +2.06000E+0, +2.24000E+0, +2.44000E+0, +2.65000E+0, +2.88000E+0, +3.14000E+0, +3.41000E+0, +3.71000E+0, +4.03000E+0, +4.39000E+0, +4.77000E+0, +5.18000E+0, +5.63000E+0, +6.12000E+0, +6.66000E+0, +7.23000E+0, +7.86000E+0, +8.54000E+0, +9.27000E+0, +1.01000E+1, +1.10000E+1, +1.19000E+1, +1.29000E+1, +1.40000E+1, +1.52000E+1, +1.65000E+1, +1.80000E+1, +1.95000E+1, +2.12000E+1, +2.30000E+1, +2.49000E+1, +2.71000E+1, +2.94000E+1, +3.19000E+1, +3.46000E+1, +3.75000E+1, +4.07000E+1, +4.42000E+1, +4.79000E+1, +5.20000E+1, +5.64000E+1, +6.11000E+1, +6.63000E+1, +7.19000E+1, +7.79000E+1, +8.45000E+1, +9.15000E+1, +9.92000E+1, +1.08000E+2, +1.17000E+2, +1.26000E+2, +1.37000E+2, +1.48000E+2, +1.61000E+2, +1.74000E+2, +1.89000E+2, +2.04000E+2, +2.21000E+2, +2.40000E+2, +2.60000E+2, +2.81000E+2, +3.04000E+2, +3.30000E+2, +3.57000E+2, +3.86000E+2, +4.18000E+2, +4.53000E+2, +4.90000E+2, +5.30000E+2, +5.74000E+2])*1000. # Pa self.Tmin = np.min(self.temperature.data) self.Tmax = np.max(self.temperature.data) - self.TminPsat = self.Tmin - self.name = "T72" + self.TminPsat = self.Tmin + self.name = "T72" self.description = "Therminol72" - self.reference = "Therminol Heat Transfer Reference Disk" + self.reference = "Therminol2014" self.reshapeAll() - - - + + + class DowthermJ(PureData): - """ + """ Heat transfer fluid Dowtherm J by Dow Chemicals """ def __init__(self): - PureData.__init__(self) + PureData.__init__(self) self.density.source = self.density.SOURCE_DATA self.specific_heat.source = self.specific_heat.SOURCE_DATA self.conductivity.source = self.conductivity.SOURCE_DATA @@ -122,17 +122,17 @@ class DowthermJ(PureData): self.specific_heat.data = np.array([+1.58400E+0, +1.59400E+0, +1.61600E+0, +1.63900E+0, +1.66300E+0, +1.68800E+0, +1.71400E+0, +1.74100E+0, +1.76900E+0, +1.79800E+0, +1.82800E+0, +1.85900E+0, +1.89000E+0, +1.92300E+0, +1.95500E+0, +1.98900E+0, +2.02300E+0, +2.05800E+0, +2.09300E+0, +2.12900E+0, +2.16500E+0, +2.20200E+0, +2.23900E+0, +2.27700E+0, +2.31500E+0, +2.35300E+0, +2.39200E+0, +2.39700E+0, +2.43200E+0, +2.47200E+0, +2.51200E+0, +2.55300E+0, +2.59400E+0, +2.63600E+0, +2.68000E+0, +2.72400E+0, +2.76900E+0, +2.81600E+0, +2.86600E+0, +2.91900E+0, +2.97600E+0, +3.04000E+0, +3.11500E+0, +3.20800E+0, +3.26500E+0])*1000. # J/kg-K self.conductivity.data = np.array([+1.48500E-1, +1.47500E-1, +1.45300E-1, +1.43200E-1, +1.41100E-1, +1.39000E-1, +1.36800E-1, +1.34700E-1, +1.32600E-1, +1.30500E-1, +1.28400E-1, +1.26200E-1, +1.24100E-1, +1.22000E-1, +1.19900E-1, +1.17700E-1, +1.15600E-1, +1.13500E-1, +1.11400E-1, +1.09300E-1, +1.07100E-1, +1.05000E-1, +1.02900E-1, +1.00800E-1, +9.87000E-2, +9.65000E-2, +9.44000E-2, +9.41000E-2, +9.23000E-2, +9.02000E-2, +8.80000E-2, +8.59000E-2, +8.38000E-2, +8.17000E-2, +7.96000E-2, +7.74000E-2, +7.53000E-2, +7.32000E-2, +7.11000E-2, +6.90000E-2, +6.68000E-2, +6.47000E-2, +6.26000E-2, +6.05000E-2, +5.94000E-2]) # W/m-K self.viscosity.data = np.array([+8.43000E+0, +7.11000E+0, +5.12000E+0, +3.78000E+0, +2.88000E+0, +2.25000E+0, +1.80000E+0, +1.48000E+0, +1.23000E+0, +1.05000E+0, +9.10000E-1, +7.90000E-1, +7.00000E-1, +6.30000E-1, +5.60000E-1, +5.10000E-1, +4.70000E-1, +4.30000E-1, +4.00000E-1, +3.70000E-1, +3.50000E-1, +3.30000E-1, +3.10000E-1, +2.90000E-1, +2.80000E-1, +2.70000E-1, +2.50000E-1, +2.50000E-1, +2.40000E-1, +2.30000E-1, +2.30000E-1, +2.20000E-1, +2.10000E-1, +2.00000E-1, +2.00000E-1, +1.90000E-1, +1.80000E-1, +1.80000E-1, +1.70000E-1, +1.70000E-1, +1.70000E-1, +1.60000E-1, +1.60000E-1, +1.60000E-1, +1.50000E-1])/1000. # Pa-s - self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, +5.00000E-3, +1.00000E-2, +2.00000E-2, +3.00000E-2, +5.00000E-2, +8.00000E-2, +1.10000E-1, +1.60000E-1, +2.30000E-1, +3.20000E-1, +4.30000E-1, +5.80000E-1, +7.60000E-1, +9.80000E-1, +1.01000E+0, +1.25000E+0, +1.58000E+0, +1.97000E+0, +2.43000E+0, +2.96000E+0, +3.59000E+0, +4.30000E+0, +5.13000E+0, +6.06000E+0, +7.12000E+0, +8.31000E+0, +9.64000E+0, +1.11300E+1, +1.27900E+1, +1.46400E+1, +1.66900E+1, +1.78000E+1])*1e5 # Pa + self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, +5.00000E-3, +1.00000E-2, +2.00000E-2, +3.00000E-2, +5.00000E-2, +8.00000E-2, +1.10000E-1, +1.60000E-1, +2.30000E-1, +3.20000E-1, +4.30000E-1, +5.80000E-1, +7.60000E-1, +9.80000E-1, +1.01000E+0, +1.25000E+0, +1.58000E+0, +1.97000E+0, +2.43000E+0, +2.96000E+0, +3.59000E+0, +4.30000E+0, +5.13000E+0, +6.06000E+0, +7.12000E+0, +8.31000E+0, +9.64000E+0, +1.11300E+1, +1.27900E+1, +1.46400E+1, +1.66900E+1, +1.78000E+1])*1e5 # Pa self.Tmin = np.min(self.temperature.data) self.Tmax = np.max(self.temperature.data) - self.TminPsat = 50 + 273.15 - self.name = "DowJ" + self.TminPsat = 50 + 273.15 + self.name = "DowJ" self.description = "DowthermJ" - self.reference = "Dow Chemicals data sheet" + self.reference = "Dow1997" self.reshapeAll() - + class DowthermQ(PureData): - """ + """ Heat transfer fluid Dowtherm Q by Dow Chemicals """ def __init__(self): @@ -141,28 +141,28 @@ class DowthermQ(PureData): self.specific_heat.source = self.specific_heat.SOURCE_DATA self.conductivity.source = self.conductivity.SOURCE_DATA self.viscosity.source = self.viscosity.SOURCE_DATA - self.saturation_pressure.source = self.saturation_pressure.SOURCE_DATA + self.saturation_pressure.source = self.saturation_pressure.SOURCE_DATA self.temperature.data = np.array([-3.50000E+1, -3.00000E+1, -2.00000E+1, -1.00000E+1, +0.00000E+0, +1.00000E+1, +2.00000E+1, +3.00000E+1, +4.00000E+1, +5.00000E+1, +6.00000E+1, +7.00000E+1, +8.00000E+1, +9.00000E+1, +1.00000E+2, +1.10000E+2, +1.20000E+2, +1.30000E+2, +1.40000E+2, +1.50000E+2, +1.60000E+2, +1.70000E+2, +1.80000E+2, +1.90000E+2, +2.00000E+2, +2.10000E+2, +2.20000E+2, +2.30000E+2, +2.40000E+2, +2.50000E+2, +2.60000E+2, +2.70000E+2, +2.80000E+2, +2.90000E+2, +3.00000E+2, +3.10000E+2, +3.20000E+2, +3.30000E+2, +3.40000E+2, +3.50000E+2, +3.60000E+2])+273.15 # Kelvin self.density.data = np.array([+1.01140E+3, +1.00320E+3, +9.95600E+2, +9.88000E+2, +9.80500E+2, +9.72900E+2, +9.65400E+2, +9.57800E+2, +9.50200E+2, +9.42700E+2, +9.35100E+2, +9.27600E+2, +9.20000E+2, +9.12400E+2, +9.04900E+2, +8.97300E+2, +8.89800E+2, +8.82200E+2, +8.74600E+2, +8.67100E+2, +8.59500E+2, +8.52000E+2, +8.44400E+2, +8.36800E+2, +8.29300E+2, +8.21700E+2, +8.14200E+2, +8.06600E+2, +7.99000E+2, +7.91500E+2, +7.83900E+2, +7.76400E+2, +7.68800E+2, +7.61200E+2, +7.53700E+2, +7.46100E+2, +7.38600E+2, +7.31000E+2, +7.23400E+2, +7.15900E+2, +7.08300E+2]) # kg/m3 self.specific_heat.data = np.array([+1.47800E+0, +1.49200E+0, +1.52500E+0, +1.55700E+0, +1.58900E+0, +1.62100E+0, +1.65300E+0, +1.68500E+0, +1.71600E+0, +1.74800E+0, +1.77900E+0, +1.81100E+0, +1.84200E+0, +1.87300E+0, +1.90400E+0, +1.93500E+0, +1.96600E+0, +1.99700E+0, +2.02700E+0, +2.05800E+0, +2.08800E+0, +2.11800E+0, +2.14800E+0, +2.17800E+0, +2.20800E+0, +2.23800E+0, +2.26800E+0, +2.29700E+0, +2.32700E+0, +2.35600E+0, +2.38600E+0, +2.41500E+0, +2.44400E+0, +2.47300E+0, +2.50200E+0, +2.53000E+0, +2.55900E+0, +2.58700E+0, +2.61600E+0, +2.64400E+0, +2.67200E+0])*1000. # J/kg-K self.conductivity.data = np.array([+1.28000E-1, +1.27700E-1, +1.26600E-1, +1.25500E-1, +1.24400E-1, +1.23200E-1, +1.22000E-1, +1.20800E-1, +1.19500E-1, +1.18300E-1, +1.17000E-1, +1.15600E-1, +1.14300E-1, +1.12900E-1, +1.11500E-1, +1.10100E-1, +1.08700E-1, +1.07200E-1, +1.05800E-1, +1.04300E-1, +1.02800E-1, +1.01300E-1, +9.98000E-2, +9.82000E-2, +9.67000E-2, +9.52000E-2, +9.36000E-2, +9.21000E-2, +9.05000E-2, +8.89000E-2, +8.74000E-2, +8.58000E-2, +8.43000E-2, +8.27000E-2, +8.11000E-2, +7.96000E-2, +7.80000E-2, +7.65000E-2, +7.49000E-2, +7.34000E-2, +7.19000E-2]) # W/m-K self.viscosity.data = np.array([+4.66000E+1, +2.42000E+1, +1.61000E+1, +1.09000E+1, +7.56000E+0, +5.42000E+0, +4.00000E+0, +3.04000E+0, +2.37000E+0, +1.89000E+0, +1.54000E+0, +1.28000E+0, +1.07000E+0, +9.20000E-1, +8.00000E-1, +7.00000E-1, +6.20000E-1, +5.50000E-1, +5.00000E-1, +4.50000E-1, +4.10000E-1, +3.80000E-1, +3.50000E-1, +3.30000E-1, +3.10000E-1, +2.90000E-1, +2.70000E-1, +2.60000E-1, +2.40000E-1, +2.30000E-1, +2.20000E-1, +2.10000E-1, +2.00000E-1, +1.90000E-1, +1.90000E-1, +1.80000E-1, +1.70000E-1, +1.70000E-1, +1.60000E-1, +1.60000E-1, +1.50000E-1])/1000. # Pa-s - self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, +5.00000E-3, +1.00000E-2, +2.00000E-2, +3.00000E-2, +5.00000E-2, +7.00000E-2, +9.00000E-2, +1.30000E-1, +1.70000E-1, +2.30000E-1, +3.10000E-1, +4.00000E-1, +5.10000E-1, +6.40000E-1, +8.10000E-1, +1.00000E+0, +1.24000E+0, +1.51000E+0, +1.82000E+0, +2.19000E+0, +2.61000E+0, +3.09000E+0, +3.64000E+0, +4.25000E+0, +4.95000E+0])*1e5 # Pa + self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, +5.00000E-3, +1.00000E-2, +2.00000E-2, +3.00000E-2, +5.00000E-2, +7.00000E-2, +9.00000E-2, +1.30000E-1, +1.70000E-1, +2.30000E-1, +3.10000E-1, +4.00000E-1, +5.10000E-1, +6.40000E-1, +8.10000E-1, +1.00000E+0, +1.24000E+0, +1.51000E+0, +1.82000E+0, +2.19000E+0, +2.61000E+0, +3.09000E+0, +3.64000E+0, +4.25000E+0, +4.95000E+0])*1e5 # Pa self.Tmin = np.min(self.temperature.data) self.Tmax = np.max(self.temperature.data) - self.TminPsat = 120 + 273.15 - self.name = "DowQ" + self.TminPsat = 120 + 273.15 + self.name = "DowQ" self.description = "DowthermQ" - self.reference = "Dow Chemicals data sheet" + self.reference = "Dow1997" self.reshapeAll() - - + + class Texatherm22(PureData): - """ + """ Heat transfer fluid Texatherm 22 by Texaco """ def __init__(self): - PureData.__init__(self) + PureData.__init__(self) self.density.source = self.density.SOURCE_DATA self.specific_heat.source = self.specific_heat.SOURCE_DATA self.conductivity.source = self.conductivity.SOURCE_DATA @@ -173,20 +173,20 @@ class Texatherm22(PureData): self.specific_heat.data = np.array([+1.81000E+0, +1.95000E+0, +1.99000E+0, +2.18000E+0, +2.36000E+0, +2.54000E+0, +2.72000E+0, +2.90000E+0, +3.08000E+0])*1e3 # J/kg-K self.conductivity.data = np.array([+1.35000E-1, +1.32000E-1, +1.32000E-1, +1.28000E-1, +1.25000E-1, +1.21000E-1, +1.17100E-1, +1.13000E-1, +1.10000E-1]) # W/m-K self.viscosity.data = np.array([+4.19760E+2, np.NAN, +2.31688E+1, np.NAN, +2.09601E+0, +1.26072E+0, np.NAN, np.NAN, np.NAN])/1000. # Pa-s - self.saturation_pressure.data = np.array([ np.NAN, +5.3300E-10, +4.00000E-8, +2.67000E-7, +2.27000E-5, +4.67000E-4, +6.67000E-3, +2.13000E-2, +5.33000E-2])*1e5 # Pa + self.saturation_pressure.data = np.array([ np.NAN, +5.3300E-10, +4.00000E-8, +2.67000E-7, +2.27000E-5, +4.67000E-4, +6.67000E-3, +2.13000E-2, +5.33000E-2])*1e5 # Pa self.Tmin = np.min(self.temperature.data) self.Tmax = np.max(self.temperature.data) - self.TminPsat = 40 + 273.15 - self.name = "TX22" + self.TminPsat = 40 + 273.15 + self.name = "TX22" self.description = "Texatherm22" - self.reference = "Texaco data sheet" + self.reference = "Chevron2004" self.reshapeAll() - + class SylthermXLT(PureData): - """ + """ Heat transfer fluid Syltherm XLT by Dow Chemicals - """ + """ def __init__(self): PureData.__init__(self) self.density.source = self.density.SOURCE_DATA @@ -200,19 +200,19 @@ class SylthermXLT(PureData): self.viscosity.data = np.array([+7.86100E+1, +5.01300E+1, +3.48600E+1, +2.58300E+1, +2.00400E+1, +1.60800E+1, +1.32200E+1, +1.10500E+1, +9.35600E+0, +7.99400E+0, +6.87900E+0, +5.95600E+0, +5.18400E+0, +4.53500E+0, +3.98600E+0, +3.52100E+0, +3.12600E+0, +2.78800E+0, +2.49900E+0, +2.25000E+0, +2.03500E+0, +1.84900E+0, +1.68700E+0, +1.54500E+0, +1.41900E+0, +1.30900E+0, +1.21000E+0, +1.12200E+0, +1.04300E+0, +9.72000E-1, +9.08000E-1, +8.49000E-1, +7.96000E-1, +7.48000E-1, +7.05000E-1, +6.65000E-1, +6.28000E-1, +5.95000E-1, +5.64000E-1, +5.36000E-1, +5.11000E-1, +4.87000E-1, +4.65000E-1, +4.45000E-1, +4.26000E-1, +4.09000E-1, +3.93000E-1, +3.77000E-1, +3.63000E-1, +3.50000E-1, +3.37000E-1, +3.25000E-1, +3.14000E-1, +3.03000E-1, +2.93000E-1, +2.84000E-1, +2.75000E-1, +2.66000E-1, +2.58000E-1, +2.51000E-1, +2.44000E-1, +2.38000E-1, +2.32000E-1, +2.26000E-1, +2.20000E-1, +2.15000E-1, +2.09000E-1, +2.04000E-1, +1.99000E-1, +1.94000E-1, +1.89000E-1, +1.85000E-1, +1.82000E-1])/1000. # Pa-s self.Tmin = np.min(self.temperature.data) self.Tmax = np.max(self.temperature.data) - self.TminPsat = self.Tmax - self.name = "XLT" + self.TminPsat = self.Tmax + self.name = "XLT" self.description = "SylthermXLT" - self.reference = "Dow Chemicals data sheet" + self.reference = "Dow1997" self.reshapeAll() - - + + class HC50(PureData): - """ + """ Heat transfer fluid Dynalene HC-50 """ def __init__(self): - PureData.__init__(self) + PureData.__init__(self) self.density.source = self.density.SOURCE_DATA self.specific_heat.source = self.specific_heat.SOURCE_DATA self.conductivity.source = self.conductivity.SOURCE_DATA @@ -223,22 +223,22 @@ class HC50(PureData): self.specific_heat.data = np.array([+2.56300E+3,+2.58300E+3,+2.60200E+3,+2.62200E+3,+2.64200E+3,+2.66100E+3,+2.68100E+3,+2.70100E+3,+2.72000E+3,+2.74000E+3,+2.76000E+3,+2.78000E+3,+2.79900E+3,+2.81900E+3,+2.83900E+3,+2.85800E+3,+2.87800E+3,+2.89800E+3,+2.91700E+3,+2.93700E+3,+2.95700E+3,+2.97700E+3,+2.99600E+3,+3.01600E+3,+3.03600E+3,+3.05500E+3,+3.07500E+3]) # J/kg-K self.conductivity.data = np.array([+4.35000E+2,+4.45000E+2,+4.55000E+2,+4.65000E+2,+4.75000E+2,+4.85000E+2,+4.95000E+2,+5.05000E+2,+5.15000E+2,+5.25000E+2,+5.35000E+2,+5.45000E+2,+5.55000E+2,+5.65000E+2,+5.75000E+2,+5.85000E+2,+5.95000E+2,+6.05000E+2,+6.15000E+2,+6.25000E+2,+6.35000E+2,+6.45000E+2,+6.55000E+2,+6.65000E+2,+6.75000E+2,+6.85000E+2,+6.94500E+2])/1e3 # W/m-K self.viscosity.data = np.array([+3.84000E-2,+2.04000E-2,+1.25000E-2,+8.40000E-3,+5.99000E-3,+4.70000E-3,+3.80000E-3,+3.20000E-3,+2.70000E-3,+2.40000E-3,+2.10000E-3,+1.80000E-3,+1.60000E-3,+1.50000E-3,+1.30000E-3,+1.20000E-3,+1.10000E-3,+1.00000E-3,+9.40000E-4,+8.70000E-4,+8.10000E-4,+7.60000E-4,+7.10000E-4,+6.60000E-4,+6.20000E-4,+5.80000E-4,+5.50000E-4]) # Pa-s - self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN,+1.58579E+3,+1.93053E+3,+3.10264E+3,+5.58475E+3,+9.85950E+3,+1.64785E+4,+2.60622E+4,+3.93691E+4,+5.72954E+4,+8.06687E+4,+1.11695E+5,+1.50995E+5,+2.00637E+5,+2.63380E+5,+3.41290E+5,+4.36438E+5,+5.53649E+5,+6.95681E+5,+8.67360E+5,+1.07282E+6]) # Pa + self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN,+1.58579E+3,+1.93053E+3,+3.10264E+3,+5.58475E+3,+9.85950E+3,+1.64785E+4,+2.60622E+4,+3.93691E+4,+5.72954E+4,+8.06687E+4,+1.11695E+5,+1.50995E+5,+2.00637E+5,+2.63380E+5,+3.41290E+5,+4.36438E+5,+5.53649E+5,+6.95681E+5,+8.67360E+5,+1.07282E+6]) # Pa self.Tmin = np.min(self.temperature.data) self.Tmax = np.max(self.temperature.data) - self.TminPsat = 20+273.15 + self.TminPsat = 20+273.15 self.name = "HC50" self.description = "Dynalene "+ self.name - self.reference = "Dynalene data sheet" + self.reference = "Dynalene2014" self.reshapeAll() - + class HC40(PureData): - """ + """ Heat transfer fluid Dynalene HC-40 - """ + """ def __init__(self): - PureData.__init__(self) + PureData.__init__(self) self.density.source = self.density.SOURCE_DATA self.specific_heat.source = self.specific_heat.SOURCE_DATA self.conductivity.source = self.conductivity.SOURCE_DATA @@ -249,22 +249,22 @@ class HC40(PureData): self.specific_heat.data = np.array([+2.80000E+3,+2.82000E+3,+2.84000E+3,+2.87000E+3,+2.89000E+3,+2.91000E+3,+2.93000E+3,+2.96000E+3,+2.98000E+3,+3.00000E+3,+3.03000E+3,+3.05000E+3,+3.07000E+3,+3.09000E+3,+3.12000E+3,+3.14000E+3,+3.16000E+3,+3.19000E+3,+3.21000E+3,+3.23000E+3,+3.25000E+3,+3.27000E+3,+3.28000E+3,+3.30000E+3,+3.32000E+3,+3.35000E+3]) # J/kg-K self.conductivity.data = np.array([+4.49000E+2,+4.59000E+2,+4.69000E+2,+4.79000E+2,+4.89000E+2,+4.99000E+2,+5.09000E+2,+5.19000E+2,+5.29000E+2,+5.39000E+2,+5.49000E+2,+5.59000E+2,+5.69000E+2,+5.79000E+2,+5.89000E+2,+5.99000E+2,+6.09000E+2,+6.19000E+2,+6.29000E+2,+6.39000E+2,+6.49000E+2,+6.54000E+2,+6.59000E+2,+6.69000E+2,+6.79000E+2,+6.89000E+2])/1e3 # W/m-K self.viscosity.data = np.array([+1.49000E-2,+9.20000E-3,+6.50000E-3,+4.90000E-3,+3.90000E-3,+3.20000E-3,+2.70000E-3,+2.30000E-3,+1.96000E-3,+1.70000E-3,+1.50000E-3,+1.40000E-3,+1.20000E-3,+1.10000E-3,+9.90000E-4,+9.10000E-4,+8.30000E-4,+7.70000E-4,+7.10000E-4,+6.60000E-4,+6.10000E-4,+5.90000E-4,+5.70000E-4,+5.30000E-4,+5.00000E-4,+4.70000E-4]) # Pa-s - self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN,+1.51685E+3,+2.20632E+3,+3.79212E+3,+6.68791E+3,+1.15142E+4,+1.87537E+4,+2.92338E+4,+4.37817E+4,+6.35007E+4,+8.96318E+4,+1.23416E+5,+1.66853E+5,+2.22701E+5,+2.92338E+5,+3.79212E+5,+4.85391E+5,+6.16391E+5,+7.74971E+5,+9.65955E+5,+1.19417E+6]) # Pa + self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN,+1.51685E+3,+2.20632E+3,+3.79212E+3,+6.68791E+3,+1.15142E+4,+1.87537E+4,+2.92338E+4,+4.37817E+4,+6.35007E+4,+8.96318E+4,+1.23416E+5,+1.66853E+5,+2.22701E+5,+2.92338E+5,+3.79212E+5,+4.85391E+5,+6.16391E+5,+7.74971E+5,+9.65955E+5,+1.19417E+6]) # Pa self.Tmin = np.min(self.temperature.data) self.Tmax = np.max(self.temperature.data) - self.TminPsat = 20+273.15 + self.TminPsat = 20+273.15 self.name = "HC40" self.description = "Dynalene "+ self.name - self.reference = "Dynalene data sheet" + self.reference = "Dynalene2014" self.reshapeAll() - + class HC30(PureData): - """ + """ Heat transfer fluid Dynalene HC-30 - """ + """ def __init__(self): - PureData.__init__(self) + PureData.__init__(self) self.density.source = self.density.SOURCE_DATA self.specific_heat.source = self.specific_heat.SOURCE_DATA self.conductivity.source = self.conductivity.SOURCE_DATA @@ -275,22 +275,22 @@ class HC30(PureData): self.specific_heat.data = np.array([+2.96100E+3,+2.98400E+3,+3.00700E+3,+3.03100E+3,+3.05400E+3,+3.07700E+3,+3.10000E+3,+3.12300E+3,+3.14600E+3,+3.16900E+3,+3.19200E+3,+3.21500E+3,+3.23800E+3,+3.26200E+3,+3.28500E+3,+3.30800E+3,+3.33100E+3,+3.35400E+3,+3.37700E+3,+3.40000E+3,+3.42300E+3,+3.44600E+3,+3.46900E+3,+3.49300E+3,+3.51600E+3]) # J/kg-K self.conductivity.data = np.array([+4.69000E+2,+4.79000E+2,+4.89000E+2,+4.99000E+2,+5.09000E+2,+5.19000E+2,+5.29000E+2,+5.39000E+2,+5.49000E+2,+5.59000E+2,+5.69000E+2,+5.79000E+2,+5.89000E+2,+5.99000E+2,+6.09000E+2,+6.19000E+2,+6.29000E+2,+6.39000E+2,+6.49000E+2,+6.59000E+2,+6.69000E+2,+6.79000E+2,+6.89000E+2,+6.99000E+2,+7.09000E+2])/1e3 # W/m-K self.viscosity.data = np.array([+7.00000E-3,+5.50000E-3,+4.50000E-3,+3.70000E-3,+3.00000E-3,+2.50000E-3,+2.20000E-3,+1.90000E-3,+1.60000E-3,+1.40000E-3,+1.30000E-3,+1.10000E-3,+9.90000E-4,+8.90000E-4,+8.00000E-4,+7.30000E-4,+6.70000E-4,+6.10000E-4,+5.70000E-4,+5.20000E-4,+4.80000E-4,+4.50000E-4,+4.20000E-4,+3.90000E-4,+3.70000E-4]) # Pa-s - self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN,+1.79264E+3,+2.41317E+3,+3.99896E+3,+7.17055E+3,+1.24795E+4,+2.06153E+4,+3.23364E+4,+4.86770E+4,+7.10160E+4,+9.99740E+4,+1.37895E+5,+1.86158E+5,+2.47522E+5,+3.24743E+5,+4.20580E+5,+5.39170E+5,+6.83960E+5,+8.59087E+5,+1.07145E+6,+1.32517E+6]) # Pa + self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN,+1.79264E+3,+2.41317E+3,+3.99896E+3,+7.17055E+3,+1.24795E+4,+2.06153E+4,+3.23364E+4,+4.86770E+4,+7.10160E+4,+9.99740E+4,+1.37895E+5,+1.86158E+5,+2.47522E+5,+3.24743E+5,+4.20580E+5,+5.39170E+5,+6.83960E+5,+8.59087E+5,+1.07145E+6,+1.32517E+6]) # Pa self.Tmin = np.min(self.temperature.data) self.Tmax = np.max(self.temperature.data) - self.TminPsat = 20+273.15 + self.TminPsat = 20+273.15 self.name = "HC30" self.description = "Dynalene "+ self.name - self.reference = "Dynalene data sheet" + self.reference = "Dynalene2014" self.reshapeAll() - - + + class HC20(PureData): - """ + """ Heat transfer fluid Dynalene HC-20 - """ + """ def __init__(self): - PureData.__init__(self) + PureData.__init__(self) self.density.source = self.density.SOURCE_DATA self.specific_heat.source = self.specific_heat.SOURCE_DATA self.conductivity.source = self.conductivity.SOURCE_DATA @@ -301,22 +301,22 @@ class HC20(PureData): self.specific_heat.data = np.array([+3.11700E+3,+3.14100E+3,+3.16400E+3,+3.18800E+3,+3.21200E+3,+3.23500E+3,+3.25900E+3,+3.28200E+3,+3.30600E+3,+3.33000E+3,+3.35300E+3,+3.37700E+3,+3.40000E+3,+3.42400E+3,+3.44800E+3,+3.47100E+3,+3.49500E+3,+3.51800E+3,+3.54200E+3,+3.56600E+3,+3.58900E+3,+3.61300E+3,+3.63600E+3,+3.66000E+3]) # J/kg-K self.conductivity.data = np.array([+4.83000E+2,+4.93000E+2,+5.03000E+2,+5.13000E+2,+5.23000E+2,+5.33000E+2,+5.43000E+2,+5.53000E+2,+5.63000E+2,+5.73000E+2,+5.83000E+2,+5.93000E+2,+6.03000E+2,+6.13000E+2,+6.23000E+2,+6.33000E+2,+6.43000E+2,+6.53000E+2,+6.63000E+2,+6.73000E+2,+6.83000E+2,+6.93000E+2,+7.03000E+2,+7.13000E+2])/1e3 # W/m-K self.viscosity.data = np.array([+4.50000E-3,+3.60000E-3,+3.00000E-3,+2.50000E-3,+2.10000E-3,+1.80000E-3,+1.60000E-3,+1.40000E-3,+1.20000E-3,+1.10000E-3,+9.50000E-4,+8.50000E-4,+7.70000E-4,+7.00000E-4,+6.30000E-4,+5.80000E-4,+5.40000E-4,+4.90000E-4,+4.60000E-4,+4.30000E-4,+4.00000E-4,+3.70000E-4,+3.50000E-4,+3.30000E-4]) # Pa-s - self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN,+2.06843E+3,+2.75790E+3,+4.55054E+3,+7.99792E+3,+1.37206E+4,+2.24769E+4,+3.52322E+4,+5.29517E+4,+7.72213E+4,+1.08937E+5,+1.50306E+5,+2.04085E+5,+2.71653E+5,+3.57148E+5,+4.62638E+5,+5.93639E+5,+7.52907E+5,+9.46650E+5,+1.18038E+6,+1.45962E+6]) # Pa + self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN,+2.06843E+3,+2.75790E+3,+4.55054E+3,+7.99792E+3,+1.37206E+4,+2.24769E+4,+3.52322E+4,+5.29517E+4,+7.72213E+4,+1.08937E+5,+1.50306E+5,+2.04085E+5,+2.71653E+5,+3.57148E+5,+4.62638E+5,+5.93639E+5,+7.52907E+5,+9.46650E+5,+1.18038E+6,+1.45962E+6]) # Pa self.Tmin = np.min(self.temperature.data) self.Tmax = np.max(self.temperature.data) - self.TminPsat = 20+273.15 + self.TminPsat = 20+273.15 self.name = "HC20" self.description = "Dynalene "+ self.name - self.reference = "Dynalene data sheet" + self.reference = "Dynalene2014" self.reshapeAll() - + class HC10(PureData): - """ + """ Heat transfer fluid Dynalene HC-10 - """ + """ def __init__(self): - PureData.__init__(self) + PureData.__init__(self) self.density.source = self.density.SOURCE_DATA self.specific_heat.source = self.specific_heat.SOURCE_DATA self.conductivity.source = self.conductivity.SOURCE_DATA @@ -327,13 +327,238 @@ class HC10(PureData): self.specific_heat.data = np.array([+3.24600E+3,+3.27100E+3,+3.29600E+3,+3.32000E+3,+3.34500E+3,+3.37000E+3,+3.39500E+3,+3.42000E+3,+3.44400E+3,+3.46900E+3,+3.49400E+3,+3.51900E+3,+3.54400E+3,+3.56800E+3,+3.59300E+3,+3.61800E+3,+3.64300E+3,+3.66800E+3,+3.69200E+3,+3.71700E+3,+3.74200E+3,+3.76700E+3,+3.79200E+3,+3.81100E+3]) # J/kg-K self.conductivity.data = np.array([+4.94000E+2,+5.04000E+2,+5.14000E+2,+5.24000E+2,+5.34000E+2,+5.44000E+2,+5.54000E+2,+5.64000E+2,+5.74000E+2,+5.84000E+2,+5.94000E+2,+6.04000E+2,+6.14000E+2,+6.24000E+2,+6.34000E+2,+6.44000E+2,+6.54000E+2,+6.64000E+2,+6.74000E+2,+6.84000E+2,+6.94000E+2,+7.04000E+2,+7.14000E+2,+7.22000E+2])/1e3 # W/m-K self.viscosity.data = np.array([+3.00000E-3,+2.50000E-3,+2.10000E-3,+1.80000E-3,+1.50000E-3,+1.30000E-3,+1.20000E-3,+1.00000E-3,+9.10000E-4,+8.10000E-4,+7.30000E-4,+6.60000E-4,+6.00000E-4,+5.50000E-4,+5.10000E-4,+4.70000E-4,+4.30000E-4,+4.00000E-4,+3.70000E-4,+3.50000E-4,+3.30000E-4,+3.10000E-4,+2.90000E-4,+2.80000E-4]) # Pa-s - self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN,+2.27527E+3,+2.89580E+3,+4.75738E+3,+8.54950E+3,+1.48927E+4,+2.46143E+4,+3.87485E+4,+5.83986E+4,+8.48055E+4,+1.19969E+5,+1.65474E+5,+2.23390E+5,+2.97164E+5,+3.90243E+5,+5.05386E+5,+6.47418E+5,+8.20476E+5,+1.03146E+6,+1.28587E+6,+1.58993E+6,+1.87468E+6]) # Pa + self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN,+2.27527E+3,+2.89580E+3,+4.75738E+3,+8.54950E+3,+1.48927E+4,+2.46143E+4,+3.87485E+4,+5.83986E+4,+8.48055E+4,+1.19969E+5,+1.65474E+5,+2.23390E+5,+2.97164E+5,+3.90243E+5,+5.05386E+5,+6.47418E+5,+8.20476E+5,+1.03146E+6,+1.28587E+6,+1.58993E+6,+1.87468E+6]) # Pa self.Tmin = np.min(self.temperature.data) self.Tmax = np.max(self.temperature.data) - self.TminPsat = 20+273.15 + self.TminPsat = 20+273.15 self.name = "HC10" self.description = "Dynalene "+ self.name - self.reference = "Dynalene data sheet" + self.reference = "Dynalene2014" + self.reshapeAll() + + + +## Paratherm, see http://paracalc.paratherm.com +class PCR(PureData): + """ + The Paratherm CR (Patent Pending) heat transfer fluid provides predictable, + repeatable performance in cryogenically-driven processes. Consistent + properties improve productivity, and eliminate runaway coil freeze-ups. + 10-cP viscosity @ -88 C (20-cP @ -96 C) brings higher efficiency at lower + temperatures. Ease of containment and handling allow greater latitude in + system design and component specification, and eliminate contamination and + costly clean-up. + """ + def __init__(self): + PureData.__init__(self) + self.density.source = self.density.SOURCE_DATA + self.viscosity.source = self.viscosity.SOURCE_DATA + self.specific_heat.source = self.specific_heat.SOURCE_DATA + self.conductivity.source = self.conductivity.SOURCE_DATA + self.saturation_pressure.source = self.saturation_pressure.SOURCE_DATA + self.temperature.data = np.array([1.731500E+2,1.741500E+2,1.751500E+2,1.761500E+2,1.771500E+2,1.781500E+2,1.791500E+2,1.801500E+2,1.811500E+2,1.821500E+2,1.831500E+2,1.841500E+2,1.851500E+2,1.861500E+2,1.871500E+2,1.881500E+2,1.891500E+2,1.901500E+2,1.911500E+2,1.921500E+2,1.931500E+2,1.941500E+2,1.951500E+2,1.961500E+2,1.971500E+2,1.981500E+2,1.991500E+2,2.001500E+2,2.011500E+2,2.021500E+2,2.031500E+2,2.041500E+2,2.051500E+2,2.061500E+2,2.071500E+2,2.081500E+2,2.091500E+2,2.101500E+2,2.111500E+2,2.121500E+2,2.131500E+2,2.141500E+2,2.151500E+2,2.161500E+2,2.171500E+2,2.181500E+2,2.191500E+2,2.201500E+2,2.211500E+2,2.221500E+2,2.231500E+2,2.241500E+2,2.251500E+2,2.261500E+2,2.271500E+2,2.281500E+2,2.291500E+2,2.301500E+2,2.311500E+2,2.321500E+2,2.331500E+2,2.341500E+2,2.351500E+2,2.361500E+2,2.371500E+2,2.381500E+2,2.391500E+2,2.401500E+2,2.411500E+2,2.421500E+2,2.431500E+2,2.441500E+2,2.451500E+2,2.461500E+2,2.471500E+2,2.481500E+2,2.491500E+2,2.501500E+2,2.511500E+2,2.521500E+2,2.531500E+2,2.541500E+2,2.551500E+2,2.561500E+2,2.571500E+2,2.581500E+2,2.591500E+2,2.601500E+2,2.611500E+2,2.621500E+2,2.631500E+2,2.641500E+2,2.651500E+2,2.661500E+2,2.671500E+2,2.681500E+2,2.691500E+2,2.701500E+2,2.711500E+2,2.721500E+2,2.731500E+2,2.741500E+2,2.751500E+2,2.761500E+2,2.771500E+2,2.781500E+2,2.791500E+2,2.801500E+2,2.811500E+2,2.821500E+2,2.831500E+2,2.841500E+2,2.851500E+2,2.861500E+2,2.871500E+2,2.881500E+2,2.891500E+2,2.901500E+2,2.911500E+2,2.921500E+2,2.931500E+2,2.941500E+2,2.951500E+2,2.961500E+2,2.971500E+2,2.981500E+2,2.991500E+2,3.001500E+2,3.011500E+2,3.021500E+2,3.031500E+2,3.041500E+2,3.051500E+2,3.061500E+2,3.071500E+2,3.081500E+2,3.091500E+2,3.101500E+2,3.111500E+2,3.121500E+2,3.131500E+2,3.141500E+2,3.151500E+2,3.161500E+2,3.171500E+2,3.181500E+2,3.191500E+2,3.201500E+2,3.211500E+2,3.221500E+2,3.231500E+2,3.241500E+2,3.251500E+2,3.261500E+2,3.271500E+2,3.281500E+2,3.291500E+2,3.301500E+2,3.311500E+2,3.321500E+2,3.331500E+2,3.341500E+2,3.351500E+2,3.361500E+2,3.371500E+2,3.381500E+2,3.391500E+2,3.401500E+2,3.411500E+2,3.421500E+2,3.431500E+2,3.441500E+2,3.451500E+2,3.461500E+2,3.471500E+2,3.481500E+2,3.491500E+2,3.501500E+2,3.511500E+2,3.521500E+2,3.531500E+2,3.541500E+2,3.551500E+2,3.561500E+2,3.571500E+2,3.581500E+2,3.591500E+2,3.601500E+2,3.611500E+2,3.621500E+2,3.631500E+2,3.641500E+2,3.651500E+2,3.661500E+2,3.671500E+2,3.681500E+2,3.691500E+2,3.701500E+2,3.711500E+2,3.721500E+2,3.731500E+2,3.741500E+2,3.751500E+2,3.761500E+2,3.771500E+2,3.781500E+2,3.791500E+2,3.801500E+2,3.811500E+2,3.821500E+2,3.831500E+2,3.841500E+2,3.851500E+2,3.861500E+2,3.871500E+2,3.881500E+2,3.891500E+2,3.901500E+2,3.911500E+2,3.921500E+2,3.931500E+2,3.941500E+2,3.951500E+2,3.961500E+2,3.971500E+2,3.981500E+2,3.991500E+2,4.001500E+2,4.011500E+2,4.021500E+2,4.031500E+2,4.041500E+2,4.051500E+2,4.061500E+2,4.071500E+2,4.081500E+2,4.091500E+2,4.101500E+2,4.111500E+2,4.121500E+2,4.131500E+2,4.141500E+2,4.151500E+2,4.161500E+2,4.171500E+2,4.181500E+2,4.191500E+2,4.201500E+2,4.211500E+2,4.221500E+2,4.231500E+2,4.241500E+2,4.251500E+2,4.261500E+2,4.271500E+2,4.281500E+2,4.291500E+2,4.301500E+2,4.311500E+2,4.321500E+2,4.331500E+2,4.341500E+2,4.351500E+2,4.361500E+2,4.371500E+2,4.381500E+2,4.391500E+2,4.401500E+2,4.411500E+2,4.421500E+2,4.431500E+2,4.441500E+2,4.451500E+2,4.461500E+2,4.471500E+2,4.481500E+2,4.491500E+2,4.501500E+2,4.511500E+2,4.521500E+2,4.531500E+2,4.541500E+2,4.551500E+2,4.561500E+2,4.571500E+2,4.581500E+2,4.591500E+2,4.601500E+2,4.611500E+2,4.621500E+2,4.631500E+2,4.641500E+2,4.651500E+2,4.661500E+2,4.671500E+2,4.681500E+2,4.691500E+2,4.701500E+2,4.711500E+2,4.721500E+2,4.731500E+2,4.741500E+2,4.751500E+2,4.761500E+2,4.771500E+2,4.781500E+2,4.791500E+2,4.801500E+2,4.811500E+2,4.821500E+2,4.831500E+2,4.841500E+2,4.851500E+2,4.861500E+2,4.871500E+2,4.881500E+2,4.891500E+2,4.901500E+2,4.911500E+2,4.921500E+2,4.931500E+2]) + self.density.data = np.array([9.490000E+2,9.480000E+2,9.470000E+2,9.460000E+2,9.450000E+2,9.440000E+2,9.430000E+2,9.420000E+2,9.410000E+2,9.400000E+2,9.390000E+2,9.380000E+2,9.370000E+2,9.360000E+2,9.350000E+2,9.340000E+2,9.330000E+2,9.320000E+2,9.310000E+2,9.300000E+2,9.290000E+2,9.280000E+2,9.270000E+2,9.260000E+2,9.250000E+2,9.240000E+2,9.230000E+2,9.220000E+2,9.210000E+2,9.200000E+2,9.190000E+2,9.180000E+2,9.170000E+2,9.160000E+2,9.150000E+2,9.140000E+2,9.130000E+2,9.120000E+2,9.110000E+2,9.100000E+2,9.090000E+2,9.080000E+2,9.070000E+2,9.060000E+2,9.050000E+2,9.040000E+2,9.030000E+2,9.020000E+2,9.010000E+2,9.000000E+2,8.990000E+2,8.980000E+2,8.970000E+2,8.960000E+2,8.950000E+2,8.940000E+2,8.930000E+2,8.920000E+2,8.910000E+2,8.900000E+2,8.890000E+2,8.880000E+2,8.870000E+2,8.860000E+2,8.850000E+2,8.830000E+2,8.820000E+2,8.810000E+2,8.800000E+2,8.790000E+2,8.780000E+2,8.770000E+2,8.760000E+2,8.750000E+2,8.740000E+2,8.730000E+2,8.720000E+2,8.710000E+2,8.700000E+2,8.690000E+2,8.680000E+2,8.670000E+2,8.660000E+2,8.650000E+2,8.640000E+2,8.630000E+2,8.620000E+2,8.610000E+2,8.600000E+2,8.590000E+2,8.580000E+2,8.570000E+2,8.560000E+2,8.550000E+2,8.540000E+2,8.530000E+2,8.520000E+2,8.510000E+2,8.500000E+2,8.490000E+2,8.480000E+2,8.470000E+2,8.460000E+2,8.450000E+2,8.440000E+2,8.430000E+2,8.420000E+2,8.410000E+2,8.400000E+2,8.390000E+2,8.380000E+2,8.370000E+2,8.360000E+2,8.350000E+2,8.340000E+2,8.330000E+2,8.320000E+2,8.310000E+2,8.300000E+2,8.290000E+2,8.280000E+2,8.270000E+2,8.260000E+2,8.250000E+2,8.240000E+2,8.230000E+2,8.220000E+2,8.210000E+2,8.200000E+2,8.190000E+2,8.180000E+2,8.170000E+2,8.160000E+2,8.150000E+2,8.140000E+2,8.130000E+2,8.120000E+2,8.110000E+2,8.100000E+2,8.090000E+2,8.080000E+2,8.070000E+2,8.060000E+2,8.050000E+2,8.040000E+2,8.030000E+2,8.020000E+2,8.010000E+2,8.000000E+2,7.990000E+2,7.980000E+2,7.970000E+2,7.960000E+2,7.950000E+2,7.940000E+2,7.930000E+2,7.920000E+2,7.910000E+2,7.900000E+2,7.890000E+2,7.880000E+2,7.870000E+2,7.860000E+2,7.850000E+2,7.840000E+2,7.830000E+2,7.820000E+2,7.810000E+2,7.800000E+2,7.790000E+2,7.780000E+2,7.770000E+2,7.760000E+2,7.750000E+2,7.740000E+2,7.730000E+2,7.720000E+2,7.710000E+2,7.700000E+2,7.690000E+2,7.680000E+2,7.670000E+2,7.660000E+2,7.650000E+2,7.640000E+2,7.630000E+2,7.620000E+2,7.610000E+2,7.600000E+2,7.590000E+2,7.580000E+2,7.570000E+2,7.560000E+2,7.550000E+2,7.540000E+2,7.520000E+2,7.510000E+2,7.500000E+2,7.490000E+2,7.480000E+2,7.470000E+2,7.460000E+2,7.450000E+2,7.440000E+2,7.430000E+2,7.420000E+2,7.410000E+2,7.400000E+2,7.390000E+2,7.380000E+2,7.370000E+2,7.360000E+2,7.350000E+2,7.340000E+2,7.330000E+2,7.320000E+2,7.310000E+2,7.300000E+2,7.290000E+2,7.280000E+2,7.270000E+2,7.260000E+2,7.250000E+2,7.240000E+2,7.230000E+2,7.220000E+2,7.210000E+2,7.200000E+2,7.190000E+2,7.180000E+2,7.170000E+2,7.160000E+2,7.150000E+2,7.140000E+2,7.130000E+2,7.120000E+2,7.110000E+2,7.100000E+2,7.090000E+2,7.080000E+2,7.070000E+2,7.060000E+2,7.050000E+2,7.040000E+2,7.030000E+2,7.020000E+2,7.010000E+2,7.000000E+2,6.990000E+2,6.980000E+2,6.970000E+2,6.960000E+2,6.950000E+2,6.940000E+2,6.930000E+2,6.920000E+2,6.910000E+2,6.900000E+2,6.890000E+2,6.880000E+2,6.870000E+2,6.860000E+2,6.850000E+2,6.840000E+2,6.830000E+2,6.820000E+2,6.810000E+2,6.800000E+2,6.790000E+2,6.780000E+2,6.770000E+2,6.760000E+2,6.750000E+2,6.740000E+2,6.730000E+2,6.720000E+2,6.710000E+2,6.700000E+2,6.690000E+2,6.680000E+2,6.670000E+2,6.660000E+2,6.650000E+2,6.640000E+2,6.630000E+2,6.620000E+2,6.610000E+2,6.600000E+2,6.590000E+2,6.580000E+2,6.570000E+2,6.560000E+2,6.550000E+2,6.540000E+2,6.530000E+2,6.520000E+2,6.510000E+2,6.500000E+2,6.490000E+2,6.480000E+2,6.470000E+2,6.460000E+2,6.450000E+2,6.440000E+2,6.430000E+2,6.420000E+2,6.410000E+2,6.400000E+2,6.390000E+2,6.380000E+2,6.370000E+2,6.360000E+2,6.350000E+2,6.340000E+2,6.330000E+2,6.320000E+2,6.310000E+2,6.300000E+2,6.290000E+2,6.280000E+2,6.270000E+2]) + self.viscosity.data = np.array([3.400000E-5,3.300000E-5,3.100000E-5,3.000000E-5,2.800000E-5,2.700000E-5,2.500000E-5,2.400000E-5,2.300000E-5,2.100000E-5,2.000000E-5,1.900000E-5,1.800000E-5,1.700000E-5,1.600000E-5,1.500000E-5,1.400000E-5,1.300000E-5,1.200000E-5,1.100000E-5,9.900000E-6,9.100000E-6,8.300000E-6,7.500000E-6,6.800000E-6,6.100000E-6,5.500000E-6,5.000000E-6,4.900000E-6,4.800000E-6,4.600000E-6,4.500000E-6,4.400000E-6,4.300000E-6,4.200000E-6,4.100000E-6,4.000000E-6,3.800000E-6,3.800000E-6,3.700000E-6,3.600000E-6,3.500000E-6,3.400000E-6,3.300000E-6,3.200000E-6,3.100000E-6,3.000000E-6,3.000000E-6,2.900000E-6,2.800000E-6,2.700000E-6,2.700000E-6,2.600000E-6,2.500000E-6,2.500000E-6,2.400000E-6,2.400000E-6,2.300000E-6,2.200000E-6,2.200000E-6,2.100000E-6,2.100000E-6,2.000000E-6,2.000000E-6,2.000000E-6,1.900000E-6,1.900000E-6,1.800000E-6,1.800000E-6,1.800000E-6,1.700000E-6,1.700000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.000000E-6,1.000000E-6,1.000000E-6,1.000000E-6,9.900000E-7,9.700000E-7,9.600000E-7,9.400000E-7,9.300000E-7,9.100000E-7,1.500000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.000000E-6,1.000000E-6,9.900000E-7,9.700000E-7,9.400000E-7,9.200000E-7,9.000000E-7,8.800000E-7,8.600000E-7,8.400000E-7,8.200000E-7,8.000000E-7,7.900000E-7,7.700000E-7,7.500000E-7,7.300000E-7,7.200000E-7,7.000000E-7,6.800000E-7,6.700000E-7,6.500000E-7,6.400000E-7,6.200000E-7,6.100000E-7,5.900000E-7,5.800000E-7,5.700000E-7,5.600000E-7,5.400000E-7,5.300000E-7,5.200000E-7,5.100000E-7,5.000000E-7,4.900000E-7,4.800000E-7,4.700000E-7,4.600000E-7,4.500000E-7,4.400000E-7,4.400000E-7,4.300000E-7,4.200000E-7,4.200000E-7,4.100000E-7,4.000000E-7,4.000000E-7,3.900000E-7,3.900000E-7,3.900000E-7,3.800000E-7,3.800000E-7,3.800000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.800000E-7,3.800000E-7,3.800000E-7,3.900000E-7,3.900000E-7,4.000000E-7,3.900000E-7,3.900000E-7,3.900000E-7,3.900000E-7,3.900000E-7,3.800000E-7,3.800000E-7,3.800000E-7,3.800000E-7,3.800000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.600000E-7,3.600000E-7,3.600000E-7,3.600000E-7,3.600000E-7,3.500000E-7,3.500000E-7,3.500000E-7,3.500000E-7,3.500000E-7,3.500000E-7,3.400000E-7,3.400000E-7,3.400000E-7,3.400000E-7,3.400000E-7,3.300000E-7,3.300000E-7,3.300000E-7,3.300000E-7,3.300000E-7,3.200000E-7,3.200000E-7,3.200000E-7,3.200000E-7,3.200000E-7,3.200000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.000000E-7,3.000000E-7,3.000000E-7,3.000000E-7,3.000000E-7,3.000000E-7,3.000000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.200000E-7,2.200000E-7,2.200000E-7,2.200000E-7,2.200000E-7,2.200000E-7,2.200000E-7,2.200000E-7]) + self.specific_heat.data = np.array([1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.500000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3]) + self.conductivity.data = np.array([1.500000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1]) + self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN,3.000000E+3,4.000000E+3,5.000000E+3,5.000000E+3,6.000000E+3,7.000000E+3,7.000000E+3,8.000000E+3,9.000000E+3,1.000000E+4,1.000000E+4,1.100000E+4,1.200000E+4,1.300000E+4,1.400000E+4,1.400000E+4,1.500000E+4,1.600000E+4,1.700000E+4,1.800000E+4,1.800000E+4,1.900000E+4,2.000000E+4,2.100000E+4,2.200000E+4,2.300000E+4,2.300000E+4,2.400000E+4,2.500000E+4,2.600000E+4,2.700000E+4,2.800000E+4,2.900000E+4,3.000000E+4,3.000000E+4,3.100000E+4,3.200000E+4,3.300000E+4,3.400000E+4,3.500000E+4,3.600000E+4,3.700000E+4,3.800000E+4,3.900000E+4,4.000000E+4,4.100000E+4,4.200000E+4,4.300000E+4,4.400000E+4,4.500000E+4,4.600000E+4,4.700000E+4,4.800000E+4,4.900000E+4,5.000000E+4,5.100000E+4,5.200000E+4,5.300000E+4,5.400000E+4,5.500000E+4,5.600000E+4,5.700000E+4,5.800000E+4,5.900000E+4,6.000000E+4,6.100000E+4,6.200000E+4,6.300000E+4,6.400000E+4,6.600000E+4,6.700000E+4,6.800000E+4,6.900000E+4,7.000000E+4,7.100000E+4,7.200000E+4,7.300000E+4,7.500000E+4,7.600000E+4,7.700000E+4,7.800000E+4,7.900000E+4,8.000000E+4,8.200000E+4,8.300000E+4,8.400000E+4,8.500000E+4,8.600000E+4,8.800000E+4,8.900000E+4,9.000000E+4,9.100000E+4,9.200000E+4,9.400000E+4,9.500000E+4,9.600000E+4,9.700000E+4,9.900000E+4,1.000000E+5,1.010000E+5,1.030000E+5,1.040000E+5,1.050000E+5,1.060000E+5,1.080000E+5,1.090000E+5,1.100000E+5,1.120000E+5,1.130000E+5,1.140000E+5,1.160000E+5,1.170000E+5,1.180000E+5,1.200000E+5,1.210000E+5,1.220000E+5,1.240000E+5,1.250000E+5,1.270000E+5,1.280000E+5,1.290000E+5,1.310000E+5,1.320000E+5,1.340000E+5,1.350000E+5,1.370000E+5,1.380000E+5,1.390000E+5,1.410000E+5,1.420000E+5,1.440000E+5,1.450000E+5,1.470000E+5,1.480000E+5,1.500000E+5,1.510000E+5]) + self.Tmin = np.min(self.temperature.data) + self.Tmax = np.max(self.temperature.data) + self.TminPsat = np.min(self.temperature.data[~np.isnan(self.saturation_pressure.data)]) + self.name = "PCR" + self.description = "Paratherm "+ self.name[1:] + self.reference = "Paratherm2013" + self.reshapeAll() + + + + +class PGLT(PureData): + """ + Heat transfer fluid Paratherm GLT The Paratherm GLT heat transfer fluid is + an alkylated-aromatic based heat transfer fluid formulated for closed-loop + liquid-phase heating systems to 550 F using fired heaters and to 575 F in + waste-heat recovery systems. + """ + def __init__(self): + PureData.__init__(self) + self.density.source = self.density.SOURCE_DATA + self.viscosity.source = self.viscosity.SOURCE_DATA + self.specific_heat.source = self.specific_heat.SOURCE_DATA + self.conductivity.source = self.conductivity.SOURCE_DATA + self.saturation_pressure.source = self.saturation_pressure.SOURCE_DATA + self.temperature.data = np.array([2.581500E+2,2.591500E+2,2.601500E+2,2.611500E+2,2.621500E+2,2.631500E+2,2.641500E+2,2.651500E+2,2.661500E+2,2.671500E+2,2.681500E+2,2.691500E+2,2.701500E+2,2.711500E+2,2.721500E+2,2.731500E+2,2.741500E+2,2.751500E+2,2.761500E+2,2.771500E+2,2.781500E+2,2.791500E+2,2.801500E+2,2.811500E+2,2.821500E+2,2.831500E+2,2.841500E+2,2.851500E+2,2.861500E+2,2.871500E+2,2.881500E+2,2.891500E+2,2.901500E+2,2.911500E+2,2.921500E+2,2.931500E+2,2.941500E+2,2.951500E+2,2.961500E+2,2.971500E+2,2.981500E+2,2.991500E+2,3.001500E+2,3.011500E+2,3.021500E+2,3.031500E+2,3.041500E+2,3.051500E+2,3.061500E+2,3.071500E+2,3.081500E+2,3.091500E+2,3.101500E+2,3.111500E+2,3.121500E+2,3.131500E+2,3.141500E+2,3.151500E+2,3.161500E+2,3.171500E+2,3.181500E+2,3.191500E+2,3.201500E+2,3.211500E+2,3.221500E+2,3.231500E+2,3.241500E+2,3.251500E+2,3.261500E+2,3.271500E+2,3.281500E+2,3.291500E+2,3.301500E+2,3.311500E+2,3.321500E+2,3.331500E+2,3.341500E+2,3.351500E+2,3.361500E+2,3.371500E+2,3.381500E+2,3.391500E+2,3.401500E+2,3.411500E+2,3.421500E+2,3.431500E+2,3.441500E+2,3.451500E+2,3.461500E+2,3.471500E+2,3.481500E+2,3.491500E+2,3.501500E+2,3.511500E+2,3.521500E+2,3.531500E+2,3.541500E+2,3.551500E+2,3.561500E+2,3.571500E+2,3.581500E+2,3.591500E+2,3.601500E+2,3.611500E+2,3.621500E+2,3.631500E+2,3.641500E+2,3.651500E+2,3.661500E+2,3.671500E+2,3.681500E+2,3.691500E+2,3.701500E+2,3.711500E+2,3.721500E+2,3.731500E+2,3.741500E+2,3.751500E+2,3.761500E+2,3.771500E+2,3.781500E+2,3.791500E+2,3.801500E+2,3.811500E+2,3.821500E+2,3.831500E+2,3.841500E+2,3.851500E+2,3.861500E+2,3.871500E+2,3.881500E+2,3.891500E+2,3.901500E+2,3.911500E+2,3.921500E+2,3.931500E+2,3.941500E+2,3.951500E+2,3.961500E+2,3.971500E+2,3.981500E+2,3.991500E+2,4.001500E+2,4.011500E+2,4.021500E+2,4.031500E+2,4.041500E+2,4.051500E+2,4.061500E+2,4.071500E+2,4.081500E+2,4.091500E+2,4.101500E+2,4.111500E+2,4.121500E+2,4.131500E+2,4.141500E+2,4.151500E+2,4.161500E+2,4.171500E+2,4.181500E+2,4.191500E+2,4.201500E+2,4.211500E+2,4.221500E+2,4.231500E+2,4.241500E+2,4.251500E+2,4.261500E+2,4.271500E+2,4.281500E+2,4.291500E+2,4.301500E+2,4.311500E+2,4.321500E+2,4.331500E+2,4.341500E+2,4.351500E+2,4.361500E+2,4.371500E+2,4.381500E+2,4.391500E+2,4.401500E+2,4.411500E+2,4.421500E+2,4.431500E+2,4.441500E+2,4.451500E+2,4.461500E+2,4.471500E+2,4.481500E+2,4.491500E+2,4.501500E+2,4.511500E+2,4.521500E+2,4.531500E+2,4.541500E+2,4.551500E+2,4.561500E+2,4.571500E+2,4.581500E+2,4.591500E+2,4.601500E+2,4.611500E+2,4.621500E+2,4.631500E+2,4.641500E+2,4.651500E+2,4.661500E+2,4.671500E+2,4.681500E+2,4.691500E+2,4.701500E+2,4.711500E+2,4.721500E+2,4.731500E+2,4.741500E+2,4.751500E+2,4.761500E+2,4.771500E+2,4.781500E+2,4.791500E+2,4.801500E+2,4.811500E+2,4.821500E+2,4.831500E+2,4.841500E+2,4.851500E+2,4.861500E+2,4.871500E+2,4.881500E+2,4.891500E+2,4.901500E+2,4.911500E+2,4.921500E+2,4.931500E+2,4.941500E+2,4.951500E+2,4.961500E+2,4.971500E+2,4.981500E+2,4.991500E+2,5.001500E+2,5.011500E+2,5.021500E+2,5.031500E+2,5.041500E+2,5.051500E+2,5.061500E+2,5.071500E+2,5.081500E+2,5.091500E+2,5.101500E+2,5.111500E+2,5.121500E+2,5.131500E+2,5.141500E+2,5.151500E+2,5.161500E+2,5.171500E+2,5.181500E+2,5.191500E+2,5.201500E+2,5.211500E+2,5.221500E+2,5.231500E+2,5.241500E+2,5.251500E+2,5.261500E+2,5.271500E+2,5.281500E+2,5.291500E+2,5.301500E+2,5.311500E+2,5.321500E+2,5.331500E+2,5.341500E+2,5.351500E+2,5.361500E+2,5.371500E+2,5.381500E+2,5.391500E+2,5.401500E+2,5.411500E+2,5.421500E+2,5.431500E+2,5.441500E+2,5.451500E+2,5.461500E+2,5.471500E+2,5.481500E+2,5.491500E+2,5.501500E+2,5.511500E+2,5.521500E+2,5.531500E+2,5.541500E+2,5.551500E+2,5.561500E+2,5.571500E+2,5.581500E+2,5.591500E+2,5.601500E+2,5.611500E+2,5.621500E+2,5.631500E+2,5.641500E+2,5.651500E+2,5.661500E+2,5.671500E+2,5.681500E+2,5.691500E+2,5.701500E+2,5.711500E+2,5.721500E+2,5.731500E+2,5.741500E+2,5.751500E+2,5.761500E+2,5.771500E+2,5.781500E+2,5.791500E+2,5.801500E+2,5.811500E+2,5.821500E+2,5.831500E+2,5.841500E+2,5.851500E+2,5.861500E+2,5.871500E+2,5.881500E+2]) + self.density.data = np.array([9.020000E+2,9.010000E+2,9.000000E+2,9.000000E+2,8.990000E+2,8.980000E+2,8.970000E+2,8.970000E+2,8.960000E+2,8.950000E+2,8.950000E+2,8.940000E+2,8.930000E+2,8.930000E+2,8.920000E+2,8.910000E+2,8.910000E+2,8.900000E+2,8.890000E+2,8.880000E+2,8.880000E+2,8.870000E+2,8.860000E+2,8.860000E+2,8.850000E+2,8.840000E+2,8.840000E+2,8.830000E+2,8.820000E+2,8.810000E+2,8.810000E+2,8.800000E+2,8.790000E+2,8.790000E+2,8.780000E+2,8.770000E+2,8.770000E+2,8.760000E+2,8.750000E+2,8.740000E+2,8.740000E+2,8.730000E+2,8.720000E+2,8.720000E+2,8.710000E+2,8.700000E+2,8.700000E+2,8.690000E+2,8.680000E+2,8.680000E+2,8.670000E+2,8.660000E+2,8.650000E+2,8.650000E+2,8.640000E+2,8.630000E+2,8.630000E+2,8.620000E+2,8.610000E+2,8.610000E+2,8.600000E+2,8.590000E+2,8.580000E+2,8.580000E+2,8.570000E+2,8.560000E+2,8.560000E+2,8.550000E+2,8.540000E+2,8.540000E+2,8.530000E+2,8.520000E+2,8.510000E+2,8.510000E+2,8.500000E+2,8.490000E+2,8.490000E+2,8.480000E+2,8.470000E+2,8.470000E+2,8.460000E+2,8.450000E+2,8.440000E+2,8.440000E+2,8.430000E+2,8.420000E+2,8.420000E+2,8.410000E+2,8.400000E+2,8.400000E+2,8.390000E+2,8.380000E+2,8.380000E+2,8.370000E+2,8.360000E+2,8.350000E+2,8.350000E+2,8.340000E+2,8.330000E+2,8.330000E+2,8.320000E+2,8.310000E+2,8.310000E+2,8.300000E+2,8.290000E+2,8.280000E+2,8.280000E+2,8.270000E+2,8.260000E+2,8.260000E+2,8.250000E+2,8.240000E+2,8.240000E+2,8.230000E+2,8.220000E+2,8.210000E+2,8.210000E+2,8.200000E+2,8.190000E+2,8.190000E+2,8.180000E+2,8.170000E+2,8.170000E+2,8.160000E+2,8.150000E+2,8.150000E+2,8.140000E+2,8.130000E+2,8.120000E+2,8.120000E+2,8.110000E+2,8.100000E+2,8.100000E+2,8.090000E+2,8.080000E+2,8.080000E+2,8.070000E+2,8.060000E+2,8.050000E+2,8.050000E+2,8.040000E+2,8.030000E+2,8.030000E+2,8.020000E+2,8.010000E+2,8.010000E+2,8.000000E+2,7.990000E+2,7.980000E+2,7.980000E+2,7.970000E+2,7.960000E+2,7.960000E+2,7.950000E+2,7.940000E+2,7.940000E+2,7.930000E+2,7.920000E+2,7.910000E+2,7.910000E+2,7.900000E+2,7.890000E+2,7.890000E+2,7.880000E+2,7.870000E+2,7.870000E+2,7.860000E+2,7.850000E+2,7.850000E+2,7.840000E+2,7.830000E+2,7.820000E+2,7.820000E+2,7.810000E+2,7.800000E+2,7.800000E+2,7.790000E+2,7.780000E+2,7.780000E+2,7.770000E+2,7.760000E+2,7.750000E+2,7.750000E+2,7.740000E+2,7.730000E+2,7.730000E+2,7.720000E+2,7.710000E+2,7.710000E+2,7.700000E+2,7.690000E+2,7.680000E+2,7.680000E+2,7.670000E+2,7.660000E+2,7.660000E+2,7.650000E+2,7.640000E+2,7.640000E+2,7.630000E+2,7.620000E+2,7.620000E+2,7.610000E+2,7.600000E+2,7.590000E+2,7.590000E+2,7.580000E+2,7.570000E+2,7.570000E+2,7.560000E+2,7.550000E+2,7.550000E+2,7.540000E+2,7.530000E+2,7.520000E+2,7.520000E+2,7.510000E+2,7.500000E+2,7.500000E+2,7.490000E+2,7.480000E+2,7.480000E+2,7.470000E+2,7.460000E+2,7.450000E+2,7.450000E+2,7.440000E+2,7.430000E+2,7.430000E+2,7.420000E+2,7.410000E+2,7.410000E+2,7.400000E+2,7.390000E+2,7.380000E+2,7.380000E+2,7.370000E+2,7.360000E+2,7.360000E+2,7.350000E+2,7.340000E+2,7.340000E+2,7.330000E+2,7.320000E+2,7.320000E+2,7.310000E+2,7.300000E+2,7.290000E+2,7.290000E+2,7.280000E+2,7.270000E+2,7.270000E+2,7.260000E+2,7.250000E+2,7.250000E+2,7.240000E+2,7.230000E+2,7.220000E+2,7.220000E+2,7.210000E+2,7.200000E+2,7.200000E+2,7.190000E+2,7.180000E+2,7.180000E+2,7.170000E+2,7.160000E+2,7.150000E+2,7.150000E+2,7.140000E+2,7.130000E+2,7.130000E+2,7.120000E+2,7.110000E+2,7.110000E+2,7.100000E+2,7.090000E+2,7.090000E+2,7.080000E+2,7.070000E+2,7.060000E+2,7.060000E+2,7.050000E+2,7.040000E+2,7.040000E+2,7.030000E+2,7.020000E+2,7.020000E+2,7.010000E+2,7.000000E+2,6.990000E+2,6.990000E+2,6.980000E+2,6.970000E+2,6.970000E+2,6.960000E+2,6.950000E+2,6.950000E+2,6.940000E+2,6.930000E+2,6.920000E+2,6.920000E+2,6.910000E+2,6.900000E+2,6.900000E+2,6.890000E+2,6.880000E+2,6.880000E+2,6.870000E+2,6.860000E+2,6.850000E+2,6.850000E+2,6.840000E+2,6.830000E+2,6.830000E+2,6.820000E+2,6.810000E+2,6.810000E+2,6.800000E+2,6.790000E+2,6.790000E+2,6.780000E+2,6.770000E+2,6.760000E+2,6.760000E+2,6.750000E+2,6.740000E+2,6.740000E+2,6.730000E+2,6.720000E+2,6.720000E+2]) + self.viscosity.data = np.array([5.620000E-4,5.120000E-4,4.660000E-4,4.240000E-4,3.860000E-4,3.500000E-4,3.180000E-4,2.890000E-4,2.620000E-4,2.380000E-4,2.170000E-4,1.980000E-4,1.810000E-4,1.660000E-4,1.530000E-4,1.380000E-4,1.300000E-4,1.230000E-4,1.160000E-4,1.090000E-4,1.020000E-4,9.600000E-5,9.100000E-5,8.500000E-5,8.000000E-5,7.600000E-5,7.100000E-5,6.700000E-5,6.300000E-5,5.900000E-5,5.600000E-5,5.300000E-5,5.000000E-5,4.700000E-5,4.400000E-5,4.200000E-5,4.000000E-5,3.800000E-5,3.600000E-5,3.400000E-5,3.200000E-5,3.100000E-5,2.900000E-5,2.800000E-5,2.700000E-5,2.500000E-5,2.400000E-5,2.300000E-5,2.200000E-5,2.100000E-5,2.000000E-5,1.900000E-5,1.800000E-5,1.700000E-5,1.600000E-5,1.600000E-5,1.500000E-5,1.500000E-5,1.400000E-5,1.300000E-5,1.300000E-5,1.300000E-5,1.200000E-5,1.200000E-5,1.100000E-5,1.100000E-5,1.100000E-5,1.000000E-5,9.900000E-6,9.600000E-6,9.200000E-6,8.900000E-6,8.600000E-6,8.300000E-6,8.100000E-6,7.800000E-6,7.600000E-6,7.300000E-6,7.100000E-6,6.900000E-6,6.700000E-6,6.500000E-6,6.300000E-6,6.100000E-6,5.900000E-6,5.800000E-6,5.600000E-6,5.400000E-6,5.300000E-6,5.200000E-6,5.000000E-6,4.900000E-6,4.800000E-6,4.700000E-6,4.600000E-6,4.400000E-6,4.300000E-6,4.200000E-6,4.100000E-6,4.000000E-6,3.900000E-6,3.800000E-6,3.800000E-6,3.700000E-6,3.600000E-6,3.500000E-6,3.400000E-6,3.400000E-6,3.300000E-6,3.200000E-6,3.200000E-6,3.100000E-6,3.000000E-6,3.000000E-6,2.900000E-6,2.900000E-6,2.800000E-6,2.800000E-6,2.700000E-6,2.700000E-6,2.600000E-6,2.500000E-6,2.500000E-6,2.500000E-6,2.400000E-6,2.400000E-6,2.300000E-6,2.300000E-6,2.200000E-6,2.200000E-6,2.200000E-6,2.100000E-6,2.100000E-6,2.100000E-6,2.000000E-6,2.000000E-6,2.000000E-6,1.900000E-6,1.900000E-6,1.900000E-6,1.900000E-6,1.800000E-6,1.800000E-6,1.800000E-6,1.700000E-6,1.700000E-6,1.700000E-6,1.700000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.000000E-6,1.000000E-6,1.000000E-6,1.000000E-6,1.000000E-6,9.900000E-7,9.800000E-7,9.700000E-7,9.600000E-7,9.500000E-7,9.400000E-7,9.300000E-7,9.200000E-7,9.100000E-7,9.000000E-7,8.900000E-7,8.800000E-7,8.700000E-7,8.600000E-7,8.500000E-7,8.400000E-7,8.300000E-7,8.300000E-7,8.200000E-7,8.100000E-7,8.000000E-7,7.900000E-7,7.800000E-7,7.800000E-7,7.700000E-7,7.600000E-7,7.500000E-7,7.500000E-7,7.400000E-7,7.300000E-7,7.200000E-7,7.200000E-7,7.100000E-7,7.000000E-7,7.000000E-7,6.900000E-7,6.800000E-7,6.800000E-7,6.700000E-7,6.600000E-7,6.600000E-7,6.500000E-7,6.500000E-7,6.400000E-7,6.300000E-7,6.300000E-7,6.200000E-7,6.200000E-7,6.100000E-7,6.100000E-7,6.000000E-7,6.000000E-7,5.900000E-7,5.800000E-7,5.800000E-7,5.700000E-7,5.700000E-7,5.600000E-7,5.600000E-7,5.600000E-7,5.500000E-7,5.500000E-7,5.400000E-7,5.400000E-7,5.300000E-7,5.300000E-7,5.200000E-7,5.200000E-7,5.100000E-7,5.100000E-7,5.100000E-7,5.000000E-7,5.000000E-7,4.900000E-7,4.900000E-7,4.900000E-7,4.800000E-7,4.800000E-7,4.700000E-7,4.700000E-7,4.700000E-7,4.600000E-7,4.600000E-7,4.600000E-7,4.500000E-7,4.500000E-7,4.500000E-7,4.400000E-7,4.400000E-7,4.400000E-7,4.300000E-7,4.300000E-7,4.300000E-7,4.200000E-7,4.200000E-7,4.200000E-7,4.100000E-7,4.100000E-7,4.100000E-7,4.000000E-7,4.000000E-7,4.000000E-7,4.000000E-7,3.900000E-7,3.900000E-7,3.900000E-7,3.800000E-7,3.800000E-7,3.800000E-7,3.800000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.600000E-7,3.600000E-7,3.600000E-7,3.600000E-7,3.500000E-7,3.500000E-7,3.500000E-7,3.500000E-7,3.400000E-7,3.400000E-7,3.400000E-7,3.400000E-7,3.400000E-7,3.300000E-7,3.300000E-7,3.300000E-7,3.300000E-7,3.200000E-7,3.200000E-7,3.200000E-7,3.200000E-7,3.200000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.000000E-7,3.000000E-7,3.000000E-7]) + self.specific_heat.data = np.array([1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3]) + self.conductivity.data = np.array([1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1]) + self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,1.000000E+4,1.000000E+4,1.000000E+4,1.000000E+4,1.100000E+4,1.100000E+4,1.100000E+4,1.200000E+4,1.200000E+4,1.200000E+4,1.200000E+4,1.300000E+4,1.300000E+4,1.300000E+4,1.400000E+4,1.400000E+4,1.400000E+4,1.500000E+4,1.500000E+4,1.500000E+4,1.600000E+4,1.600000E+4,1.700000E+4,1.700000E+4,1.700000E+4,1.800000E+4,1.800000E+4,1.900000E+4,1.900000E+4,1.900000E+4,2.000000E+4,2.000000E+4,2.100000E+4,2.100000E+4,2.200000E+4,2.200000E+4,2.300000E+4,2.300000E+4,2.400000E+4,2.400000E+4,2.500000E+4,2.500000E+4,2.600000E+4,2.700000E+4,2.700000E+4,2.800000E+4,2.800000E+4,2.900000E+4,3.000000E+4,3.000000E+4,3.100000E+4,3.100000E+4,3.200000E+4,3.300000E+4,3.300000E+4,3.400000E+4,3.500000E+4,3.600000E+4,3.600000E+4,3.700000E+4,3.800000E+4,3.900000E+4,3.900000E+4,4.000000E+4,4.100000E+4,4.200000E+4,4.300000E+4,4.400000E+4]) + self.Tmin = np.min(self.temperature.data) + self.Tmax = np.max(self.temperature.data) + self.TminPsat = np.min(self.temperature.data[~np.isnan(self.saturation_pressure.data)]) + self.name = "PGLT" + self.description = "Paratherm "+ self.name[1:] + self.reference = "Paratherm2013" + self.reshapeAll() + + + +class PHE(PureData): + """ + The Paratherm HE high flash and fire point heat transfer fluid is rated for + an optimal service range of 150 F to 600 F (66 C to 316 C). Engineered for + higher thermal and oxidative stability, it is efficient and cost effective. + Its greater purity allows it to strongly resist degradation while holding + thermal properties and maintaining efficiency. This provides for low + maintenance and solid performance over an extended operating life. + Non-toxic, the HE fluid is safe to use and easy to dispose. It can be + safely combined with spent lubricating oils and recycled locally. + """ + def __init__(self): + PureData.__init__(self) + self.density.source = self.density.SOURCE_DATA + self.viscosity.source = self.viscosity.SOURCE_DATA + self.specific_heat.source = self.specific_heat.SOURCE_DATA + self.conductivity.source = self.conductivity.SOURCE_DATA + self.saturation_pressure.source = self.saturation_pressure.SOURCE_DATA + self.temperature.data = np.array([2.731500E+2,2.741500E+2,2.751500E+2,2.761500E+2,2.771500E+2,2.781500E+2,2.791500E+2,2.801500E+2,2.811500E+2,2.821500E+2,2.831500E+2,2.841500E+2,2.851500E+2,2.861500E+2,2.871500E+2,2.881500E+2,2.891500E+2,2.901500E+2,2.911500E+2,2.921500E+2,2.931500E+2,2.941500E+2,2.951500E+2,2.961500E+2,2.971500E+2,2.981500E+2,2.991500E+2,3.001500E+2,3.011500E+2,3.021500E+2,3.031500E+2,3.041500E+2,3.051500E+2,3.061500E+2,3.071500E+2,3.081500E+2,3.091500E+2,3.101500E+2,3.111500E+2,3.121500E+2,3.131500E+2,3.141500E+2,3.151500E+2,3.161500E+2,3.171500E+2,3.181500E+2,3.191500E+2,3.201500E+2,3.211500E+2,3.221500E+2,3.231500E+2,3.241500E+2,3.251500E+2,3.261500E+2,3.271500E+2,3.281500E+2,3.291500E+2,3.301500E+2,3.311500E+2,3.321500E+2,3.331500E+2,3.341500E+2,3.351500E+2,3.361500E+2,3.371500E+2,3.381500E+2,3.391500E+2,3.401500E+2,3.411500E+2,3.421500E+2,3.431500E+2,3.441500E+2,3.451500E+2,3.461500E+2,3.471500E+2,3.481500E+2,3.491500E+2,3.501500E+2,3.511500E+2,3.521500E+2,3.531500E+2,3.541500E+2,3.551500E+2,3.561500E+2,3.571500E+2,3.581500E+2,3.591500E+2,3.601500E+2,3.611500E+2,3.621500E+2,3.631500E+2,3.641500E+2,3.651500E+2,3.661500E+2,3.671500E+2,3.681500E+2,3.691500E+2,3.701500E+2,3.711500E+2,3.721500E+2,3.731500E+2,3.741500E+2,3.751500E+2,3.761500E+2,3.771500E+2,3.781500E+2,3.791500E+2,3.801500E+2,3.811500E+2,3.821500E+2,3.831500E+2,3.841500E+2,3.851500E+2,3.861500E+2,3.871500E+2,3.881500E+2,3.891500E+2,3.901500E+2,3.911500E+2,3.921500E+2,3.931500E+2,3.941500E+2,3.951500E+2,3.961500E+2,3.971500E+2,3.981500E+2,3.991500E+2,4.001500E+2,4.011500E+2,4.021500E+2,4.031500E+2,4.041500E+2,4.051500E+2,4.061500E+2,4.071500E+2,4.081500E+2,4.091500E+2,4.101500E+2,4.111500E+2,4.121500E+2,4.131500E+2,4.141500E+2,4.151500E+2,4.161500E+2,4.171500E+2,4.181500E+2,4.191500E+2,4.201500E+2,4.211500E+2,4.221500E+2,4.231500E+2,4.241500E+2,4.251500E+2,4.261500E+2,4.271500E+2,4.281500E+2,4.291500E+2,4.301500E+2,4.311500E+2,4.321500E+2,4.331500E+2,4.341500E+2,4.351500E+2,4.361500E+2,4.371500E+2,4.381500E+2,4.391500E+2,4.401500E+2,4.411500E+2,4.421500E+2,4.431500E+2,4.441500E+2,4.451500E+2,4.461500E+2,4.471500E+2,4.481500E+2,4.491500E+2,4.501500E+2,4.511500E+2,4.521500E+2,4.531500E+2,4.541500E+2,4.551500E+2,4.561500E+2,4.571500E+2,4.581500E+2,4.591500E+2,4.601500E+2,4.611500E+2,4.621500E+2,4.631500E+2,4.641500E+2,4.651500E+2,4.661500E+2,4.671500E+2,4.681500E+2,4.691500E+2,4.701500E+2,4.711500E+2,4.721500E+2,4.731500E+2,4.741500E+2,4.751500E+2,4.761500E+2,4.771500E+2,4.781500E+2,4.791500E+2,4.801500E+2,4.811500E+2,4.821500E+2,4.831500E+2,4.841500E+2,4.851500E+2,4.861500E+2,4.871500E+2,4.881500E+2,4.891500E+2,4.901500E+2,4.911500E+2,4.921500E+2,4.931500E+2,4.941500E+2,4.951500E+2,4.961500E+2,4.971500E+2,4.981500E+2,4.991500E+2,5.001500E+2,5.011500E+2,5.021500E+2,5.031500E+2,5.041500E+2,5.051500E+2,5.061500E+2,5.071500E+2,5.081500E+2,5.091500E+2,5.101500E+2,5.111500E+2,5.121500E+2,5.131500E+2,5.141500E+2,5.151500E+2,5.161500E+2,5.171500E+2,5.181500E+2,5.191500E+2,5.201500E+2,5.211500E+2,5.221500E+2,5.231500E+2,5.241500E+2,5.251500E+2,5.261500E+2,5.271500E+2,5.281500E+2,5.291500E+2,5.301500E+2,5.311500E+2,5.321500E+2,5.331500E+2,5.341500E+2,5.351500E+2,5.361500E+2,5.371500E+2,5.381500E+2,5.391500E+2,5.401500E+2,5.411500E+2,5.421500E+2,5.431500E+2,5.441500E+2,5.451500E+2,5.461500E+2,5.471500E+2,5.481500E+2,5.491500E+2,5.501500E+2,5.511500E+2,5.521500E+2,5.531500E+2,5.541500E+2,5.551500E+2,5.561500E+2,5.571500E+2,5.581500E+2,5.591500E+2,5.601500E+2,5.611500E+2,5.621500E+2,5.631500E+2,5.641500E+2,5.651500E+2,5.661500E+2,5.671500E+2,5.681500E+2,5.691500E+2,5.701500E+2,5.711500E+2,5.721500E+2,5.731500E+2,5.741500E+2,5.751500E+2,5.761500E+2,5.771500E+2,5.781500E+2,5.791500E+2,5.801500E+2,5.811500E+2,5.821500E+2,5.831500E+2,5.841500E+2,5.851500E+2,5.861500E+2,5.871500E+2,5.881500E+2,5.891500E+2,5.901500E+2,5.911500E+2,5.921500E+2,5.931500E+2,5.941500E+2,5.951500E+2,5.961500E+2,5.971500E+2,5.981500E+2,5.991500E+2,6.001500E+2,6.011500E+2,6.021500E+2,6.031500E+2]) + self.density.data = np.array([8.750000E+2,8.750000E+2,8.740000E+2,8.740000E+2,8.730000E+2,8.720000E+2,8.720000E+2,8.710000E+2,8.700000E+2,8.700000E+2,8.690000E+2,8.680000E+2,8.680000E+2,8.670000E+2,8.660000E+2,8.660000E+2,8.650000E+2,8.650000E+2,8.640000E+2,8.630000E+2,8.630000E+2,8.620000E+2,8.610000E+2,8.610000E+2,8.600000E+2,8.590000E+2,8.590000E+2,8.580000E+2,8.580000E+2,8.570000E+2,8.560000E+2,8.560000E+2,8.550000E+2,8.540000E+2,8.540000E+2,8.530000E+2,8.520000E+2,8.520000E+2,8.510000E+2,8.500000E+2,8.500000E+2,8.490000E+2,8.490000E+2,8.480000E+2,8.470000E+2,8.470000E+2,8.460000E+2,8.450000E+2,8.450000E+2,8.440000E+2,8.430000E+2,8.430000E+2,8.420000E+2,8.420000E+2,8.410000E+2,8.400000E+2,8.400000E+2,8.390000E+2,8.380000E+2,8.380000E+2,8.370000E+2,8.360000E+2,8.360000E+2,8.350000E+2,8.340000E+2,8.340000E+2,8.330000E+2,8.330000E+2,8.320000E+2,8.310000E+2,8.310000E+2,8.300000E+2,8.290000E+2,8.290000E+2,8.280000E+2,8.270000E+2,8.270000E+2,8.260000E+2,8.250000E+2,8.250000E+2,8.240000E+2,8.240000E+2,8.230000E+2,8.220000E+2,8.220000E+2,8.210000E+2,8.200000E+2,8.200000E+2,8.190000E+2,8.180000E+2,8.180000E+2,8.170000E+2,8.170000E+2,8.160000E+2,8.150000E+2,8.150000E+2,8.140000E+2,8.130000E+2,8.130000E+2,8.120000E+2,8.110000E+2,8.110000E+2,8.100000E+2,8.090000E+2,8.090000E+2,8.080000E+2,8.080000E+2,8.070000E+2,8.060000E+2,8.060000E+2,8.050000E+2,8.040000E+2,8.040000E+2,8.030000E+2,8.020000E+2,8.020000E+2,8.010000E+2,8.000000E+2,8.000000E+2,7.990000E+2,7.990000E+2,7.980000E+2,7.970000E+2,7.970000E+2,7.960000E+2,7.950000E+2,7.950000E+2,7.940000E+2,7.930000E+2,7.930000E+2,7.920000E+2,7.920000E+2,7.910000E+2,7.900000E+2,7.900000E+2,7.890000E+2,7.880000E+2,7.880000E+2,7.870000E+2,7.860000E+2,7.860000E+2,7.850000E+2,7.840000E+2,7.840000E+2,7.830000E+2,7.830000E+2,7.820000E+2,7.810000E+2,7.810000E+2,7.800000E+2,7.790000E+2,7.790000E+2,7.780000E+2,7.770000E+2,7.770000E+2,7.760000E+2,7.750000E+2,7.750000E+2,7.740000E+2,7.740000E+2,7.730000E+2,7.720000E+2,7.720000E+2,7.710000E+2,7.700000E+2,7.700000E+2,7.690000E+2,7.680000E+2,7.680000E+2,7.670000E+2,7.670000E+2,7.660000E+2,7.650000E+2,7.650000E+2,7.640000E+2,7.630000E+2,7.630000E+2,7.620000E+2,7.610000E+2,7.610000E+2,7.600000E+2,7.590000E+2,7.590000E+2,7.580000E+2,7.580000E+2,7.570000E+2,7.560000E+2,7.560000E+2,7.550000E+2,7.540000E+2,7.540000E+2,7.530000E+2,7.520000E+2,7.520000E+2,7.510000E+2,7.500000E+2,7.500000E+2,7.490000E+2,7.490000E+2,7.480000E+2,7.470000E+2,7.470000E+2,7.460000E+2,7.450000E+2,7.450000E+2,7.440000E+2,7.430000E+2,7.430000E+2,7.420000E+2,7.420000E+2,7.410000E+2,7.400000E+2,7.400000E+2,7.390000E+2,7.380000E+2,7.380000E+2,7.370000E+2,7.360000E+2,7.360000E+2,7.350000E+2,7.340000E+2,7.340000E+2,7.330000E+2,7.330000E+2,7.320000E+2,7.310000E+2,7.310000E+2,7.300000E+2,7.290000E+2,7.290000E+2,7.280000E+2,7.270000E+2,7.270000E+2,7.260000E+2,7.250000E+2,7.250000E+2,7.240000E+2,7.240000E+2,7.230000E+2,7.220000E+2,7.220000E+2,7.210000E+2,7.200000E+2,7.200000E+2,7.190000E+2,7.180000E+2,7.180000E+2,7.170000E+2,7.170000E+2,7.160000E+2,7.150000E+2,7.150000E+2,7.140000E+2,7.130000E+2,7.130000E+2,7.120000E+2,7.110000E+2,7.110000E+2,7.100000E+2,7.090000E+2,7.090000E+2,7.080000E+2,7.080000E+2,7.070000E+2,7.060000E+2,7.060000E+2,7.050000E+2,7.040000E+2,7.040000E+2,7.030000E+2,7.020000E+2,7.020000E+2,7.010000E+2,7.010000E+2,7.000000E+2,6.990000E+2,6.990000E+2,6.980000E+2,6.970000E+2,6.970000E+2,6.960000E+2,6.950000E+2,6.950000E+2,6.940000E+2,6.930000E+2,6.930000E+2,6.920000E+2,6.920000E+2,6.910000E+2,6.900000E+2,6.900000E+2,6.890000E+2,6.880000E+2,6.880000E+2,6.870000E+2,6.860000E+2,6.860000E+2,6.850000E+2,6.840000E+2,6.840000E+2,6.830000E+2,6.830000E+2,6.820000E+2,6.810000E+2,6.810000E+2,6.800000E+2,6.790000E+2,6.790000E+2,6.780000E+2,6.770000E+2,6.770000E+2,6.760000E+2,6.760000E+2,6.750000E+2,6.740000E+2,6.740000E+2,6.730000E+2,6.720000E+2,6.720000E+2,6.710000E+2,6.700000E+2,6.700000E+2,6.690000E+2,6.680000E+2,6.680000E+2,6.670000E+2,6.670000E+2,6.660000E+2,6.650000E+2,6.650000E+2,6.640000E+2]) + self.viscosity.data = np.array([4.070000E-4,3.770000E-4,3.490000E-4,3.230000E-4,2.990000E-4,2.760000E-4,2.560000E-4,2.370000E-4,2.190000E-4,2.030000E-4,1.880000E-4,1.740000E-4,1.610000E-4,1.490000E-4,1.380000E-4,1.270000E-4,1.180000E-4,1.140000E-4,1.050000E-4,9.700000E-5,9.000000E-5,8.400000E-5,7.800000E-5,7.400000E-5,6.900000E-5,6.500000E-5,6.200000E-5,5.800000E-5,5.500000E-5,5.300000E-5,5.000000E-5,4.800000E-5,4.600000E-5,4.400000E-5,4.200000E-5,4.000000E-5,3.800000E-5,3.700000E-5,3.500000E-5,3.400000E-5,3.300000E-5,3.200000E-5,3.100000E-5,3.000000E-5,2.900000E-5,2.800000E-5,2.700000E-5,2.600000E-5,2.500000E-5,2.400000E-5,2.300000E-5,2.200000E-5,2.100000E-5,2.000000E-5,1.900000E-5,1.800000E-5,1.800000E-5,1.700000E-5,1.600000E-5,1.600000E-5,1.500000E-5,1.500000E-5,1.400000E-5,1.400000E-5,1.300000E-5,1.300000E-5,1.200000E-5,1.200000E-5,1.200000E-5,1.100000E-5,1.100000E-5,1.100000E-5,1.000000E-5,1.000000E-5,9.800000E-6,9.500000E-6,9.300000E-6,9.000000E-6,8.800000E-6,8.500000E-6,8.300000E-6,8.100000E-6,7.900000E-6,7.700000E-6,7.500000E-6,7.300000E-6,7.100000E-6,6.900000E-6,6.800000E-6,6.600000E-6,6.500000E-6,6.300000E-6,6.200000E-6,6.000000E-6,5.900000E-6,5.800000E-6,5.600000E-6,5.500000E-6,5.400000E-6,5.300000E-6,5.200000E-6,5.100000E-6,5.000000E-6,4.900000E-6,4.800000E-6,4.700000E-6,4.600000E-6,4.500000E-6,4.400000E-6,4.300000E-6,4.200000E-6,4.100000E-6,4.100000E-6,4.000000E-6,3.900000E-6,3.800000E-6,3.800000E-6,3.600000E-6,3.500000E-6,3.500000E-6,3.400000E-6,3.300000E-6,3.300000E-6,3.200000E-6,3.200000E-6,3.100000E-6,3.100000E-6,3.000000E-6,3.000000E-6,2.900000E-6,2.900000E-6,2.800000E-6,2.800000E-6,2.800000E-6,2.700000E-6,2.700000E-6,2.600000E-6,2.600000E-6,2.600000E-6,2.500000E-6,2.500000E-6,2.500000E-6,2.400000E-6,2.400000E-6,2.300000E-6,2.300000E-6,2.300000E-6,2.200000E-6,2.200000E-6,2.200000E-6,2.200000E-6,2.100000E-6,2.100000E-6,2.100000E-6,2.000000E-6,2.000000E-6,2.000000E-6,2.000000E-6,1.900000E-6,1.900000E-6,1.900000E-6,1.900000E-6,1.900000E-6,1.800000E-6,1.800000E-6,1.800000E-6,1.800000E-6,1.700000E-6,1.700000E-6,1.700000E-6,1.700000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.000000E-6,1.000000E-6,1.000000E-6,1.000000E-6,1.000000E-6,1.000000E-6,9.900000E-7,9.800000E-7,9.700000E-7,9.600000E-7,9.600000E-7,9.500000E-7,9.400000E-7,9.300000E-7,9.200000E-7,9.100000E-7,9.100000E-7,9.000000E-7,8.900000E-7,8.800000E-7,8.700000E-7,8.700000E-7,8.600000E-7,8.500000E-7,8.400000E-7,8.400000E-7,8.300000E-7,8.200000E-7,8.200000E-7,8.100000E-7,8.000000E-7,8.000000E-7,7.900000E-7,7.800000E-7,7.800000E-7,7.700000E-7,7.600000E-7,7.600000E-7,7.500000E-7,7.500000E-7,7.400000E-7,7.300000E-7,7.300000E-7,7.200000E-7,7.200000E-7,7.100000E-7,7.100000E-7,7.000000E-7,6.900000E-7,6.900000E-7,6.800000E-7,6.800000E-7,6.700000E-7,6.700000E-7,6.600000E-7,6.600000E-7,6.500000E-7,6.500000E-7,6.400000E-7,6.400000E-7,6.300000E-7,6.300000E-7,6.200000E-7,6.200000E-7,6.200000E-7,6.100000E-7,6.100000E-7,6.000000E-7,6.000000E-7,5.900000E-7,5.900000E-7,5.900000E-7,5.800000E-7,5.800000E-7,5.700000E-7,5.700000E-7,5.700000E-7,5.600000E-7,5.600000E-7,5.500000E-7,5.500000E-7,5.500000E-7,5.400000E-7,5.400000E-7,5.300000E-7,5.300000E-7,5.300000E-7,5.200000E-7,5.200000E-7,5.200000E-7,5.100000E-7,5.100000E-7,5.100000E-7,5.000000E-7,5.000000E-7,5.000000E-7,4.900000E-7,4.900000E-7,4.900000E-7,4.800000E-7,4.800000E-7,4.800000E-7,4.700000E-7,4.700000E-7,4.700000E-7,4.700000E-7,4.600000E-7,4.600000E-7,4.600000E-7,4.500000E-7,4.500000E-7,4.500000E-7,4.500000E-7,4.400000E-7,4.400000E-7,4.400000E-7,4.300000E-7]) + self.specific_heat.data = np.array([1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3]) + self.conductivity.data = np.array([1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1]) + self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,1.000000E+4,1.000000E+4,1.000000E+4,1.100000E+4,1.100000E+4,1.100000E+4]) + self.Tmin = np.min(self.temperature.data) + self.Tmax = np.max(self.temperature.data) + self.TminPsat = np.min(self.temperature.data[~np.isnan(self.saturation_pressure.data)]) + self.name = "PHE" + self.description = "Paratherm "+ self.name[1:] + self.reference = "Paratherm2013" + self.reshapeAll() + + + +class PHR(PureData): + """ + The Paratherm HR Heat Transfer Fluid is an alkylated-aromatic based heat + transfer fluid formulated for closed loop liquid phase heating to 650 F in + fired heaters and 675 F in waste heat recovery and full convection heaters. + """ + def __init__(self): + PureData.__init__(self) + self.density.source = self.density.SOURCE_DATA + self.viscosity.source = self.viscosity.SOURCE_DATA + self.specific_heat.source = self.specific_heat.SOURCE_DATA + self.conductivity.source = self.conductivity.SOURCE_DATA + self.saturation_pressure.source = self.saturation_pressure.SOURCE_DATA + self.temperature.data = np.array([2.581500E+2,2.591500E+2,2.601500E+2,2.611500E+2,2.621500E+2,2.631500E+2,2.641500E+2,2.651500E+2,2.661500E+2,2.671500E+2,2.681500E+2,2.691500E+2,2.701500E+2,2.711500E+2,2.721500E+2,2.731500E+2,2.741500E+2,2.751500E+2,2.761500E+2,2.771500E+2,2.781500E+2,2.791500E+2,2.801500E+2,2.811500E+2,2.821500E+2,2.831500E+2,2.841500E+2,2.851500E+2,2.861500E+2,2.871500E+2,2.881500E+2,2.891500E+2,2.901500E+2,2.911500E+2,2.921500E+2,2.931500E+2,2.941500E+2,2.951500E+2,2.961500E+2,2.971500E+2,2.981500E+2,2.991500E+2,3.001500E+2,3.011500E+2,3.021500E+2,3.031500E+2,3.041500E+2,3.051500E+2,3.061500E+2,3.071500E+2,3.081500E+2,3.091500E+2,3.101500E+2,3.111500E+2,3.121500E+2,3.131500E+2,3.141500E+2,3.151500E+2,3.161500E+2,3.171500E+2,3.181500E+2,3.191500E+2,3.201500E+2,3.211500E+2,3.221500E+2,3.231500E+2,3.241500E+2,3.251500E+2,3.261500E+2,3.271500E+2,3.281500E+2,3.291500E+2,3.301500E+2,3.311500E+2,3.321500E+2,3.331500E+2,3.341500E+2,3.351500E+2,3.361500E+2,3.371500E+2,3.381500E+2,3.391500E+2,3.401500E+2,3.411500E+2,3.421500E+2,3.431500E+2,3.441500E+2,3.451500E+2,3.461500E+2,3.471500E+2,3.481500E+2,3.491500E+2,3.501500E+2,3.511500E+2,3.521500E+2,3.531500E+2,3.541500E+2,3.551500E+2,3.561500E+2,3.571500E+2,3.581500E+2,3.591500E+2,3.601500E+2,3.611500E+2,3.621500E+2,3.631500E+2,3.641500E+2,3.651500E+2,3.661500E+2,3.671500E+2,3.681500E+2,3.691500E+2,3.701500E+2,3.711500E+2,3.721500E+2,3.731500E+2,3.741500E+2,3.751500E+2,3.761500E+2,3.771500E+2,3.781500E+2,3.791500E+2,3.801500E+2,3.811500E+2,3.821500E+2,3.831500E+2,3.841500E+2,3.851500E+2,3.861500E+2,3.871500E+2,3.881500E+2,3.891500E+2,3.901500E+2,3.911500E+2,3.921500E+2,3.931500E+2,3.941500E+2,3.951500E+2,3.961500E+2,3.971500E+2,3.981500E+2,3.991500E+2,4.001500E+2,4.011500E+2,4.021500E+2,4.031500E+2,4.041500E+2,4.051500E+2,4.061500E+2,4.071500E+2,4.081500E+2,4.091500E+2,4.101500E+2,4.111500E+2,4.121500E+2,4.131500E+2,4.141500E+2,4.151500E+2,4.161500E+2,4.171500E+2,4.181500E+2,4.191500E+2,4.201500E+2,4.211500E+2,4.221500E+2,4.231500E+2,4.241500E+2,4.251500E+2,4.261500E+2,4.271500E+2,4.281500E+2,4.291500E+2,4.301500E+2,4.311500E+2,4.321500E+2,4.331500E+2,4.341500E+2,4.351500E+2,4.361500E+2,4.371500E+2,4.381500E+2,4.391500E+2,4.401500E+2,4.411500E+2,4.421500E+2,4.431500E+2,4.441500E+2,4.451500E+2,4.461500E+2,4.471500E+2,4.481500E+2,4.491500E+2,4.501500E+2,4.511500E+2,4.521500E+2,4.531500E+2,4.541500E+2,4.551500E+2,4.561500E+2,4.571500E+2,4.581500E+2,4.591500E+2,4.601500E+2,4.611500E+2,4.621500E+2,4.631500E+2,4.641500E+2,4.651500E+2,4.661500E+2,4.671500E+2,4.681500E+2,4.691500E+2,4.701500E+2,4.711500E+2,4.721500E+2,4.731500E+2,4.741500E+2,4.751500E+2,4.761500E+2,4.771500E+2,4.781500E+2,4.791500E+2,4.801500E+2,4.811500E+2,4.821500E+2,4.831500E+2,4.841500E+2,4.851500E+2,4.861500E+2,4.871500E+2,4.881500E+2,4.891500E+2,4.901500E+2,4.911500E+2,4.921500E+2,4.931500E+2,4.941500E+2,4.951500E+2,4.961500E+2,4.971500E+2,4.981500E+2,4.991500E+2,5.001500E+2,5.011500E+2,5.021500E+2,5.031500E+2,5.041500E+2,5.051500E+2,5.061500E+2,5.071500E+2,5.081500E+2,5.091500E+2,5.101500E+2,5.111500E+2,5.121500E+2,5.131500E+2,5.141500E+2,5.151500E+2,5.161500E+2,5.171500E+2,5.181500E+2,5.191500E+2,5.201500E+2,5.211500E+2,5.221500E+2,5.231500E+2,5.241500E+2,5.251500E+2,5.261500E+2,5.271500E+2,5.281500E+2,5.291500E+2,5.301500E+2,5.311500E+2,5.321500E+2,5.331500E+2,5.341500E+2,5.351500E+2,5.361500E+2,5.371500E+2,5.381500E+2,5.391500E+2,5.401500E+2,5.411500E+2,5.421500E+2,5.431500E+2,5.441500E+2,5.451500E+2,5.461500E+2,5.471500E+2,5.481500E+2,5.491500E+2,5.501500E+2,5.511500E+2,5.521500E+2,5.531500E+2,5.541500E+2,5.551500E+2,5.561500E+2,5.571500E+2,5.581500E+2,5.591500E+2,5.601500E+2,5.611500E+2,5.621500E+2,5.631500E+2,5.641500E+2,5.651500E+2,5.661500E+2,5.671500E+2,5.681500E+2,5.691500E+2,5.701500E+2,5.711500E+2,5.721500E+2,5.731500E+2,5.741500E+2,5.751500E+2,5.761500E+2,5.771500E+2,5.781500E+2,5.791500E+2,5.801500E+2,5.811500E+2,5.821500E+2,5.831500E+2,5.841500E+2,5.851500E+2,5.861500E+2,5.871500E+2,5.881500E+2,5.891500E+2,5.901500E+2,5.911500E+2,5.921500E+2,5.931500E+2,5.941500E+2,5.951500E+2,5.961500E+2,5.971500E+2,5.981500E+2,5.991500E+2,6.001500E+2,6.011500E+2,6.021500E+2,6.031500E+2,6.041500E+2,6.051500E+2,6.061500E+2,6.071500E+2,6.081500E+2,6.091500E+2,6.101500E+2,6.111500E+2,6.121500E+2,6.131500E+2,6.141500E+2,6.151500E+2,6.161500E+2,6.171500E+2,6.181500E+2,6.191500E+2,6.201500E+2,6.211500E+2,6.221500E+2,6.231500E+2,6.241500E+2,6.251500E+2,6.261500E+2,6.271500E+2,6.281500E+2,6.291500E+2,6.301500E+2,6.311500E+2,6.321500E+2,6.331500E+2,6.341500E+2,6.351500E+2,6.361500E+2,6.371500E+2,6.381500E+2,6.391500E+2,6.401500E+2,6.411500E+2,6.421500E+2,6.431500E+2]) + self.density.data = np.array([9.870000E+2,9.860000E+2,9.850000E+2,9.850000E+2,9.840000E+2,9.830000E+2,9.820000E+2,9.810000E+2,9.810000E+2,9.800000E+2,9.790000E+2,9.780000E+2,9.780000E+2,9.770000E+2,9.760000E+2,9.750000E+2,9.750000E+2,9.740000E+2,9.730000E+2,9.720000E+2,9.710000E+2,9.710000E+2,9.700000E+2,9.690000E+2,9.680000E+2,9.680000E+2,9.670000E+2,9.660000E+2,9.650000E+2,9.650000E+2,9.640000E+2,9.630000E+2,9.620000E+2,9.610000E+2,9.610000E+2,9.600000E+2,9.590000E+2,9.580000E+2,9.580000E+2,9.570000E+2,9.560000E+2,9.550000E+2,9.550000E+2,9.540000E+2,9.530000E+2,9.520000E+2,9.510000E+2,9.510000E+2,9.500000E+2,9.490000E+2,9.480000E+2,9.480000E+2,9.470000E+2,9.460000E+2,9.450000E+2,9.450000E+2,9.440000E+2,9.430000E+2,9.420000E+2,9.410000E+2,9.410000E+2,9.400000E+2,9.390000E+2,9.380000E+2,9.380000E+2,9.370000E+2,9.360000E+2,9.350000E+2,9.350000E+2,9.340000E+2,9.330000E+2,9.320000E+2,9.310000E+2,9.310000E+2,9.300000E+2,9.290000E+2,9.280000E+2,9.280000E+2,9.270000E+2,9.260000E+2,9.250000E+2,9.250000E+2,9.240000E+2,9.230000E+2,9.220000E+2,9.210000E+2,9.210000E+2,9.200000E+2,9.190000E+2,9.180000E+2,9.180000E+2,9.170000E+2,9.160000E+2,9.150000E+2,9.150000E+2,9.140000E+2,9.130000E+2,9.120000E+2,9.110000E+2,9.110000E+2,9.100000E+2,9.090000E+2,9.080000E+2,9.080000E+2,9.070000E+2,9.060000E+2,9.050000E+2,9.050000E+2,9.040000E+2,9.030000E+2,9.020000E+2,9.010000E+2,9.010000E+2,9.000000E+2,8.990000E+2,8.980000E+2,8.980000E+2,8.970000E+2,8.960000E+2,8.950000E+2,8.950000E+2,8.940000E+2,8.930000E+2,8.920000E+2,8.910000E+2,8.910000E+2,8.900000E+2,8.890000E+2,8.880000E+2,8.880000E+2,8.870000E+2,8.860000E+2,8.850000E+2,8.850000E+2,8.840000E+2,8.830000E+2,8.820000E+2,8.810000E+2,8.810000E+2,8.800000E+2,8.790000E+2,8.780000E+2,8.780000E+2,8.770000E+2,8.760000E+2,8.750000E+2,8.750000E+2,8.740000E+2,8.730000E+2,8.720000E+2,8.710000E+2,8.710000E+2,8.700000E+2,8.690000E+2,8.680000E+2,8.680000E+2,8.670000E+2,8.660000E+2,8.650000E+2,8.650000E+2,8.640000E+2,8.630000E+2,8.620000E+2,8.610000E+2,8.610000E+2,8.600000E+2,8.590000E+2,8.580000E+2,8.580000E+2,8.570000E+2,8.560000E+2,8.550000E+2,8.540000E+2,8.540000E+2,8.530000E+2,8.520000E+2,8.510000E+2,8.510000E+2,8.500000E+2,8.490000E+2,8.480000E+2,8.480000E+2,8.470000E+2,8.460000E+2,8.450000E+2,8.440000E+2,8.440000E+2,8.430000E+2,8.420000E+2,8.410000E+2,8.410000E+2,8.400000E+2,8.390000E+2,8.380000E+2,8.380000E+2,8.370000E+2,8.360000E+2,8.350000E+2,8.340000E+2,8.340000E+2,8.330000E+2,8.320000E+2,8.310000E+2,8.310000E+2,8.300000E+2,8.290000E+2,8.280000E+2,8.280000E+2,8.270000E+2,8.260000E+2,8.250000E+2,8.240000E+2,8.240000E+2,8.230000E+2,8.220000E+2,8.210000E+2,8.210000E+2,8.200000E+2,8.190000E+2,8.180000E+2,8.180000E+2,8.170000E+2,8.160000E+2,8.150000E+2,8.140000E+2,8.140000E+2,8.130000E+2,8.120000E+2,8.110000E+2,8.110000E+2,8.100000E+2,8.090000E+2,8.080000E+2,8.080000E+2,8.070000E+2,8.060000E+2,8.050000E+2,8.040000E+2,8.040000E+2,8.030000E+2,8.020000E+2,8.010000E+2,8.010000E+2,8.000000E+2,7.990000E+2,7.980000E+2,7.980000E+2,7.970000E+2,7.960000E+2,7.950000E+2,7.940000E+2,7.940000E+2,7.930000E+2,7.920000E+2,7.910000E+2,7.910000E+2,7.900000E+2,7.890000E+2,7.880000E+2,7.880000E+2,7.870000E+2,7.860000E+2,7.850000E+2,7.840000E+2,7.840000E+2,7.830000E+2,7.820000E+2,7.810000E+2,7.810000E+2,7.800000E+2,7.790000E+2,7.780000E+2,7.780000E+2,7.770000E+2,7.760000E+2,7.750000E+2,7.740000E+2,7.740000E+2,7.730000E+2,7.720000E+2,7.710000E+2,7.710000E+2,7.700000E+2,7.690000E+2,7.680000E+2,7.680000E+2,7.670000E+2,7.660000E+2,7.650000E+2,7.640000E+2,7.640000E+2,7.630000E+2,7.620000E+2,7.610000E+2,7.610000E+2,7.600000E+2,7.590000E+2,7.580000E+2,7.580000E+2,7.570000E+2,7.560000E+2,7.550000E+2,7.540000E+2,7.540000E+2,7.530000E+2,7.520000E+2,7.510000E+2,7.510000E+2,7.500000E+2,7.490000E+2,7.480000E+2,7.480000E+2,7.470000E+2,7.460000E+2,7.450000E+2,7.440000E+2,7.440000E+2,7.430000E+2,7.420000E+2,7.410000E+2,7.410000E+2,7.400000E+2,7.390000E+2,7.380000E+2,7.380000E+2,7.370000E+2,7.360000E+2,7.350000E+2,7.340000E+2,7.340000E+2,7.330000E+2,7.320000E+2,7.310000E+2,7.310000E+2,7.300000E+2,7.290000E+2,7.280000E+2,7.280000E+2,7.270000E+2,7.260000E+2,7.250000E+2,7.240000E+2,7.240000E+2,7.230000E+2,7.220000E+2,7.210000E+2,7.210000E+2,7.200000E+2,7.190000E+2,7.180000E+2,7.180000E+2,7.170000E+2,7.160000E+2,7.150000E+2,7.140000E+2,7.140000E+2,7.130000E+2,7.120000E+2,7.110000E+2,7.110000E+2,7.100000E+2,7.090000E+2,7.080000E+2,7.080000E+2,7.070000E+2,7.060000E+2,7.050000E+2,7.040000E+2,7.040000E+2,7.030000E+2,7.020000E+2,7.010000E+2,7.010000E+2,7.000000E+2,6.990000E+2,6.980000E+2,6.980000E+2,6.970000E+2,6.960000E+2,6.950000E+2,6.940000E+2,6.940000E+2,6.930000E+2,6.920000E+2,6.910000E+2,6.910000E+2]) + self.viscosity.data = np.array([4.180000E-4,3.800000E-4,3.440000E-4,3.120000E-4,2.810000E-4,2.530000E-4,2.280000E-4,2.040000E-4,1.830000E-4,1.640000E-4,1.470000E-4,1.320000E-4,1.180000E-4,1.060000E-4,9.600000E-5,8.600000E-5,7.900000E-5,7.500000E-5,7.100000E-5,6.800000E-5,6.500000E-5,6.200000E-5,5.900000E-5,5.600000E-5,5.300000E-5,5.000000E-5,4.700000E-5,4.500000E-5,4.200000E-5,4.000000E-5,3.800000E-5,3.500000E-5,3.300000E-5,3.100000E-5,2.900000E-5,2.800000E-5,2.600000E-5,2.400000E-5,2.300000E-5,2.100000E-5,2.000000E-5,2.000000E-5,1.900000E-5,1.800000E-5,1.700000E-5,1.600000E-5,1.600000E-5,1.500000E-5,1.400000E-5,1.400000E-5,1.300000E-5,1.200000E-5,1.200000E-5,1.100000E-5,1.100000E-5,1.000000E-5,9.900000E-6,9.500000E-6,9.200000E-6,8.800000E-6,8.500000E-6,8.300000E-6,8.000000E-6,7.800000E-6,7.600000E-6,7.300000E-6,7.100000E-6,6.800000E-6,6.600000E-6,6.400000E-6,6.200000E-6,6.000000E-6,5.800000E-6,5.700000E-6,5.500000E-6,5.300000E-6,5.200000E-6,5.000000E-6,4.900000E-6,4.800000E-6,4.600000E-6,4.500000E-6,4.400000E-6,4.300000E-6,4.200000E-6,4.100000E-6,4.000000E-6,3.900000E-6,3.800000E-6,3.700000E-6,3.600000E-6,3.500000E-6,3.500000E-6,3.400000E-6,3.300000E-6,3.200000E-6,3.200000E-6,3.100000E-6,3.000000E-6,3.000000E-6,2.900000E-6,2.800000E-6,2.800000E-6,2.700000E-6,2.700000E-6,2.600000E-6,2.600000E-6,2.500000E-6,2.500000E-6,2.500000E-6,2.400000E-6,2.400000E-6,2.300000E-6,2.300000E-6,2.200000E-6,2.200000E-6,2.200000E-6,2.100000E-6,2.100000E-6,2.000000E-6,2.000000E-6,2.000000E-6,2.000000E-6,1.900000E-6,1.900000E-6,1.900000E-6,1.800000E-6,1.800000E-6,1.800000E-6,1.800000E-6,1.700000E-6,1.700000E-6,1.700000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.000000E-6,1.000000E-6,1.000000E-6,1.000000E-6,1.000000E-6,9.900000E-7,9.800000E-7,9.700000E-7,9.600000E-7,9.500000E-7,9.400000E-7,9.300000E-7,9.200000E-7,9.100000E-7,9.000000E-7,8.900000E-7,8.800000E-7,8.800000E-7,8.700000E-7,8.600000E-7,8.500000E-7,8.400000E-7,8.300000E-7,8.200000E-7,8.200000E-7,8.100000E-7,8.000000E-7,7.900000E-7,7.900000E-7,7.800000E-7,7.700000E-7,7.600000E-7,7.600000E-7,7.500000E-7,7.400000E-7,7.400000E-7,7.300000E-7,7.200000E-7,7.200000E-7,7.100000E-7,7.000000E-7,7.000000E-7,6.900000E-7,6.800000E-7,6.800000E-7,6.700000E-7,6.700000E-7,6.600000E-7,6.600000E-7,6.500000E-7,6.400000E-7,6.400000E-7,6.300000E-7,6.300000E-7,6.200000E-7,6.200000E-7,6.100000E-7,6.100000E-7,6.000000E-7,6.000000E-7,5.900000E-7,5.900000E-7,5.800000E-7,5.800000E-7,5.700000E-7,5.700000E-7,5.600000E-7,5.600000E-7,5.600000E-7,5.500000E-7,5.500000E-7,5.400000E-7,5.400000E-7,5.300000E-7,5.300000E-7,5.300000E-7,5.200000E-7,5.200000E-7,5.100000E-7,5.100000E-7,5.100000E-7,5.000000E-7,5.000000E-7,5.000000E-7,4.900000E-7,4.900000E-7,4.900000E-7,4.800000E-7,4.800000E-7,4.700000E-7,4.700000E-7,4.700000E-7,4.600000E-7,4.600000E-7,4.600000E-7,4.600000E-7,4.500000E-7,4.500000E-7,4.500000E-7,4.400000E-7,4.400000E-7,4.400000E-7,4.300000E-7,4.300000E-7,4.300000E-7,4.200000E-7,4.200000E-7,4.200000E-7,4.200000E-7,4.100000E-7,4.100000E-7,4.100000E-7,4.100000E-7,4.000000E-7,4.000000E-7,4.000000E-7,4.000000E-7,3.900000E-7,3.900000E-7,3.900000E-7,3.900000E-7,3.800000E-7,3.800000E-7,3.800000E-7,3.800000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.600000E-7,3.600000E-7,3.600000E-7,3.600000E-7,3.600000E-7,3.500000E-7,3.500000E-7,3.500000E-7,3.500000E-7,3.400000E-7,3.400000E-7,3.400000E-7,3.400000E-7,3.400000E-7,3.300000E-7,3.300000E-7,3.300000E-7,3.300000E-7,3.300000E-7,3.300000E-7,3.200000E-7,3.200000E-7,3.200000E-7,3.200000E-7,3.200000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.000000E-7,3.000000E-7,3.000000E-7,3.000000E-7,3.000000E-7,3.000000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7]) + self.specific_heat.data = np.array([1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3]) + self.conductivity.data = np.array([1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.070000E-1,1.070000E-1,1.070000E-1,1.070000E-1,1.070000E-1,1.070000E-1,1.070000E-1,1.070000E-1,1.070000E-1,1.070000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.000000E-2,9.000000E-2,9.000000E-2,9.000000E-2,9.000000E-2,9.000000E-2,9.000000E-2,8.900000E-2,8.900000E-2,8.900000E-2,8.900000E-2,8.900000E-2,8.900000E-2,8.800000E-2,8.800000E-2,8.800000E-2,8.800000E-2,8.800000E-2,8.800000E-2,8.700000E-2,8.700000E-2,8.700000E-2,8.700000E-2,8.700000E-2,8.700000E-2,8.700000E-2,8.600000E-2,8.600000E-2,8.600000E-2,8.600000E-2,8.600000E-2,8.600000E-2,8.500000E-2,8.500000E-2,8.500000E-2,8.500000E-2,8.500000E-2,8.500000E-2,8.400000E-2,8.400000E-2,8.400000E-2,8.400000E-2,8.400000E-2,8.400000E-2,8.300000E-2]) + self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,1.000000E+4,1.000000E+4,1.000000E+4,1.000000E+4,1.100000E+4,1.100000E+4,1.100000E+4,1.200000E+4,1.200000E+4,1.200000E+4,1.300000E+4,1.300000E+4,1.300000E+4,1.400000E+4,1.400000E+4,1.500000E+4,1.500000E+4,1.500000E+4,1.600000E+4,1.600000E+4,1.700000E+4,1.700000E+4,1.800000E+4,1.800000E+4,1.900000E+4,1.900000E+4,1.900000E+4,2.000000E+4,2.100000E+4,2.100000E+4,2.200000E+4,2.200000E+4,2.300000E+4,2.300000E+4,2.400000E+4,2.500000E+4,2.500000E+4,2.600000E+4,2.600000E+4,2.700000E+4,2.800000E+4,2.900000E+4,2.900000E+4,3.000000E+4,3.100000E+4,3.100000E+4,3.200000E+4,3.300000E+4,3.400000E+4,3.500000E+4,3.500000E+4,3.600000E+4,3.700000E+4,3.800000E+4,3.900000E+4,4.000000E+4,4.100000E+4,4.200000E+4,4.300000E+4,4.400000E+4,4.500000E+4,4.600000E+4,4.700000E+4,4.800000E+4,4.900000E+4,5.000000E+4,5.100000E+4,5.300000E+4,5.400000E+4,5.500000E+4,5.600000E+4,5.800000E+4,5.900000E+4,6.000000E+4,6.100000E+4,6.300000E+4,6.400000E+4,6.600000E+4,6.700000E+4,6.900000E+4,7.000000E+4,7.200000E+4,7.300000E+4,7.500000E+4,7.600000E+4,7.800000E+4,8.000000E+4,8.100000E+4,8.300000E+4,8.500000E+4,8.700000E+4,8.900000E+4,9.000000E+4,9.200000E+4,9.400000E+4,9.600000E+4,9.800000E+4,1.000000E+5,1.020000E+5,1.050000E+5,1.070000E+5,1.090000E+5,1.110000E+5,1.130000E+5,1.160000E+5,1.180000E+5,1.200000E+5,1.230000E+5,1.250000E+5,1.280000E+5,1.300000E+5,1.330000E+5,1.360000E+5,1.380000E+5,1.410000E+5,1.440000E+5,1.470000E+5,1.500000E+5,1.520000E+5,1.550000E+5,1.580000E+5,1.610000E+5,1.650000E+5,1.680000E+5,1.710000E+5,1.740000E+5,1.780000E+5,1.810000E+5,1.840000E+5,1.880000E+5,1.920000E+5,1.950000E+5]) + self.Tmin = np.min(self.temperature.data) + self.Tmax = np.max(self.temperature.data) + self.TminPsat = np.min(self.temperature.data[~np.isnan(self.saturation_pressure.data)]) + self.name = "PHR" + self.description = "Paratherm "+ self.name[1:] + self.reference = "Paratherm2013" + self.reshapeAll() + + + + +class PLR(PureData): + """ + The Paratherm LR low-range heat transfer fluid is rated for service from + -40 F to 400 F (-40 C to 204 C). Non-aromatic, this non-toxic liquid is safe + to use and is easy to dispose. Tough and durable, the Paratherm LR fluid is + designed for a broad variety of cooling and heating applications. It is + engineered to provide extended performance under rugged operating + conditions, yet is easy and safe to handle. + """ + def __init__(self): + PureData.__init__(self) + self.density.source = self.density.SOURCE_DATA + self.viscosity.source = self.viscosity.SOURCE_DATA + self.specific_heat.source = self.specific_heat.SOURCE_DATA + self.conductivity.source = self.conductivity.SOURCE_DATA + self.saturation_pressure.source = self.saturation_pressure.SOURCE_DATA + self.temperature.data = np.array([1.881500E+2,1.891500E+2,1.901500E+2,1.911500E+2,1.921500E+2,1.931500E+2,1.941500E+2,1.951500E+2,1.961500E+2,1.971500E+2,1.981500E+2,1.991500E+2,2.001500E+2,2.011500E+2,2.021500E+2,2.031500E+2,2.041500E+2,2.051500E+2,2.061500E+2,2.071500E+2,2.081500E+2,2.091500E+2,2.101500E+2,2.111500E+2,2.121500E+2,2.131500E+2,2.141500E+2,2.151500E+2,2.161500E+2,2.171500E+2,2.181500E+2,2.191500E+2,2.201500E+2,2.211500E+2,2.221500E+2,2.231500E+2,2.241500E+2,2.251500E+2,2.261500E+2,2.271500E+2,2.281500E+2,2.291500E+2,2.301500E+2,2.311500E+2,2.321500E+2,2.331500E+2,2.341500E+2,2.351500E+2,2.361500E+2,2.371500E+2,2.381500E+2,2.391500E+2,2.401500E+2,2.411500E+2,2.421500E+2,2.431500E+2,2.441500E+2,2.451500E+2,2.461500E+2,2.471500E+2,2.481500E+2,2.491500E+2,2.501500E+2,2.511500E+2,2.521500E+2,2.531500E+2,2.541500E+2,2.551500E+2,2.561500E+2,2.571500E+2,2.581500E+2,2.591500E+2,2.601500E+2,2.611500E+2,2.621500E+2,2.631500E+2,2.641500E+2,2.651500E+2,2.661500E+2,2.671500E+2,2.681500E+2,2.691500E+2,2.701500E+2,2.711500E+2,2.721500E+2,2.731500E+2,2.741500E+2,2.751500E+2,2.761500E+2,2.771500E+2,2.781500E+2,2.791500E+2,2.801500E+2,2.811500E+2,2.821500E+2,2.831500E+2,2.841500E+2,2.851500E+2,2.861500E+2,2.871500E+2,2.881500E+2,2.891500E+2,2.901500E+2,2.911500E+2,2.921500E+2,2.931500E+2,2.941500E+2,2.951500E+2,2.961500E+2,2.971500E+2,2.981500E+2,2.991500E+2,3.001500E+2,3.011500E+2,3.021500E+2,3.031500E+2,3.041500E+2,3.051500E+2,3.061500E+2,3.071500E+2,3.081500E+2,3.091500E+2,3.101500E+2,3.111500E+2,3.121500E+2,3.131500E+2,3.141500E+2,3.151500E+2,3.161500E+2,3.171500E+2,3.181500E+2,3.191500E+2,3.201500E+2,3.211500E+2,3.221500E+2,3.231500E+2,3.241500E+2,3.251500E+2,3.261500E+2,3.271500E+2,3.281500E+2,3.291500E+2,3.301500E+2,3.311500E+2,3.321500E+2,3.331500E+2,3.341500E+2,3.351500E+2,3.361500E+2,3.371500E+2,3.381500E+2,3.391500E+2,3.401500E+2,3.411500E+2,3.421500E+2,3.431500E+2,3.441500E+2,3.451500E+2,3.461500E+2,3.471500E+2,3.481500E+2,3.491500E+2,3.501500E+2,3.511500E+2,3.521500E+2,3.531500E+2,3.541500E+2,3.551500E+2,3.561500E+2,3.571500E+2,3.581500E+2,3.591500E+2,3.601500E+2,3.611500E+2,3.621500E+2,3.631500E+2,3.641500E+2,3.651500E+2,3.661500E+2,3.671500E+2,3.681500E+2,3.691500E+2,3.701500E+2,3.711500E+2,3.721500E+2,3.731500E+2,3.741500E+2,3.751500E+2,3.761500E+2,3.771500E+2,3.781500E+2,3.791500E+2,3.801500E+2,3.811500E+2,3.821500E+2,3.831500E+2,3.841500E+2,3.851500E+2,3.861500E+2,3.871500E+2,3.881500E+2,3.891500E+2,3.901500E+2,3.911500E+2,3.921500E+2,3.931500E+2,3.941500E+2,3.951500E+2,3.961500E+2,3.971500E+2,3.981500E+2,3.991500E+2,4.001500E+2,4.011500E+2,4.021500E+2,4.031500E+2,4.041500E+2,4.051500E+2,4.061500E+2,4.071500E+2,4.081500E+2,4.091500E+2,4.101500E+2,4.111500E+2,4.121500E+2,4.131500E+2,4.141500E+2,4.151500E+2,4.161500E+2,4.171500E+2,4.181500E+2,4.191500E+2,4.201500E+2,4.211500E+2,4.221500E+2,4.231500E+2,4.241500E+2,4.251500E+2,4.261500E+2,4.271500E+2,4.281500E+2,4.291500E+2,4.301500E+2,4.311500E+2,4.321500E+2,4.331500E+2,4.341500E+2,4.351500E+2,4.361500E+2,4.371500E+2,4.381500E+2,4.391500E+2,4.401500E+2,4.411500E+2,4.421500E+2,4.431500E+2,4.441500E+2,4.451500E+2,4.461500E+2,4.471500E+2,4.481500E+2,4.491500E+2,4.501500E+2,4.511500E+2,4.521500E+2,4.531500E+2,4.541500E+2,4.551500E+2,4.561500E+2,4.571500E+2,4.581500E+2,4.591500E+2,4.601500E+2,4.611500E+2,4.621500E+2,4.631500E+2,4.641500E+2,4.651500E+2,4.661500E+2,4.671500E+2,4.681500E+2,4.691500E+2,4.701500E+2,4.711500E+2,4.721500E+2,4.731500E+2,4.741500E+2,4.751500E+2,4.761500E+2,4.771500E+2,4.781500E+2,4.791500E+2,4.801500E+2,4.811500E+2,4.821500E+2,4.831500E+2,4.841500E+2,4.851500E+2,4.861500E+2,4.871500E+2,4.881500E+2,4.891500E+2,4.901500E+2,4.911500E+2,4.921500E+2,4.931500E+2,4.941500E+2,4.951500E+2,4.961500E+2,4.971500E+2,4.981500E+2,4.991500E+2,5.001500E+2,5.011500E+2,5.021500E+2,5.031500E+2]) + self.density.data = np.array([8.390000E+2,8.380000E+2,8.380000E+2,8.370000E+2,8.360000E+2,8.350000E+2,8.350000E+2,8.340000E+2,8.330000E+2,8.330000E+2,8.320000E+2,8.310000E+2,8.300000E+2,8.300000E+2,8.290000E+2,8.280000E+2,8.270000E+2,8.270000E+2,8.260000E+2,8.250000E+2,8.240000E+2,8.240000E+2,8.230000E+2,8.220000E+2,8.210000E+2,8.210000E+2,8.200000E+2,8.190000E+2,8.190000E+2,8.180000E+2,8.170000E+2,8.160000E+2,8.160000E+2,8.150000E+2,8.140000E+2,8.130000E+2,8.130000E+2,8.120000E+2,8.110000E+2,8.100000E+2,8.100000E+2,8.090000E+2,8.080000E+2,8.070000E+2,8.070000E+2,8.060000E+2,8.050000E+2,8.050000E+2,8.040000E+2,8.030000E+2,8.020000E+2,8.020000E+2,8.010000E+2,8.000000E+2,7.990000E+2,7.990000E+2,7.980000E+2,7.970000E+2,7.960000E+2,7.960000E+2,7.950000E+2,7.940000E+2,7.930000E+2,7.930000E+2,7.920000E+2,7.910000E+2,7.910000E+2,7.900000E+2,7.890000E+2,7.880000E+2,7.880000E+2,7.870000E+2,7.860000E+2,7.850000E+2,7.850000E+2,7.840000E+2,7.830000E+2,7.820000E+2,7.820000E+2,7.810000E+2,7.800000E+2,7.800000E+2,7.790000E+2,7.780000E+2,7.770000E+2,7.770000E+2,7.760000E+2,7.750000E+2,7.740000E+2,7.740000E+2,7.730000E+2,7.720000E+2,7.710000E+2,7.710000E+2,7.700000E+2,7.690000E+2,7.680000E+2,7.680000E+2,7.670000E+2,7.660000E+2,7.660000E+2,7.650000E+2,7.640000E+2,7.630000E+2,7.630000E+2,7.620000E+2,7.610000E+2,7.600000E+2,7.600000E+2,7.590000E+2,7.580000E+2,7.570000E+2,7.570000E+2,7.560000E+2,7.550000E+2,7.540000E+2,7.540000E+2,7.530000E+2,7.520000E+2,7.520000E+2,7.510000E+2,7.500000E+2,7.490000E+2,7.490000E+2,7.480000E+2,7.470000E+2,7.460000E+2,7.460000E+2,7.450000E+2,7.440000E+2,7.430000E+2,7.430000E+2,7.420000E+2,7.410000E+2,7.410000E+2,7.400000E+2,7.390000E+2,7.380000E+2,7.380000E+2,7.370000E+2,7.360000E+2,7.350000E+2,7.350000E+2,7.340000E+2,7.330000E+2,7.320000E+2,7.320000E+2,7.310000E+2,7.300000E+2,7.290000E+2,7.290000E+2,7.280000E+2,7.270000E+2,7.270000E+2,7.260000E+2,7.250000E+2,7.240000E+2,7.240000E+2,7.230000E+2,7.220000E+2,7.210000E+2,7.210000E+2,7.200000E+2,7.190000E+2,7.180000E+2,7.180000E+2,7.170000E+2,7.160000E+2,7.150000E+2,7.150000E+2,7.140000E+2,7.130000E+2,7.130000E+2,7.120000E+2,7.110000E+2,7.100000E+2,7.100000E+2,7.090000E+2,7.080000E+2,7.070000E+2,7.070000E+2,7.060000E+2,7.050000E+2,7.040000E+2,7.040000E+2,7.030000E+2,7.020000E+2,7.010000E+2,7.010000E+2,7.000000E+2,6.990000E+2,6.990000E+2,6.980000E+2,6.970000E+2,6.960000E+2,6.960000E+2,6.950000E+2,6.940000E+2,6.930000E+2,6.930000E+2,6.920000E+2,6.910000E+2,6.900000E+2,6.900000E+2,6.890000E+2,6.880000E+2,6.880000E+2,6.870000E+2,6.860000E+2,6.850000E+2,6.850000E+2,6.840000E+2,6.830000E+2,6.820000E+2,6.820000E+2,6.810000E+2,6.800000E+2,6.790000E+2,6.790000E+2,6.780000E+2,6.770000E+2,6.760000E+2,6.760000E+2,6.750000E+2,6.740000E+2,6.740000E+2,6.730000E+2,6.720000E+2,6.710000E+2,6.710000E+2,6.700000E+2,6.690000E+2,6.680000E+2,6.680000E+2,6.670000E+2,6.660000E+2,6.650000E+2,6.650000E+2,6.640000E+2,6.630000E+2,6.620000E+2,6.620000E+2,6.610000E+2,6.600000E+2,6.600000E+2,6.590000E+2,6.580000E+2,6.570000E+2,6.570000E+2,6.560000E+2,6.550000E+2,6.540000E+2,6.540000E+2,6.530000E+2,6.520000E+2,6.510000E+2,6.510000E+2,6.500000E+2,6.490000E+2,6.490000E+2,6.480000E+2,6.470000E+2,6.460000E+2,6.460000E+2,6.450000E+2,6.440000E+2,6.430000E+2,6.430000E+2,6.420000E+2,6.410000E+2,6.400000E+2,6.400000E+2,6.390000E+2,6.380000E+2,6.370000E+2,6.370000E+2,6.360000E+2,6.350000E+2,6.350000E+2,6.340000E+2,6.330000E+2,6.320000E+2,6.320000E+2,6.310000E+2,6.300000E+2,6.290000E+2,6.290000E+2,6.280000E+2,6.270000E+2,6.260000E+2,6.260000E+2,6.250000E+2,6.240000E+2,6.230000E+2,6.230000E+2,6.220000E+2,6.210000E+2,6.210000E+2,6.200000E+2,6.190000E+2,6.180000E+2,6.180000E+2,6.170000E+2,6.160000E+2,6.150000E+2,6.150000E+2,6.140000E+2,6.130000E+2,6.120000E+2,6.120000E+2,6.110000E+2,6.100000E+2,6.090000E+2,6.090000E+2,6.080000E+2,6.070000E+2]) + self.viscosity.data = np.array([5.020000E-4,4.540000E-4,4.100000E-4,3.700000E-4,3.350000E-4,3.020000E-4,2.730000E-4,2.470000E-4,2.230000E-4,2.010000E-4,1.820000E-4,1.640000E-4,1.490000E-4,1.340000E-4,1.210000E-4,1.100000E-4,9.900000E-5,8.900000E-5,8.100000E-5,7.300000E-5,6.600000E-5,6.000000E-5,5.400000E-5,4.900000E-5,4.400000E-5,4.000000E-5,3.600000E-5,3.200000E-5,2.900000E-5,2.600000E-5,2.400000E-5,2.200000E-5,2.000000E-5,1.800000E-5,2.200000E-5,2.000000E-5,1.900000E-5,1.800000E-5,1.700000E-5,1.600000E-5,1.500000E-5,1.400000E-5,1.400000E-5,1.300000E-5,1.200000E-5,1.200000E-5,1.100000E-5,1.100000E-5,1.000000E-5,9.600000E-6,9.200000E-6,8.800000E-6,8.400000E-6,8.000000E-6,7.700000E-6,7.400000E-6,7.100000E-6,6.800000E-6,6.500000E-6,6.300000E-6,6.000000E-6,5.800000E-6,5.600000E-6,5.400000E-6,5.200000E-6,5.000000E-6,4.800000E-6,4.700000E-6,4.500000E-6,4.400000E-6,4.200000E-6,4.100000E-6,4.000000E-6,3.800000E-6,3.700000E-6,3.600000E-6,3.500000E-6,3.400000E-6,3.300000E-6,3.200000E-6,3.100000E-6,3.000000E-6,2.900000E-6,2.800000E-6,2.800000E-6,2.700000E-6,2.600000E-6,2.500000E-6,2.500000E-6,2.400000E-6,2.300000E-6,2.300000E-6,2.200000E-6,2.200000E-6,2.100000E-6,2.100000E-6,2.000000E-6,2.000000E-6,1.900000E-6,1.900000E-6,1.800000E-6,1.800000E-6,1.700000E-6,1.700000E-6,1.700000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.000000E-6,1.000000E-6,1.000000E-6,1.000000E-6,9.800000E-7,9.700000E-7,9.600000E-7,9.400000E-7,9.300000E-7,9.200000E-7,9.000000E-7,8.900000E-7,8.800000E-7,8.600000E-7,8.500000E-7,8.400000E-7,8.300000E-7,8.200000E-7,8.100000E-7,7.900000E-7,7.800000E-7,7.700000E-7,7.600000E-7,7.500000E-7,7.400000E-7,7.300000E-7,7.200000E-7,7.100000E-7,7.000000E-7,6.900000E-7,6.800000E-7,6.700000E-7,6.600000E-7,6.500000E-7,6.400000E-7,6.400000E-7,6.300000E-7,6.200000E-7,6.100000E-7,6.000000E-7,5.900000E-7,5.800000E-7,5.800000E-7,5.700000E-7,5.600000E-7,5.500000E-7,5.400000E-7,5.400000E-7,5.300000E-7,5.200000E-7,5.100000E-7,5.100000E-7,5.000000E-7,4.900000E-7,5.400000E-7,5.300000E-7,5.200000E-7,5.200000E-7,5.100000E-7,5.000000E-7,5.000000E-7,4.900000E-7,4.900000E-7,4.800000E-7,4.800000E-7,4.700000E-7,4.600000E-7,4.600000E-7,4.500000E-7,4.500000E-7,4.400000E-7,4.400000E-7,4.300000E-7,4.300000E-7,4.300000E-7,4.200000E-7,4.200000E-7,4.100000E-7,4.100000E-7,4.000000E-7,4.000000E-7,4.000000E-7,3.900000E-7,3.900000E-7,3.800000E-7,3.800000E-7,3.800000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.600000E-7,3.600000E-7,3.600000E-7,3.500000E-7,3.500000E-7,3.500000E-7,3.400000E-7,3.400000E-7,3.400000E-7,3.300000E-7,3.300000E-7,3.300000E-7,3.300000E-7,3.200000E-7,3.200000E-7,3.200000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.000000E-7,3.000000E-7,3.000000E-7,3.000000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.500000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.200000E-7,2.200000E-7,2.200000E-7,2.200000E-7,2.200000E-7,2.200000E-7,2.200000E-7,2.100000E-7,2.100000E-7,2.100000E-7,2.100000E-7,2.100000E-7,2.100000E-7,2.100000E-7,2.100000E-7,2.000000E-7,2.000000E-7,2.000000E-7,2.000000E-7,2.000000E-7,2.000000E-7,2.000000E-7,2.000000E-7,1.900000E-7,1.900000E-7,1.900000E-7,1.900000E-7,1.900000E-7,1.900000E-7,1.900000E-7,1.900000E-7,1.900000E-7,1.900000E-7,1.800000E-7]) + self.specific_heat.data = np.array([1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.600000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3]) + self.conductivity.data = np.array([1.600000E-1,1.600000E-1,1.600000E-1,1.600000E-1,1.600000E-1,1.600000E-1,1.590000E-1,1.590000E-1,1.590000E-1,1.590000E-1,1.590000E-1,1.590000E-1,1.590000E-1,1.590000E-1,1.590000E-1,1.590000E-1,1.590000E-1,1.590000E-1,1.580000E-1,1.580000E-1,1.580000E-1,1.580000E-1,1.580000E-1,1.580000E-1,1.580000E-1,1.580000E-1,1.580000E-1,1.580000E-1,1.580000E-1,1.580000E-1,1.580000E-1,1.570000E-1,1.570000E-1,1.570000E-1,1.570000E-1,1.570000E-1,1.570000E-1,1.570000E-1,1.570000E-1,1.570000E-1,1.570000E-1,1.570000E-1,1.570000E-1,1.560000E-1,1.560000E-1,1.560000E-1,1.560000E-1,1.560000E-1,1.560000E-1,1.560000E-1,1.560000E-1,1.560000E-1,1.560000E-1,1.560000E-1,1.560000E-1,1.560000E-1,1.550000E-1,1.550000E-1,1.550000E-1,1.550000E-1,1.550000E-1,1.550000E-1,1.550000E-1,1.550000E-1,1.550000E-1,1.550000E-1,1.550000E-1,1.550000E-1,1.540000E-1,1.540000E-1,1.540000E-1,1.540000E-1,1.540000E-1,1.540000E-1,1.540000E-1,1.540000E-1,1.540000E-1,1.540000E-1,1.540000E-1,1.540000E-1,1.540000E-1,1.530000E-1,1.530000E-1,1.530000E-1,1.530000E-1,1.530000E-1,1.530000E-1,1.530000E-1,1.530000E-1,1.530000E-1,1.530000E-1,1.530000E-1,1.530000E-1,1.520000E-1,1.520000E-1,1.520000E-1,1.520000E-1,1.520000E-1,1.520000E-1,1.520000E-1,1.520000E-1,1.520000E-1,1.520000E-1,1.520000E-1,1.520000E-1,1.520000E-1,1.510000E-1,1.510000E-1,1.510000E-1,1.510000E-1,1.510000E-1,1.510000E-1,1.510000E-1,1.510000E-1,1.510000E-1,1.510000E-1,1.510000E-1,1.510000E-1,1.500000E-1,1.500000E-1,1.500000E-1,1.500000E-1,1.500000E-1,1.500000E-1,1.500000E-1,1.500000E-1,1.500000E-1,1.500000E-1,1.500000E-1,1.500000E-1,1.500000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.490000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.480000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.470000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.460000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.450000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.440000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.430000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.420000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.410000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.400000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.390000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.380000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.370000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.360000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1,1.350000E-1]) + self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,1.000000E+4,1.000000E+4,1.100000E+4,1.100000E+4,1.200000E+4,1.200000E+4,1.300000E+4,1.300000E+4,1.400000E+4,1.400000E+4,1.500000E+4,1.600000E+4,1.600000E+4,1.700000E+4,1.800000E+4,1.800000E+4,1.900000E+4,2.000000E+4,2.100000E+4,2.100000E+4,2.200000E+4,2.300000E+4,2.400000E+4,2.500000E+4,2.600000E+4,2.700000E+4,2.800000E+4,2.900000E+4,3.000000E+4,3.100000E+4,3.200000E+4,3.300000E+4,3.400000E+4,3.500000E+4,3.700000E+4,3.800000E+4,3.900000E+4,4.000000E+4,4.200000E+4,4.300000E+4,4.400000E+4,4.500000E+4,4.700000E+4,4.800000E+4,5.000000E+4,5.100000E+4,5.300000E+4,5.500000E+4,5.700000E+4,6.000000E+4,6.200000E+4,6.400000E+4,6.600000E+4,6.800000E+4,7.000000E+4,7.200000E+4,7.400000E+4,7.600000E+4,7.800000E+4,8.000000E+4,8.200000E+4,8.400000E+4,8.600000E+4,8.800000E+4,8.900000E+4,9.100000E+4,9.300000E+4,9.500000E+4,9.700000E+4,9.800000E+4,1.000000E+5,1.020000E+5,1.030000E+5,1.050000E+5,1.070000E+5,1.080000E+5,1.100000E+5,1.110000E+5,1.130000E+5,1.150000E+5,1.160000E+5,1.180000E+5,1.190000E+5,1.210000E+5,1.220000E+5,1.230000E+5,1.250000E+5,1.260000E+5,1.270000E+5,1.290000E+5,1.300000E+5,1.310000E+5,1.330000E+5,1.340000E+5,1.350000E+5,1.360000E+5,1.380000E+5,1.390000E+5,1.400000E+5]) + self.Tmin = np.min(self.temperature.data) + self.Tmax = np.max(self.temperature.data) + self.TminPsat = np.min(self.temperature.data[~np.isnan(self.saturation_pressure.data)]) + self.name = "PLR" + self.description = "Paratherm "+ self.name[1:] + self.reference = "Paratherm2013" + self.reshapeAll() + + + + +class PMR(PureData): + """ + Paratherm MR is a food grade (NSF Certified) single fluid heating and + cooling from 36 F to 550 F. Eliminates design and maintenance problems + caused by steam/chilled water temperature control systems. Quick low- + temperature start-ups. + """ + def __init__(self): + PureData.__init__(self) + self.density.source = self.density.SOURCE_DATA + self.viscosity.source = self.viscosity.SOURCE_DATA + self.specific_heat.source = self.specific_heat.SOURCE_DATA + self.conductivity.source = self.conductivity.SOURCE_DATA + self.saturation_pressure.source = self.saturation_pressure.SOURCE_DATA + self.temperature.data = np.array([2.331500E+2,2.341500E+2,2.351500E+2,2.361500E+2,2.371500E+2,2.381500E+2,2.391500E+2,2.401500E+2,2.411500E+2,2.421500E+2,2.431500E+2,2.441500E+2,2.451500E+2,2.461500E+2,2.471500E+2,2.481500E+2,2.491500E+2,2.501500E+2,2.511500E+2,2.521500E+2,2.531500E+2,2.541500E+2,2.551500E+2,2.561500E+2,2.571500E+2,2.581500E+2,2.591500E+2,2.601500E+2,2.611500E+2,2.621500E+2,2.631500E+2,2.641500E+2,2.651500E+2,2.661500E+2,2.671500E+2,2.681500E+2,2.691500E+2,2.701500E+2,2.711500E+2,2.721500E+2,2.731500E+2,2.741500E+2,2.751500E+2,2.761500E+2,2.771500E+2,2.781500E+2,2.791500E+2,2.801500E+2,2.811500E+2,2.821500E+2,2.831500E+2,2.841500E+2,2.851500E+2,2.861500E+2,2.871500E+2,2.881500E+2,2.891500E+2,2.901500E+2,2.911500E+2,2.921500E+2,2.931500E+2,2.941500E+2,2.951500E+2,2.961500E+2,2.971500E+2,2.981500E+2,2.991500E+2,3.001500E+2,3.011500E+2,3.021500E+2,3.031500E+2,3.041500E+2,3.051500E+2,3.061500E+2,3.071500E+2,3.081500E+2,3.091500E+2,3.101500E+2,3.111500E+2,3.121500E+2,3.131500E+2,3.141500E+2,3.151500E+2,3.161500E+2,3.171500E+2,3.181500E+2,3.191500E+2,3.201500E+2,3.211500E+2,3.221500E+2,3.231500E+2,3.241500E+2,3.251500E+2,3.261500E+2,3.271500E+2,3.281500E+2,3.291500E+2,3.301500E+2,3.311500E+2,3.321500E+2,3.331500E+2,3.341500E+2,3.351500E+2,3.361500E+2,3.371500E+2,3.381500E+2,3.391500E+2,3.401500E+2,3.411500E+2,3.421500E+2,3.431500E+2,3.441500E+2,3.451500E+2,3.461500E+2,3.471500E+2,3.481500E+2,3.491500E+2,3.501500E+2,3.511500E+2,3.521500E+2,3.531500E+2,3.541500E+2,3.551500E+2,3.561500E+2,3.571500E+2,3.581500E+2,3.591500E+2,3.601500E+2,3.611500E+2,3.621500E+2,3.631500E+2,3.641500E+2,3.651500E+2,3.661500E+2,3.671500E+2,3.681500E+2,3.691500E+2,3.701500E+2,3.711500E+2,3.721500E+2,3.731500E+2,3.741500E+2,3.751500E+2,3.761500E+2,3.771500E+2,3.781500E+2,3.791500E+2,3.801500E+2,3.811500E+2,3.821500E+2,3.831500E+2,3.841500E+2,3.851500E+2,3.861500E+2,3.871500E+2,3.881500E+2,3.891500E+2,3.901500E+2,3.911500E+2,3.921500E+2,3.931500E+2,3.941500E+2,3.951500E+2,3.961500E+2,3.971500E+2,3.981500E+2,3.991500E+2,4.001500E+2,4.011500E+2,4.021500E+2,4.031500E+2,4.041500E+2,4.051500E+2,4.061500E+2,4.071500E+2,4.081500E+2,4.091500E+2,4.101500E+2,4.111500E+2,4.121500E+2,4.131500E+2,4.141500E+2,4.151500E+2,4.161500E+2,4.171500E+2,4.181500E+2,4.191500E+2,4.201500E+2,4.211500E+2,4.221500E+2,4.231500E+2,4.241500E+2,4.251500E+2,4.261500E+2,4.271500E+2,4.281500E+2,4.291500E+2,4.301500E+2,4.311500E+2,4.321500E+2,4.331500E+2,4.341500E+2,4.351500E+2,4.361500E+2,4.371500E+2,4.381500E+2,4.391500E+2,4.401500E+2,4.411500E+2,4.421500E+2,4.431500E+2,4.441500E+2,4.451500E+2,4.461500E+2,4.471500E+2,4.481500E+2,4.491500E+2,4.501500E+2,4.511500E+2,4.521500E+2,4.531500E+2,4.541500E+2,4.551500E+2,4.561500E+2,4.571500E+2,4.581500E+2,4.591500E+2,4.601500E+2,4.611500E+2,4.621500E+2,4.631500E+2,4.641500E+2,4.651500E+2,4.661500E+2,4.671500E+2,4.681500E+2,4.691500E+2,4.701500E+2,4.711500E+2,4.721500E+2,4.731500E+2,4.741500E+2,4.751500E+2,4.761500E+2,4.771500E+2,4.781500E+2,4.791500E+2,4.801500E+2,4.811500E+2,4.821500E+2,4.831500E+2,4.841500E+2,4.851500E+2,4.861500E+2,4.871500E+2,4.881500E+2,4.891500E+2,4.901500E+2,4.911500E+2,4.921500E+2,4.931500E+2,4.941500E+2,4.951500E+2,4.961500E+2,4.971500E+2,4.981500E+2,4.991500E+2,5.001500E+2,5.011500E+2,5.021500E+2,5.031500E+2,5.041500E+2,5.051500E+2,5.061500E+2,5.071500E+2,5.081500E+2,5.091500E+2,5.101500E+2,5.111500E+2,5.121500E+2,5.131500E+2,5.141500E+2,5.151500E+2,5.161500E+2,5.171500E+2,5.181500E+2,5.191500E+2,5.201500E+2,5.211500E+2,5.221500E+2,5.231500E+2,5.241500E+2,5.251500E+2,5.261500E+2,5.271500E+2,5.281500E+2,5.291500E+2,5.301500E+2,5.311500E+2,5.321500E+2,5.331500E+2,5.341500E+2,5.351500E+2,5.361500E+2,5.371500E+2,5.381500E+2,5.391500E+2,5.401500E+2,5.411500E+2,5.421500E+2,5.431500E+2,5.441500E+2,5.451500E+2,5.461500E+2,5.471500E+2,5.481500E+2,5.491500E+2,5.501500E+2,5.511500E+2,5.521500E+2,5.531500E+2,5.541500E+2,5.551500E+2,5.561500E+2,5.571500E+2,5.581500E+2,5.591500E+2,5.601500E+2,5.611500E+2,5.621500E+2,5.631500E+2,5.641500E+2,5.651500E+2,5.661500E+2,5.671500E+2,5.681500E+2,5.691500E+2,5.701500E+2,5.711500E+2,5.721500E+2,5.731500E+2,5.741500E+2,5.751500E+2,5.761500E+2,5.771500E+2,5.781500E+2,5.791500E+2,5.801500E+2,5.811500E+2,5.821500E+2,5.831500E+2,5.841500E+2,5.851500E+2,5.861500E+2,5.871500E+2,5.881500E+2]) + self.density.data = np.array([8.680000E+2,8.670000E+2,8.650000E+2,8.640000E+2,8.630000E+2,8.620000E+2,8.600000E+2,8.590000E+2,8.580000E+2,8.570000E+2,8.550000E+2,8.540000E+2,8.530000E+2,8.520000E+2,8.510000E+2,8.490000E+2,8.480000E+2,8.470000E+2,8.460000E+2,8.450000E+2,8.430000E+2,8.420000E+2,8.410000E+2,8.400000E+2,8.390000E+2,8.380000E+2,8.360000E+2,8.350000E+2,8.340000E+2,8.330000E+2,8.320000E+2,8.310000E+2,8.300000E+2,8.280000E+2,8.270000E+2,8.260000E+2,8.250000E+2,8.240000E+2,8.230000E+2,8.220000E+2,8.210000E+2,8.200000E+2,8.180000E+2,8.170000E+2,8.160000E+2,8.150000E+2,8.140000E+2,8.130000E+2,8.120000E+2,8.110000E+2,8.100000E+2,8.090000E+2,8.080000E+2,8.070000E+2,8.060000E+2,8.050000E+2,8.040000E+2,8.020000E+2,8.010000E+2,8.000000E+2,7.990000E+2,7.980000E+2,7.970000E+2,7.960000E+2,7.950000E+2,7.940000E+2,7.930000E+2,7.920000E+2,7.910000E+2,7.900000E+2,7.890000E+2,7.880000E+2,7.870000E+2,7.860000E+2,7.860000E+2,7.850000E+2,7.840000E+2,7.830000E+2,7.820000E+2,7.810000E+2,7.800000E+2,7.790000E+2,7.780000E+2,7.770000E+2,7.760000E+2,7.750000E+2,7.740000E+2,7.730000E+2,7.720000E+2,7.720000E+2,7.710000E+2,7.700000E+2,7.690000E+2,7.680000E+2,7.670000E+2,7.660000E+2,7.650000E+2,7.640000E+2,7.640000E+2,7.630000E+2,7.620000E+2,7.610000E+2,7.600000E+2,7.590000E+2,7.580000E+2,7.580000E+2,7.570000E+2,7.560000E+2,7.550000E+2,7.540000E+2,7.530000E+2,7.530000E+2,7.520000E+2,7.510000E+2,7.500000E+2,7.490000E+2,7.490000E+2,7.480000E+2,7.470000E+2,7.460000E+2,7.450000E+2,7.450000E+2,7.440000E+2,7.430000E+2,7.420000E+2,7.420000E+2,7.410000E+2,7.400000E+2,7.390000E+2,7.390000E+2,7.380000E+2,7.370000E+2,7.360000E+2,7.360000E+2,7.350000E+2,7.340000E+2,7.330000E+2,7.330000E+2,7.320000E+2,7.310000E+2,7.310000E+2,7.300000E+2,7.290000E+2,7.290000E+2,7.280000E+2,7.270000E+2,7.260000E+2,7.260000E+2,7.250000E+2,7.240000E+2,7.240000E+2,7.230000E+2,7.220000E+2,7.220000E+2,7.210000E+2,7.210000E+2,7.200000E+2,7.190000E+2,7.190000E+2,7.180000E+2,7.170000E+2,7.170000E+2,7.160000E+2,7.160000E+2,7.150000E+2,7.140000E+2,7.140000E+2,7.130000E+2,7.130000E+2,7.120000E+2,7.110000E+2,7.110000E+2,7.100000E+2,7.100000E+2,7.090000E+2,7.090000E+2,7.080000E+2,7.070000E+2,7.070000E+2,7.060000E+2,7.060000E+2,7.050000E+2,7.050000E+2,7.040000E+2,7.040000E+2,7.030000E+2,7.030000E+2,7.020000E+2,7.020000E+2,7.010000E+2,7.010000E+2,7.000000E+2,7.000000E+2,6.990000E+2,6.990000E+2,6.980000E+2,6.980000E+2,6.970000E+2,6.970000E+2,6.960000E+2,6.960000E+2,6.950000E+2,6.950000E+2,6.940000E+2,6.940000E+2,6.940000E+2,6.930000E+2,6.930000E+2,6.920000E+2,6.920000E+2,6.910000E+2,6.910000E+2,6.910000E+2,6.900000E+2,6.900000E+2,6.890000E+2,6.890000E+2,6.890000E+2,6.880000E+2,6.880000E+2,6.870000E+2,6.870000E+2,6.870000E+2,6.860000E+2,6.860000E+2,6.860000E+2,6.850000E+2,6.850000E+2,6.840000E+2,6.840000E+2,6.840000E+2,6.830000E+2,6.830000E+2,6.830000E+2,6.820000E+2,6.820000E+2,6.820000E+2,6.820000E+2,6.810000E+2,6.810000E+2,6.810000E+2,6.800000E+2,6.800000E+2,6.800000E+2,6.790000E+2,6.790000E+2,6.790000E+2,6.790000E+2,6.780000E+2,6.780000E+2,6.780000E+2,6.780000E+2,6.770000E+2,6.770000E+2,6.770000E+2,6.770000E+2,6.760000E+2,6.760000E+2,6.760000E+2,6.760000E+2,6.750000E+2,6.750000E+2,6.750000E+2,6.750000E+2,6.750000E+2,6.740000E+2,6.740000E+2,6.740000E+2,6.740000E+2,6.740000E+2,6.730000E+2,6.730000E+2,6.730000E+2,6.730000E+2,6.730000E+2,6.730000E+2,6.720000E+2,6.720000E+2,6.720000E+2,6.720000E+2,6.720000E+2,6.720000E+2,6.720000E+2,6.710000E+2,6.710000E+2,6.710000E+2,6.710000E+2,6.710000E+2,6.710000E+2,6.710000E+2,6.710000E+2,6.700000E+2,6.700000E+2,6.700000E+2,6.700000E+2,6.700000E+2,6.700000E+2,6.700000E+2,6.700000E+2,6.700000E+2,6.700000E+2,6.700000E+2,6.700000E+2,6.700000E+2,6.700000E+2,6.700000E+2,6.700000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.690000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.680000E+2,6.670000E+2,6.670000E+2,6.670000E+2,6.670000E+2,6.670000E+2,6.670000E+2,6.670000E+2,6.670000E+2]) + self.viscosity.data = np.array([3.860000E-4,3.150000E-4,2.730000E-4,2.440000E-4,2.210000E-4,2.030000E-4,1.870000E-4,1.730000E-4,1.610000E-4,1.500000E-4,1.410000E-4,1.320000E-4,1.240000E-4,1.160000E-4,1.090000E-4,1.020000E-4,9.600000E-5,9.000000E-5,8.500000E-5,8.000000E-5,7.500000E-5,7.000000E-5,6.500000E-5,6.100000E-5,5.700000E-5,5.300000E-5,4.900000E-5,4.500000E-5,4.200000E-5,3.800000E-5,3.500000E-5,3.200000E-5,2.800000E-5,2.500000E-5,2.800000E-5,2.700000E-5,2.600000E-5,2.500000E-5,2.400000E-5,2.300000E-5,2.200000E-5,2.100000E-5,2.000000E-5,1.900000E-5,1.900000E-5,1.800000E-5,1.700000E-5,1.600000E-5,1.600000E-5,1.500000E-5,1.400000E-5,1.400000E-5,1.300000E-5,1.200000E-5,1.200000E-5,1.100000E-5,1.100000E-5,1.000000E-5,1.000000E-5,9.600000E-6,9.200000E-6,8.900000E-6,8.500000E-6,8.200000E-6,8.000000E-6,7.700000E-6,7.500000E-6,7.300000E-6,7.100000E-6,7.000000E-6,6.800000E-6,6.600000E-6,6.400000E-6,6.200000E-6,6.000000E-6,5.800000E-6,5.700000E-6,5.500000E-6,5.300000E-6,5.200000E-6,5.100000E-6,4.900000E-6,4.800000E-6,4.700000E-6,4.600000E-6,4.500000E-6,4.400000E-6,4.300000E-6,4.200000E-6,4.100000E-6,4.000000E-6,3.900000E-6,3.800000E-6,3.800000E-6,3.700000E-6,3.600000E-6,3.600000E-6,3.500000E-6,3.400000E-6,3.400000E-6,3.300000E-6,3.100000E-6,3.000000E-6,3.000000E-6,2.900000E-6,2.800000E-6,2.800000E-6,2.700000E-6,2.600000E-6,2.600000E-6,2.500000E-6,2.500000E-6,2.400000E-6,2.400000E-6,2.300000E-6,2.300000E-6,2.200000E-6,2.200000E-6,2.100000E-6,2.100000E-6,2.100000E-6,2.000000E-6,2.000000E-6,2.000000E-6,1.900000E-6,1.900000E-6,1.800000E-6,1.800000E-6,1.800000E-6,1.800000E-6,1.700000E-6,1.700000E-6,1.700000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.000000E-6,1.000000E-6,1.000000E-6,1.000000E-6,1.000000E-6,9.800000E-7,9.700000E-7,9.600000E-7,9.500000E-7,9.400000E-7,9.300000E-7,9.200000E-7,9.100000E-7,9.000000E-7,8.900000E-7,8.800000E-7,8.700000E-7,8.600000E-7,8.500000E-7,8.400000E-7,8.300000E-7,8.200000E-7,8.200000E-7,8.100000E-7,8.000000E-7,7.900000E-7,7.800000E-7,7.800000E-7,7.700000E-7,7.600000E-7,7.500000E-7,7.500000E-7,7.400000E-7,7.300000E-7,7.200000E-7,7.200000E-7,7.100000E-7,7.000000E-7,7.000000E-7,6.900000E-7,6.800000E-7,6.800000E-7,6.700000E-7,6.700000E-7,6.600000E-7,6.500000E-7,6.500000E-7,6.400000E-7,6.400000E-7,6.300000E-7,6.300000E-7,6.200000E-7,6.200000E-7,6.100000E-7,6.100000E-7,6.000000E-7,5.900000E-7,5.900000E-7,5.900000E-7,5.800000E-7,5.800000E-7,5.700000E-7,5.700000E-7,5.600000E-7,5.600000E-7,5.500000E-7,5.500000E-7,5.400000E-7,5.400000E-7,5.400000E-7,5.300000E-7,5.300000E-7,5.200000E-7,5.200000E-7,5.200000E-7,5.100000E-7,5.100000E-7,5.000000E-7,5.000000E-7,5.000000E-7,4.900000E-7,4.900000E-7,4.900000E-7,4.800000E-7,4.800000E-7,4.700000E-7,4.700000E-7,4.700000E-7,4.600000E-7,4.600000E-7,4.600000E-7,4.500000E-7,4.500000E-7,4.500000E-7,4.500000E-7,4.400000E-7,4.400000E-7,4.400000E-7,4.300000E-7,4.300000E-7,4.300000E-7,4.200000E-7,4.200000E-7,4.200000E-7,4.200000E-7,4.100000E-7,4.100000E-7,4.100000E-7,4.100000E-7,4.000000E-7,4.000000E-7,4.000000E-7,3.900000E-7,3.900000E-7,3.900000E-7,3.900000E-7,3.800000E-7,3.800000E-7,3.800000E-7,3.800000E-7,3.800000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.700000E-7,3.600000E-7,3.600000E-7,3.600000E-7,3.600000E-7,3.600000E-7,3.500000E-7,3.500000E-7,3.500000E-7,3.500000E-7,3.400000E-7,3.400000E-7,3.400000E-7,3.400000E-7,3.400000E-7,3.400000E-7,3.300000E-7,3.300000E-7,3.300000E-7,3.300000E-7,3.300000E-7,3.200000E-7,3.200000E-7,3.200000E-7,3.200000E-7,3.200000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.100000E-7,3.000000E-7,3.000000E-7,3.000000E-7,3.000000E-7,3.000000E-7,3.000000E-7,3.000000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.900000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.700000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.600000E-7]) + self.specific_heat.data = np.array([2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3]) + self.conductivity.data = np.array([1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.340000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.330000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.320000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.310000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.300000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.290000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.280000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.270000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.260000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.250000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.240000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.230000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.220000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.210000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.200000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.190000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.180000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.170000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.160000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.150000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.140000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.130000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.120000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.110000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.100000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.090000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.080000E-1,1.070000E-1,1.070000E-1,1.070000E-1,1.070000E-1,1.070000E-1,1.070000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.030000E-1,1.030000E-1,1.030000E-1]) + self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,1.000000E+4,1.000000E+4,1.000000E+4,1.100000E+4,1.100000E+4,1.100000E+4,1.200000E+4,1.200000E+4,1.200000E+4,1.300000E+4,1.300000E+4,1.300000E+4,1.400000E+4,1.400000E+4,1.500000E+4,1.500000E+4,1.500000E+4,1.600000E+4,1.600000E+4,1.700000E+4,1.700000E+4,1.800000E+4,1.800000E+4,1.900000E+4,1.900000E+4,2.000000E+4,2.000000E+4,2.100000E+4,2.100000E+4,2.200000E+4,2.200000E+4,2.300000E+4,2.400000E+4,2.400000E+4,2.500000E+4,2.600000E+4,2.600000E+4,2.700000E+4,2.800000E+4,2.800000E+4,2.900000E+4,3.000000E+4,3.000000E+4,3.100000E+4,3.200000E+4,3.300000E+4,3.400000E+4,3.500000E+4,3.500000E+4,3.600000E+4,3.700000E+4,3.800000E+4,3.900000E+4,4.000000E+4,4.100000E+4,4.200000E+4,4.300000E+4,4.400000E+4,4.500000E+4,4.600000E+4,4.700000E+4,4.800000E+4,4.900000E+4,5.100000E+4,5.200000E+4,5.300000E+4,5.400000E+4,5.500000E+4,5.700000E+4,5.800000E+4,5.900000E+4,6.100000E+4,6.200000E+4,6.400000E+4,6.500000E+4,6.700000E+4,6.800000E+4,7.000000E+4,7.100000E+4,7.300000E+4,7.400000E+4,7.600000E+4,7.800000E+4]) + self.Tmin = np.min(self.temperature.data) + self.Tmax = np.max(self.temperature.data) + self.TminPsat = np.min(self.temperature.data[~np.isnan(self.saturation_pressure.data)]) + self.name = "PMR" + self.description = "Paratherm "+ self.name[1:] + self.reference = "Paratherm2013" + self.reshapeAll() + + + + +class PNF(PureData): + """ + The Paratherm NF heat transfer fluid is highly efficient, thermally stable + and cost-effective. Completely non-toxic, it is exceptionally safe to use + and is easy to dispose. Used fluid can be safely combined with spent + lubricating oils and recycled locally (EPA, citation 57FR21524). The NF + fluid is specified in a broad variety of applications, world wide. It is + tough and durable with a proven record of success under demanding + conditions, yet is easy and safe to handle. + """ + def __init__(self): + PureData.__init__(self) + self.density.source = self.density.SOURCE_DATA + self.viscosity.source = self.viscosity.SOURCE_DATA + self.specific_heat.source = self.specific_heat.SOURCE_DATA + self.conductivity.source = self.conductivity.SOURCE_DATA + self.saturation_pressure.source = self.saturation_pressure.SOURCE_DATA + self.temperature.data = np.array([2.631500E+2,2.641500E+2,2.651500E+2,2.661500E+2,2.671500E+2,2.681500E+2,2.691500E+2,2.701500E+2,2.711500E+2,2.721500E+2,2.731500E+2,2.741500E+2,2.751500E+2,2.761500E+2,2.771500E+2,2.781500E+2,2.791500E+2,2.801500E+2,2.811500E+2,2.821500E+2,2.831500E+2,2.841500E+2,2.851500E+2,2.861500E+2,2.871500E+2,2.881500E+2,2.891500E+2,2.901500E+2,2.911500E+2,2.921500E+2,2.931500E+2,2.941500E+2,2.951500E+2,2.961500E+2,2.971500E+2,2.981500E+2,2.991500E+2,3.001500E+2,3.011500E+2,3.021500E+2,3.031500E+2,3.041500E+2,3.051500E+2,3.061500E+2,3.071500E+2,3.081500E+2,3.091500E+2,3.101500E+2,3.111500E+2,3.121500E+2,3.131500E+2,3.141500E+2,3.151500E+2,3.161500E+2,3.171500E+2,3.181500E+2,3.191500E+2,3.201500E+2,3.211500E+2,3.221500E+2,3.231500E+2,3.241500E+2,3.251500E+2,3.261500E+2,3.271500E+2,3.281500E+2,3.291500E+2,3.301500E+2,3.311500E+2,3.321500E+2,3.331500E+2,3.341500E+2,3.351500E+2,3.361500E+2,3.371500E+2,3.381500E+2,3.391500E+2,3.401500E+2,3.411500E+2,3.421500E+2,3.431500E+2,3.441500E+2,3.451500E+2,3.461500E+2,3.471500E+2,3.481500E+2,3.491500E+2,3.501500E+2,3.511500E+2,3.521500E+2,3.531500E+2,3.541500E+2,3.551500E+2,3.561500E+2,3.571500E+2,3.581500E+2,3.591500E+2,3.601500E+2,3.611500E+2,3.621500E+2,3.631500E+2,3.641500E+2,3.651500E+2,3.661500E+2,3.671500E+2,3.681500E+2,3.691500E+2,3.701500E+2,3.711500E+2,3.721500E+2,3.731500E+2,3.741500E+2,3.751500E+2,3.761500E+2,3.771500E+2,3.781500E+2,3.791500E+2,3.801500E+2,3.811500E+2,3.821500E+2,3.831500E+2,3.841500E+2,3.851500E+2,3.861500E+2,3.871500E+2,3.881500E+2,3.891500E+2,3.901500E+2,3.911500E+2,3.921500E+2,3.931500E+2,3.941500E+2,3.951500E+2,3.961500E+2,3.971500E+2,3.981500E+2,3.991500E+2,4.001500E+2,4.011500E+2,4.021500E+2,4.031500E+2,4.041500E+2,4.051500E+2,4.061500E+2,4.071500E+2,4.081500E+2,4.091500E+2,4.101500E+2,4.111500E+2,4.121500E+2,4.131500E+2,4.141500E+2,4.151500E+2,4.161500E+2,4.171500E+2,4.181500E+2,4.191500E+2,4.201500E+2,4.211500E+2,4.221500E+2,4.231500E+2,4.241500E+2,4.251500E+2,4.261500E+2,4.271500E+2,4.281500E+2,4.291500E+2,4.301500E+2,4.311500E+2,4.321500E+2,4.331500E+2,4.341500E+2,4.351500E+2,4.361500E+2,4.371500E+2,4.381500E+2,4.391500E+2,4.401500E+2,4.411500E+2,4.421500E+2,4.431500E+2,4.441500E+2,4.451500E+2,4.461500E+2,4.471500E+2,4.481500E+2,4.491500E+2,4.501500E+2,4.511500E+2,4.521500E+2,4.531500E+2,4.541500E+2,4.551500E+2,4.561500E+2,4.571500E+2,4.581500E+2,4.591500E+2,4.601500E+2,4.611500E+2,4.621500E+2,4.631500E+2,4.641500E+2,4.651500E+2,4.661500E+2,4.671500E+2,4.681500E+2,4.691500E+2,4.701500E+2,4.711500E+2,4.721500E+2,4.731500E+2,4.741500E+2,4.751500E+2,4.761500E+2,4.771500E+2,4.781500E+2,4.791500E+2,4.801500E+2,4.811500E+2,4.821500E+2,4.831500E+2,4.841500E+2,4.851500E+2,4.861500E+2,4.871500E+2,4.881500E+2,4.891500E+2,4.901500E+2,4.911500E+2,4.921500E+2,4.931500E+2,4.941500E+2,4.951500E+2,4.961500E+2,4.971500E+2,4.981500E+2,4.991500E+2,5.001500E+2,5.011500E+2,5.021500E+2,5.031500E+2,5.041500E+2,5.051500E+2,5.061500E+2,5.071500E+2,5.081500E+2,5.091500E+2,5.101500E+2,5.111500E+2,5.121500E+2,5.131500E+2,5.141500E+2,5.151500E+2,5.161500E+2,5.171500E+2,5.181500E+2,5.191500E+2,5.201500E+2,5.211500E+2,5.221500E+2,5.231500E+2,5.241500E+2,5.251500E+2,5.261500E+2,5.271500E+2,5.281500E+2,5.291500E+2,5.301500E+2,5.311500E+2,5.321500E+2,5.331500E+2,5.341500E+2,5.351500E+2,5.361500E+2,5.371500E+2,5.381500E+2,5.391500E+2,5.401500E+2,5.411500E+2,5.421500E+2,5.431500E+2,5.441500E+2,5.451500E+2,5.461500E+2,5.471500E+2,5.481500E+2,5.491500E+2,5.501500E+2,5.511500E+2,5.521500E+2,5.531500E+2,5.541500E+2,5.551500E+2,5.561500E+2,5.571500E+2,5.581500E+2,5.591500E+2,5.601500E+2,5.611500E+2,5.621500E+2,5.631500E+2,5.641500E+2,5.651500E+2,5.661500E+2,5.671500E+2,5.681500E+2,5.691500E+2,5.701500E+2,5.711500E+2,5.721500E+2,5.731500E+2,5.741500E+2,5.751500E+2,5.761500E+2,5.771500E+2,5.781500E+2,5.791500E+2,5.801500E+2,5.811500E+2,5.821500E+2,5.831500E+2,5.841500E+2,5.851500E+2,5.861500E+2,5.871500E+2,5.881500E+2]) + self.density.data = np.array([9.040000E+2,9.030000E+2,9.030000E+2,9.020000E+2,9.010000E+2,9.010000E+2,9.000000E+2,8.990000E+2,8.990000E+2,8.980000E+2,8.970000E+2,8.970000E+2,8.960000E+2,8.950000E+2,8.950000E+2,8.940000E+2,8.930000E+2,8.930000E+2,8.920000E+2,8.910000E+2,8.910000E+2,8.900000E+2,8.890000E+2,8.890000E+2,8.880000E+2,8.870000E+2,8.870000E+2,8.860000E+2,8.850000E+2,8.850000E+2,8.840000E+2,8.830000E+2,8.830000E+2,8.820000E+2,8.810000E+2,8.810000E+2,8.800000E+2,8.790000E+2,8.790000E+2,8.780000E+2,8.780000E+2,8.770000E+2,8.760000E+2,8.760000E+2,8.750000E+2,8.740000E+2,8.740000E+2,8.730000E+2,8.720000E+2,8.720000E+2,8.710000E+2,8.700000E+2,8.700000E+2,8.690000E+2,8.680000E+2,8.680000E+2,8.670000E+2,8.660000E+2,8.660000E+2,8.650000E+2,8.640000E+2,8.640000E+2,8.630000E+2,8.620000E+2,8.620000E+2,8.610000E+2,8.600000E+2,8.600000E+2,8.590000E+2,8.580000E+2,8.580000E+2,8.570000E+2,8.560000E+2,8.560000E+2,8.550000E+2,8.540000E+2,8.540000E+2,8.530000E+2,8.520000E+2,8.520000E+2,8.510000E+2,8.500000E+2,8.500000E+2,8.490000E+2,8.480000E+2,8.480000E+2,8.470000E+2,8.460000E+2,8.460000E+2,8.450000E+2,8.440000E+2,8.440000E+2,8.430000E+2,8.420000E+2,8.420000E+2,8.410000E+2,8.400000E+2,8.400000E+2,8.390000E+2,8.380000E+2,8.380000E+2,8.370000E+2,8.360000E+2,8.360000E+2,8.350000E+2,8.340000E+2,8.340000E+2,8.330000E+2,8.320000E+2,8.320000E+2,8.310000E+2,8.300000E+2,8.300000E+2,8.290000E+2,8.280000E+2,8.280000E+2,8.270000E+2,8.260000E+2,8.260000E+2,8.250000E+2,8.240000E+2,8.240000E+2,8.230000E+2,8.220000E+2,8.220000E+2,8.210000E+2,8.200000E+2,8.200000E+2,8.190000E+2,8.190000E+2,8.180000E+2,8.170000E+2,8.170000E+2,8.160000E+2,8.150000E+2,8.150000E+2,8.140000E+2,8.130000E+2,8.130000E+2,8.120000E+2,8.110000E+2,8.110000E+2,8.100000E+2,8.090000E+2,8.090000E+2,8.080000E+2,8.070000E+2,8.070000E+2,8.060000E+2,8.050000E+2,8.050000E+2,8.040000E+2,8.030000E+2,8.030000E+2,8.020000E+2,8.010000E+2,8.010000E+2,8.000000E+2,7.990000E+2,7.990000E+2,7.980000E+2,7.970000E+2,7.970000E+2,7.960000E+2,7.950000E+2,7.950000E+2,7.940000E+2,7.930000E+2,7.930000E+2,7.920000E+2,7.910000E+2,7.910000E+2,7.900000E+2,7.890000E+2,7.890000E+2,7.880000E+2,7.870000E+2,7.870000E+2,7.860000E+2,7.850000E+2,7.850000E+2,7.840000E+2,7.830000E+2,7.830000E+2,7.820000E+2,7.810000E+2,7.810000E+2,7.800000E+2,7.790000E+2,7.790000E+2,7.780000E+2,7.770000E+2,7.770000E+2,7.760000E+2,7.750000E+2,7.750000E+2,7.740000E+2,7.730000E+2,7.730000E+2,7.720000E+2,7.710000E+2,7.710000E+2,7.700000E+2,7.690000E+2,7.690000E+2,7.680000E+2,7.670000E+2,7.670000E+2,7.660000E+2,7.650000E+2,7.650000E+2,7.640000E+2,7.630000E+2,7.630000E+2,7.620000E+2,7.610000E+2,7.610000E+2,7.600000E+2,7.590000E+2,7.590000E+2,7.580000E+2,7.580000E+2,7.570000E+2,7.560000E+2,7.560000E+2,7.550000E+2,7.540000E+2,7.540000E+2,7.530000E+2,7.520000E+2,7.520000E+2,7.510000E+2,7.500000E+2,7.500000E+2,7.490000E+2,7.480000E+2,7.480000E+2,7.470000E+2,7.460000E+2,7.460000E+2,7.450000E+2,7.440000E+2,7.440000E+2,7.430000E+2,7.420000E+2,7.420000E+2,7.410000E+2,7.400000E+2,7.400000E+2,7.390000E+2,7.380000E+2,7.380000E+2,7.370000E+2,7.360000E+2,7.360000E+2,7.350000E+2,7.340000E+2,7.340000E+2,7.330000E+2,7.320000E+2,7.320000E+2,7.310000E+2,7.300000E+2,7.300000E+2,7.290000E+2,7.280000E+2,7.280000E+2,7.270000E+2,7.260000E+2,7.260000E+2,7.250000E+2,7.240000E+2,7.240000E+2,7.230000E+2,7.220000E+2,7.220000E+2,7.210000E+2,7.200000E+2,7.200000E+2,7.190000E+2,7.180000E+2,7.180000E+2,7.170000E+2,7.160000E+2,7.160000E+2,7.150000E+2,7.140000E+2,7.140000E+2,7.130000E+2,7.120000E+2,7.120000E+2,7.110000E+2,7.100000E+2,7.100000E+2,7.090000E+2,7.080000E+2,7.080000E+2,7.070000E+2,7.060000E+2,7.060000E+2,7.050000E+2,7.040000E+2,7.040000E+2,7.030000E+2,7.020000E+2,7.020000E+2,7.010000E+2,7.000000E+2,7.000000E+2,6.990000E+2,6.980000E+2,6.980000E+2,6.970000E+2,6.970000E+2,6.960000E+2,6.950000E+2,6.950000E+2,6.940000E+2,6.930000E+2,6.930000E+2,6.920000E+2,6.910000E+2,6.910000E+2,6.900000E+2,6.890000E+2,6.890000E+2]) + self.viscosity.data = np.array([4.760000E-4,4.380000E-4,4.040000E-4,3.720000E-4,3.430000E-4,3.160000E-4,2.910000E-4,2.680000E-4,2.470000E-4,2.280000E-4,2.100000E-4,1.940000E-4,1.780000E-4,1.640000E-4,1.510000E-4,1.400000E-4,1.290000E-4,1.180000E-4,1.090000E-4,1.010000E-4,9.300000E-5,8.600000E-5,8.000000E-5,7.400000E-5,6.900000E-5,6.400000E-5,5.900000E-5,5.500000E-5,5.100000E-5,4.800000E-5,4.500000E-5,4.200000E-5,3.900000E-5,3.700000E-5,3.400000E-5,3.200000E-5,3.100000E-5,2.900000E-5,2.700000E-5,2.600000E-5,2.500000E-5,2.400000E-5,2.200000E-5,2.100000E-5,2.100000E-5,2.000000E-5,1.900000E-5,1.800000E-5,1.800000E-5,1.700000E-5,1.600000E-5,1.500000E-5,1.500000E-5,1.400000E-5,1.400000E-5,1.300000E-5,1.300000E-5,1.200000E-5,1.200000E-5,1.100000E-5,1.100000E-5,1.000000E-5,1.000000E-5,9.700000E-6,9.400000E-6,9.100000E-6,8.800000E-6,8.500000E-6,8.200000E-6,8.000000E-6,7.800000E-6,7.500000E-6,7.300000E-6,7.100000E-6,6.900000E-6,6.700000E-6,6.500000E-6,6.300000E-6,6.200000E-6,6.000000E-6,5.900000E-6,5.700000E-6,5.600000E-6,5.400000E-6,5.300000E-6,5.200000E-6,5.100000E-6,4.900000E-6,4.800000E-6,4.700000E-6,4.600000E-6,4.500000E-6,4.400000E-6,4.300000E-6,4.200000E-6,4.100000E-6,4.000000E-6,3.900000E-6,3.900000E-6,3.800000E-6,3.700000E-6,3.600000E-6,3.600000E-6,3.500000E-6,3.400000E-6,3.400000E-6,3.300000E-6,3.200000E-6,3.200000E-6,3.100000E-6,3.100000E-6,3.000000E-6,3.000000E-6,2.900000E-6,2.800000E-6,2.800000E-6,2.800000E-6,2.700000E-6,2.700000E-6,2.600000E-6,2.600000E-6,2.500000E-6,2.500000E-6,2.500000E-6,2.400000E-6,2.400000E-6,2.300000E-6,2.300000E-6,2.300000E-6,2.200000E-6,2.200000E-6,2.200000E-6,2.100000E-6,2.100000E-6,2.100000E-6,2.000000E-6,2.000000E-6,2.000000E-6,2.000000E-6,1.900000E-6,1.900000E-6,1.900000E-6,1.800000E-6,1.800000E-6,1.800000E-6,1.800000E-6,1.700000E-6,1.700000E-6,1.700000E-6,1.700000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.600000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.500000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.400000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.300000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.200000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.100000E-6,1.000000E-6,1.000000E-6,1.000000E-6,1.000000E-6,1.000000E-6,9.900000E-7,9.800000E-7,9.700000E-7,9.600000E-7,9.600000E-7,9.500000E-7,9.400000E-7,9.300000E-7,9.200000E-7,9.100000E-7,9.000000E-7,8.900000E-7,8.800000E-7,8.600000E-7,8.500000E-7,8.400000E-7,8.300000E-7,8.100000E-7,8.000000E-7,7.900000E-7,7.800000E-7,7.700000E-7,7.500000E-7,7.400000E-7,7.300000E-7,7.200000E-7,7.100000E-7,7.000000E-7,6.900000E-7,6.800000E-7,6.700000E-7,6.600000E-7,6.500000E-7,6.400000E-7,6.300000E-7,6.200000E-7,6.100000E-7,6.000000E-7,5.900000E-7,5.800000E-7,5.700000E-7,5.600000E-7,5.600000E-7,5.500000E-7,5.400000E-7,5.300000E-7,5.200000E-7,5.200000E-7,5.100000E-7,5.000000E-7,4.900000E-7,4.800000E-7,4.800000E-7,4.700000E-7,4.600000E-7,4.600000E-7,4.500000E-7,4.400000E-7,4.400000E-7,4.300000E-7,4.200000E-7,4.200000E-7,4.100000E-7,4.000000E-7,4.000000E-7,3.900000E-7,3.900000E-7,3.800000E-7,3.700000E-7,3.700000E-7,3.600000E-7,3.600000E-7,3.500000E-7,3.500000E-7,3.400000E-7,3.400000E-7,3.300000E-7,3.300000E-7,3.200000E-7,3.200000E-7,3.100000E-7,3.100000E-7,3.000000E-7,3.000000E-7,2.900000E-7,2.900000E-7,2.800000E-7,2.800000E-7,2.800000E-7,2.700000E-7,2.700000E-7,2.600000E-7,2.600000E-7,2.600000E-7,2.500000E-7,2.500000E-7,2.400000E-7,2.400000E-7,2.400000E-7,2.300000E-7,2.300000E-7,2.300000E-7,2.200000E-7,2.200000E-7,2.200000E-7,2.100000E-7,2.100000E-7,2.100000E-7,2.000000E-7,2.000000E-7,2.000000E-7,1.900000E-7,1.900000E-7,1.900000E-7,1.900000E-7,1.800000E-7,1.800000E-7,1.800000E-7,1.800000E-7,1.700000E-7,1.700000E-7,1.700000E-7,1.600000E-7,1.600000E-7,1.600000E-7,1.600000E-7,1.600000E-7,1.500000E-7,1.500000E-7,1.500000E-7,1.500000E-7]) + self.specific_heat.data = np.array([1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.700000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.800000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,1.900000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.000000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.100000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.200000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.300000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.400000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.500000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.600000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.700000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.800000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,2.900000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.100000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.200000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3,3.300000E+3]) + self.conductivity.data = np.array([1.070000E-1,1.070000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.060000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.050000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.040000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.030000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.020000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.010000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,1.000000E-1,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.900000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.800000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.700000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.600000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.500000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.400000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.300000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.200000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.100000E-2,9.000000E-2,9.000000E-2,9.000000E-2,9.000000E-2,9.000000E-2,9.000000E-2,9.000000E-2,9.000000E-2,9.000000E-2,9.000000E-2,9.000000E-2]) + self.saturation_pressure.data = np.array([ np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN, np.NAN,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,3.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,4.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,5.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,6.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,7.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,8.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,9.000000E+3,1.000000E+4,1.000000E+4,1.000000E+4,1.000000E+4,1.000000E+4,1.000000E+4,1.000000E+4,1.000000E+4,1.000000E+4,1.100000E+4,1.100000E+4,1.100000E+4,1.100000E+4,1.100000E+4,1.100000E+4,1.100000E+4,1.200000E+4,1.200000E+4,1.200000E+4,1.200000E+4,1.200000E+4,1.200000E+4,1.200000E+4,1.300000E+4,1.300000E+4,1.300000E+4,1.300000E+4,1.300000E+4,1.300000E+4,1.300000E+4,1.400000E+4,1.400000E+4,1.400000E+4,1.400000E+4]) + self.Tmin = np.min(self.temperature.data) + self.Tmax = np.max(self.temperature.data) + self.TminPsat = np.min(self.temperature.data[~np.isnan(self.saturation_pressure.data)]) + self.name = "PNF" + self.description = "Paratherm "+ self.name[1:] + self.reference = "Paratherm2013" self.reshapeAll() - \ No newline at end of file diff --git a/dev/incompressible_liquids/CPIncomp/SecCoolFluids.py b/dev/incompressible_liquids/CPIncomp/SecCoolFluids.py index bae70bd6..1278c5a4 100644 --- a/dev/incompressible_liquids/CPIncomp/SecCoolFluids.py +++ b/dev/incompressible_liquids/CPIncomp/SecCoolFluids.py @@ -295,104 +295,104 @@ class SecCoolSolutionData(DigitalData): """ print("Loading SecCool fluids: ", end="") sec = [] - sec += [SecCoolSolutionData(sFile='Antifrogen KF' ,sFolder='xVolume',name='AKF',desc='Antifrogen KF, Potassium Formate' ,ref='Clariant GmbH Jan. 2000, SecCool software')] + sec += [SecCoolSolutionData(sFile='Antifrogen KF' ,sFolder='xVolume',name='AKF',desc='Antifrogen KF, Potassium Formate' ,ref='Clariant2000,Skovrup2013')] print("{0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Antifrogen L' ,sFolder='xVolume',name='AL' ,desc='Antifrogen L, Propylene Glycol' ,ref='Clariant GmbH Jan. 2000, SecCool software')] + sec += [SecCoolSolutionData(sFile='Antifrogen L' ,sFolder='xVolume',name='AL' ,desc='Antifrogen L, Propylene Glycol' ,ref='Clariant2000,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Antifrogen N' ,sFolder='xVolume',name='AN' ,desc='Antifrogen N, Ethylene Glycol' ,ref='Clariant GmbH Jan. 2000, SecCool software')] + sec += [SecCoolSolutionData(sFile='Antifrogen N' ,sFolder='xVolume',name='AN' ,desc='Antifrogen N, Ethylene Glycol' ,ref='Clariant2000,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='ASHRAE, Ethylene Glycol' ,sFolder='xVolume',name='AEG',desc='ASHRAE, Ethylene Glycol' ,ref='ASHRAE Fundamentals Handbook 2001, SecCool software')] + sec += [SecCoolSolutionData(sFile='ASHRAE, Ethylene Glycol' ,sFolder='xVolume',name='AEG',desc='ASHRAE, Ethylene Glycol' ,ref='ASHRAE2001,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='ASHRAE, Propylene Glycol',sFolder='xVolume',name='APG',desc='ASHRAE, Propylene Glycol' ,ref='ASHRAE Fundamentals Handbook 2001, SecCool software')] + sec += [SecCoolSolutionData(sFile='ASHRAE, Propylene Glycol',sFolder='xVolume',name='APG',desc='ASHRAE, Propylene Glycol' ,ref='ASHRAE2001,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Glykosol N' ,sFolder='xVolume',name='GKN',desc='Glykosol N, Ethylene Glycol' ,ref='pro KUEHLSOLE GmbH, SecCool software')] + sec += [SecCoolSolutionData(sFile='Glykosol N' ,sFolder='xVolume',name='GKN',desc='Glykosol N, Ethylene Glycol' ,ref='PKS2005,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Pekasol 2000' ,sFolder='xVolume',name='PK2',desc='Pekasol 2000, Potassium acetate/formate',ref='pro KUEHLSOLE GmbH, SecCool software')] + sec += [SecCoolSolutionData(sFile='Pekasol 2000' ,sFolder='xVolume',name='PK2',desc='Pekasol 2000, Potassium acetate/formate',ref='PKS2005,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Pekasol L' ,sFolder='xVolume',name='PKL',desc='Pekasol L, Propylene Glycol' ,ref='pro KUEHLSOLE GmbH, SecCool software')] + sec += [SecCoolSolutionData(sFile='Pekasol L' ,sFolder='xVolume',name='PKL',desc='Pekasol L, Propylene Glycol' ,ref='PKS2005,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Zitrec AC' ,sFolder='xVolume',name='ZAC',desc='Zitrec AC, Corrosion Inhibitor' ,ref='Arteco, SecCool software')] + sec += [SecCoolSolutionData(sFile='Zitrec AC' ,sFolder='xVolume',name='ZAC',desc='Zitrec AC, Corrosion Inhibitor' ,ref='Arteco2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Zitrec FC' ,sFolder='xVolume',name='ZFC',desc='Zitrec FC, Propylene Glycol' ,ref='Arteco, SecCool software')] + sec += [SecCoolSolutionData(sFile='Zitrec FC' ,sFolder='xVolume',name='ZFC',desc='Zitrec FC, Propylene Glycol' ,ref='Arteco2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Zitrec LC' ,sFolder='xVolume',name='ZLC',desc='Zitrec LC, Propylene Glycol' ,ref='Arteco, SecCool software')] + sec += [SecCoolSolutionData(sFile='Zitrec LC' ,sFolder='xVolume',name='ZLC',desc='Zitrec LC, Propylene Glycol' ,ref='Arteco2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Zitrec MC' ,sFolder='xVolume',name='ZMC',desc='Zitrec MC, Ethylene Glycol' ,ref='Arteco, SecCool software')] + sec += [SecCoolSolutionData(sFile='Zitrec MC' ,sFolder='xVolume',name='ZMC',desc='Zitrec MC, Ethylene Glycol' ,ref='Arteco2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Zitrec M' ,sFolder='xVolume',name='ZM' ,desc='Zitrec M, Ethylene Glycol' ,ref='Arteco, SecCool software')] + sec += [SecCoolSolutionData(sFile='Zitrec M' ,sFolder='xVolume',name='ZM' ,desc='Zitrec M, Ethylene Glycol' ,ref='Arteco2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Melinder, Ammonia' ,sFolder='xMass',name='MAM2',desc='Melinder, Ammonia' ,ref='Melinder-BOOK-2010, SecCool software')] + sec += [SecCoolSolutionData(sFile='Melinder, Ammonia' ,sFolder='xMass',name='MAM2',desc='Melinder, Ammonia' ,ref='Melinder2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Melinder, Calcium Cloride' ,sFolder='xMass',name='MCA2',desc='Melinder, Calcium Chloride' ,ref='Melinder-BOOK-2010, SecCool software')] + sec += [SecCoolSolutionData(sFile='Melinder, Calcium Cloride' ,sFolder='xMass',name='MCA2',desc='Melinder, Calcium Chloride' ,ref='Melinder2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Melinder, Ethanol' ,sFolder='xMass',name='MEA2',desc='Melinder, Ethanol' ,ref='Melinder-BOOK-2010, SecCool software')] + sec += [SecCoolSolutionData(sFile='Melinder, Ethanol' ,sFolder='xMass',name='MEA2',desc='Melinder, Ethanol' ,ref='Melinder2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Melinder, Ethylene glycol' ,sFolder='xMass',name='MEG2',desc='Melinder, Ethylene Glycol' ,ref='Melinder-BOOK-2010, SecCool software')] + sec += [SecCoolSolutionData(sFile='Melinder, Ethylene glycol' ,sFolder='xMass',name='MEG2',desc='Melinder, Ethylene Glycol' ,ref='Melinder2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Melinder, Glycerol' ,sFolder='xMass',name='MGL2',desc='Melinder, Glycerol' ,ref='Melinder-BOOK-2010, SecCool software')] + sec += [SecCoolSolutionData(sFile='Melinder, Glycerol' ,sFolder='xMass',name='MGL2',desc='Melinder, Glycerol' ,ref='Melinder2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Melinder, Magnesium Chloride' ,sFolder='xMass',name='MMG2',desc='Melinder, Magnesium Chloride' ,ref='Melinder-BOOK-2010, SecCool software')] + sec += [SecCoolSolutionData(sFile='Melinder, Magnesium Chloride' ,sFolder='xMass',name='MMG2',desc='Melinder, Magnesium Chloride' ,ref='Melinder2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Melinder, Methanol' ,sFolder='xMass',name='MMA2',desc='Melinder, Methanol' ,ref='Melinder-BOOK-2010, SecCool software')] + sec += [SecCoolSolutionData(sFile='Melinder, Methanol' ,sFolder='xMass',name='MMA2',desc='Melinder, Methanol' ,ref='Melinder2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Melinder, Potassium Acetate' ,sFolder='xMass',name='MKA2',desc='Melinder, Potassium Acetate' ,ref='Melinder-BOOK-2010, SecCool software')] + sec += [SecCoolSolutionData(sFile='Melinder, Potassium Acetate' ,sFolder='xMass',name='MKA2',desc='Melinder, Potassium Acetate' ,ref='Melinder2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Melinder, Potassium Carbonate',sFolder='xMass',name='MKC2',desc='Melinder, Potassium Carbonate',ref='Melinder-BOOK-2010, SecCool software')] + sec += [SecCoolSolutionData(sFile='Melinder, Potassium Carbonate',sFolder='xMass',name='MKC2',desc='Melinder, Potassium Carbonate',ref='Melinder2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Melinder, Propylene Glycol' ,sFolder='xMass',name='MPG2',desc='Melinder, Propylene Glycol' ,ref='Melinder-BOOK-2010, SecCool software')] + sec += [SecCoolSolutionData(sFile='Melinder, Propylene Glycol' ,sFolder='xMass',name='MPG2',desc='Melinder, Propylene Glycol' ,ref='Melinder2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Melinder, Sodium Chloride' ,sFolder='xMass',name='MNA2',desc='Melinder, Sodium Chloride' ,ref='Melinder-BOOK-2010, SecCool software')] + sec += [SecCoolSolutionData(sFile='Melinder, Sodium Chloride' ,sFolder='xMass',name='MNA2',desc='Melinder, Sodium Chloride' ,ref='Melinder2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='VDI, Calcium Cloride' ,sFolder='xMass',name='VCA' ,desc='VDI, Calcium Cloride' ,ref='VDI Waermeatlas 9th Edition 2002, SecCool software')] + sec += [SecCoolSolutionData(sFile='VDI, Calcium Cloride' ,sFolder='xMass',name='VCA' ,desc='VDI, Calcium Cloride' ,ref='Preisegger2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='VDI, Magnesium Chloride' ,sFolder='xMass',name='VMG' ,desc='VDI, Magnesium Chloride' ,ref='VDI Waermeatlas 9th Edition 2002, SecCool software')] + sec += [SecCoolSolutionData(sFile='VDI, Magnesium Chloride' ,sFolder='xMass',name='VMG' ,desc='VDI, Magnesium Chloride' ,ref='Preisegger2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='VDI, Methanol' ,sFolder='xMass',name='VMA' ,desc='VDI, Methanol' ,ref='VDI Waermeatlas 9th Edition 2002, SecCool software')] + sec += [SecCoolSolutionData(sFile='VDI, Methanol' ,sFolder='xMass',name='VMA' ,desc='VDI, Methanol' ,ref='Preisegger2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='VDI, Potassium Carbonate' ,sFolder='xMass',name='VKC' ,desc='VDI, Potassium Carbonate' ,ref='VDI Waermeatlas 9th Edition 2002, SecCool software')] + sec += [SecCoolSolutionData(sFile='VDI, Potassium Carbonate' ,sFolder='xMass',name='VKC' ,desc='VDI, Potassium Carbonate' ,ref='Preisegger2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='VDI, Sodium Chloride' ,sFolder='xMass',name='VNA' ,desc='VDI, Sodium Chloride' ,ref='VDI Waermeatlas 9th Edition 2002, SecCool software')] + sec += [SecCoolSolutionData(sFile='VDI, Sodium Chloride' ,sFolder='xMass',name='VNA' ,desc='VDI, Sodium Chloride' ,ref='Preisegger2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='HFE-7100' ,sFolder='xPure',name='HFE2' ,desc='HFE-7100, Hydrofluoroether' ,ref='3M Novec, SecCool software')] + sec += [SecCoolSolutionData(sFile='HFE-7100' ,sFolder='xPure',name='HFE2' ,desc='HFE-7100, Hydrofluoroether' ,ref='3M2007,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='NBS, Water' ,sFolder='xPure',name='NBS' ,desc='NBS, Water' ,ref='Properties of Water and Steam in SI-Units, 2nd Revised and Updated Printing, Springer 1979, pp. 175 ff., SecCool software')] + sec += [SecCoolSolutionData(sFile='NBS, Water' ,sFolder='xPure',name='NBS' ,desc='NBS, Water' ,ref='Schmidt1979,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Paracryol' ,sFolder='xPure',name='PCL' ,desc='Paracryol, Aliphatic Hydrocarbon' ,ref='Sulzer Chemtech AG, SecCool software')] + sec += [SecCoolSolutionData(sFile='Paracryol' ,sFolder='xPure',name='PCL' ,desc='Paracryol, Aliphatic Hydrocarbon' ,ref='Sulzer1999,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Paratherm NF' ,sFolder='xPure',name='PNF' ,desc='Paratherm NF, Hydrotreated mineral oil' ,ref='Paratherm Ltd, SecCool software')] + sec += [SecCoolSolutionData(sFile='Paratherm NF' ,sFolder='xPure',name='PNF2' ,desc='Paratherm NF, Hydrotreated mineral oil' ,ref='Paratherm2013,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Tyfoxit 1.10' ,sFolder='xPure',name='TY10',desc='Tyfoxit 1.10, Potassium Acetate' ,ref='Tyforop Chemie Gmbh - Technical information 09/99, SecCool software')] + sec += [SecCoolSolutionData(sFile='Tyfoxit 1.10' ,sFolder='xPure',name='TY10',desc='Tyfoxit 1.10, Potassium Acetate' ,ref='Tyfoprop1999,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Tyfoxit 1.15' ,sFolder='xPure',name='TY15',desc='Tyfoxit 1.15, Potassium Acetate' ,ref='Tyforop Chemie Gmbh - Technical information 09/99, SecCool software')] + sec += [SecCoolSolutionData(sFile='Tyfoxit 1.15' ,sFolder='xPure',name='TY15',desc='Tyfoxit 1.15, Potassium Acetate' ,ref='Tyfoprop1999,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Tyfoxit 1.20' ,sFolder='xPure',name='TY20',desc='Tyfoxit 1.20, Potassium Acetate' ,ref='Tyforop Chemie Gmbh - Technical information 09/99, SecCool software')] + sec += [SecCoolSolutionData(sFile='Tyfoxit 1.20' ,sFolder='xPure',name='TY20',desc='Tyfoxit 1.20, Potassium Acetate' ,ref='Tyfoprop1999,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Tyfoxit 1.24' ,sFolder='xPure',name='TY24',desc='Tyfoxit 1.24, Potassium Acetate' ,ref='Tyforop Chemie Gmbh - Technical information 09/99, SecCool software')] + sec += [SecCoolSolutionData(sFile='Tyfoxit 1.24' ,sFolder='xPure',name='TY24',desc='Tyfoxit 1.24, Potassium Acetate' ,ref='Tyfoprop1999,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Zitrec S10' ,sFolder='xPure',name='ZS10',desc='Zitrec S10, Potassium formate/Sodium propionate' ,ref='Arteco, SecCool software')] + sec += [SecCoolSolutionData(sFile='Zitrec S10' ,sFolder='xPure',name='ZS10',desc='Zitrec S10, Potassium formate/Sodium propionate' ,ref='Arteco2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Zitrec S25' ,sFolder='xPure',name='ZS25',desc='Zitrec S25, Potassium formate/Sodium propionate' ,ref='Arteco, SecCool software')] + sec += [SecCoolSolutionData(sFile='Zitrec S25' ,sFolder='xPure',name='ZS25',desc='Zitrec S25, Potassium formate/Sodium propionate' ,ref='Arteco2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Zitrec S40' ,sFolder='xPure',name='ZS40',desc='Zitrec S40, Potassium formate/Sodium propionate' ,ref='Arteco, SecCool software')] + sec += [SecCoolSolutionData(sFile='Zitrec S40' ,sFolder='xPure',name='ZS40',desc='Zitrec S40, Potassium formate/Sodium propionate' ,ref='Arteco2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Zitrec S45' ,sFolder='xPure',name='ZS45',desc='Zitrec S45, Potassium formate/Sodium propionate' ,ref='Arteco, SecCool software')] + sec += [SecCoolSolutionData(sFile='Zitrec S45' ,sFolder='xPure',name='ZS45',desc='Zitrec S45, Potassium formate/Sodium propionate' ,ref='Arteco2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Zitrec S55' ,sFolder='xPure',name='ZS55',desc='Zitrec S55, Potassium formate/Sodium propionate' ,ref='Arteco, SecCool software')] + sec += [SecCoolSolutionData(sFile='Zitrec S55' ,sFolder='xPure',name='ZS55',desc='Zitrec S55, Potassium formate/Sodium propionate' ,ref='Arteco2010,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Syltherm XLT' ,sFolder='xPure',name='XLT2',desc='Syltherm XLT, Polydimethylsiloxan' ,ref='Dow Chemicals, SecCool software')] + sec += [SecCoolSolutionData(sFile='Syltherm XLT' ,sFolder='xPure',name='XLT2',desc='Syltherm XLT, Polydimethylsiloxan' ,ref='Dow1997,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Dowtherm J' ,sFolder='xPure',name='DowJ2',desc='Dowtherm J, Diethylbenzene mixture' ,ref='Dow Chemicals, SecCool software')] + sec += [SecCoolSolutionData(sFile='Dowtherm J' ,sFolder='xPure',name='DowJ2',desc='Dowtherm J, Diethylbenzene mixture' ,ref='Dow1997,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolSolutionData(sFile='Dowtherm Q' ,sFolder='xPure',name='DowQ2',desc='Dowtherm Q, Diphenylethane/alkylated aromatics' ,ref='Dow Chemicals, SecCool software')] + sec += [SecCoolSolutionData(sFile='Dowtherm Q' ,sFolder='xPure',name='DowQ2',desc='Dowtherm Q, Diphenylethane/alkylated aromatics' ,ref='Dow1997,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolIceData(sFile='IceEA' ,sFolder='xMass',name='IceEA',desc='Ice slurry with Ethanol' ,ref='Danish Technological Institute, SecCool software')] + sec += [SecCoolIceData(sFile='IceEA' ,sFolder='xMass',name='IceEA',desc='Ice slurry with Ethanol' ,ref='Kauffeld2001,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolIceData(sFile='IceNA' ,sFolder='xMass',name='IceNA',desc='Ice slurry with NaCl' ,ref='Danish Technological Institute, SecCool software')] + sec += [SecCoolIceData(sFile='IceNA' ,sFolder='xMass',name='IceNA',desc='Ice slurry with NaCl' ,ref='Kauffeld2001,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") - sec += [SecCoolIceData(sFile='IcePG' ,sFolder='xMass',name='IcePG',desc='Ice slurry with Propylene Glycol' ,ref='Danish Technological Institute, SecCool software')] + sec += [SecCoolIceData(sFile='IcePG' ,sFolder='xMass',name='IcePG',desc='Ice slurry with Propylene Glycol' ,ref='Kauffeld2001,Skovrup2013')] print(", {0}".format(sec[-1].name), end="") sec += [ThermogenVP1869()] @@ -421,7 +421,7 @@ class SecCoolIceData(SecCoolSolutionData): A base class that can be fed with a fluid ID from SecCool to read data files sitting in data/SecCool/xTables. """ - def __init__(self,sFile=None,sFolder=None,name=None,desc=None,ref='Danish Technological Institute, SecCool software'): + def __init__(self,sFile=None,sFolder=None,name=None,desc=None,ref='Danish Technological Institute,Skovrup2013'): SecCoolSolutionData.__init__(self,sFile=sFile,sFolder=sFolder,name=name,desc=desc,ref=ref) #self.density.xData,self.density.yData,self.density.data = self.getArray(dataID="Rho") @@ -520,7 +520,7 @@ class ThermogenVP1869(PureData,DigitalData): PureData.__init__(self) self.name = "TVP1869" self.description = "Thermogen VP 1869" - self.reference = "Hoechst, SecCool software" + self.reference = "Hoechst1995,Skovrup2013" self.Tmax = 20 + 273.15 self.Tmin = -80 + 273.15 @@ -569,7 +569,7 @@ class Freezium(DigitalData): self.name = "FRE" self.description = "Freezium, Potassium Formate" - self.reference = "Kemira Chemicals OY, SecCool software" + self.reference = "Kemira1998,Skovrup2013" self.Tmin = -40 + 273.00 self.Tmax = +40 + 273.00 @@ -668,7 +668,7 @@ class AS10(PureData,DigitalData): PureData.__init__(self) self.name = "AS10" self.description = "Aspen Temper -10, Potassium acetate/formate" - self.reference = "Aspen Petroleum AB, SecCool software" + self.reference = "Aspen2001,Skovrup2013" self.Tmax = 30 + 273.15 self.Tmin = -10 + 273.15 @@ -704,7 +704,7 @@ class AS20(PureData,DigitalData): PureData.__init__(self) self.name = "AS20" self.description = "Aspen Temper -20, Potassium acetate/formate" - self.reference = "Aspen Petroleum AB, SecCool software" + self.reference = "Aspen2001,Skovrup2013" self.Tmax = 30 + 273.15 self.Tmin = -20 + 273.15 @@ -752,7 +752,7 @@ class AS30(PureData,DigitalData): PureData.__init__(self) self.name = "AS30" self.description = "Aspen Temper -30, Potassium acetate/formate" - self.reference = "Aspen Petroleum AB, SecCool software" + self.reference = "Aspen2001,Skovrup2013" self.Tmax = 30 + 273.15 self.Tmin = -30 + 273.15 @@ -800,7 +800,7 @@ class AS40(PureData,DigitalData): PureData.__init__(self) self.name = "AS40" self.description = "Aspen Temper -40, Potassium acetate/formate" - self.reference = "Aspen Petroleum AB, SecCool software" + self.reference = "Aspen2001,Skovrup2013" self.Tmax = 30 + 273.15 self.Tmin = -40 + 273.15 @@ -847,7 +847,7 @@ class AS55(PureData,DigitalData): PureData.__init__(self) self.name = "AS55" self.description = "Aspen Temper -55, Potassium acetate/formate" - self.reference = "Aspen Petroleum AB, SecCool software" + self.reference = "Aspen2001,Skovrup2013" self.Tmax = 30 + 273.15 self.Tmin = -55 + 273.15 diff --git a/dev/incompressible_liquids/CPIncomp/SolutionFluids.py b/dev/incompressible_liquids/CPIncomp/SolutionFluids.py index d0d5d5c0..ce4bd35f 100644 --- a/dev/incompressible_liquids/CPIncomp/SolutionFluids.py +++ b/dev/incompressible_liquids/CPIncomp/SolutionFluids.py @@ -11,7 +11,7 @@ class LiBrData(SolutionData): def __init__(self): SolutionData.__init__(self) self.name = "LiBr" - self.description = "Lithium-Bromide solution from Patek2006" + self.description = "Aqueous lithium-bromide solution " self.reference = "Patek2006" self.temperature.data = np.array([2.73000e+02, 2.84947e+02, 2.96895e+02, 3.08842e+02, 3.20789e+02, 3.32737e+02, 3.44684e+02, 3.56632e+02, 3.68579e+02, 3.80526e+02, 3.92474e+02, 4.04421e+02, 4.16368e+02, 4.28316e+02, 4.40263e+02, 4.52211e+02, 4.64158e+02, 4.76105e+02, 4.88053e+02, 5.00000e+02]) # Kelvin diff --git a/dev/incompressible_liquids/CPIncomp/WriterObjects.py b/dev/incompressible_liquids/CPIncomp/WriterObjects.py index 613b0e67..650f508b 100644 --- a/dev/incompressible_liquids/CPIncomp/WriterObjects.py +++ b/dev/incompressible_liquids/CPIncomp/WriterObjects.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python +# -*- coding: utf8 -*- from __future__ import division, print_function import numpy as np @@ -10,10 +12,73 @@ from matplotlib.patches import Rectangle from matplotlib.ticker import MaxNLocator from matplotlib.backends.backend_pdf import PdfPages import itertools -from datetime import datetime import matplotlib -import csv from CoolProp.BibtexParser import BibTeXerClass +from warnings import warn + +# See: https://docs.python.org/2/library/csv.html#csv-examples +import csv, codecs, cStringIO + +class UTF8Recoder: + """ + Iterator that reads an encoded stream and reencodes the input to UTF-8 + """ + def __init__(self, f, encoding): + self.reader = codecs.getreader(encoding)(f) + + def __iter__(self): + return self + + def next(self): + return self.reader.next().encode("utf-8") + +class UnicodeReader: + """ + A CSV reader which will iterate over lines in the CSV file "f", + which is encoded in the given encoding. + """ + + def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): + f = UTF8Recoder(f, encoding) + self.reader = csv.reader(f, dialect=dialect, **kwds) + + def next(self): + row = self.reader.next() + return [unicode(s, "utf-8") for s in row] + + def __iter__(self): + return self + +class UnicodeWriter: + """ + A CSV writer which will write rows to CSV file "f", + which is encoded in the given encoding. + """ + + def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): + # Redirect output to a queue + self.queue = cStringIO.StringIO() + self.writer = csv.writer(self.queue, dialect=dialect, **kwds) + self.stream = f + self.encoder = codecs.getincrementalencoder(encoding)() + + def writerow(self, row): + self.writer.writerow([s.encode("utf-8") for s in row]) + # Fetch UTF-8 output from the queue ... + data = self.queue.getvalue() + data = data.decode("utf-8") + # ... and reencode it into the target encoding + data = self.encoder.encode(data) + # write to the target stream + self.stream.write(data) + # empty queue + self.queue.truncate(0) + + def writerows(self, rows): + for row in rows: + self.writerow(row) + + class SolutionDataWriter(object): """ @@ -23,9 +88,8 @@ class SolutionDataWriter(object): information came from. """ def __init__(self): - self.bibtexer = BibTeXerClass() - self.bibtexer.loadLibrary('../../Web/fluid_properties/Incompressibles.bib') - pass + bibFile = os.path.join(os.path.dirname(__file__),'../../../Web/fluid_properties/Incompressibles.bib') + self.bibtexer = BibTeXerClass(bibFile) def fitAll(self, fluidObject=SolutionData()): @@ -124,7 +188,7 @@ class SolutionDataWriter(object): fluidObject.T_freeze.coeffs = np.array([+7e+2, -6e+1, +1e+1]) fluidObject.T_freeze.type = IncompressibleData.INCOMPRESSIBLE_EXPONENTIAL else: - fluidObject.specific_heat.coeffs = np.copy(std_coeffs) + fluidObject.T_freeze.coeffs = np.copy(std_coeffs) fluidObject.T_freeze.type = IncompressibleData.INCOMPRESSIBLE_EXPPOLYNOMIAL fluidObject.T_freeze.fitCoeffs(tBase,xBase) except errList as ve: @@ -663,6 +727,9 @@ class SolutionDataWriter(object): axVal.plot(pFree, zFree, alpha=0.25, ls=':', color=fitFormatter["color"]) if not zError is None and not axErr is None: + #formatter = matplotlib.ticker.ScalarFormatter(useOffset=False) + #axErr.yaxis.set_major_formatter(formatter) + #axErr.yaxis.get_major_formatter().useOffset=False axErr.plot(pData, zError, label='error' , **errorFormatter) elif not axErr is None: @@ -737,9 +804,25 @@ class SolutionDataWriter(object): myAnnotate('Description: ',solObj.description,x=x,y=y); x += .0; y -= dy # TODO: Debug bibtexer - myAnnotate('Source: ',solObj.reference,x=x,y=y); x += .0; y -= dy - #myAnnotate('Source: ',self.bibtexer.entry2txt(solObj.reference),x=x,y=y); x += .0; y -= dy + refs = solObj.reference.split(",") + maxLength = 75 + for i in range(len(refs)): + refs[i] = refs[i].strip() + try: + refs[i] = self.bibtexer.getEntry(key=refs[i], fmt='plaintext').strip() + except Exception as e: + warn("Your string \"{0}\"was not a valid Bibtex key, I will use it directly: {1}".format(refs[i],e)) + pass + if len(refs[i])>maxLength: + refs[i] = refs[i][0:maxLength-3]+u'...' + if i==0: + myAnnotate('Source: ',refs[i],x=x,y=y); x += .0 #; y -= 2*dy + elif i==1: + myAnnotate( ' ',refs[i],x=x,y=y-dy); x += .0 #; y -= 2*dy + + y -= 2*dy + yRestart = y myAnnotate('Temperature: ',u'{0} \u00B0C to {1} \u00B0C'.format(solObj.Tmin-273.15, solObj.Tmax-273.15),x=x,y=y); x += .0; y -= dy conc = False if solObj.xid==solObj.ifrac_mass: conc=True @@ -762,7 +845,7 @@ class SolutionDataWriter(object): myAnnotate('Spec. Heat: ','no information',x=x,y=y) x += .0; y -= dy - x = xStart + dx; y = yStart-dy-dy + x = xStart + dx; y = yRestart if solObj.conductivity.source!=solObj.conductivity.SOURCE_NOT_SET: myAnnotate('Th. Cond.: ',u'{0} to {1} {2}'.format(solObj.conductivity.source, solObj.conductivity.type, solObj.conductivity.coeffs.shape),x=x,y=y) else: @@ -975,7 +1058,7 @@ class SolutionDataWriter(object): table_axis.legend( legVal, legKey, - bbox_to_anchor=(0.0, -0.025, 1., -0.025), + bbox_to_anchor=(0.0, -0.03, 1., -0.03), ncol=len(legKey), mode="expand", borderaxespad=0., numpoints=1) #table_axis.legend(handles, labels, bbox_to_anchor=(0.0, -0.1), loc=2, ncol=3) @@ -1108,26 +1191,26 @@ class SolutionDataWriter(object): return rst def table_div(self, max_cols, header_flag=1, indent=2): - out = "" + out = u"" for i in range(indent): - out += " " + out += u" " if header_flag == 1: - style = "=" + style = u"=" else: - style = "-" + style = u"-" for max_col in max_cols: - out += max_col * style + " " - out += "\n" + out += max_col * style + u" " + out += u"\n" return out def normalize_row(self, row, max_cols, indent=2): - r = "" + r = u"" for i in range(indent): - r += " " + r += u" " for i, max_col in enumerate(max_cols): - r += row[i] + (max_col - len(row[i]) + 1) * " " - return r + "\n" + r += row[i] + (max_col - len(row[i]) + 1) * u" " + return r + u"\n" def writeTextToFile(self, path,text): @@ -1135,19 +1218,21 @@ class SolutionDataWriter(object): if not os.path.exists(os.path.dirname(path)): os.makedirs(os.path.dirname(path)) with open(path, 'w') as f: - f.write(text) + f.write(text.encode('utf-8')) + return True - def writeTxtTableToFile(self, path,table,head=""): - if not head == "": - return self.writeTextToFile(path+".txt", head+"\n\n"+self.make_table(table)) + def writeTxtTableToFile(self, path,table,head=u""): + if not head == u"": + return self.writeTextToFile(path+".txt", head+u"\n\n"+self.make_table(table)) return self.writeTextToFile(path+".txt", self.make_table(table)) def writeCsvTableToFile(self, path,table): if not os.path.exists(os.path.dirname(path+".csv")): os.makedirs(os.path.dirname(path+".csv")) with open(path+".csv", 'wb') as f: - writer = csv.writer(f) + #writer = csv.writer(f) + writer = UnicodeWriter(f) writer.writerows(table) return True @@ -1163,6 +1248,10 @@ class SolutionDataWriter(object): reportFile = os.path.join("..","_static","fluid_properties","incompressible","report","{0}_fitreport.pdf".format(name)) return self.d(name,reportFile) + def getCitation(self, keys): + return u":cite:`{0}`".format(keys) + + def checkForNumber(self, number): try: n = float(number) @@ -1181,20 +1270,20 @@ class SolutionDataWriter(object): # link = "{0}".format(text) # pass # TODO: Fix this! - link = ":download:`{0}<{1}>`".format(text,target) + link = u":download:`{0}<{1}>`".format(text,target) return link def m(self, math): - text = ":math:`{0}`".format(math) + text = u":math:`{0}`".format(math) return text def c(self, number): #text = "{0:5.2f} |degC|".format(self.checkForNumber(number)-273.15) - text = "{0:5.2f}".format(self.checkForNumber(number)-273.15) + text = u"{0:5.2f}".format(self.checkForNumber(number)-273.15) return text def x(self, number): - text = "{0:3.2f}".format(self.checkForNumber(number)) + text = u"{0:3.2f}".format(self.checkForNumber(number)) return text @@ -1207,14 +1296,21 @@ class SolutionDataWriter(object): if np.any(xmin>0.0) and np.any(xmax<1.0): use_x = True else: use_x = False - header = ['Name', 'Description', 'Reference', \ - self.m('T_{min}')+" (|degC|)", self.m('T_{max}')+" (|degC|)"] - if use_x: header.extend([self.m('x_{min}'), self.m('x_{max}')]) + header = [u'Name', u'Description', u'Reference', \ + self.m(u'T_\\text{min}')+u" (°C)", self.m(u'T_\\text{max}')+u" (°C)", self.m(u'T_\\text{base}')+u" (K)"] + if use_x: header.extend([self.m(u'x_\\text{min}'), self.m(u'x_\\text{max}')]) testTable = [] testTable.append(header) # Headline for fluid in solObjs: - testTable.append([self.getReportLink(fluid.name), fluid.description, fluid.reference, self.c(fluid.Tmin), self.c(fluid.Tmax)]) + testTable.append([ + self.getReportLink(fluid.name), + fluid.description, + self.getCitation(fluid.reference), + self.c(fluid.Tmin), + self.c(fluid.Tmax), + self.c(fluid.Tbase+273.15) + ]) if use_x: testTable[-1].extend([self.x(fluid.xmin), self.x(fluid.xmax)]) self.writeTableToFile(path, testTable) diff --git a/dev/incompressible_liquids/LinearAlgebra.ipynb b/dev/incompressible_liquids/LinearAlgebra.ipynb new file mode 100644 index 00000000..af29f9a6 --- /dev/null +++ b/dev/incompressible_liquids/LinearAlgebra.ipynb @@ -0,0 +1,259 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:3d9763ad8e713bc4c7be2162464d383f293b498ef88147f61f44be6689e11eb8" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": {}, + "source": [ + "Linear algebra for multidimensional polynomial fitting" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy as np\n", + "import itertools\n", + "# A small data set\n", + "#T_in = np.array([20,24,35,40])+273.15\n", + "#x_in = np.array([47,55,70,78,82])/100.0\n", + "#rho_in = np.array([[1047,1033,1020,1000,990],[997,983,970,950,940],[947,933,920,900,895],[987,883,870,850,845]])\n", + "#\n", + "# large data set\n", + "T_in = np.array([ -45 , -40 , -35 , -30 , -25 , -20 , -15 , -10])+273.15 # Kelvin\n", + "x_in = np.array([ 5 , 10 , 15 , 20 , 25 , 30 , 35 ])/100.0 # mass fraction\n", + " \n", + "rho_in = np.array([\n", + " [1064.0, 1054.6, 1045.3, 1036.3, 1027.4, 1018.6, 1010.0],\n", + " [1061.3, 1052.1, 1043.1, 1034.3, 1025.6, 1017.0, 1008.6],\n", + " [1057.6, 1048.8, 1040.1, 1031.5, 1023.1, 1014.8, 1006.7],\n", + " [1053.1, 1044.6, 1036.2, 1028.0, 1019.9, 1012.0, 1004.1],\n", + " [1047.5, 1039.4, 1031.5, 1023.7, 1016.0, 1008.4, 1000.9],\n", + " [1040.7, 1033.2, 1025.7, 1018.4, 1011.2, 1004.0, 997.0],\n", + " [1032.3, 1025.3, 1018.5, 1011.7, 1005.1, 998.5, 992.0],\n", + " [1021.5, 1015.3, 1009.2, 1003.1, 997.1, 991.2, 985.4]]) # kg/m3" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Minimizing the squared error $\\epsilon(\\mathbf{c}) = \\sqrt{\\sum (\\mathbf{z} - \\mathbf{A} \\cdot \\mathbf{c})^2 }$ can be achieved by solving the system of orthogonal equations given by $\\mathbf{A}^\\text{T}\\mathbf{A} \\cdot \\mathbf{c} =\\mathbf{A}^\\text{T}\\mathbf{z}$. Using Python tools, we can leave this to the software and we only have to construct the Van der Monde matrix $\\mathbf{A}$ of the independent variable and equate it with the result vector of the dependent variable." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def getCoeffs1d(x,z,order):\n", + " if (len(x) n, t, s; bool using_tau_r; long double Tmax, Tmin, reducing_value, T_r, max_abs_error; - int type; - enum ancillaryfunctiontypes{TYPE_NOT_SET = -1, - TYPE_NOT_EXPONENTIAL = 0, - TYPE_EXPONENTIAL = 1, - TYPE_RATIONAL_POLYNOMIAL = 2}; + enum ancillaryfunctiontypes{TYPE_NOT_SET = 0, + TYPE_NOT_EXPONENTIAL, + TYPE_EXPONENTIAL, + TYPE_RATIONAL_POLYNOMIAL}; + ancillaryfunctiontypes type; std::size_t N; public: SaturationAncillaryFunction(){type = TYPE_NOT_SET;}; SaturationAncillaryFunction(rapidjson::Value &json_code); + /// Return true if the ancillary is enabled + bool enabled(void){return type != TYPE_NOT_SET;} + /// Get the maximum absolute error for this fit /// @returns max_abs_error the maximum absolute error for ancillaries that are characterized by maximum absolute error long double get_max_abs_error(){return max_abs_error;}; diff --git a/include/CoolProp.h b/include/CoolProp.h index 8028225a..d6a199aa 100644 --- a/include/CoolProp.h +++ b/include/CoolProp.h @@ -161,19 +161,7 @@ You might want to start by looking at CoolProp.h /// @param T Temperature [K] /// @param p Pressure [kPa] /// @returns Phase as string, one of ""Two-Phase","Supercritical","Gas","Liquid" - std::string Phase_Tp(std::string FluidName, double T, double p); - /// Return some low level derivative terms, see source for a complete list - /// @param Term String, some options are "phir" (residual Helmholtz energy),"dphir_dDelta", "dphir_dTau", etc. - /// @param T Temperature [K] - /// @param rho Density [kg/m^3] - /// @param FluidName String - double DerivTerms(std::string Term, double T, double rho, std::string FluidName); - /// Return some low level derivative terms, see source for a complete list - /// @param iTerm long desired output - /// @param T Temperature [K] - /// @param rho Density [kg/m^3] - /// @param pFluid Pointer to Fluid instance - double DerivTerms(long iTerm, double T, double rho, Fluid * pFluid);*/ + std::string Phase_Tp(std::string FluidName, double T, double p);*/ } /* namespace CoolProp */ #endif diff --git a/include/CoolPropLib.h b/include/CoolPropLib.h index 5aeb8cad..e4978549 100644 --- a/include/CoolPropLib.h +++ b/include/CoolPropLib.h @@ -69,6 +69,11 @@ * \sa \ref CoolProp::get_parameter_information_string */ EXPORT_CODE long CONVENTION get_parameter_information_string(const char *key, char *Output); + /** + * \overload + * \sa \ref CoolProp::get_mixture_binary_pair_data + */ + EXPORT_CODE long CONVENTION get_mixture_binary_pair_data(const char *CAS1, const char *CAS2, const char *key); /** * \overload * \sa \ref CoolProp::get_fluid_param_string diff --git a/include/CoolPropTools.h b/include/CoolPropTools.h index 5cd4ed2c..88fc671a 100644 --- a/include/CoolPropTools.h +++ b/include/CoolPropTools.h @@ -251,7 +251,7 @@ throw CoolProp::ValueError(format("%s could not be matched in get_string",s.c_str())); } }; - double get_number(std::string s) + double get_double(std::string s) { if (numbers.find(s) != numbers.end()){ return numbers[s]; @@ -260,6 +260,10 @@ throw CoolProp::ValueError(format("%s could not be matched in get_number",s.c_str())); } }; + double get_number(std::string s) + { + return get_double(s); + }; std::vector get_double_vector(std::string s) { if (double_vectors.find(s) != double_vectors.end()){ diff --git a/src/AbstractState.cpp b/src/AbstractState.cpp index 67a7b162..ec18cced 100644 --- a/src/AbstractState.cpp +++ b/src/AbstractState.cpp @@ -22,7 +22,7 @@ AbstractState * AbstractState::factory(const std::string &backend, const std::st if (!backend.compare("HEOS")) { if (fluid_string.find('&') == std::string::npos){ - return new HelmholtzEOSBackend(&get_fluid(fluid_string)); + return new HelmholtzEOSBackend(fluid_string); } else{ // Split at the '&' diff --git a/src/Backends/Helmholtz/Configuration.cpp b/src/Backends/Helmholtz/Configuration.cpp index 0c209124..5b07f3da 100644 --- a/src/Backends/Helmholtz/Configuration.cpp +++ b/src/Backends/Helmholtz/Configuration.cpp @@ -17,6 +17,8 @@ bool get_config_bool(configuration_keys key) { case NORMALIZE_GAS_CONSTANTS: return true; + case CRITICAL_SPLINES_ENABLED: + return true; default: throw ValueError(format("%d is invalid key to get_config_bool",key)); } diff --git a/src/Backends/Helmholtz/Configuration.h b/src/Backends/Helmholtz/Configuration.h index b061ebde..3fcc4112 100644 --- a/src/Backends/Helmholtz/Configuration.h +++ b/src/Backends/Helmholtz/Configuration.h @@ -4,7 +4,7 @@ #include "Exceptions.h" #include "CoolPropTools.h" -enum configuration_keys {NORMALIZE_GAS_CONSTANTS}; +enum configuration_keys {NORMALIZE_GAS_CONSTANTS, CRITICAL_SPLINES_ENABLED}; namespace CoolProp { diff --git a/src/Backends/Helmholtz/FlashRoutines.cpp b/src/Backends/Helmholtz/FlashRoutines.cpp index e50eff7c..627cec78 100644 --- a/src/Backends/Helmholtz/FlashRoutines.cpp +++ b/src/Backends/Helmholtz/FlashRoutines.cpp @@ -2,6 +2,7 @@ #include "FlashRoutines.h" #include "HelmholtzEOSMixtureBackend.h" #include "PhaseEnvelopeRoutines.h" +#include "Configuration.h" namespace CoolProp{ @@ -158,8 +159,6 @@ void FlashRoutines::QT_flash(HelmholtzEOSMixtureBackend &HEOS) throw ValueError(format("Temperature to QT_flash [%6g K] must be in range [%8g K, %8g K]",HEOS._T, Tmin_sat, Tmax_sat)); } - //splines.enabled = false; - // If exactly at the critical temperature, liquid and vapor have the critial density if (std::abs(T-HEOS.T_critical())< 1e-14){ HEOS.SatL->update(DmolarT_INPUTS, HEOS.rhomolar_critical(), HEOS._T); @@ -167,7 +166,7 @@ void FlashRoutines::QT_flash(HelmholtzEOSMixtureBackend &HEOS) HEOS._rhomolar = HEOS.rhomolar_critical(); HEOS._p = HEOS.SatL->p(); } - else if (splines.enabled && HEOS._T > splines.T_min){ + else if (get_config_bool(CRITICAL_SPLINES_ENABLED) && splines.enabled && HEOS._T > splines.T_min){ double rhoL = _HUGE, rhoV = _HUGE; // Use critical region spline if it has it and temperature is in its range splines.get_densities(T, splines.rhomolar_min, HEOS.rhomolar_critical(), splines.rhomolar_max, rhoL, rhoV); diff --git a/src/Backends/Helmholtz/HelmholtzEOSBackend.h b/src/Backends/Helmholtz/HelmholtzEOSBackend.h index 03bc1b7f..610064b9 100644 --- a/src/Backends/Helmholtz/HelmholtzEOSBackend.h +++ b/src/Backends/Helmholtz/HelmholtzEOSBackend.h @@ -11,6 +11,7 @@ #include #include "HelmholtzEOSMixtureBackend.h" #include "Fluids/FluidLibrary.h" +#include "MixtureParameters.h" namespace CoolProp { @@ -18,7 +19,28 @@ class HelmholtzEOSBackend : public HelmholtzEOSMixtureBackend { public: HelmholtzEOSBackend(); HelmholtzEOSBackend(CoolPropFluid *pFluid){set_components(std::vector(1,pFluid));}; - HelmholtzEOSBackend(const std::string &name){set_components(std::vector(1,&(get_library().get(name))));}; + HelmholtzEOSBackend(const std::string &name){ + Dictionary dict; + std::vector mole_fractions; + std::vector components; + if (is_predefined_mixture(name, dict)){ + std::vector fluids = dict.get_string_vector("fluids"); + mole_fractions = dict.get_double_vector("mole_fractions"); + + components.resize(fluids.size()); + for (unsigned int i = 0; i < components.size(); ++i){ + components[i] = &(get_library().get(fluids[i])); + } + } + else{ + components = std::vector(1,&(get_library().get(name))); + mole_fractions = std::vector(1,1); + } + // Set the components + set_components(components); + // Set the mole fractions + set_mole_fractions(std::vector(mole_fractions.begin(), mole_fractions.end())); + }; virtual ~HelmholtzEOSBackend(){}; }; diff --git a/src/Backends/Helmholtz/HelmholtzEOSMixtureBackend.cpp b/src/Backends/Helmholtz/HelmholtzEOSMixtureBackend.cpp index a7e8e0a0..9188d1f4 100644 --- a/src/Backends/Helmholtz/HelmholtzEOSMixtureBackend.cpp +++ b/src/Backends/Helmholtz/HelmholtzEOSMixtureBackend.cpp @@ -915,6 +915,7 @@ void HelmholtzEOSMixtureBackend::p_phase_determination_pure_or_pseudopure(int ot } case iHmolar: { + if (!component.ancillaries.hL.enabled()){break;} // Ancillaries are h-h_anchor, so add back h_anchor long double h_liq = component.ancillaries.hL.evaluate(_TLanc) + component.pEOS->hs_anchor.hmolar; long double h_liq_error_band = component.ancillaries.hL.get_max_abs_error(); @@ -939,6 +940,7 @@ void HelmholtzEOSMixtureBackend::p_phase_determination_pure_or_pseudopure(int ot } case iSmolar: { + if (!component.ancillaries.sL.enabled()){break;} // Ancillaries are s-s_anchor, so add back s_anchor long double s_anchor = component.EOSVector[0].hs_anchor.smolar; long double s_liq = component.ancillaries.sL.evaluate(_TLanc) + s_anchor; @@ -958,7 +960,9 @@ void HelmholtzEOSMixtureBackend::p_phase_determination_pure_or_pseudopure(int ot } case iUmolar: { + if (!component.ancillaries.hL.enabled()){break;} // u = h-p/rho + // Ancillaries are h-h_anchor, so add back h_anchor long double h_liq = component.ancillaries.hL.evaluate(_TLanc) + component.EOSVector[0].hs_anchor.hmolar; long double h_liq_error_band = component.ancillaries.hL.get_max_abs_error(); diff --git a/src/Backends/Helmholtz/MixtureParameters.cpp b/src/Backends/Helmholtz/MixtureParameters.cpp index 5bc70736..34ec830e 100644 --- a/src/Backends/Helmholtz/MixtureParameters.cpp +++ b/src/Backends/Helmholtz/MixtureParameters.cpp @@ -1,9 +1,52 @@ #include "MixtureParameters.h" #include "mixture_departure_functions_JSON.h" // Creates the variable mixture_departure_functions_JSON #include "mixture_binary_pairs_JSON.h" // Creates the variable mixture_binary_pairs_JSON +#include "predefined_mixtures_JSON.h" // Makes a std::string variable called predefined_mixtures_JSON namespace CoolProp{ +/** \brief A library of predefined mixtures + * + * Each entry in the predefined mixture library contains the names and mole fractions for the binary pairs + */ +class PredefinedMixturesLibrary{ + public: + std::map predefined_mixture_map; + + PredefinedMixturesLibrary(){ + rapidjson::Document doc; + + doc.Parse<0>(predefined_mixtures_JSON.c_str()); + if (doc.HasParseError()){throw ValueError();} + + // Iterate over the papers in the listing + for (rapidjson::Value::ValueIterator itr = doc.Begin(); itr != doc.End(); ++itr) + { + // Instantiate the empty dictionary to be filled + Dictionary dict; + // Get the name + std::string name = cpjson::get_string(*itr, "name")+".mix"; + // Get the fluid names + dict.add_string_vector("fluids", cpjson::get_string_array(*itr, "fluids")); + // Get the mole fractions + dict.add_double_vector("mole_fractions", cpjson::get_double_array(*itr,"mole_fractions")); + + predefined_mixture_map.insert(std::pair(name, dict)); + } + } +}; +static PredefinedMixturesLibrary predefined_mixtures_library; + +bool is_predefined_mixture(const std::string name, Dictionary &dict){ + if (predefined_mixtures_library.predefined_mixture_map.find(name) != predefined_mixtures_library.predefined_mixture_map.end()){ + dict = predefined_mixtures_library.predefined_mixture_map[name]; + return true; + } + else{ + return false; + } +} + /** \brief A library of binary pair parameters for the mixture * * Each entry in the binary pair library includes reducing parameters as well as the name of the reducing function to be used and @@ -91,6 +134,48 @@ public: }; static MixtureBinaryPairLibrary mixturebinarypairlibrary; +std::string get_csv_mixture_binary_pairs() +{ + std::vector out; + for (std::map< std::vector, std::vector >::iterator it = mixturebinarypairlibrary.binary_pair_map.begin(); it != mixturebinarypairlibrary.binary_pair_map.end(); ++it) + { + out.push_back(strjoin(it->first, "&")); + } + return strjoin(out, ","); +} + +std::string get_mixture_binary_pair_data(const std::string &CAS1, const std::string &CAS2, const std::string &key) +{ + // Find pair + std::vector CAS; + CAS.push_back(CAS1); + CAS.push_back(CAS2); + + if (mixturebinarypairlibrary.binary_pair_map.find(CAS) != mixturebinarypairlibrary.binary_pair_map.end()){ + std::vector &v = mixturebinarypairlibrary.binary_pair_map[CAS]; + try{ + if (key == "name1"){ return v[0].get_string("name1"); } + else if (key == "name2"){ return v[0].get_string("name2"); } + else if (key == "BibTeX"){ return v[0].get_string("BibTeX"); } + else if (key == "F"){ return v[0].get_string("F"); } + else if (key == "function"){ return v[0].get_string("function"); } + else if (key == "type"){ return v[0].get_string("type"); } + else if (key == "xi"){ return format("%0.16g", v[0].get_double("xi")); } + else if (key == "zeta"){ return format("%0.16g", v[0].get_double("zeta")); } + else if (key == "gammaT"){ return format("%0.16g", v[0].get_double("gammaT")); } + else if (key == "gammaV"){ return format("%0.16g", v[0].get_double("gammaV")); } + else if (key == "betaT"){ return format("%0.16g", v[0].get_double("betaT")); } + else if (key == "betaV"){ return format("%0.16g", v[0].get_double("betaV")); } + else{ } + } + catch(std::exception &e){ } + throw ValueError(format("Could not match the parameter [%s] for the binary pair [%s,%s] - for now this is an error.", key.c_str(), CAS1.c_str(), CAS2.c_str())); + } + else{ + throw ValueError(format("Could not match the binary pair [%s,%s] - for now this is an error.",CAS1.c_str(), CAS2.c_str())); + } +} + std::string get_reducing_function_name(std::string CAS1, std::string CAS2) { std::vector CAS; diff --git a/src/Backends/Helmholtz/MixtureParameters.h b/src/Backends/Helmholtz/MixtureParameters.h index 7d9f9902..563f56bd 100644 --- a/src/Backends/Helmholtz/MixtureParameters.h +++ b/src/Backends/Helmholtz/MixtureParameters.h @@ -4,6 +4,23 @@ #include "HelmholtzEOSMixtureBackend.h" namespace CoolProp{ + +/** \brief Get a comma-separated list of CAS code pairs + * + * Each of the pairs will be CAS1&CAS2 ("&" delimited) + */ +std::string get_csv_mixture_binary_pairs(); + +/** \brief Get the parameters for a predefined mixture - R410A, R404A, etc. + * + */ +bool is_predefined_mixture(const std::string name, Dictionary &dict); + +/** \brief Get a string for the given binary pair + * + * + */ +std::string get_mixture_binary_pair_data(const std::string &CAS1, const std::string &CAS2, const std::string ¶m); class MixtureParameters { diff --git a/src/Backends/Incompressible/IncompressibleBackend.cpp b/src/Backends/Incompressible/IncompressibleBackend.cpp index ce233d0f..d81d510b 100644 --- a/src/Backends/Incompressible/IncompressibleBackend.cpp +++ b/src/Backends/Incompressible/IncompressibleBackend.cpp @@ -67,7 +67,7 @@ void IncompressibleBackend::update(CoolProp::input_pairs input_pair, double valu this->_phase = iphase_liquid; if (get_debug_level()>=50) std::cout << format("Incompressible backend: Phase type is %d ",this->_phase) << std::endl; - switch (input_pair) + switch (input_pair) { case PT_INPUTS: { _p = value1; @@ -94,6 +94,12 @@ void IncompressibleBackend::update(CoolProp::input_pairs input_pair, double valu _T = this->HmassP_flash(value1, value2); break; } + case QT_INPUTS: { + if (value1!=0) {throw ValueError("Incompressible fluids can only handle saturated liquid, Q=0.");} + _T = value2; + _p = fluid->psat(value2, _fractions[0]); + break; + } default: { throw ValueError( format("This pair of inputs [%s] is not yet supported", @@ -108,6 +114,21 @@ void IncompressibleBackend::update(CoolProp::input_pairs input_pair, double valu fluid->checkTPX(_T,_p,_fractions[0]); } +/// Set the fractions +/** +@param fractions The vector of fractions of the components converted to the correct input +*/ +void IncompressibleBackend::set_fractions(const std::vector &fractions){ + if (get_debug_level()>=10) std::cout << format("Incompressible backend: Called set_fractions with %s ",vec_to_string(fractions).c_str()) << std::endl; + if (fractions.size()!=1) throw ValueError(format("The incompressible backend only supports one entry in the fraction vector and not %d.",fractions.size())); + if ( ( this->_fractions.size()!=1 ) || + ( this->_fractions[0]!=fractions[0] ) ) { // Change it! + if (get_debug_level()>=20) std::cout << format("Incompressible backend: Updating the fractions triggered a change in reference state %s -> %s",vec_to_string(this->_fractions).c_str(),vec_to_string(fractions).c_str()) << std::endl; + this->_fractions = fractions; + fluid->set_reference_state(fluid->getTref(), fluid->getpref(), this->_fractions[0], fluid->gethref(), fluid->getsref()); + } +} + /// Set the mole fractions /** @param mole_fractions The vector of mole fractions of the components @@ -116,15 +137,16 @@ void IncompressibleBackend::set_mole_fractions(const std::vector &m if (get_debug_level()>=10) std::cout << format("Incompressible backend: Called set_mole_fractions with %s ",vec_to_string(mole_fractions).c_str()) << std::endl; if (mole_fractions.size()!=1) throw ValueError(format("The incompressible backend only supports one entry in the mole fraction vector and not %d.",mole_fractions.size())); if (fluid->getxid()==IFRAC_PURE) { - this->_fractions = std::vector(1,0); + this->set_fractions(std::vector(1,0)); if (get_debug_level()>=20) std::cout << format("Incompressible backend: Overwriting fractions for pure fluid with %s -> %s",vec_to_string(mole_fractions).c_str(),vec_to_string(this->_fractions).c_str()) << std::endl; } else if (fluid->getxid()==IFRAC_MOLE) { - this->_fractions = mole_fractions; + this->set_fractions(mole_fractions); } else { - this->_fractions.clear(); + std::vector tmp_fractions; for (std::size_t i = 0; i < mole_fractions.size(); i++) { - this->_fractions.push_back((long double) fluid->inputFromMole(0.0, mole_fractions[i])); + tmp_fractions.push_back((long double) fluid->inputFromMole(0.0, mole_fractions[i])); } + this->set_fractions(tmp_fractions); } } @@ -136,15 +158,16 @@ void IncompressibleBackend::set_mass_fractions(const std::vector &m if (get_debug_level()>=10) std::cout << format("Incompressible backend: Called set_mass_fractions with %s ",vec_to_string(mass_fractions).c_str()) << std::endl; if (mass_fractions.size()!=1) throw ValueError(format("The incompressible backend only supports one entry in the mass fraction vector and not %d.",mass_fractions.size())); if (fluid->getxid()==IFRAC_PURE) { - this->_fractions = std::vector(1,0); + this->set_fractions(std::vector(1,0)); if (get_debug_level()>=20) std::cout << format("Incompressible backend: Overwriting fractions for pure fluid with %s -> %s",vec_to_string(mass_fractions).c_str(),vec_to_string(this->_fractions).c_str()) << std::endl; } else if (fluid->getxid()==IFRAC_MASS) { - this->_fractions = mass_fractions; + this->set_fractions(mass_fractions); } else { - this->_fractions.clear(); + std::vector tmp_fractions; for (std::size_t i = 0; i < mass_fractions.size(); i++) { - this->_fractions.push_back((long double) fluid->inputFromMass(0.0, mass_fractions[i])); + tmp_fractions.push_back((long double) fluid->inputFromMass(0.0, mass_fractions[i])); } + this->set_fractions(tmp_fractions); } } @@ -156,15 +179,16 @@ void IncompressibleBackend::set_volu_fractions(const std::vector &v if (get_debug_level()>=10) std::cout << format("Incompressible backend: Called set_volu_fractions with %s ",vec_to_string(volu_fractions).c_str()) << std::endl; if (volu_fractions.size()!=1) throw ValueError(format("The incompressible backend only supports one entry in the volume fraction vector and not %d.",volu_fractions.size())); if (fluid->getxid()==IFRAC_PURE) { - this->_fractions = std::vector(1,0); + this->set_fractions(std::vector(1,0)); if (get_debug_level()>=20) std::cout << format("Incompressible backend: Overwriting fractions for pure fluid with %s -> %s",vec_to_string(volu_fractions).c_str(),vec_to_string(this->_fractions).c_str()) << std::endl; } else if (fluid->getxid()==IFRAC_VOLUME) { - this->_fractions = volu_fractions; + this->set_fractions(volu_fractions); } else { - this->_fractions.clear(); + std::vector tmp_fractions; for (std::size_t i = 0; i < volu_fractions.size(); i++) { - this->_fractions.push_back((long double) fluid->inputFromVolume(0.0, volu_fractions[i])); + tmp_fractions.push_back((long double) fluid->inputFromVolume(0.0, volu_fractions[i])); } + this->set_fractions(tmp_fractions); } } diff --git a/src/Backends/Incompressible/IncompressibleBackend.h b/src/Backends/Incompressible/IncompressibleBackend.h index 66765a5d..b2174eed 100644 --- a/src/Backends/Incompressible/IncompressibleBackend.h +++ b/src/Backends/Incompressible/IncompressibleBackend.h @@ -18,6 +18,13 @@ protected: //int _fractions_id; std::vector _fractions; IncompressibleFluid *fluid; + + /// Set the fractions + /** + @param fractions The vector of fractions of the components converted to the correct input + */ + void set_fractions(const std::vector &fractions); + public: IncompressibleBackend(); virtual ~IncompressibleBackend(){}; @@ -68,7 +75,7 @@ public: /// Check if the mole fractions have been set, etc. void check_status(); - + /// Calculate T given pressure and density /** @param rhomass The mass density in kg/m^3 @@ -90,7 +97,7 @@ public: @returns T The temperature in K */ long double PSmass_flash(long double p, long double smass); - + /// Calculate T given pressure and internal energy /** @param umass The mass internal energy in J/kg diff --git a/src/Backends/Incompressible/IncompressibleFluid.cpp b/src/Backends/Incompressible/IncompressibleFluid.cpp index bde623cf..48886828 100644 --- a/src/Backends/Incompressible/IncompressibleFluid.cpp +++ b/src/Backends/Incompressible/IncompressibleFluid.cpp @@ -16,6 +16,7 @@ This fluid instance is populated using an entry from a JSON file //IncompressibleFluid::IncompressibleFluid(); void IncompressibleFluid::set_reference_state(double T0, double p0, double x0, double h0, double s0){ + this->Tref = T0; this->rhoref = rho(T0,p0,x0); this->pref = p0; this->uref = h0 - p0/rhoref; @@ -491,7 +492,7 @@ bool IncompressibleFluid::checkP(double T, double p, double x) { double ps = 0.0; if (p_sat.type!=IncompressibleData::INCOMPRESSIBLE_NOT_SET) ps = psat(T, x); if (p < 0.0) throw ValueError(format("You cannot use negative pressures: %f < %f. ", p, 0.0)); - if (ps>0.0 && p < ps) throw ValueError(format("Equations are valid for liquid phase only: %f < %f (psat). ", p, ps)); + if (ps> 0.0 && p < ps) throw ValueError(format("Equations are valid for liquid phase only: %f < %f (psat). ", p, ps)); return true; } diff --git a/src/Backends/Incompressible/IncompressibleLibrary.cpp b/src/Backends/Incompressible/IncompressibleLibrary.cpp index 02ed986b..2e23fc71 100644 --- a/src/Backends/Incompressible/IncompressibleLibrary.cpp +++ b/src/Backends/Incompressible/IncompressibleLibrary.cpp @@ -486,7 +486,7 @@ void JSONIncompressibleLibrary::add_one(rapidjson::Value &fluid_json) { if (get_debug_level()>=20) std::cout << format("Incompressible library: Loading reference state for %s ",fluid.getName().c_str()) << std::endl; fluid.set_reference_state( - parse_value(fluid_json, "Tref", false, 25+273.15) , + parse_value(fluid_json, "Tref", false, 20+273.15) , parse_value(fluid_json, "pref", false, 1.01325e5) , parse_value(fluid_json, "xref", false, 0.0) , parse_value(fluid_json, "href", false, 0.0) , @@ -498,7 +498,7 @@ void JSONIncompressibleLibrary::add_one(rapidjson::Value &fluid_json) { // Add name->index mapping string_to_index_map[fluid.getName()] = index; - + // Add name to vector of names if (fluid.is_pure()){ this->name_vector_pure.push_back(fluid.getName()); diff --git a/src/CoolProp.cpp b/src/CoolProp.cpp index 54b21ee8..9fc28731 100644 --- a/src/CoolProp.cpp +++ b/src/CoolProp.cpp @@ -30,6 +30,8 @@ #include "Backends/Helmholtz/Fluids/FluidLibrary.h" #include "Backends/Incompressible/IncompressibleLibrary.h" #include "Backends/Helmholtz/HelmholtzEOSBackend.h" +#include "Backends/Helmholtz/MixtureParameters.h" + namespace CoolProp { @@ -869,6 +871,9 @@ std::string get_global_param_string(std::string ParamName) else if (!ParamName.compare("incompressible_list_solution")){ return get_incompressible_list_solution(); } + else if (!ParamName.compare("mixture_binary_pairs_list")){ + return get_csv_mixture_binary_pairs(); + } else if (!ParamName.compare("parameter_list") ) { return get_csv_parameter_list(); diff --git a/src/CoolPropLib.cpp b/src/CoolPropLib.cpp index b0fe63af..5842db37 100644 --- a/src/CoolPropLib.cpp +++ b/src/CoolPropLib.cpp @@ -97,7 +97,7 @@ EXPORT_CODE double CONVENTION PropsS(const char *Output, const char* Name1, doub double val = Props(Output,Name1[0],Prop1,Name2[0],Prop2,Ref); return val; } -EXPORT_CODE double CONVENTION Props(const char *Output, char Name1, double Prop1, char Name2, double Prop2, const char * Ref) +EXPORT_CODE double CONVENTION Props(const char *Output, const char Name1, double Prop1, const char Name2, double Prop2, const char * Ref) { try { diff --git a/src/Solvers.cpp b/src/Solvers.cpp index 109c0bc0..40833dba 100644 --- a/src/Solvers.cpp +++ b/src/Solvers.cpp @@ -9,11 +9,11 @@ namespace CoolProp{ /** In this formulation of the Multi-Dimensional Newton-Raphson solver the Jacobian matrix is known. -Therefore, the dx vector can be obtained from +Therefore, the dx vector can be obtained from J(x)dx=-f(x) -for a given value of x. The pointer to the class FuncWrapperND that is passed in must implement the call() and Jacobian() +for a given value of x. The pointer to the class FuncWrapperND that is passed in must implement the call() and Jacobian() functions, each of which take the vector x. The data is managed using std::vector vectors @param f A pointer to an subclass of the FuncWrapperND class that implements the call() and Jacobian() functions @@ -33,7 +33,7 @@ std::vector NDNewtonRaphson_Jacobian(FuncWrapperND *f, std::vectortol){ f0 = f->call(x0); J = f->Jacobian(x0); - + // Negate f0 negative_f0 = f0; for (unsigned int i = 0; i NDNewtonRaphson_Jacobian(FuncWrapperND *f, std::vectortol) { @@ -137,11 +137,11 @@ double Secant(FuncWrapper1D* f, double x0, double dx, double tol, int maxiter, s if (iter>1) { double deltax = x2-x1; - if (std::abs(deltax)<1e-14) - { + if (std::abs(deltax)<1e-14) + { if (std::abs(fval) < tol*10) { - return x; + return x; } else { @@ -151,7 +151,7 @@ double Secant(FuncWrapper1D* f, double x0, double dx, double tol, int maxiter, s y2=fval; x3=x2-y2/(y2-y1)*(x2-x1); y1=y2; x1=x2; x2=x3; - + } if (iter>maxiter) { @@ -166,7 +166,7 @@ double Secant(FuncWrapper1D* f, double x0, double dx, double tol, int maxiter, s /** In the secant function, a 1-D Newton-Raphson solver is implemented. An initial guess for the solution is provided. -@param f A pointer to an instance of the FuncWrapper1D class that implements the call() function +@param f A pointer to an instance of the FuncWrapper1D class that implements the call() function @param x0 The inital guess for the solution @param xmax The upper bound for the solution @param xmin The lower bound for the solution @@ -181,7 +181,7 @@ double BoundedSecant(FuncWrapper1D* f, double x0, double xmin, double xmax, doub double x1=0,x2=0,x3=0,y1=0,y2=0,x,fval=999; int iter=1; errstring = ""; - + if (std::abs(dx)==0){ errstring = "dx cannot be zero"; return _HUGE;} while (iter<=3 || std::abs(fval)>tol) { @@ -204,7 +204,7 @@ double BoundedSecant(FuncWrapper1D* f, double x0, double xmin, double xmax, doub x3 = (xmax + x2)/2; } y1=y2; x1=x2; x2=x3; - + } if (iter>maxiter) { @@ -216,7 +216,7 @@ double BoundedSecant(FuncWrapper1D* f, double x0, double xmin, double xmax, doub return x3; } -/** +/** This function implements a 1-D bounded solver using the algorithm from Brent, R. P., Algorithms for Minimization Without Derivatives. Englewood Cliffs, NJ: Prentice-Hall, 1973. Ch. 3-4. @@ -243,11 +243,11 @@ double Brent(FuncWrapper1D* f, double a, double b, double macheps, double t, int // If one of the boundaries is to within tolerance, just stop if (std::abs(fb) < t) { return b;} if (!ValidNumber(fb)){ - throw ValueError(format("Brent's method f(b) is NAN for b = %g",b).c_str()); + throw ValueError(format("Brent's method f(b) is NAN for b = %g, other input was a = %g",b,a).c_str()); } if (std::abs(fa) < t) { return a;} if (!ValidNumber(fa)){ - throw ValueError(format("Brent's method f(a) is NAN for a = %g",a).c_str()); + throw ValueError(format("Brent's method f(a) is NAN for a = %g, other input was b = %g",a,b).c_str()); } if (fa*fb>0){ throw ValueError(format("Inputs in Brent [%f,%f] do not bracket the root. Function values are [%f,%f]",a,b,fa,fb)); diff --git a/src/Tests/TestObjects.cpp b/src/Tests/TestObjects.cpp index 6b56f6b0..9ee33bea 100644 --- a/src/Tests/TestObjects.cpp +++ b/src/Tests/TestObjects.cpp @@ -199,9 +199,9 @@ CoolProp::IncompressibleFluid CoolPropTesting::incompressibleFluidObject(){ //CH3OH.setMassToMole(mass2mole); //XLT.set_reference_state(25+273.15, 1.01325e5, 0.0, 0.0, 0.0); - double Tref = 25+273.15; - double pref = 0.0; - double xref = 0.25; + double Tref = 20+273.15; + double pref = 101325; + double xref = 0.0; double href = 0.0; double sref = 0.0; CH3OH.set_reference_state(Tref, pref, xref, href, sref); diff --git a/wrappers/Python/CoolProp/AbstractState.pyx b/wrappers/Python/CoolProp/AbstractState.pyx index 59fc2235..2555bbd3 100644 --- a/wrappers/Python/CoolProp/AbstractState.pyx +++ b/wrappers/Python/CoolProp/AbstractState.pyx @@ -42,69 +42,69 @@ cdef class AbstractState: ## ---------------------------------------- cpdef double keyed_output(self, parameters iOutput) except *: - """ Update :cpapi:`CoolProp::AbstractState::update` """ + """ Update :cpapi:`CoolProp::AbstractState::keyed_output(parameters key)` """ return self.thisptr.keyed_output(iOutput) cpdef double T(self) except *: - """ Get the temperature in K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::T` """ + """ Get the temperature in K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::T(void)` """ return self.thisptr.T() cpdef double p(self) except *: - """ Get the pressure in Pa - wrapper of c++ function :cpapi:`CoolProp::AbstractState::p` """ + """ Get the pressure in Pa - wrapper of c++ function :cpapi:`CoolProp::AbstractState::p(void)` """ return self.thisptr.p() cpdef double rhomolar(self) except *: - """ Get the density in mol/m^3 - wrapper of c++ function :cpapi:`CoolProp::AbstractState::rhomolar` """ + """ Get the density in mol/m^3 - wrapper of c++ function :cpapi:`CoolProp::AbstractState::rhomolar(void)` """ return self.thisptr.rhomolar() cpdef double rhomass(self) except *: - """ Get the density in kg/m^3 - wrapper of c++ function :cpapi:`CoolProp::AbstractState::rhomass` """ + """ Get the density in kg/m^3 - wrapper of c++ function :cpapi:`CoolProp::AbstractState::rhomass(void)` """ return self.thisptr.rhomass() cpdef double hmolar(self) except *: - """ Get the enthalpy in J/mol - wrapper of c++ function :cpapi:`CoolProp::AbstractState::hmolar` """ + """ Get the enthalpy in J/mol - wrapper of c++ function :cpapi:`CoolProp::AbstractState::hmolar(void)` """ return self.thisptr.hmolar() cpdef double hmass(self) except *: - """ Get the enthalpy in J/kg - wrapper of c++ function :cpapi:`CoolProp::AbstractState::hmass` """ + """ Get the enthalpy in J/kg - wrapper of c++ function :cpapi:`CoolProp::AbstractState::hmass(void)` """ return self.thisptr.hmass() cpdef double umolar(self) except *: - """ Get the internal energy in J/mol - wrapper of c++ function :cpapi:`CoolProp::AbstractState::umolar` """ + """ Get the internal energy in J/mol - wrapper of c++ function :cpapi:`CoolProp::AbstractState::umolar(void)` """ return self.thisptr.umolar() cpdef double umass(self) except *: - """ Get the internal energy in J/kg - wrapper of c++ function :cpapi:`CoolProp::AbstractState::umass` """ + """ Get the internal energy in J/kg - wrapper of c++ function :cpapi:`CoolProp::AbstractState::umass(void)` """ return self.thisptr.umass() cpdef double smolar(self) except *: - """ Get the entropy in J/mol/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::smolar` """ + """ Get the entropy in J/mol/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::smolar(void)` """ return self.thisptr.smolar() cpdef double smass(self) except *: - """ Get the entropy in J/kg/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::smass` """ + """ Get the entropy in J/kg/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::smass(void)` """ return self.thisptr.smass() cpdef double cpmolar(self) except *: - """ Get the constant pressure specific heat in J/mol/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::cpmolar` """ + """ Get the constant pressure specific heat in J/mol/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::cpmolar(void)` """ return self.thisptr.cpmolar() cpdef double cpmass(self) except *: - """ Get the constant pressure specific heat in J/kg/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::cpmass` """ + """ Get the constant pressure specific heat in J/kg/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::cpmass(void)` """ return self.thisptr.cpmass() cpdef double cp0molar(self) except *: - """ Get the ideal gas constant pressure specific heat in J/mol/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::cp0molar` """ + """ Get the ideal gas constant pressure specific heat in J/mol/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::cp0molar(void)` """ return self.thisptr.cp0molar() cpdef double cp0mass(self) except *: - """ Get the ideal gas constant pressure specific heat in J/kg/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::cp0mass` """ + """ Get the ideal gas constant pressure specific heat in J/kg/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::cp0mass(void)` """ return self.thisptr.cp0mass() cpdef double cvmolar(self) except *: - """ Get the constant volume specific heat in J/mol/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::cvmolar` """ + """ Get the constant volume specific heat in J/mol/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::cvmolar(void)` """ return self.thisptr.cvmolar() cpdef double cvmass(self) except *: - """ Get the constant volume specific heat in J/kg/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::cvmass` """ + """ Get the constant volume specific heat in J/kg/K - wrapper of c++ function :cpapi:`CoolProp::AbstractState::cvmass(void)` """ return self.thisptr.cvmass() cpdef double speed_sound(self) except *: - """ Get the speed of sound in m/s - wrapper of c++ function :cpapi:`CoolProp::AbstractState::speed_sound` """ + """ Get the speed of sound in m/s - wrapper of c++ function :cpapi:`CoolProp::AbstractState::speed_sound(void)` """ return self.thisptr.speed_sound() cpdef double molar_mass(self) except *: - """ Get the molar mass in kg/mol - wrapper of c++ function :cpapi:`CoolProp::AbstractState::molar_mass` """ + """ Get the molar mass in kg/mol - wrapper of c++ function :cpapi:`CoolProp::AbstractState::molar_mass(void)` """ return self.thisptr.molar_mass() cpdef mole_fractions_liquid(self): - """ Get the mole fractions of the liquid phase - wrapper of c++ function :cpapi:`CoolProp::AbstractState::mole_fractions_liquid` """ + """ Get the mole fractions of the liquid phase - wrapper of c++ function :cpapi:`CoolProp::AbstractState::mole_fractions_liquid(void)` """ return self.thisptr.mole_fractions_liquid() cpdef mole_fractions_vapor(self): - """ Get the mole fractions of the vapor phase - wrapper of c++ function :cpapi:`CoolProp::AbstractState::mole_fractions_vapor` """ + """ Get the mole fractions of the vapor phase - wrapper of c++ function :cpapi:`CoolProp::AbstractState::mole_fractions_vapor(void)` """ return self.thisptr.mole_fractions_vapor() ## ---------------------------------------- diff --git a/wrappers/Python/CoolProp/BibtexParser.py b/wrappers/Python/CoolProp/BibtexParser.py index c95db2ff..e479ff82 100644 --- a/wrappers/Python/CoolProp/BibtexParser.py +++ b/wrappers/Python/CoolProp/BibtexParser.py @@ -6,6 +6,7 @@ from __future__ import generators import pybtex.plugin, pybtex.database.input.bibtex, pybtex.errors import io import codecs, latexcodec +import os @@ -41,13 +42,27 @@ class BibTeXerClass(object): else: bib_parser = pybtex.database.input.bibtex.Parser() - # Do not print that many warnings - pybtex.errors.set_strict_mode(enable=False) + # TODO: not needed anymore? + oldLatexCodec = False + if oldLatexCodec: + # Do not print that many warnings + pybtex.errors.set_strict_mode(enable=False) + + # TODO: Remove empty lines to keep Pybtex from choking + with open(path, "r") as f: + lines = f.readlines() + cleaned = [l.strip() for l in lines if l.strip()] + + path = path+".filtered.bib" + with open(path, "w") as f: + f.writelines('\n'.join(cleaned)) # Open the file and convert it according to the encoding with codecs.open(path, encoding=encoding) as stream: self.library = bib_parser.parse_stream(stream) + #os.remove(path) + # Do some post-processing if encoding was latex if encoding=="latex": for tag in self.library.entries: @@ -92,7 +107,7 @@ class BibTeXerClass(object): return stripped - def getBibliography(self, keys=[], fmt="plaintext", style="unsrtalpha", enc=None, objects=False): + def getBibliography(self, keys=None, fmt="plaintext", style="unsrtalpha", enc=None, objects=False): """This function creates a formatted bibliography according to the defined parameters using Pybtex. Specify your desired output format using the \"fmt\" parameter. Supported @@ -158,7 +173,16 @@ class BibTeXerClass(object): } # How do we find the end of the label? end_of_label = contents.index(label_table[fmt]) - contents = contents[end_of_label+1:].strip() + contents = contents[end_of_label+len(label_table[fmt]):].strip() + + if fmt=="latex": + contents = contents.replace(u"\\newblock ","") + elif fmt=="html": + contents = contents.replace(u"
","") + contents = contents.replace(u"
","") + + contents = contents.replace(u"\n","") + return contents @@ -166,43 +190,15 @@ class BibTeXerClass(object): #getEntry(self, key, label=False, fmt="markdown", style="unsrtalpha", enc=None): if __name__=='__main__': - B = BibTeXerClass() - B.loadLibrary('../../../Web/fluid_properties/Incompressibles.bib') - print(B.getEntry('Cesar2013')) - print(B.getEntry('Skovrup2013')) - print(B.getEntry('Therminol2014')) - -# B = BibTeXerClass('../../../Web/fluid_properties/Incompressibles.bib') -# print("\nHTML:") -# print(B.entries2All(keys=['Skovrup2013'], output_backend='html')) -# print("\nMarkdown:") -# print(B.entries2All(keys=['Skovrup2013'], output_backend='markdown')) -# print("\nText:") -# print(B.entries2All(keys=['Skovrup2013'], output_backend='text')) -# -# B = BibTeXerClass('../../../CoolPropBibTeXLibrary.bib') -# print("\nHTML:") -# print(B.entries2All(keys=['Mulero-JPCRD-2012'], output_backend='html')) -# print("\nMarkdown:") -# print(B.entries2All(keys=['Mulero-JPCRD-2012'], output_backend='markdown')) -# print("\nText:") -# print(B.entries2All(keys=['Mulero-JPCRD-2012'], output_backend='text')) -# -# -# from pybtex.richtext import Text, Tag, Symbol, HRef -# from pybtex.backends.markdown import Backend -# -# link_href = HRef( -# 'http://www.test.test/directory/file.ext?para=in&sec=out', # URL -# 'testing links with href class' -# ) -# tag_emph = Tag('emph', Text(u'Emph', Symbol('nbsp'), u'text')) -# unicode_text = Text(u'Л.:', Symbol('nbsp'), u'<<Химия>>') -# latex_text = Text(u'{\\aa}', Symbol(u'nbsp'), u'\\\'e') -# markd_text = Text(u'{ and & and *', Symbol(u'nbsp'), u'\\') -# -# for i in [link_href,tag_emph,unicode_text,latex_text,markd_text]: -# print(i.render(Backend())) + B = BibTeXerClass('../../../CoolPropBibTeXLibrary.bib') + print("\nLatex:") + print(B.getEntry(key='Mulero-JPCRD-2012', fmt='latex')) + print("\nHTML:") + print(B.getEntry(key='Mulero-JPCRD-2012', fmt='html')) + print("\nMarkdown:") + print(B.getEntry(key='Mulero-JPCRD-2012', fmt='markdown')) + print("\nText:") + print(B.getEntry(key='Mulero-JPCRD-2012', fmt='plaintext')) diff --git a/wrappers/Python/CoolProp/CoolProp.pxd b/wrappers/Python/CoolProp/CoolProp.pxd index 3ffb0e36..f8c6deb6 100644 --- a/wrappers/Python/CoolProp/CoolProp.pxd +++ b/wrappers/Python/CoolProp/CoolProp.pxd @@ -15,13 +15,16 @@ cdef extern from "Python.h": cdef extern from "CoolPropTools.h" namespace "CoolProp": bint _ValidNumber "ValidNumber"(double) +cdef extern from "Backends/Helmholtz/MixtureParameters.h" namespace "CoolProp": + string _get_mixture_binary_pair_data "CoolProp::get_mixture_binary_pair_data"(const string CAS1, const string CAS2, const string key) except + + cdef extern from "DataStructures.h" namespace "CoolProp": string _get_parameter_information "CoolProp::get_parameter_information"(int, string) except + int _get_parameter_index "CoolProp::get_parameter_index"(string) except + constants_header.input_pairs _generate_update_pair "CoolProp::generate_update_pair"(long key1, double value1, long key2, double value2, double &out1, double &out2) except + cdef extern from "CoolPropLib.h": - double _Props "Props"(const char* Output, char Name1, double Prop1, char Name2, double Prop2, const char* Ref) + double _Props "Props"(const char* Output, const char Name1, double Prop1, const char Name2, double Prop2, const char* Ref) cdef extern from "CoolProp.h" namespace "CoolProp": double _Props1SI "CoolProp::Props1SI"(string Ref, string Output) @@ -34,6 +37,7 @@ cdef extern from "CoolProp.h" namespace "CoolProp": string _get_fluid_param_string "CoolProp::get_fluid_param_string"(string ParamName, string FluidName) #long _get_parameter_index "CoolProp::get_parameter_index" (string param) + # Convenience functions # int _IsFluidType "IsFluidType"(char* Ref, char* Type) # string _get_BibTeXKey "CoolProp::get_BibTeXKey"(string Ref, string key) diff --git a/wrappers/Python/CoolProp/CoolProp.pyx b/wrappers/Python/CoolProp/CoolProp.pyx index 25b301ae..aa98be71 100644 --- a/wrappers/Python/CoolProp/CoolProp.pyx +++ b/wrappers/Python/CoolProp/CoolProp.pyx @@ -124,9 +124,12 @@ include "AbstractState.pyx" cpdef int get_parameter_index(string key): return _get_parameter_index(key) - + cpdef string get_parameter_information(int key, string info): return _get_parameter_information(key, info) + +cpdef string get_mixture_binary_pair_data(CAS1, CAS2, key) except *: + return _get_mixture_binary_pair_data(CAS1, CAS2, key) cpdef get_global_param_string(string param): return _get_global_param_string(param) @@ -150,7 +153,7 @@ cpdef __Props_err2(fcn, in1, in2, in3, in4, in5, in6): cpdef Props(in1, in2, in3 = None, in4 = None, in5 = None, in6 = None): """ - ${CoolProp::Props} + A Python wrapper of :cpapi:`CoolProp::Props`. This function is deprecated, use PropsSI instead """ import warnings dep_warning = "Props() function is deprecated; Use the PropsSI() function" @@ -169,7 +172,7 @@ cpdef Props(in1, in2, in3 = None, in4 = None, in5 = None, in6 = None): cpdef PropsSI(in1, in2, in3 = None, in4 = None, in5 = None, in6 = None, in7 = None): """ - $$PropsSI$$ + A Python wrapper of C++ function :cpapi:`CoolProp::PropsSI` . """ cdef double val @@ -356,6 +359,10 @@ cdef class State: """ A class that contains all the code that represents a thermodynamic state + .. warning:: + + This class is deprecated. You should use :py:class:`CoolProp.AbstractState` instead + The motivation for this class is that it is useful to be able to define the state once using whatever state inputs you like and then be able to calculate other thermodynamic properties with the minimum of computational work. diff --git a/wrappers/Python/pypi/prepare_pypi.py b/wrappers/Python/pypi/prepare_pypi.py index e7d0c47b..6b624c2a 100644 --- a/wrappers/Python/pypi/prepare_pypi.py +++ b/wrappers/Python/pypi/prepare_pypi.py @@ -21,9 +21,11 @@ def collect(tmp): if __name__=='__main__': - import shutil, os, sys, subprocess + import shutil, os, sys, subprocess, glob subprocess.check_call('python generate_headers.py', shell = True, cwd = os.path.join('..','..','..','dev'), stdout = sys.stdout, stderr = sys.stderr) + for pyx in ['CoolProp.pyx','constants.pyx']: + subprocess.check_call('cython --cplus '+os.path.split(pyx)[1], shell = True, cwd = os.path.join('..','CoolProp'), stdout = sys.stdout, stderr = sys.stderr) name = 'CoolProp' # Make a temporary directory in this folder diff --git a/wrappers/Python/setup.py b/wrappers/Python/setup.py index a13f295f..2ec7468b 100644 --- a/wrappers/Python/setup.py +++ b/wrappers/Python/setup.py @@ -13,9 +13,80 @@ def remove_files(): os.remove(os.path.join('CoolProp', 'CoolPropBibTeXLibrary.bib')) print('files removed.') +def touch(fname): + open(fname, 'a').close() + os.utime(fname, None) + if __name__=='__main__': - + + + import subprocess, shutil, os, sys, glob + + if '--cmake-compiler' in sys.argv: + i = sys.argv.index('--cmake-compiler') + sys.argv.pop(i) + cmake_compiler = sys.argv.pop(i) + else: + cmake_compiler = '' + + if '--cmake-bitness' in sys.argv: + i = sys.argv.index('--cmake-bitness') + sys.argv.pop(i) + cmake_bitness = sys.argv.pop(i) + else: + cmake_bitness = '' + + USING_CMAKE = cmake_compiler or cmake_bitness + + cmake_config_args = [] + cmake_build_args = ['--config','"Release"'] + STATIC_LIBRARY_BUILT = False + if USING_CMAKE: + + # Always force build since any changes in the C++ files will not force a rebuild + touch('CoolProp/CoolProp.pyx') + + if 'clean' in sys.argv: + if os.path.exists('cmake_build'): + print('removing cmake_build folder...') + shutil.rmtree('cmake_build') + print('removed.') + + if cmake_compiler == 'vc9': + if cmake_bitness == '32': + generator = ['-G','"Visual Studio 9 2008"'] + elif cmake_bitness == '64': + generator = ['-G','"Visual Studio 9 2008 Win64"'] + else: + raise ValueError('cmake_bitness must be either 32 or 64; got ' + cmake_bitness) + elif cmake_compiler == 'vc10': + if cmake_bitness == '32': + generator = ['-G','"Visual Studio 10 2010"'] + elif cmake_bitness == '64': + generator = ['-G','"Visual Studio 10 2010 Win64"'] + else: + raise ValueError('cmake_bitness must be either 32 or 64; got ' + cmake_bitness) + else: + raise ValueError('cmake_compiler [' + cmake_compiler + '] is invalid') + + cmake_build_dir = os.path.join('cmake_build', '{compiler}-{bitness}bit'.format(compiler=cmake_compiler, bitness=cmake_bitness)) + if not os.path.exists(cmake_build_dir): + os.makedirs(cmake_build_dir) + subprocess.check_call(' '.join(['cmake','../../../..','-DCOOLPROP_STATIC_LIBRARY=ON']+generator+cmake_config_args), shell = True, stdout = sys.stdout, stderr = sys.stderr, cwd = cmake_build_dir) + subprocess.check_call(' '.join(['cmake','--build', '.']+cmake_build_args), shell = True, stdout = sys.stdout, stderr = sys.stderr, cwd = cmake_build_dir) + + # Now find the static library that we just built + if sys.platform == 'win32': + static_libs = [] + for search_suffix in ['Release/*.lib','Release/*.a', 'Debug/*.lib', 'Debug/*.a']: + static_libs += glob.glob(os.path.join(cmake_build_dir,search_suffix)) + + if len(static_libs) != 1: + raise ValueError("Found more than one static library using CMake build. Found: "+str(static_libs)) + else: + STATIC_LIBRARY_BUILT = True + static_library_path = os.path.dirname(static_libs[0]) # Check if a sdist build for pypi pypi = os.path.exists('.use_this_directory_as_root') @@ -68,10 +139,11 @@ if __name__=='__main__': raise ValueError('Could not run script from this folder(' + os.path.abspath(os.path.curdir) + '). Run from wrappers/Python folder') sys.path.append(os.path.join(CProot, 'dev')) - import generate_headers - # Generate the headers - does nothing if up to date - but only if not pypi - generate_headers.generate() - del generate_headers + if not USING_CMAKE: + import generate_headers + # Generate the headers - does nothing if up to date - but only if not pypi + generate_headers.generate() + del generate_headers # Read the version from a bare string stored in file in root directory version = open(os.path.join(CProot,'.version'),'r').read().strip() @@ -106,11 +178,11 @@ if __name__=='__main__': # Set variables for C++ sources and include directories sources = find_cpp_sources(os.path.join(CProot,'src'), '*.cpp') - include_dirs = [os.path.join(CProot, 'include'), os.path.join(CProot, 'externals', 'Eigen')] + include_dirs = [os.path.join(CProot, 'include'), os.path.join(CProot, 'src'), os.path.join(CProot, 'externals', 'Eigen')] ## If the file is run directly without any parameters, clean, build and install if len(sys.argv)==1: - sys.argv += ['clean', 'develop'] + sys.argv += ['clean', 'install'] common_args = dict(include_dirs = include_dirs, language='c++') @@ -121,9 +193,16 @@ if __name__=='__main__': ) ) - CoolProp_module = Extension('CoolProp.CoolProp', - [os.path.join('CoolProp','CoolProp.' + cy_ext)] + sources, - **common_args) + if STATIC_LIBRARY_BUILT == True: + CoolProp_module = Extension('CoolProp.CoolProp', + [os.path.join('CoolProp','CoolProp.' + cy_ext)], + libraries = ['CoolProp'], + library_dirs = [static_library_path], + **common_args) + else: + CoolProp_module = Extension('CoolProp.CoolProp', + [os.path.join('CoolProp','CoolProp.' + cy_ext)] + sources, + **common_args) constants_module = Extension('CoolProp.constants', [os.path.join('CoolProp','constants.' + cy_ext)], **common_args)