64 lines
1.8 KiB
Markdown

# 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.