CoolingPower Code
Print Steam Tables; Plot diagrams and cycles from equations of state
Status: Pre-Alpha
Brought to you by:
rcx11
CoolingPower v0.0.4a - (C) 2018-2019 - Matthew Osborne (rcx11@sourceforge.net) Thank you for trying out CoolingPower! CoolingPower is designed to provide thermodynamic data and simulation for working fluids utilizing Helmholtz Free Energy equations of state. Steam Table printing, thermodynamic property graphing, and cycle plotting are all part of the bundle. Tools from the Boost C++ Library, Qt 5, and the Allegro game programming library are used for this production. Previous versions utilized the GNU Scientific Library (GSL) for some mathematical function. This dependance has been removed, but support remains through the use of preprocessors flags. I'm still figuring out the packaging process, so this README will have to suffice. Single State calculation and Steam Table printing functionality has been implemented, and diagram plotting will be coming soon. Compiling for *nix requires Qt 5, and the Boost C++ Libraries Boost.bind & Boost.signals2 library development packages. Non-Windows users will also need the Boost Program Options library. Depending on your platform, qmake may be named differently. (In Fedora, it's qmake-qt5. I'll be using this as the standard, as that is the OS from which I am programming.) Linux / MacOS / BSD If compiling from a source tarball, unzip and enter the directory as follows: $ tar -xjf CoolingPower-0.0.4a.tar.bz2 $ cd CoolingPower-0.0.4a Whether building from a source tarball or building from a git repository, use the following commands: $ mkdir build $ cd build $ qmake-qt5 ../CoolingPower.pro $ make Skip the following step to run CoolingPower from the build directory. $ sudo make install At this point, you'll have the CoolingPower binary available. Run $ CoolingPower -h for usage. Windows ---------------------------- CoolingPower has been verified to work with MSVC on Windows 10. MinGW and builds on any other Windows version with the supporting toolchain should work also, but it has not been explicitly tested. To build: 1. Using Visual Studio 2017 (possibly earlier), install the Qt Visual Studio Tools. 2. Use the newly created Qt menu in VS to open the Qt project file. 3. Save the resulting project. This step must be performed to do the next. 4. Using the NuGet package manager, install boost. If you search, it should be the first option. You'll see other Boost components, including Program Options. Don't worry about installing this package. Console support is removed from Windows since the windowed version can perform all the same functions. 5. Also using the NuGet package manager, install Eigen. After it's installed, open project properties under the Project menu. Under C/C++ -> All Options, Add Eigen's include director in the Additional Include Directories list. Eigen will be located in the packages folder in your working directory. 6. Compile. 7. For release builds, copy Qt5Core.dll, Qt5Gui.dll, and Qt5Widgit.dll to the release directory in the project folder (the one containing CoolingPower.exe). (I'm writing this readme from my linux machine after figuring out how to compile in Windows. Some of the specifics may be off. Use your judgement or email me for clarification for the above steps.) ---------------------------- Please, play around with it and see what works and what doesn't. For errors not covered by the messages, please email me with your input, the expected output, and the output you received. You can reach me at rcx11(at)sourceforge.net Thank you, and stay cool. ---------------------------- Version history: 0.0.1 - Very basic version of CoolinPower with a command line only interface. Provided little error checking. Provided with the hopes of receiving some amount of usability testing. 0.0.2 - Still only command line interface. Measurement systems integrated to provide unit conversions for common measurement schemes. Fixed in 0.0.3a - True MS Windows support. The original application was developed to support a simple commandline Steam Table generation with the use of command line arguements and to launch with a GUI in the absense of arguments. MS Windows does not support this capability; a program must be either command line or GUI but cannot be both. Command line support was removed from the MS Windows version because the Steam Table calculations is fully supported in the GUI. (The command line functionality only came about because I initially didn't know of a GUI framework that would operate on multiple platforms. It gave me a way to begin work on the mathematical framework before the desired interface was developed.) Fixed in 0.0.3b - American Engineering System (Imperial/English System) units of measurement. Initial values to convert the metric system measurement values that are the natural output of the Helmholtz Free Energy calculations were inaccurate. Using the CRC Handbook of Chemistry and Physics 90th Edition, conversion factors have been corrected. Also fixed in 0.0.3b - MS Windows binary release files. Compiling for 0.0.3b I discovered that the release versions wouldn't run without the Qt5 DLLs listed above being placed in the folder containing the executable. The DLLs are now included in the .zip files containing the binary release. 0.0.4 - Added single state calculations for a variety of common independent intensive property calculations. Some of the functions are mathematically intensive and required the development of a small algorihmic differentiation library (which also removed dependance on GSL) and an implementation of a homotopy method for solving systems of nonlinear equations. More combinations will be added in the future. Work is still necessary for handling the saturation condition for the input combination of specific enthalpy and specific entropy. 0.0.4a - Fixed bug that results in improper calculation of saturation pressure. Added input verification via invalid_arguement exceptions. User input errors for inputs outside the capability of a particular function is detected and an exception is thrown to notify users of the error. These exceptions are thrown by the State object and not by the user interface, providing flexibility for eventual library calculational use.