# Entropyk - Thermodynamic Simulation Framework

Entropyk is a high-performance, type-safe Rust library for simulating thermodynamic cycles and systems. It provides a robust framework for modeling complex HVAC/R systems with multi-circuit support and thermal coupling.

## Key Features

- **🛡️ Type-Safe Physics**: Unit-safe quantities (Pressure, Temperature, Enthalpy, MassFlow) via NewType wrappers.
- **🧱 Component-Based**: Reusable blocks for Compressors (AHRI 540), Heat Exchangers (LMTD, ε-NTU), Valves, Pumps, and Fans.
- **🔄 Multi-Circuit Support**: Model complex systems with multiple refrigerant or fluid loops.
- **🔥 Thermal Coupling**: Sophisticated API for heat exchange between circuits.
- **🖥️ Visual UI**: Interactive web interface for drag-and-drop system modeling.
- **🚀 Performant Solvers**: Integrated Newton-Raphson solvers for system convergence.

## Quick Start

### Prerequisites
- [Rust](https://www.rust-lang.org/) (latest stable)
- (Optional) Node.js (if working on the frontend directly)

### Run the Demo
Explore a complete Water Chiller simulation:
```bash
cargo run --bin chiller
```

### Launch the Visual UI
Design your system graphically:
```bash
cargo run -p entropyk-demo --bin ui-server
```
Then visit [http://localhost:3030](http://localhost:3030) in your browser.

## Project Structure

- `crates/`: Core library logic, physical types, and component implementations.
- `demo/`: Real-world application examples and system-level simulations.
- `ui/`: Web-based interface for visual modeling.
- `docs/`: Technical documentation and tutorials.

- **[Comprehensive Documentation](./DOCUMENTATION.md)**: The definitive guide to Entropyk features and architecture.
- **[Exhaustive Examples](./EXAMPLES_FULL.md)**: Deep-dive code samples for all platforms (Rust, Python, C).
- **[Tutorial](./docs/TUTORIAL.md)**: Step-by-step guide to using the library and UI.
- **[Full Index](./docs/index.md)**: Directory of all project documentation.

## License

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