Both combinations uniquely determine dry-bulb temperature: T_dp and W
each fix psi_w independently of T, while relative humidity R provides
the T-dependent equation R = psi_w*P / (f(T,P)*p_ws(T)) to solve.
Changes:
- Reorder priority chain to prefer T_dp over R as main key when both
are present (T_dp gives psi_w directly, yielding correct T_min bound)
- Relax the two-water-content guard to allow T_dp+R and W+R combinations
while still rejecting W+T_dp (both fix psi_w; T remains unconstrained)
- Add Catch2 test covering all three cases, including the W+T_dp invalid
case which correctly returns _HUGE
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* 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>
* 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
* 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
* Optimize the calling speed of IdealHelmholtzPlanckEinsteinGeneralized::all
Something like 2x faster; exp is the remainder
* Add function to get all alpha0 derivatives at once (they are all calculated every time anyhow)
* Add note about the weird naming
* Add profiling snippet
* Also implement properly for mixtures
* And also move to unchecked update function
* 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
* Always recalculate the critical point to be consistent with the use (or not) of superancillaries. The _crit struct is loaded from file but not necessarily in agreement
* Don't recalculate phase - why does this make things work again?