Cluster 1 Similitude Regressor
A 13,000-parameter neural network predicting drag and pressure coefficients from classic similitude groups.
Predicts drag coefficient (Cd) and pressure coefficient (Cp) from the classic
dimensionless similitude groups [Reynolds, Froude, Mach]. Trained as part of Cluster 1
of the Scientific AI Cluster Orchestration Framework, a neuro-symbolic pipeline that
pairs this network with an exact Buckingham Ξ theorem solver and automatic physical
safety audits β see the live demo at
dave1368/cluster-01-dimensional-analysis.
Status: Proof of Concept. Trained on synthetic labels from published correlations, not real wind-tunnel or CFD data. See Limitations before using this for anything beyond demonstrating the architecture pattern.
What it is
| Architecture | 4-layer MLP, Tanh activations, 64 hidden units/layer |
| Parameters | ~13,000 |
| Input | [Re, Fr, Mach], raw physical values (normalization is built into forward()) |
| Output | [Cd, Cp] |
| Framework | PyTorch (plain nn.Module, no transformers dependency) |
| Training | Full-batch Adam, 3,000 epochs, CPU-only (~78 seconds) |
Quickstart
from huggingface_hub import hf_hub_download
import torch
from modeling import SimilitudeRegressorPINN # download modeling.py from this repo alongside the checkpoint
ckpt_path = hf_hub_download("dave1368/cluster-01-similitude-regressor", "similitude_regressor.pt")
checkpoint = torch.load(ckpt_path, map_location="cpu")
model = SimilitudeRegressorPINN()
model.load_state_dict(checkpoint["model_state_dict"])
model.eval()
with torch.no_grad():
pi_groups = torch.tensor([[10_000.0, 0.5, 0.2]]) # Re=10,000, Fr=0.5, Mach=0.2
cd, cp = model(pi_groups)[0].tolist()
print(f"Cd={cd:.4f} Cp={cp:.4f}")
modeling.py in this repo is a self-contained copy of the architecture β you don't need
the full orchestration framework to use the checkpoint.
Training data: real correlations, not invented numbers
There's no experimental Cd/Cp dataset in the source project, so labels come from two established, citable fluid-mechanics results instead of synthesized numbers:
- Cd(Re): Morrison, F.A. (2013), "Data Correlation for Drag Coefficient for Sphere," Michigan Technological University β a single smooth analytic fit valid across the full Re β [10, 10βΆ] range, including the drag-crisis dip near Re β 3Γ10β΅ where the sphere's boundary layer transitions from laminar to turbulent and Cd falls sharply (~0.41 β ~0.09) in under half a decade of Reynolds number.
- Cp(Mach): the classical Prandtl-Glauert subsonic compressibility correction for stagnation pressure coefficient, capped at Mach 0.7 to stay clear of the transonic singularity.
Froude number is included as an input (matching the live app's calling convention) but the labels deliberately don't vary with it β a submerged bluff body's drag has no standard Froude dependence; that's a free-surface/wave-resistance effect a different variable bank would be needed to model. Documented, not hidden.
Training curve
| Epoch | Train loss (MSE) | Val loss (MSE) |
|---|---|---|
| 1 | 1.149 | 1.053 |
| 100 | 0.0889 | 0.0896 |
| 500 | 0.00329 | 0.00341 |
| 1000 | 0.00153 | 0.00154 |
| 2000 | 0.00262* | 0.00331* |
| 3000 | 0.00122 | 0.00122 |
* transient bump mid-training, recovered by the next checkpoint β normal optimization
noise, not divergence. Full per-epoch history in training_metrics.json.
Pointwise accuracy against the true Morrison correlation: good in the smooth region (Re=50: 1.9% error, Re=500: 3.2%, Re=5,000: 5.8%), weaker in the drag-crisis window (Re=5Γ10β΅: ~30%) β an honest limitation of a small MLP on a sharp, narrow feature, not swept under the rug.
Validated against the classical papers this cluster is built on
Training against Morrison's modern correlation only proves the network can fit that correlation. Before publishing, both halves of the pipeline (the exact symbolic solver and this trained network) were separately checked against the actual historical papers Cluster 1 cites β Galileo (1638), Newton (1687), Buckingham (1914) β as an independent sanity check, not just a self-consistency test.
1. Symbolic half vs. Buckingham (1914) β exact match. Buckingham's paper, "On
Physically Similar Systems; Illustrations of the Use of Dimensional Equations"
(Physical Review 4(4):345β376, 1914), explicitly analyzes ship-model resistance
scaling using dimensionless groups built from velocity, fluid density, a
characteristic length, and viscosity β precisely the four variables in this cluster's
DRAG_VARIABLE_BANK. Feeding the same dimensional matrix into the project's exact
Buckingham-Ξ solver reproduces Buckingham's own Reynolds-number grouping exactly:
DRAG_VARIABLE_BANK = [velocity, density, length, viscosity]
Dimensional matrix [M,L,T]: [[0,1,-1], [1,-3,0], [0,1,0], [1,-1,-1]]
Derived Pi-group exponents: [1.0, 1.0, 1.0, -1.0] -> Re = v * rho * l / mu
(Buckingham's own worked example also includes a Froude/gravity term for wave-making resistance β omitted here since gravity isn't in this reduced 4-variable bank, which is exactly why Froude number has no learned effect on this model's labels; see Limitations below.)
2. Trained half vs. Newton (1687) β a genuine independent cross-check, not circular. This network's only training signal was Morrison (2013)'s modern correlation; it never saw Newton's number or the "Cd is roughly flat here" fact. Newton's Principia (1687), Book II, analyzes sphere resistance via an inertial-collision model, and his own reported experimental measurement (Cd β 0.5) is textbook-documented as being in good agreement with the modern "Newton drag regime": for Re β [1000, ~2β3Γ10β΅], a smooth sphere's Cd is nearly constant, commonly cited at ~0.44β0.46 (range ~0.38β0.50 across sources), before the drag-crisis dip. Sweeping the trained model across that exact window:
| Re | Predicted Cd | Inside textbook band [0.38, 0.50]? |
|---|---|---|
| 1,000 | 0.4932 | Yes |
| 5,000 | 0.3889 | Yes |
| 10,000 | 0.3791 | No (0.0009 under) |
| 30,000 | 0.4339 | Yes |
| 60,000 | 0.4595 | Yes |
| 100,000 | 0.4359 | Yes |
| 150,000 | 0.3861 | Yes |
| 200,000 | 0.3357 | No |
6 of 8 points land inside the band. Mean predicted Cd across the sweep = 0.414, within 0.086 of Newton's own 337-year-old measured value and close to the modern textbook average. Neither miss is random noise: Re=10,000 falls just 0.0009 under the line, and Re=200,000 sits right at the onset of the drag-crisis window this model was specifically trained to resolve β Cd dropping there is correct relative to the modern Morrison correlation, it just falls outside the simplified historical band.
This is the kind of check worth doing before trusting any trained scientific model: does it independently reproduce a result it was never shown, not just the one it was trained to reproduce.
Limitations
- Synthetic training labels. Drawn from published closed-form correlations, not measured wind-tunnel or CFD data β treat predictions as illustrative, not measured quantities you'd design hardware around.
- Drag-crisis region remains the weakest fit. Treat Cd predictions near Re β 3Γ10β΅ as directional, not precise.
- Froude number has no learned effect, by design β see "Training data" above.
- No held-out real-world validation set β validation loss here is against the same synthetic-correlation distribution as training, not independent measured data.
Part of a larger framework
This is one of 9 clusters in the Scientific AI Cluster Orchestration Framework, each pairing a small trained neural surrogate with an exact symbolic baseline and its own physics-grounded safety audits (dimensional homogeneity and similitude checks, in this cluster's case). See the Space for the full interactive pipeline this checkpoint powers.
Foundational references: Galileo (1638), Newton (1687), Buckingham (1914), Morrison (2013).
License: MIT.