Skip to content

About SHORE

SHORE (Structured Hyperbolic Overlapping Remeshing Engine) is a Python tool for hyperbolic mesh generation in Chimera (overset) CFD. It produces both classes of grid a Chimera assembly needs:

  • Body-fitted near-body grids — structured volumes wrapping a body surface, generated by hyperbolic normal extrusion.
  • Parametric backgrounds — box, annular cylinder, and flat-caps cylinder primitives that fill the far field.

The two flows live in one tool with one set of CLI verbs and one Python API, so a full overset assembly can be built end-to-end without touching another mesher.

Motivation

A Chimera mesh assembly is a collection of overlapping structured grids. The two classes have different requirements:

  • Near-body grids must conform to the body surface, with tight wall-normal resolution and well-controlled growth into the far field.
  • Backgrounds must be cheap, regular, and large enough to host the physics, with cell sizes that overlap cleanly with the near-body grids' outer shells.

SHORE produces both in the same world coordinates and packages them for the downstream solver: per-block .geo, packed .grd, the cc.par chimera descriptor, and marker boxes for hole-cutting. Hole cutting, fringe identification, and donor search are the solver's job; SHORE's contract is "generate every grid the assembly needs and write it to disk."

Inputs

TodayRoadmap
Triangulated STL (binary or ASCII) for body-fitted meshesSTEP / IGES / BREP via pythonOCC or cadquery
Parametric geometry for primitives (no surface input required)Multi-body STL with automatic decomposition

Body-fitted meshing assumes the input surface is star-shaped from a chosen anchor (the body centroid by default); see Surface projection — failure modes.

Design philosophy

Stages are explicit. The body-fitted pipeline has two clearly separated stages — surface projection and hyperbolic marching — each available as a CLI command and a Python entry point. Intermediate results can be inspected, and only the stage that changed needs to be rerun.

Failures are loud. Every layer is checked for cell inversion before the grid advances; a negative Jacobian aborts marching immediately with a precise error message. Adjacency, BCs, and seam orientation are validated at wiring time, not at solver runtime. There are no silent bad meshes.

No topology guessing. SHORE does not attempt to decompose arbitrary surfaces into structured patches automatically. The body-fitted topologies (O-grid, cubed sphere, OH hybrid) assume the body is star-shaped with respect to its anchor; the C-grid expects a sharp- or blunt-TE wing-like body. Arbitrary multi-block surface decomposition is on the roadmap.

Scope

In scopeOut of scope (roadmap)
Body-fitted: O-grid (1 block), cubed sphere (6 blocks), C-grid (3 / 4 / 1 blocks), OH hybrid (12 blocks)Multi-block arbitrary-surface decomposition
Backgrounds: box, annular cylinder, flat-caps cylinderElliptic volume smoothing
Triangulated STL surface inputCAD surface input (STEP / IGES / BREP)
Hyperbolic normal extrusion with seam-aware kernelAdvanced surface remeshing
Per-edge spacing laws (uniform / tanh / tanh2 / pinned)Box-shaped outer boundary morphing
Adjacency JSON sidecar with axis_map orientationOther CFD formats (Plot3D, CGNS)
Xall pipeline: .geo, .grd, cc.par, marker boxes, multi-component mergeHole cutting / fringe identification (solver's job)
  • Xall — the target Chimera CFD solver; SHORE generates its .grd + cc.par pair.
  • trimesh — STL I/O, watertightness checks, BVH-accelerated ray casting.
  • NumPy — every numerical kernel; pure Python, no compiled extensions.
  • Typer + Rich — CLI framework and progress display.
  • PyVista (optional, [vis] extra) — interactive viewer and VTK export.

Released under the MIT License.