* Expansions are fully wrapped, looking good. Next step is the set of expansions that is the 1D approximation
* Get 1D approx working via cython
* Count solutions
* SuperAncillary class is working
>1000x speedup for water
Time for C++!
* Superancillaries are working!
In C++, speedup is more than 2000x. In Python, more like 150x because of Python <-> C++ overhead
* Add pmax check for PQ superancillary calls
* Update tests
* Allow T limits to be obtained
* Implement get_fluid_parameter_double for getting superanc value
* Add tests for getting parameters from superanc
* Script for testing superancillaries for sphinx
* Microoptimizations; don't help speed
The limiting factor remains the clear function, which takes about 30 ns
* Add R125 superancillary
* Use the release from fastchebpure for the files
* Drop a .gitignore in the unzipped folder
* Update superancillary injection script
* Turn on superancillaries by default
* Missing header
* Many int conversions in superancillary
* Another int cast
* More annoying solution for boost iter max
* Fix warnings
* One more warning
* Clear up the calculation of rho
* Update docs_docker-build.yml
Use arm64 since the containers were built on mac
* Superfluous ;
* Update backend.py
* Get the critical points working for superancillaries
* Fix wrapping changes of xmin&xmax methods
* squelch warnings
* Version 0 of jupyter notebook for docs
* Try to add the notebook to the docs
* Add jupyter notebook for superancillary
* Lots of updates to superancillary notebook
* More updates to docs
* Skip pseudo-pure for superancillary docs
* Fix output of superancillary figures
* Add superancillary plots to docs for the page for each fluid
* Make a placeholder figure for fluids without superancillary
* Add superancillary plots to task list
* Bump to release fixing m-xylene
* Relax the location of the REFPROP stuff
* Change default name for R-1336mzz(E)
* No need for figures to be so large
* Don't need REFPROP setting
* Bump to fastchebpure release with methanol
* Benchmark caching options
* Benchmark more granularly
* Add the fast methods to public API for HEOS class
* Back to memset - can memset with 0 but no other value
* Fix how caching is managed in Helmholtz class
* Close to final implementation
Perhaps a tiny bit more optimization possible?
* Update function name
* Make message more accurate
* Fix init order
* Expose update_QT_pure_superanc to Python
* Fix when _reducing is set for pures
* Fix the post_update
* Indent
* Notebook
* Notebook
* Make ln(p) construction lazy
Only really matters for debug builds
* Also make reference non-const
* Inject superancillary for methanol
* Make the superancillary loading entirely lazy in debug
* Fix PH bug for Nitrogen
Closes#2470
* Force the clear to be called on SatL and SatV
To invalidate them at start
* Default is non-lazy superancillary loading
* Add CMake option to have lazy-loading superancillaries [skip ci]
Not a good idea unless doing very narrow testing
* Catch singular explosions in saturation_PHSU_pure
Sometimes, the Akasaka solver has issues. This is usually caught and
then it is retried with a new omega. However, sometimes it goes bad
because the J matrix is singular, and this is not caught because the
error is not recalculated.
This commit recalculates the error term to prevent a bad result.
* Add comment to explain error check in saturation_PHSU_pure
* Add extra update check after saturation_PHSU_pure
During saturated PHSU flash calculations, SatL and SatV states have an
imposed phase. This is good for stability, but there is a small chance
that they can both up up with a matching third variable (e.g.,
pressure) that is not actually at the saturation point. This commit
forces a final DT update without this requirement. If an actual solution
has been found, the the error term will still be small. If not, then we
throw an exception and try again.
This continues work on #2245.
* Ensure that saturated phase is specified
In saturation_PHSU_pure, we unspecify the phase of SatL and SatV to
perform a final check. However, for any future updates, these states
*must* be set with specified phase. This commit ensures that no matter
what happens (exception, etc.) the phase is always specified again.
* Revert "Ensure that saturated phase is specified"
This reverts commit c6b650b861.
The commit caused potential recursive lookups and did not solve the
issue at hand.
* Update the ammonio saturated rhoV ancillary
The rhoV ancillary gave somewhat wrong results. This commit provides a
closer fit that prevents errors downstream.
* Add EOS JSON for R1336mzz(E) from Akasaka-IJT-2023.
* Add BibTeX entry for Akasaka-IJT-2023.
* Add BibTeX_EOS label in R1336mzz(E).json.
* Update R1336mzz(E).json
Fix the triple point liquid density, without it, VLE calculations fail
---------
Co-authored-by: Ian Bell <ian.h.bell@gmail.com>
The rhoV auxilliary for n-Hexane had accidentally been set to use
reduced tau. This commit fixes the typo. This prevents bad guesses
for a number of property evaluations which use saturated states.
* Remove R1233zd(E) hL ancillary
The R1233zd(E) hL ancillary performs poorly. This can result in a
failure to converge when provided inputs (p/h) lie between the
ancillary saturation curve and the true saturation curve. Removing
the ancillary makes CoolProp fall back to a robust saturation
solver.
* Add 0.01 K cushion to Tmax in HSU_P_flash
Within HSU_P_flash, if an ancillary is used it can have a small
error. If the point of interest is near that saturation curve, this
error can prevent the solver from converging. Adding a 0.01 K margin
account for small ancillary errors and allow the solver to converge.
* Correct 0.01K cushion
The 0.01K adjustment should increase the potential range of the
solver. Previously, the minimum was increased, but it should be
decreased.