Commit Graph

721 Commits

Author SHA1 Message Date
Ian Bell
10c7ba2ac1 feat(cubics): add Chebyshev superancillaries for SRK and Peng-Robinson EOS (#2744)
* feat(cubics): add Chebyshev superancillaries for SRK and Peng-Robinson EOS (#2739)

Port piecewise Chebyshev superancillary expansions from teqp for SRK and PR
cubic EOS, providing fast and accurate saturation properties without iterative
flash. Adds `calc_saturation_ancillary`, `update_QT_pure_superanc`, and
`calc_superanc_Tmax` on `AbstractCubicBackend`; vdW data omitted as CoolProp
does not expose a vdW backend.

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

* refactor(cubics): address review feedback on cubic superancillary

- Fix stale comment on calc_superanc_Tmax (no Newton steps; closed-form)
- Move SRK_CODE/PR_CODE/P_CODE/RHOL_CODE/RHOV_CODE constants before
  supercubic() so switch cases use named constants instead of magic ints
- Add T > Tmax guard in calc_saturation_ancillary and update_QT_pure_superanc
  to throw CoolProp ValueError instead of propagating std::invalid_argument
- Add is_pure_or_pseudopure guard in calc_superanc_Tmax
- Near-Tc test now derives pc from the superancillary itself rather than
  AS->p_critical() (which reflects the real fluid, not the cubic model)

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

* docs(cubics): document SRK/PR superancillary APIs with timing and citation

Add a Superancillaries for SRK and PR subsection to the Cubic EoS docs
covering update_QT_pure_superanc and saturation_ancillary, their
constraints (pure-only, PR/SRK-only, T-input, T <= Tc, not used by
PropsSI), a %timeit comparison against the full cubic flash, and a
citation to Bell and Deiters, IECR 2021 (added to the bib library).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:00:56 -04:00
Ian Bell
f0b988236f build: replace git submodules with CPM.cmake (#2728)
* build: replace git submodules with CPM.cmake

All 11 submodules (Eigen, fmtlib, msgpack-c, rapidjson, IF97,
REFPROP-headers, multicomplex, Catch2, pybind11, ExcelAddinInstaller,
FindMathematica) are now fetched by CPM.cmake at configure time.

Set CPM_SOURCE_CACHE (e.g. ~/.cache/CPM) to share the download cache
across git worktrees and build directories — no more per-worktree
`git submodule update --init --recursive`.

Vendored deps that have no upstream release cycle (miniz, nlohmann-json,
incbin) remain in externals/ as before.

Source-level changes: angle-bracket includes for rapidjson, IF97, and
REFPROP-headers now that their directories are on the include path via
CPM-provided source dirs rather than relative paths from the repo root.

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

* fix(python): wire up CPM.cmake in Python wrapper, fix include paths

The Python wrapper CMakeLists.txt was still referencing submodule paths
(externals/Eigen, externals/fmtlib, externals/msgpack-c) removed by the
CPM migration. Include CPM.cmake + dependencies.cmake from the root and
use the ${Pkg_SOURCE_DIR} variables instead.  Also adds missing
rapidjson, IF97, and REFPROP_headers include dirs required by CoolProp
sources.

CI workflows drop the now-meaningless `submodules: recursive` checkout
option and add a CPM source-cache step to avoid re-downloading on each
macOS/Windows runner.

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

* docs: remove git submodule references after CPM.cmake migration

Dependencies are now managed by CPM.cmake (fetched automatically at
CMake configure time), so git submodules no longer exist.

- Drop `--recursive` from all `git clone` commands in Web docs and
  wrapper READMEs (26 .rst/.md files)
- Remove `submodules: recursive` from all CI workflow checkout steps
  (13 workflow files)
- Remove `git submodule foreach/update` calls from release.bsh and
  delete the now-dead pybind11 security-workaround lines
- Drop `--recursive` from build_swigged_matlab.sh and gitMirror.bsh
- Update CONTRIBUTING.md: drop "and its submodules" phrasing

Changelog entries referencing old submodule PRs are left intact as
historical records. The --recursive in buildbot.rst is for the
Dockerfiles repo (unrelated) and is also left unchanged.

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

* fix(ci): remove empty 'with:' blocks after submodule removal, apply clang-format

After removing 'submodules: recursive' from checkout steps, some workflow
files were left with dangling empty 'with:' blocks that GitHub Actions
rejects as workflow file errors. Remove the empty 'with:' in 9 workflows.

Also apply clang-format to fix spacing in REFPROPMixtureBackend.cpp,
HumidAirProp.cpp, and Helmholtz.cpp.

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 11:45:10 -04:00
Jeff Henning
775e1d49a6 Skip REFPROP tests when not available during CI (#2710)
* Try loading REFPROP backend and only warn on failure
* Skip REFPROP related tests when not available using a single helper routine in CoolProp:: namespace
2026-04-09 21:12:20 -04:00
Ian Bell
bc8c1bc039 C++17 modernization: remove shims, stdlib idioms, attributes, filesystem (#2688)
* chore: C++17 modernization — remove shims, use stdlib idioms

Phase 1 — Mechanical:
- Replace crossplatform_shared_ptr.h with <memory> in all 20 files; delete shim
- Replace NULL with nullptr (~10 occurrences)
- Replace throw() with noexcept (DataStructures.h)
- Convert 30+ iterator for-loops to range-for with auto/structured bindings
- Replace insert(make_pair/pair<>) with emplace/try_emplace (~40 sites)
- Replace shared_ptr<T>(new T) with make_shared<T> (~5 sites)

Phase 2 — Optional/structured bindings:
- get_alternate() returns std::optional<pair<size_t,size_t>>; remove has_valid_neighbor()
- get_set_of_tables() eliminates bool out-param, returns std::pair
- is_inside() switch refactored to IIFE eliminating nullptr-init pattern

Phase 3 — Attributes:
- Remove DEPRECATED macro; use [[deprecated("...")]] directly (PolyMath.h)
- Add [[nodiscard]] to is_inside, valid, calc_saturated_*_keyed_output,
  get_parameter_information/index, generate_update_pair, has_number

Phase 4 — Architectural:
- CPfilepaths.cpp: use std::filesystem on non-Android/Emscripten/powerpc targets
- DataStructures.h: annotate 5 public enums with explicit underlying type (: int)
- get_parameter_information() takes std::string_view for info param

Build: clean, zero errors. Test suite: 100/110 pass (10 known pre-existing failures).

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

* Remove Unicode replacement character (U+FFFD) from 870.cpp

Addresses PR review comment about non-printing character on line 25.

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

* Remove unnecessary <memory> include from IdealCurves.h

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

* Always use std::filesystem

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 13:28:11 -04:00
Ian Bell
a3c39a6be5 Fix superancillary performance: store as shared_ptr instead of optional (#2681)
* Fix superancillary performance: store as shared_ptr instead of optional

Every call to AbstractState::factory("HEOS", fluid) was deep-copying the
SuperAncillary_t object (multiple large Chebyshev coefficient vectors) as
part of the CoolPropFluid value copy from the fluid library. Since the
superancillary is immutable once built, switch storage from
std::optional<SuperAncillary_t> to std::shared_ptr<SuperAncillary_t>.

All copies of CoolPropFluid for the same fluid now share a single
SuperAncillary_t in memory; copying the shared_ptr is O(1) (atomic
ref-count increment only).

Also fix a latent bug in get_fluid_parameter_double where optsuperanc.value()
was called before the if(optsuperanc) guard (would have crashed on fluids
without superancillaries when SUPERANC:: parameters were queried).

Changes:
- CoolPropFluid.h: storage type optional -> shared_ptr; rename internal
  accessor get_superanc_optional -> get_superanc
- HelmholtzEOSMixtureBackend.h: update declaration (return shared_ptr)
- HelmholtzEOSMixtureBackend.cpp: update impl + 6 call sites (.value() -> *)
- FlashRoutines.cpp: update 4 call sites (.value() -> *)

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

* PR review fixes: rename get_superanc, simplify melting line logic, test cleanup

- Rename HelmholtzEOSMixtureBackend::get_superanc_optional() to get_superanc()
  to match EquationOfState::get_superanc() and reflect the shared_ptr return type
- Remove redundant `if (other == iT &&` guard inside case iT: (always true)
- Simplify melting line if/else in subcritical superanc branch: collapse redundant
  has_melting_line()/else branches into a single _phase assignment
- Fix get_fluid_parameter_double: note that .value() before null check was a
  pre-existing bug that the optional->shared_ptr migration implicitly fixed
- Use std::shared_ptr in [2639] test case for consistency
- Add comment explaining [2608] CO2 temperature change (218.048->218.050)

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 11:46:03 -04:00
Ian Bell
636fba7093 fix(docs): resolve all 162 doxygen warnings (#2708)
- Remove 13 obsolete Doxyfile tags (TCL_SUBST, CLANG_ASSISTED_PARSING,
  CLANG_OPTIONS, COLS_IN_ALPHA_INDEX, HTML_TIMESTAMP, FORMULA_TRANSPARENT,
  LATEX_SOURCE_CODE, PERL_PATH, CLASS_DIAGRAMS, MSCGEN_PATH, DOT_FONTNAME,
  DOT_FONTSIZE, DOT_TRANSPARENT)
- Fix unclosed \f$ inline math blocks in TransportRoutines.h and VLERoutines.h
- Fix spurious \f] inside display math block in TransportRoutines.h
- Fix @param name mismatches (matrix→mat, mole_fractions→mf, x0→x, etc.)
- Add missing @param docs to FlashRoutines, MixtureDerivatives,
  PhaseEnvelopeRoutines, ODEIntegrators, BicubicBackend, CoolProp.h
- Remove @return on void function in MixtureParameters.h
- Remove unresolvable \ref tags in ReducingFunctions.h and CoolPropLib.h
- Fix UNIFAC.h @param on no-arg function
- Remove ~25 duplicate /// @param blocks from PolyMath.cpp definitions
- Remove duplicate @param from IncompressibleBackend.cpp
- Clean up commented-out @param block leaking into calc_rhomass

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 10:34:15 -04:00
Ian Bell
6cb4dc12f6 Remove unused heavy headers to improve compile times (#2689)
* Remove unused heavy headers to improve compile times

- Exceptions.h: replace unused <iostream> with <string> (needed for std::string)
- CPnumerics.h: add explicit <iostream> (was relying on transitive include via Exceptions.h for std::cerr)
- superancillary/superancillary.h: replace <iostream> with <cstdio>; use fprintf for debug output
- TabularBackends.h: remove unused <sstream>

<iostream> is one of the heaviest stdlib headers; removing it from widely-included
headers (Exceptions.h: ~32 dependents, superancillary.h: pulled in by AbstractState.h,
CoolPropFluid.h, Configuration.h) reduces cold build times.

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

* Add missing <iostream> to ODEIntegrators.cpp

ODEIntegrators.cpp uses std::cout but was relying on transitive inclusion
via Exceptions.h. After removing <iostream> from Exceptions.h, this broke
compilation. Add the include directly.

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-22 11:14:53 -04:00
Tobias Loew
3fa5c20e9b make _binary arrays constexpr and use string_view instead of string (#2692)
* make _binary arrays constexpr and use string_view instead of string

By making _binary arrays constexpr and using string_view instead of string, startup speed of the library is improved.

* fixed interfaces for string_view
added /bigobj /MP to MSVC CXX-flags

* empty commit to trigger CI

* empty commit to force CI build

---------

Co-authored-by: Löw, Tobias <Tobias.Loew@iqony.energy>
2026-03-22 11:10:51 -04:00
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