Commit Graph

711 Commits

Author SHA1 Message Date
Ian Bell
9eb3eb8db1 Run clang-format with claude code and fix VS warnings (#2629)
* Run clang-format with claude code and fix VS warnings

* More clang-format

* And the tests too

* Cleanup from clang-tidy

* More constness and modernization

* Cleanup and modernization
2025-10-05 11:02:51 -04:00
Ian Bell
896e85d129 Add Ideal gas methods (#2626)
* Add ability to get at the ideal-gas properties directly

Also through the python interface

* And python interface files

* Fixes the missing reference to ideal gas notebook
2025-10-04 16:00:30 -04:00
Josh Kelley
1b5096de6c Improvements to mixture pair management (#2579)
* Improvements to mixture pair management

Add C++ function declarations for functions that are exposed to Python but not C++.

Update apply_simple_mixing_rule to not break default rules.  This has caused confusion and bugs in the past; see, e.g., https://github.com/CoolProp/CoolProp/issues/1874, https://github.com/CoolProp/CoolProp/issues/2082.

* Delete no longer applicable docs

See #1875
2025-10-04 12:34:21 -04:00
Ian Bell
326aff4aaf Silence warnings about unused timing variables 2025-09-13 14:48:37 -04:00
Ian Bell
b538711fe6 Improvements in the critical region for subcritical pressures for P+{H,S,U} (#2609)
* Make improvements in the critical region for subcritical pressures for P+{H,S,U}

See #2594

* Fix starting temperature for 2D Newton

* Switch to TOMS748 instead of Brent; resort the steps

* Enable TOMS748 properly

* boost fixes
2025-09-10 18:45:19 -04:00
Ian Bell
81b294d19c Comment out the thread_local stuff
Does this fix the tests in CI?
2025-08-08 18:25:21 -04:00
Ian Bell
199041b418 Update CODATA value for R
Closes #2563
2025-07-04 19:21:43 -04:00
Ian Bell
c419eff1ec Put in its own method to avoid Eigen dependency 2025-05-20 07:56:06 -04:00
Ian Bell
8e6f2ef03f Add a method for Richardson 2025-05-20 07:49:26 -04:00
Ian Bell
eebb6e887c Try to make asan happier 2025-05-19 18:29:08 -04:00
Ian Bell
f1ec6ccb5b Default the optional to nullopt [skip ci] 2025-05-19 08:27:11 -04:00
Ian Bell
ddda253504 Fix all the warnings in MSVC 2025-05-18 14:57:07 -04:00
Ian Bell
fc777c4164 Silence shell output for construction 2025-05-18 14:52:58 -04:00
Ian Bell
8df4bb864f Fix array sizes in creation 2025-05-18 13:53:59 -04:00
Ian Bell
d2a9cc16d9 Fix a couple of potentially uninitialized arrays 2025-05-18 13:47:01 -04:00
Ian Bell
a1ba5d42f6 Squelch the secure warnings 2025-05-18 12:58:51 -04:00
Ian Bell
0910b805d2 Types were not being converted properly in env parsing 2025-05-18 12:16:35 -04:00
Ian Bell
267d64533a Superancillaries for pure fluids (#2511)
* 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
2025-05-17 20:27:19 -04:00
Ian Bell
50a73dfabf Add a method for getting the fluid_param string length (#2547)
Also update the error message
2025-05-07 20:33:26 -04:00
Ian Bell
50fa2dc2b2 Cannot use memset with double arrays
Closes #2545
2025-05-03 16:41:16 -04:00
Ian Bell
3c61e22c44 Implement the array-based caching in AbstractState. (#2544)
* Implement the array-based caching in AbstractState. Not clear much more optimization is possible

Closes #2543
2025-04-30 07:18:43 -04:00
Ian Bell
a1d4433738 Remove the _R from AbstractState 2025-04-29 21:27:15 -04:00
Ian Bell
45fdfaa8ea Config should use unordered_map
Safe change, doubles the speed of lookups
2025-04-28 20:30:11 -04:00
Ian Bell
b20dcbbc8e Array header missing 2025-04-27 17:35:48 -04:00
Ian Bell
b502fc46ce Switch Helmholtz cache to array with memset for clear
Closes #2540
2025-04-27 16:27:59 -04:00
Ian Bell
71c4d24768 Switch methanol to the EOS of de Reuck to match REFPROP
Closes #2538
2025-04-27 09:26:36 -04:00
Ian Bell
49a0e1508b message to cerr as well 2025-04-12 08:02:44 -04:00
Ian Bell
b234116404 Oops, use the converted double 2025-04-12 07:54:52 -04:00
Ian Bell
873c1f700b type checks on env loads; fatal errors if not convertible 2025-04-12 07:53:38 -04:00
Ian Bell
f226e35e01 Maybe I fixed the env issue 2025-04-11 17:29:39 -04:00
Ian Bell
11438acf7b Another try at debugging weird env reading issue 2025-04-11 15:46:55 -04:00
Ian Bell
3cb96a021c Overwrite config with env (#2532)
* Allow paths to be set from environment variables

* Add some quick docs
2025-04-11 07:51:06 -04:00
Ian Bell
e3aa835ca8 Allow all() to throw
Due to the GERG terms where Tc is required to be stored
2025-04-03 19:30:56 -04:00
Ian Bell
dc360fc167 miniz fluids (#2495)
* Ignore depcache files [skip ci]

* Z lib compress the fluid data

And migrate to newer version of miniz

* Add the writing of the .z file

* This works on MSVC, not sure about any other platform

How does one inform the linker about what locations to search for this file?

* Does this give the necessary linking info to the compiler?

* Include the header only for MSVC

* The incbin is still needed for non-windows

* Missing headers for Python

* Add miniz source file

* Missing import

* Provide a solution for compilers that don't support assembly to embed files

* Don't specify standard since we have mixed C/C++

https://stackoverflow.com/questions/49000674/cython-std-c11-error-using-both-c-and-c

* rename miniz to cpp

* And cmake

* Back to .c again

Not sure what to do about Python now

* Build the C library and then link it in

* FIx cmake too

* Location for .z file

* arg to setup function

* Check for z file [skip ci]

* Force build temp to be here

* Try switching to setuptools version

* Force the build_temp to be build before clib construction begins

That was subtle...
2025-03-09 10:38:56 -04:00
Ian Bell
c54b241675 Switch EOS tests to multicomplex (#2490)
Found some issues in log function of mcx. Should update the tests to use autodiff probably, but that requires quite a lot more work
2025-03-02 13:58:21 -05:00
Andrej Dolenc
5775dac12a Support plotting in C++ (#2463)
* Initial rewrite to c++

* Minor cleanup

* Add simple unit test for ph plot

* Add tests for Ts plot

* Use coolprop's lin and logspace functions to generate ranges

* Remove copied file header comments

* Remove code for handling unit conversions

* Replace Optional return from value_at with Nan

* Rename generate_ranges to generate_values_in_range

* Clean up xy_switch code

* Remove redundand <memory> include

* Make namings more consistent

* Further cleanup

* Move implementation to .cpp file

* More renamings

* Finish moving implementation over to .cpp

* Move generate_values out of Details namespace

* Make get_axis_limits const-able

* Constify most of the methods

* Add _ for member variables

* Make isoline methods consts too

* Make tp limits parameter an enum instead

* Try to match the code style with rest of repo

* Move not needed code from .h to .cpp

* Match code style with curly braces on same line

* Update variable names in tests so they make more sense

* Clean up the public api for PropertyPlot

* Add docstrings to public interface in CoolPropPlot
2025-02-17 13:38:54 -05:00
Ian Bell
a19e69662f Update msgpack-c and selectively add boost (#2450)
(like was done in teqp)
2024-12-07 13:06:49 -05:00
Ian Bell
730620f7b1 Expose the neff function 2024-10-03 20:00:15 -04:00
k-collie
1d98aa9f6a Include stdbool for C interface (#2342)
* Include stdbool for C interface

* Maintain pre-C99 compatibility
2024-01-09 12:54:07 -05:00
Jorrit Wronski
cbd53f344b Reformatted the code from #2317 and moved out of the deprecated section. Maybe @CSchulzeTLK can add the doxygen documentation? That would be awesome :-) 2023-11-28 11:21:23 +01:00
Christian Schulze
2cbcc5e236 New C Interface Functions (#2317)
* add more interface functions

* fix phase data type, "const*const"->"const*"
2023-11-28 11:15:33 +01:00
chrishauptmannAtEsiGroup
c525537175 Added second_partial_deriv and first_two_phase_deriv (#2291)
* Added AbstractState_second_partial_deriv and AbstractState_first_two_phase_deriv to CoolProp.dll

* added functions:  first_two_phase_deriv_splined, second_two_phase_deriv

---------

Co-authored-by: Chris Hauptmann <chn@esi-group.com>
2023-09-15 07:17:14 -04:00
chris-hampel-CA
36d91f178d Add fugacity functions needed for compatability with CoolProp.jl pkg (#2286)
* attempt to add fugacity functions needed for CoolProp.jl

* address first round of PR edits

change std:size_t to long
remove get_fugacity_coefficients
add .def exports

* remove fugacity refs in CoolPropLib.def
2023-09-07 21:09:50 -04:00
Ian Bell
c4108e5a57 Fix order of initialization 2023-08-28 20:54:20 -04:00
Ian Bell
3cab04a678 format_as should be inline, not static 2023-08-28 20:54:05 -04:00
Arnab Mahanti
826e77f122 implemented VISC LAESECK-JPCRD-2017-CO2 (#2268) 2023-07-26 10:53:06 -04:00
Arnab Mahanti
377bab8ebe implemented TCX Huber-JPCRD-2016 for CO2 (#2267)
* implemented TCX Huber-JPCRD-2016 for CO2

* added CarbonDioxideHuberJPCRD2016 to json file

* fixed typo in Huber Eq. 3
2023-07-22 07:49:23 -04:00
Ian Bell
73418363e2 Add missing header 2023-05-13 07:20:09 -04:00
Pierre Wendling
d248c75a43 Update fmt submodule to 10.0.0 (#2252)
* Update fmt submodule to 10.0.0.

* Update format wrapper, add format_as overloads.

- Every enum that is formatted needs to define a format_as overload in
the same namespace.
- Add a wrapper for sprintf for fmt versions without ArgList.
2023-05-13 07:14:01 -04:00
Jorrit Wronski
136644d2cd Assume that Linux on PowerPC behaves like any other Linux 2022-12-07 09:21:26 +01:00