1.8 KiB

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:

[dependencies]
entropyk = "0.1"

Example

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 for full details.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.