bedrock-checkpoints-58
Physics-informed neural-network (PINN) surrogate trained on STAR-CCM+ RANS CFD results for steady coolant flow. The model maps geometry-aware coordinate features to flow fields and uses three geodesic flow-connectivity features in addition to the prior 55-feature local-chart representation.
The metadata below was extracted from starccm_pinn_model.pt and cross-checked against the included training configuration and loss history.
Checkpoint: starccm_pinn_model.pt
| Setting | Value |
|---|---|
| Training step | 600,000 |
| Saved schema identifier | canonical_local_chart_dim55_geometry_conditioned_v1 (legacy name; checkpoint has 58 inputs) |
| Input features (semantic) | 58 |
| Encoded input dimension (Fourier) | 986 = 58 raw + 58 x 2 x 8 frequencies |
| Output variables | 7 |
| Hidden width | 384 |
| Hidden layers | 6 |
| Linear layers | 7 |
| Activation | SiLU |
| Main-network trainable parameters | 1,120,903 |
| Pressure-head trainable parameters | 1,485 |
| Total trainable parameters | 1,122,388 |
| Training geometries in metadata | 35 (33 fitted pressure targets) |
| Data backend | CUDA |
The checkpoint is the final artifact from the included loss history, whose last row is step 600,000. It contains model and pressure-head weights, Adam optimizer state, scheduler state, normalization arrays, feature/output contracts, STAR-CCM+ metadata, and geometry-similarity metadata.
Outputs (7)
Public output order:
u, v, w, p, k, epsilon, temperature
The network internally predicts p_shape; physical pressure is reconstructed from the outlet reference and the geometry-conditioned pressure-drop head:
p = outlet_pressure + delta_p * p_shape
Supervised fields are u, v, w, and pressure-derived targets. k, epsilon, and temperature are latent physics-constrained fields.
Architecture
All 58 inputs are Fourier-encoded with 8 frequency bands (sine and cosine), producing 986 encoded values before the MLP.
| State-dict tensor | Layer shape (in -> out) |
|---|---|
mlp.net.0.weight |
986 -> 384 |
mlp.net.2.weight |
384 -> 384 |
mlp.net.4.weight |
384 -> 384 |
mlp.net.6.weight |
384 -> 384 |
mlp.net.8.weight |
384 -> 384 |
mlp.net.10.weight |
384 -> 384 |
mlp.net.12.weight |
384 -> 7 |
The separate pressure-drop head predicts log(delta_p) from 11 geometry descriptors using a ridge-linear branch plus a nonlinear correction branch:
geometry_regressor: 11 -> 1
geometry_mlp: 11 -> 32 -> 32 -> 1
STAR-CCM+ physics
| Setting | Value |
|---|---|
| Physics continuum | 02.Coolant(LLC-10) - Steady |
| Region | 0.coolant (LLC-10) |
| Turbulence model | RkeTwoLayerTurbModel |
| Wall treatment | KeTwoLayerAllYplusWallTreatment |
| Inlet temperature | 298.15 K |
| Inlet mass flow | 25.0 L/min |
| STAR-CCM+ version | 2402.0001 / 19.02.013 |
Input feature names (58)
0. x
1. y
2. z
3. distance_to_inlet
4. distance_to_outlet
5. distance_to_wall
6. axial_inlet_to_outlet
7. radial_to_inlet_outlet_axis
8. signed_distance_proxy
9. wall_proximity
10. source_x_norm
11. source_y_norm
12. source_z_norm
13. source_axis_axial
14. source_axis_lateral_1
15. source_axis_lateral_2
16. source_axis_radial
17. chart_center_x_norm
18. chart_center_y_norm
19. chart_center_z_norm
20. chart_center_axis_axial
21. chart_center_axis_lateral_1
22. chart_center_axis_lateral_2
23. chart_local_x
24. chart_local_y
25. chart_local_z
26. chart_local_axis_axial
27. chart_local_axis_lateral_1
28. chart_local_axis_lateral_2
29. chart_radius
30. chart_log_count
31. chart_wall_distance_mean
32. chart_wall_distance_std
33. chart_cov_eig_1
34. chart_cov_eig_2
35. chart_cov_eig_3
36. chart_anisotropy
37. chart_planarity
38. wall_distance_x_minus
39. wall_distance_x_plus
40. wall_distance_y_minus
41. wall_distance_y_plus
42. wall_distance_z_minus
43. wall_distance_z_plus
44. surface_area
45. fluid_volume
46. surface_area_to_volume_ratio
47. equivalent_hydraulic_diameter
48. surface_genus
49. cross_section_area_min
50. cross_section_area_mean
51. cross_section_area_std
52. cross_section_area_min_ratio
53. number_of_strong_constrictions
54. high_curvature_surface_fraction
55. geodesic_distance_from_inlet
56. geodesic_distance_to_outlet
57. flow_coordinate_s
Loading
This is a full training checkpoint rather than a standalone serialized model class. Use the included trainer architecture to instantiate the network, then load the state dictionaries.
import torch
ckpt = torch.load(
"starccm_pinn_model.pt",
map_location="cpu",
weights_only=False,
)
model_state = ckpt["model"]
pressure_head_state = ckpt["pressure_head"]
feature_names = ckpt["feature_names"] # 58 inputs
output_order = ckpt["output_order"] # public physical outputs
pressure_output_order = ckpt["pressure_output_order"]
# Input standardization
feature_mean = ckpt["feature_mean"]
feature_scale = ckpt["feature_scale"]
# Supervised-label standardization (u, v, w, p)
label_mean = ckpt["label_mean"]
label_scale = ckpt["label_scale"]
Only load pickle-based PyTorch checkpoints from sources you trust. The weights_only=False setting is required here because the checkpoint contains NumPy metadata in addition to tensors.
Included files
starccm_pinn_model.pt: final checkpoint at step 600,000starccm_pinn_loss_history.csv: 3,001 logged records through step 600,000bedrock_trainer_dim55.py: training/evaluation implementation (the filename is historical; this run uses 58 inputs)build_local_chart_starccm_enriched_data_cuda.py: CUDA data builder for enriched local-chart featuresbedrock_dim58_dp_head_geodesic.yaml: run configuration