Cluster 1 Similitude Regressor
A 13,000-parameter neural network that learned the drag crisis β after 245Γ more parameters failed to.
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.
The story worth telling: why more parameters didn't fix the hard part
The drag-crisis dip is narrow relative to how Reynolds number was originally sampled (log-uniform across 5 orders of magnitude), so naive training starved the network of examples exactly where the function is hardest. The instinctive fix β throw more capacity at it β was tested and rejected: scaling the same architecture 245Γ larger (13K β 3.15M parameters, 884s vs 6.6s to train) only nudged the worst-case error at Re = 5Γ10β΅ from 184% down to 135%. More capacity, same starved data, barely moved the number that mattered.
What actually worked, at the original 13K-parameter size:
- Oversample the crisis window (Re β [10β΅, 6Γ10β΅]) so ~35% of training points land inside the transition, not just the flat plateaus on either side.
- Train longer (300 β 3,000 epochs) β the sharp feature needed more optimization steps to resolve, not just more local data.
Combined, that took the crisis-point error from 184% down to ~30% β a better result than the 245Γ-larger network, at 245Γ less training cost (78s vs 884s). The generalizable lesson: when a trained model underperforms in a specific input region, check whether that region is under-sampled or under-trained before reaching for more parameters.
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% even after the fix above) β 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. Even after the oversampling + longer-training fix, 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.