Skip to content
Draft. This manual is new and still being checked against the software as it is verified. Some pages will change. If something here does not match what you see, 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.

Setup tree: Geometry

  • Control: choice (ComboRow)
  • Default: -1
  • Bound to: CaseState.activeGeometry
  • Shown when: !root.caseLevel
  • Control: action (ToolButton2)
  • 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.

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

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

  • 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.

  • 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.

  • 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.

  • Control: action (ToolButton2)
  • Shown when: CaseState.geometryImportFamily === "airfoil"
  • Enabled when: CaseState.geometrySource !== "" && !GeometryImportBackend.busy
  • Control: action (ToolButton2)
  • Shown when: CaseState.geometryUsesCadTranslator() && CaseState.geometryImportFamily !== "airfoil" && CaseState.analysisFamily === "fluids"
  • Enabled when: CaseState.geometrySource !== "" && !GeometryImportBackend.busy
  • Control: action (ToolButton2)
  • Shown when: GeometryImportBackend.busy
  • Control: action (ToolButton2)
  • Shown when: CaseState.geometryParts.count === 0
  • Enabled when: CaseState.geometryUsesMesh()
  • Control: action (ToolButton2)
  • Shown when: CaseState.geometryParts.count > 0
  • Control: choice (ComboRow)
  • Default: Surfaces
  • Bound to: CaseState.viewportRenderMode
  • Options: Surfaces, Wireframe, SurfacesWithEdges, TranslucentWithEdges (from CaseState.viewportRenderModes)

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.
  • 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.

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

repeated once for every entry in CaseState.geometryParts

  • 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.

  • Control: action (ToolButton2)

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

From a fixed list in the application.

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

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.
warn The flow runs along …, but this body is longest along … (… m against … m along …). It will be meshed and solved presented broadside. If that is not what you meant, set the flow direction on the Models pane to … - nothing about an imported file says which way it was meant to face, so the case keeps the direction it already had.
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.