$ show techwinder/flow5
flow5 is a comprehensive desktop application for preliminary aerodynamic analysis and design of 2D airfoils, 3D aircraft configurations, and sailing vessels. It implements multiple potential-flow solvers: XFoil for viscous 2D analysis, and 3D panel methods (VLM, LLT, QuadPanel) coupled with wake models and boundary-layer corrections. The application provides a full-featured GUI built on Qt with OpenGL 3D views, interactive geometry editors (splines, NURBS, STL, OpenCASCADE), and extensive plotting capabilities. It supports batch analysis, scripting, and CAD import/export. The architecture is a modular monolith separating core computational library (flow5-lib), I/O serialization (flow5-io-lib), and the Qt application (flow5-app) with three main modules: XDirect (foils), XPlane (aircraft), and XSail (boats/sails). While the codebase shows professional engineering craftsmanship with well-defined abstractions for panel methods, splines, and task threading, it suffers from technical debt including global static state, code duplication between libraries, and experimental/test components intermingled with production code.
The LLM identified 2 files worth highlighting for reuse:
A self-contained 2D graph widget system (Graph, Axis, Curve, CurveModel, LegendWt, GraphWt) that provides flexible plotting with multiple coordinate systems, automatic scaling, and curve styling. It can be extracted as a standalone Qt plotting library with minimal modification, demonstrating clean separation between data model (CurveModel) and rendering (GraphWt).
A slider widget that maps a linear thumb position to an exponential value range, useful for controlling parameters spanning multiple orders of magnitude (e.g., Reynolds number, velocity). Depends only on Qt core and widgets, making it trivially extractable. Demonstrates non-obvious UI design for scientific parameter input.