Metadata-Version: 2.4
Name: combaero-gui
Version: 0.8.0
Summary: CombAero Network GUI — React/FastAPI desktop application
Author-email: thiemom <2641939+thiemom@users.noreply.github.com>
License: MIT
Project-URL: Homepage, https://github.com/thiemom/combaero
Project-URL: Repository, https://github.com/thiemom/combaero
Project-URL: Bug Tracker, https://github.com/thiemom/combaero/issues
Project-URL: Changelog, https://github.com/thiemom/combaero/blob/main/CHANGELOG.md
Keywords: aerodynamics,combustion,aerothermal,propulsion,gui,network
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Requires-Dist: fastapi>=0.133.0
Requires-Dist: starlette>=1.3.1
Requires-Dist: uvicorn>=0.30.0
Requires-Dist: h11>=0.16.0
Requires-Dist: pydantic>=2.7.0
Requires-Dist: pandas>=2.2.3
Requires-Dist: combaero~=0.8
Provides-Extra: gui

# CombAero Network Designer GUI

**Interactive design and diagnostic environment for fluid-thermal networks.**

The CombAero GUI allows for rapid construction of complex aerospace networks using a drag-and-drop interface powered by React Flow and a high-performance C++ backend.

## Quick Start

### 1. Install

Create a virtual environment (Python 3.12+; we recommend [uv](https://docs.astral.sh/uv/)) and install:

```bash
uv pip install combaero-gui
```

### 2. Launch

```bash
combaero-gui
```

Open http://127.0.0.1:8000 in your browser.

## Key Workflows

- **Build**: Drag nodes (Plenums, Boundaries) and elements (Orifices, Channels) from the sidebar.
- **Connect**: Click and drag from node handles to element ports.
- **Solve**: Click the **Solve** button in the header. Successful solves turn node borders green.
- **Inspect**: Click on any node or element to view real-time diagnostics in the Inspector sidebar.
- **Export**: **Export CSV** writes the results, one row per entity with units in the headers, and the inputs that defined the case. `gui.backend.results.load_results(path)` reads it back into a one-row-per-case table (format: `docs/GUI_TECHNICAL.md`, "CSV Export").
- **Examples**: The **Examples** menu in the header opens worked examples rebuilt from papers (the Florschuetz 1981 jet array, an ISO 5167-2 orifice metering run). Each opens with a short description: the source, what is reproduced, where to look, and whether the comparison is fidelity (the source's own data) or cross-source. The matching scripts, with the full comparison, are in `python/examples/papers/` of the source repository.

---

## Agent Reference (UI Automation Map)

For agents with screen control (multimodal LLMs), the following selectors and IDs are provided to assist in navigation:

| UI Component | Selector / ID | Description |
| :--- | :--- | :--- |
| **Solve Button** | `#solve-btn` | Triggers the network solve. |
| **Inspector Sidebar** | `.inspector-panel` | Properties for selected node/element. |
| **Network Canvas** | `#rf-canvas` | The main React Flow workspace. |
| **Node (General)** | `.react-flow__node` | Any node on the canvas. |
| **Solved Indicator** | `.solved-status-ok` | Appears on nodes after a successful solve. |
| **Error Console** | `#error-output` | Displays solver convergence failures. |

> [!TIP]
> **Automation Hint**: To add a node via script, use the `gui.backend` API or generate a network JSON and load it via `File -> Import`.

---

## Related

- **[combaero](https://pypi.org/project/combaero/)** — the C++ physics core and Python API powering this GUI.
- **[Source & docs](https://github.com/thiemom/combaero)** — monorepo with full API reference and technical documentation.
