Geometry

Where it is
Section titled “Where it is”Setup tree: Geometry
Controls
Section titled “Controls”Geometry
Section titled “Geometry”Domain
Section titled “Domain”- Control: choice (
ComboRow) - Default:
-1 - Bound to:
CaseState.activeGeometry - Shown when:
!root.caseLevel
Import
Section titled “Import”Import geometry
Section titled “Import geometry”- 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.
Heal on import
Section titled “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
Section titled “Aerofoil extrusion”- 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.
Angle of attack
Section titled “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
Section titled “Extrude to triSurface”- Control: action (
ToolButton2) - Shown when:
CaseState.geometryImportFamily === "airfoil" - Enabled when:
CaseState.geometrySource !== "" && !GeometryImportBackend.busy
Translate to triSurface
Section titled “Translate to triSurface”- Control: action (
ToolButton2) - Shown when:
CaseState.geometryUsesCadTranslator() && CaseState.geometryImportFamily !== "airfoil" && CaseState.analysisFamily === "fluids" - Enabled when:
CaseState.geometrySource !== "" && !GeometryImportBackend.busy
Stop translating
Section titled “Stop translating”- Control: action (
ToolButton2) - Shown when:
GeometryImportBackend.busy
Split into parts
Section titled “Split into parts”- Control: action (
ToolButton2) - Shown when:
CaseState.geometryParts.count === 0 - Enabled when:
CaseState.geometryUsesMesh()
Merge back into one patch
Section titled “Merge back into one patch”- Control: action (
ToolButton2) - Shown when:
CaseState.geometryParts.count > 0
Display
Section titled “Display”- Control: choice (
ComboRow) - Default:
Surfaces - Bound to:
CaseState.viewportRenderMode - Options:
Surfaces,Wireframe,SurfacesWithEdges,TranslucentWithEdges(fromCaseState.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.
Section
Section titled “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
Section titled “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
Section titled “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
Section titled “Conditional and repeated groups”Per item in CaseState.geometryParts
Section titled “Per item in CaseState.geometryParts”repeated once for every entry in CaseState.geometryParts
Patch …
Section titled “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
Section titled “Measure force and moment on this part”- Control: action (
ToolButton2)
Lists this panel shows
Section titled “Lists this panel shows”Read straight from the data behind the panel, not from a hand-written list.
Geometry info
Section titled “Geometry info”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 |
Problems reported against this step
Section titled “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. |
| 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.