Skip to content
SHD Sim
Menu
Documentation menu

Draft. This manual is new and still growing. If something here does not match what you see in the software, the software is right — tell us and we will fix the page.

Geometry

The Geometry panel open beside the setup tree, showing the Geometry, Import, Aerofoil extrusion, Parts, Display, Geometry info and Supported formats sections.
Geometry

Where it is

Setup tree: Geometry

Controls

Geometry

Domain

  • Control: choice (ComboRow)
  • Default: -1
  • Bound to: CaseState.activeGeometry
  • Shown when: !root.caseLevel

Import

Import geometry

  • Control: action (ToolButton2)

Units

  • Control: choice (ComboRow)
  • Default: m
  • Bound to: CaseState.geometryUnits
  • Options: m, mm, cm, in, ft

Source units of the imported file. Geometry is rescaled to metres on import, so bounds, areas and cell sizes are always SI.

Heal on import

  • Control: on/off (ToggleRow)
  • Default: true
  • Bound to: CaseState.geometryHealingEnabled

Passed to the geometry translator: sew faces, remove tiny edges and report diagnostics.

Aerofoil extrusion

Chord

  • Control: value (ValueField)
  • Unit: m
  • Default: 1.0
  • Bound to: CaseState.airfoilChord
  • Value modes: none (plain entry)
  • Shown when: CaseState.geometryImportFamily === "airfoil"

The profile is normalised to unit chord on read, so this is the size it becomes whatever scaling the file used.

Span

  • Control: value (ValueField)
  • Unit: m
  • Default: 0.2
  • Bound to: CaseState.airfoilSpan
  • Value modes: none (plain entry)
  • Shown when: CaseState.geometryImportFamily === "airfoil"

Extruded along z, centred on zero. A 2-D case wants this about one cell thick with empty front and back patches.

Angle of attack

  • Control: value (ValueField)
  • Unit: deg
  • Default: 0.0
  • Bound to: CaseState.airfoilAngle
  • Value modes: none (plain entry)
  • Shown when: CaseState.geometryImportFamily === "airfoil"

Rotated about the quarter chord, which is where the pitching moment is conventionally taken.

Extrude to triSurface

  • Control: action (ToolButton2)
  • Shown when: CaseState.geometryImportFamily === "airfoil"
  • Enabled when: CaseState.geometrySource !== "" && !GeometryImportBackend.busy

Translate to triSurface

  • Control: action (ToolButton2)
  • Shown when: CaseState.geometryUsesCadTranslator() && CaseState.geometryImportFamily !== "airfoil" && CaseState.analysisFamily === "fluids"
  • Enabled when: CaseState.geometrySource !== "" && !GeometryImportBackend.busy

Stop translating

  • Control: action (ToolButton2)
  • Shown when: GeometryImportBackend.busy

Parts

Split into parts

  • Control: action (ToolButton2)
  • Shown when: CaseState.geometryParts.count === 0
  • Enabled when: CaseState.geometryUsesMesh()

Merge back into one patch

  • Control: action (ToolButton2)
  • Shown when: CaseState.geometryParts.count > 0

Display

Mode

  • Control: choice (ComboRow)
  • Default: Surfaces
  • Bound to: CaseState.viewportRenderMode
  • Options: Surfaces, Wireframe, SurfacesWithEdges, TranslucentWithEdges

The in-app guidance depends on the case:

  • CAD format recognised. Nothing is drawn until the translator has turned it into a surface - use Translate, above.
  • Mesh overlays the surface triangulation; wireframe and points switch the actual geometry topology. Fields of the solution are drawn from the post-processing pipeline, not from here.

Section

  • Control: choice (ComboRow)
  • Default: None
  • Bound to: CaseState.viewportClip
  • Options: None, Clip, Slice

Clip cuts the model on a plane and shows what is behind it. Slice keeps only a slab of the width below. Either one applies on top of the display mode, rather than replacing it.

Section position

  • Control: value (ValueField)
  • Unit: of span
  • Default: 0.5
  • Bound to: CaseState.clipPosition
  • Writes: viewport/clipPlane/origin
  • Shown when: CaseState.viewportClip !== "None"

Slice width

  • Control: value (ValueField)
  • Unit: m
  • Default: 0.08
  • Bound to: CaseState.sliceThickness
  • Writes: postProcess/cuttingPlane/thickness
  • Shown when: CaseState.viewportClip === "Slice"

Conditional and repeated groups

Per item in CaseState.geometryParts

repeated once for every entry in CaseState.geometryParts

Patch …

  • Control: value (ValueField)
  • Value modes: none (plain entry)

… triangles, … m². This is the name the solver will call the patch, so it is what a boundary condition and a force control refer to.

Measure force and moment on this part

  • Control: action (ToolButton2)

Lists this panel shows

Read straight from the data behind the panel, not from a hand-written list.

Geometry info

From a fixed list in the application.

label
Format
Backend
Solid bodies
Faces
Edges
Vertices
Triangles
Visible tris
Bounds min
Bounds max
Size
Surface area
Frontal area
Watertight

Problems reported against this step

The application checks these before a run and reports them in the Problems tab against this step.

Severity Message
warn The body is … m along the wave direction and the wave is … m long. The tank is sized by the wave, so the body will need several levels of surface refinement to appear in it at all. A hull exported in the marine convention - length along X, deck up in Z - is what makes the two comparable.
warn The imported surface has open edges. It will still mesh, but the flow can leak inside the body through the holes, which usually shows up as a run that diverges rather than as a meshing failure. Cap the holes, or place the body on a ground plane if it was modelled to sit on one.
error The last geometry operation could not be applied: …. The feature is still listed; the model is as it was before it.
error … is still loading. Meshing now would mesh the empty domain box instead of the body.
error … was imported but no body came of it (…). Meshing would use the empty domain box. Re-import it, or check the file.
error This analysis solves on the surface of a body - the … lives on it - and no geometry has been imported, so there is no surface to mesh. Import a body under Geometry, or load the worked example.
warn No geometry has been imported. The mesh will be the empty domain box - flow from the inlet to the outlet with nothing in the way. Import a body under Geometry, or choose a shape that is its own domain (a tank, a cavity, a duct) from the catalogue.

marks a value the application computes at run time, so the source carries no fixed text for it.