From cd65ed0065adb40520aed23370f3ade1728497a9 Mon Sep 17 00:00:00 2001
From: AirbornePanda
Date: Tue, 28 Apr 2026 00:28:54 +0100
Subject: [PATCH 1/5] Update README.md
---
examples/structural_mechanics/crash/README.md | 122 ++++++++++++++++++
1 file changed, 122 insertions(+)
diff --git a/examples/structural_mechanics/crash/README.md b/examples/structural_mechanics/crash/README.md
index 514c1c792e..d6a7220bc3 100644
--- a/examples/structural_mechanics/crash/README.md
+++ b/examples/structural_mechanics/crash/README.md
@@ -637,6 +637,128 @@ Muon: Car-crash test MSE at probe location (Driver, Passenger):
+## Community Dataset: OpenRadioss Bumper Beam
+
+This section describes an open-source dataset generated with
+[OpenRadioss](https://github.com/OpenRadioss/OpenRadioss) and contributed by the community
+to provide a freely accessible alternative for experimenting with this example.
+
+### Dataset Overview
+
+
+
+
+
+The dataset is based on the
+[OpenRadioss Bumper Beam example](http://openradioss.atlassian.net/wiki/spaces/OPENRADIOSS/pages/11075585/Bumper+Beam),
+a standard crash benchmark consisting of a bumper beam impacting a rigid cylindrical pole.
+Raw simulation data was generated by iteratively varying two design parameters across 131 runs:
+
+| Parameter | Range | Description |
+|---|---|---|
+| Shell thickness | 1.2 mm – 2.0 mm | Applied uniformly to `PROP/SHELL` IDs 2 and 7 |
+| Pole Y-axis offset | −500 mm – +500 mm | Shifts the rigid pole impact position along the beam |
+
+
+OpenRadioss ANIM output files are first converted to **d3plot** format using
+[Vortex-Radioss](https://github.com/Vortex-CAE/Vortex-Radioss), then curated to **VTP** format
+using [PhysicsNeMo-Curator](https://github.com/NVIDIA/physicsnemo-curator) for training.
+
+The dataset (131 runs, including both raw d3plot and curated VTP files) is publicly available
+on Hugging Face:
+
+> 🤗 **[AIRBORNEPANDA/BumperBeamCrashExample](https://huggingface.co/datasets/AIRBORNEPANDA/BumperBeamCrashExample)**
+
+### Generating the Dataset Yourself
+
+A full data generation pipeline is provided at
+**[HoussemMouradi/OpenRadioss2PhysicsNeMo](https://github.com/HoussemMouradi/OpenRadioss2PhysicsNeMo)**.
+It automates the complete workflow: modifying OpenRadioss input decks, running the solver,
+converting ANIM → d3plot, and generating `GLOBAL_FEATURES.json`.
+
+Interactive Jupyter notebooks walk through every step and handle all dependency installation
+automatically:
+
+| Platform | Notebook |
+|---|---|
+| Windows (local Jupyter) | [OpenRadioss2PhysicsNEMO_windows.ipynb](https://github.com/HoussemMouradi/OpenRadioss2PhysicsNeMo/tree/main/OpenRadioss2PhysicsNeMo_NotebooksOpenRadioss2PhysicsNeMo_windows.ipynb) |
+| Linux (local Jupyter) | [OpenRadioss_PhysicsNEMO_linux.ipynb](https://github.com/HoussemMouradi/OpenRadioss2PhysicsNeMo/tree/main/OpenRadioss2PhysicsNeMo_Notebooks/OpenRadioss2PhysicsNeMo_linux.ipynb) |
+| Google Colab ☁️ |
|
+
+After running a notebook, follow the
+[PhysicsNeMo-Curator crash ETL instructions](https://github.com/NVIDIA/physicsnemo-curator/blob/main/examples/structural_mechanics/crash/README.md)
+to curate the d3plot outputs to VTP format for training.
+
+### Training Configuration
+
+The following configuration was used to train on the Bumper Beam dataset. It is based on the
+[`bumper_geotransolver_oneshot.yaml`](https://github.com/NVIDIA/physicsnemo/blob/main/examples/structural_mechanics/crash/conf/bumper_geotransolver_oneshot.yaml)
+experiment preset, using the **VTP reader**, **GeoTransolver (one-shot)** model, and
+**point cloud** datapipe.
+
+Run with:
+
+```bash
+python train.py --config-name=bumper_geotransolver_oneshot
+```
+
+The key configuration values are:
+
+```yaml
+# Bumper beam crash experiment using GeoTransolver (one-shot).
+# Usage: python train.py --config-name=bumper_geotransolver_oneshot
+
+experiment_name: "Bumper-GeoTransolver"
+
+defaults:
+ - reader: vtp
+ - datapipe: point_cloud
+ - model: geotransolver_one_shot
+ - training: default
+ - inference: default
+ - _self_
+# -- Data ----------------------------------------------------------------------
+training:
+ raw_data_dir: ./CURATED_DATA_VTP/TRAINING_DATA # path to curated VTP train split
+ raw_data_dir_validation: ./CURATED_DATA_VTP/VALIDATION_DATA # path to curated VTP validation split
+ global_features_filepath: ./CURATED_DATA_VTP/GLOBAL_FEATURES.json # path to GLOBAL_FEATURES.json
+ optimizer: muon
+
+# -- Dataset -------------------------------------------------------------------
+num_time_steps: 11
+num_training_samples: 124 # ~92% of 131 runs
+num_validation_samples: 7
+
+inference:
+ raw_data_dir_test: ??? # path to curated VTP test split
+
+# -- Datapipe features ---------------------------------------------------------
+datapipe:
+ static_features: [thickness] # per-node static features for this dataset
+ dynamic_targets:
+ - effective_plastic_strain
+ - stress_vm
+ global_features:
+ - thickness_scale # shell thickness (mm)
+ - velocity_x # initial impact velocity in X (mm/ms)
+ - rwall_origin_y # rigid pole Y-coordinate (mm)
+ sample_type: all_time_steps
+
+# -- Model ---------------------------------------------------------------------
+model:
+ functional_dim: 4 # input coords (x, y, z) + static_features (1)
+ out_dim: 50 # (num_time_steps - 1) * 5 = 50 * 5
+ global_dim: 3 # must match len(datapipe.global_features)
+```
+
+### Results
+
+
+
+
+
+*Results to be updated*
+
## TODO
- [ ] **Normalize global features**: Global features (e.g., velocity_x, thickness_scale, rwall_origin_y) are currently passed to the model without normalization. Add support for computing and applying per-feature mean/std (or similar) so global inputs are normalized consistently with node features and positions.
From 2d963dbc5818650e28bfe676ba198a00c98ea250 Mon Sep 17 00:00:00 2001
From: AirbornePanda
Date: Tue, 28 Apr 2026 00:50:46 +0100
Subject: [PATCH 2/5] Update README.md
---
examples/structural_mechanics/crash/README.md | 3 ---
1 file changed, 3 deletions(-)
diff --git a/examples/structural_mechanics/crash/README.md b/examples/structural_mechanics/crash/README.md
index d6a7220bc3..67d79f76b8 100644
--- a/examples/structural_mechanics/crash/README.md
+++ b/examples/structural_mechanics/crash/README.md
@@ -756,9 +756,6 @@ model:
-
-*Results to be updated*
-
## TODO
- [ ] **Normalize global features**: Global features (e.g., velocity_x, thickness_scale, rwall_origin_y) are currently passed to the model without normalization. Add support for computing and applying per-feature mean/std (or similar) so global inputs are normalized consistently with node features and positions.
From 8ebe092259d8a3e60671815f55a5bdae952da9a2 Mon Sep 17 00:00:00 2001
From: AirbornePanda
Date: Tue, 28 Apr 2026 00:53:27 +0100
Subject: [PATCH 3/5] Update README.md
---
examples/structural_mechanics/crash/README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/examples/structural_mechanics/crash/README.md b/examples/structural_mechanics/crash/README.md
index 67d79f76b8..c042346658 100644
--- a/examples/structural_mechanics/crash/README.md
+++ b/examples/structural_mechanics/crash/README.md
@@ -726,11 +726,11 @@ training:
# -- Dataset -------------------------------------------------------------------
num_time_steps: 11
-num_training_samples: 124 # ~92% of 131 runs
+num_training_samples: 124
num_validation_samples: 7
inference:
- raw_data_dir_test: ??? # path to curated VTP test split
+ raw_data_dir_test: ???
# -- Datapipe features ---------------------------------------------------------
datapipe:
From 05bbf06caf89d1c08f31c3d5030b7a1a31eaf3f9 Mon Sep 17 00:00:00 2001
From: AirbornePanda
Date: Tue, 28 Apr 2026 02:34:57 +0100
Subject: [PATCH 4/5] Update examples/structural_mechanics/crash/README.md
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
---
examples/structural_mechanics/crash/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/structural_mechanics/crash/README.md b/examples/structural_mechanics/crash/README.md
index c042346658..34c51551d2 100644
--- a/examples/structural_mechanics/crash/README.md
+++ b/examples/structural_mechanics/crash/README.md
@@ -681,7 +681,7 @@ automatically:
| Platform | Notebook |
|---|---|
-| Windows (local Jupyter) | [OpenRadioss2PhysicsNEMO_windows.ipynb](https://github.com/HoussemMouradi/OpenRadioss2PhysicsNeMo/tree/main/OpenRadioss2PhysicsNeMo_NotebooksOpenRadioss2PhysicsNeMo_windows.ipynb) |
+| Windows (local Jupyter) | [OpenRadioss2PhysicsNEMO_windows.ipynb](https://github.com/HoussemMouradi/OpenRadioss2PhysicsNeMo/tree/main/OpenRadioss2PhysicsNeMo_Notebooks/OpenRadioss2PhysicsNeMo_windows.ipynb) |
| Linux (local Jupyter) | [OpenRadioss_PhysicsNEMO_linux.ipynb](https://github.com/HoussemMouradi/OpenRadioss2PhysicsNeMo/tree/main/OpenRadioss2PhysicsNeMo_Notebooks/OpenRadioss2PhysicsNeMo_linux.ipynb) |
| Google Colab ☁️ |
|
From db88764960b46b2f9f9cb26a573d39b89bd360e6 Mon Sep 17 00:00:00 2001
From: AirbornePanda
Date: Tue, 28 Apr 2026 02:35:27 +0100
Subject: [PATCH 5/5] Update examples/structural_mechanics/crash/README.md
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
---
examples/structural_mechanics/crash/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/structural_mechanics/crash/README.md b/examples/structural_mechanics/crash/README.md
index 34c51551d2..167aae4d90 100644
--- a/examples/structural_mechanics/crash/README.md
+++ b/examples/structural_mechanics/crash/README.md
@@ -747,7 +747,7 @@ datapipe:
# -- Model ---------------------------------------------------------------------
model:
functional_dim: 4 # input coords (x, y, z) + static_features (1)
- out_dim: 50 # (num_time_steps - 1) * 5 = 50 * 5
+ out_dim: 50 # (num_time_steps - 1) * 5 = 10 * 5 = 50
global_dim: 3 # must match len(datapipe.global_features)
```