Commit Graph

713 Commits

Author SHA1 Message Date
Ian Bell
d5761cb150 Use ninja for the examples (#2635)
* Use ninja for the examples

Should help a little bit with doc building

* FIx some templates

* Fix template deduction error in count_x_for_y_many functions

The count_x_for_y_many and count_x_for_y_manyC functions were using
a single template parameter for both input (double) and output (size_t)
arrays, causing template deduction failures in Cython bindings.

Changed to use separate template parameters YContainer and CountContainer
to properly support different types for input y values and output counts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix types in PXD header too

* Docs should get ninja too

* Changes from clang-format

* Fix git diff argument order in clang-format script

The script was comparing PR_BRANCH to TARGET_BRANCH, which shows changes from the PR branch to the target (what's in target that's NOT in PR). For PR validation, we need the opposite: changes from target to PR (what's in PR that's NOT in target).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix Cython template deduction errors in solve_for_x_manyC and count_x_for_y_manyC

Add explicit template parameters [double, size_t] to both function calls
to resolve template type deduction errors when compiling with Cython.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix wheel building by removing return from void Cython template calls

The functions solve_for_x_manyC and count_x_for_y_manyC return void in C++.
When Cython sees a return statement with a void function call containing
template arguments with commas (e.g., [double, size_t]), it wraps the call
in the __Pyx_void_to_None macro. This macro is a simple preprocessor macro
that cannot handle the commas in template arguments, treating them as macro
argument separators instead.

The fix is to remove the return statements, making these simple void function
calls. This prevents the __Pyx_void_to_None wrapping and allows the wheel to
build successfully.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-10-12 09:28:57 -04:00
Ian Bell
1b5ac379b5 Fix tuple types (#2634) 2025-10-11 18:40:29 -04:00
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