You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Experimental GeoTransolver with local geometry encodings at mesh nodes, and a jet engine bracket example #2216
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.SignedDistanceStencil and physicsnemo.experimental.nn.RadiusPooledFeatures, built on the existing signed_distance_field and radius_search functionals.
Model — physicsnemo.experimental.models.geotransolver_sdf.GeoTransolverSDF: the GeoTransolver core with the two layers at every node, and ScaledSliceGALE, 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).
Activity