feat(python): implement python bindings for all components and solvers

This commit is contained in:
Sepehr
2026-02-21 20:34:56 +01:00
parent 8ef8cd2eba
commit 4440132b0a
310 changed files with 11577 additions and 397 deletions

63
crates/entropyk/README.md Normal file
View File

@@ -0,0 +1,63 @@
# Entropyk
A thermodynamic cycle simulation library with type-safe APIs and idiomatic Rust design.
## Features
- **Type-safe physical quantities**: Never mix up units with NewType wrappers for Pressure, Temperature, Enthalpy, and MassFlow
- **Component-based modeling**: Build complex systems from reusable blocks (Compressor, Condenser, Evaporator, etc.)
- **Multiple solver strategies**: Newton-Raphson with automatic fallback to Sequential Substitution
- **Multi-fluid support**: CoolProp integration, tabular interpolation, incompressible fluids
- **Zero-panic policy**: All errors return `Result<T, ThermoError>`
## Quick Start
Add to your `Cargo.toml`:
```toml
[dependencies]
entropyk = "0.1"
```
## Example
```rust,ignore
use entropyk::{
System, Solver, NewtonConfig,
Compressor, Condenser, Evaporator, ExpansionValve,
Ahri540Coefficients, ThermalConductance,
};
// Build a simple refrigeration cycle
let mut system = System::new();
// Define component parameters (see API docs for details)
let coeffs = Ahri540Coefficients { /* ... */ };
let ua = ThermalConductance::new(5000.0);
// Add components
let comp = system.add_component(Box::new(Compressor::new(coeffs)));
let cond = system.add_component(Box::new(Condenser::new(ua)));
let evap = system.add_component(Box::new(Evaporator::new(ua)));
let valve = system.add_component(Box::new(ExpansionValve::new()));
// Connect components
system.add_edge(comp, cond)?;
system.add_edge(cond, valve)?;
system.add_edge(valve, evap)?;
system.add_edge(evap, comp)?;
// Finalize and solve
system.finalize()?;
let solver = NewtonConfig::default();
let result = solver.solve(&system)?;
```
## Documentation
See the [API documentation](https://docs.rs/entropyk) for full details.
## License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.