FlowDesign¶
FlowDesign is a Python package for generative engineering design. It separates the design problem, generation behavior, and execution workflow so airfoils, SuperWing geometries, wings, and future computational mechanics problems can use the same interface.
The central abstraction is:

Problem = geometry + evaluator + objectives + constraints
Strategy = generation / guidance / optimization behavior
Workflow = train / generate / optimize / evaluate
Minimal Example¶
from flowdesign.core import DesignProblem
from flowdesign.geometry import CSTAirfoilGeometry
from flowdesign.surrogate import DummyAirfoilEvaluator
from flowdesign.loss import EnergyLoss
from flowdesign.constraints import CLConstraint, CDConstraint
from flowdesign.strategy import DFlowStrategy
problem = DesignProblem(
geometry=CSTAirfoilGeometry(n_upper=8, n_lower=8),
evaluator=DummyAirfoilEvaluator(alpha=2.0, mach=0.15),
objectives=[EnergyLoss(target="CD", mode="minimize")],
constraints=[
CLConstraint(target=0.5, tolerance=0.02, weight=20.0),
CDConstraint(max_value=0.015, weight=10.0),
],
)
result = DFlowStrategy(num_samples=256, guidance_steps=100).run(problem)
print(result.best(feasible_only=True))
Equivalent CLI Workflow¶
What FlowDesign Provides¶
- A consistent
DesignProblemobject for evaluating, scoring, and filtering candidate designs. - Geometry interfaces for CST airfoils and SuperWing parameterizations.
- Evaluator adapters for neural surrogates, dummy smoke-test evaluators, and future CFD/FEM solvers.
- Composable losses and hard/soft constraints.
- Strategy classes for DFlow-style generation, shooting, post-optimization, bandit selection, and conditional generation.
- YAML registry utilities for reproducible experiments.
Integrated Open-Source Assets¶
FlowDesign is designed to connect geometry parameterizations, open geometry datasets, and physics surrogates through the same evaluator interface.
| Asset | Role in FlowDesign | Link |
|---|---|---|
| UIUC Airfoil Coordinates Database | Airfoil coordinate files can be encoded into CST/Kulfan design vectors through CSTGeometry.from_coordinates() and CSTAirfoilGeometry.encode(). |
m-selig.ae.illinois.edu/ads/coord_database.html |
| SuperWing dataset | SuperWingConfigDataset loads configs.dat geometry metadata and SuperWingParameterGeometry reconstructs differentiable wing meshes. |
huggingface.co/datasets/yunplus/SuperWing |
| NeuralFoil / cuNeuralFoil | Airfoil surrogate path for CST/Kulfan inputs, returning aerodynamic coefficients [CL, CD, CM] with optional uncertainty and gradients. |
github.com/peterdsharpe/NeuralFoil |
| AeroTransformer ATsurf_S | SuperWing surrogate path that predicts surface fields [Cp, Cf_tau, Cf_z] and integrates them to [CL, CD, CM]. |
github.com/yunplus/AeroTransformer |
| floGen / flowvae | Upstream model implementation used to load the validated ATsurf_S checkpoint. | github.com/YangYunjia/floGen |
| XFoil | Optional higher-fidelity airfoil evaluator path through AeroSandbox or a direct XFoil backend. | web.mit.edu/drela/Public/web/xfoil |
Start with Getting Started, then read the Problem, Strategy, Workflow concept page.