Experimental GeoTransolver with local geometry encodings at mesh nodes, and a jet engine bracket example
Maintainers usually reply within 2 days
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 8/100
Research direction
This is a proposal for a series of pull requests, not a bounded task. Read the existing signed_distance_field and radius_search functionals that the two proposed layers would build on, and the GeoTransolver and GALE modules they would extend. The issue names no tests or entry points to start from. Done would mean the three proposed pull requests land under physicsnemo.experimental with the equivalence check against the trained checkpoint reproduced.
Written by the indexing model from the issue text.
Description
Summary
Structural surrogates on unstructured tetrahedral meshes need to know the local member thickness at every node: thin ribs and webs carry the stress peaks. We trained GeoTransolver surrogates of the displacement and von Mises stress at every mesh node of jet engine brackets (DeepJEB, 2,138 generated designs; SimJEB, 381 human designs). Two local geometry encodings at the mesh nodes gave the most accurate models:
- a signed-distance stencil: the signed distance to the surface at a small stencil of probes around every node, encoded by an MLP;
- radius-pooled node features: up to K neighbouring nodes within each radius, drawn on the GPU and max-pooled after a shared MLP.
On the DeepJEB test designs the stress relative L2 error is 0.066 with these encodings against 0.083 for the stock GeoTransolver recipe (same data and training budget). After LoRA adaptation to SimJEB (physicsnemo.experimental.peft) the SimJEB test stress error is 0.255 against 0.326.
Proposal
A short series of pull requests, all under experimental:
- Layers —
physicsnemo.experimental.nn.SignedDistanceStencilandphysicsnemo.experimental.nn.RadiusPooledFeatures, built on the existingsigned_distance_fieldandradius_searchfunctionals. - Model —
physicsnemo.experimental.models.geotransolver_sdf.GeoTransolverSDF: the GeoTransolver core with the two layers at every node, andScaledSliceGALE, a GALE subclass whose slice-normalization epsilon scales with the number of tokens and whose temperature has a configurable floor (the defaults of the stock GALE are unchanged). - Example —
examples/structural_mechanics/jet_engine_bracket: data download and conversion, training on DeepJEB, evaluation on DeepJEB and SimJEB, and LoRA transfer to SimJEB. Out-of-distribution screening will follow separately, after the guardrails refactor.
The library model reproduces our trained model: with the converted checkpoint, the DeepJEB test stress error is 0.0659 against 0.0658 (820 cases) and the SimJEB split means agree to four decimals (1,508 cases).
The code was written with Devin (an AI coding agent) under my direction; I reviewed the design and the results (unit tests, equivalence with a trained checkpoint, and a full training rerun of the example).
- Dominant language
- Python
- Stars
- 3.4k
- Forks
- 828
- Avg merge
- 4d 3h
- Merged PRs (30d)
- 81
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from NVIDIA/physicsnemo
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
NVIDIA/physicsnemo#2214 ·
Maintainers usually reply within 2 days
-
Wasserstein CDF distance uses the first width for every binPossibly taken @sylvesterkaczmarek claimed this 31 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
NVIDIA/physicsnemo#2042 ·
Maintainers usually reply within 2 days
-
🐛[BUG]: Darcy2D Jacobi kernel divides grad(k)·grad(u) by 2dx instead of 4dx², so the data doesn't solve the Darcy equationMay be free again @coreyjadams claimed this 29 days ago, and no pull request is open. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
NVIDIA/physicsnemo#2036 · 2 comments · 1 assignee ·
Maintainers usually reply within 2 days
-
🐛[BUG]: MHD_PDE equation "B_grad_u" uses v * Bx.diff(y) instead of By * u.diff(y)Possibly taken @aaguadob claimed this 36 days ago. Open? - Needs Triage bug
Difficulty 1/5 Under an hour Newbie friendliness 92/100
NVIDIA/physicsnemo#2021 ·
Maintainers usually reply within 2 days
-
🐛[BUG]: Diffusion(time=True) in darcy_physics_informed/utils.py silently drops the time-derivative termPossibly taken @aaguadob claimed this 36 days ago. Open? - Needs Triage bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
NVIDIA/physicsnemo#2020 ·
Maintainers usually reply within 2 days
All issues in NVIDIA/physicsnemo
Similar issues
-
Difficulty 1/5 1-3 hours Newbie friendliness 78/100
QuantConnect/Documentation#2838 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
awslabs/route53-dynamic-dns-with-lambda#67 · 1 comment ·
-
`SubAgents` returns a child run's `DeferredToolRequests` to the parent as a successful tool resultOpenbug pkg:harness
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
pydantic/pydantic-ai#12405 ·
Maintainers usually reply within 1 day
-
good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
good first issue help wanted
Difficulty 1/5 Under an hour Newbie friendliness 82/100