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.

Refinements

The Refinements panel open beside the setup tree, showing the Surface refinement, Free surface, Snapping and Refinement regions sections.

Setup tree: Mesh > Refinements

  • Control: value (ValueField)
  • Default: 3
  • Bound to: CaseState.surfaceLevelMin
  • Writes: castellatedMeshControls/refinementSurfaces/body/level

Every cell touching the surface reaches this level.

  • Control: value (ValueField)
  • Default: 4
  • Bound to: CaseState.surfaceLevelMax

Reached where the surface curves more sharply than the feature angle.

  • Control: value (ValueField)
  • Default: 3
  • Bound to: CaseState.nCellsBetweenLevels
  • Writes: castellatedMeshControls/nCellsBetweenLevels

Buffer cells between refinement levels. Higher is smoother and produces better quality, at more cells.

  • Control: value (ValueField)
  • Unit: °
  • Default: 30
  • Bound to: CaseState.resolveFeatureAngle
  • Writes: castellatedMeshControls/resolveFeatureAngle
  • Value modes: none (plain entry)

Which edges get chased down to the surface level. Lower it towards 20 for a body with shallow curvature that is being missed; raise it towards 60 when feature refinement is running the cell count away. The one member of this block that was not reachable.

  • Control: value (ValueField)
  • Default: 2000000
  • Bound to: CaseState.maxGlobalCells
  • Writes: castellatedMeshControls/maxGlobalCells

Hard budget. Refinement stops when it is reached, so the mesh may not achieve the levels above.

  • Control: on/off (ToggleRow)
  • Default: true
  • Bound to: CaseState.waveSurfaceRefine
  • Writes: castellatedMeshControls/refinementRegions/waveSurface
  • Shown when: CaseState.isWaveCase

Halves the cell through a band at the still-water level until the wave height has about eight cells across it, up to three levels. Without it a tank sized from the wavelength meshes the surface on the same cell as the far end of the tank, and the crest flattens within a wavelength.

  • Control: value (ValueField)
  • Default: 30
  • Bound to: CaseState.nSolveIter
  • Writes: snappyHexMeshDict/…
  • Value modes: none (plain entry)
  • Control: value (ValueField)
  • Default: 5
  • Bound to: CaseState.nSnapRelaxIter
  • Writes: snappyHexMeshDict/…
  • Value modes: none (plain entry)
  • Control: value (ValueField)
  • Default: 10
  • Bound to: CaseState.nFeatureSnapIter
  • Writes: snappyHexMeshDict/…
  • Value modes: none (plain entry)
  • Control: value (ValueField)
  • Default: 3
  • Bound to: CaseState.nSmoothPatch
  • Writes: snappyHexMeshDict/…
  • Value modes: none (plain entry)
  • Control: value (ValueField)
  • Default: 2.0
  • Bound to: CaseState.snapTolerance
  • Writes: snappyHexMeshDict/…
  • Value modes: none (plain entry)
  • Control: value (ValueField)
  • Default: 1000000
  • Bound to: CaseState.maxLocalCells
  • Writes: snappyHexMeshDict/…
  • Value modes: none (plain entry)
  • Control: value (ValueField)
  • Default: 10
  • Bound to: CaseState.minRefinementCells
  • Writes: snappyHexMeshDict/…
  • Value modes: none (plain entry)
  • Control: value (ValueField)
  • Default: 0.10
  • Bound to: CaseState.maxLoadUnbalance
  • Writes: snappyHexMeshDict/…
  • Value modes: none (plain entry)
  • Control: action (ToolButton2)

repeated once for every entry in CaseState.refinementRegions

  • Control: choice (ComboRow)
  • Default: box
  • Options: box, sphere
  • Shown when: !regionCard.usesPrimitive
  • Control: choice (ComboRow)
  • Default: inside
  • Options: inside, outside, distance
  • Writes: refinementRegions/…/mode
  • Control: value (ValueField)
  • Default: 2
  • Control: value (ValueField)
  • Unit: L
  • Default: 1.0
  • Shown when: regionCard.region.mode === "distance"
  • Control: choice (ComboRow)
  • Options: relative, absolute
  • Shown when: !regionCard.usesPrimitive

The in-app guidance depends on the case:

  • Metres in the case’s axes.
  • Body lengths off the geometry box, so it follows the model.
  • Control: value (ValueField)
  • Unit: L
  • Default: 1.0
  • Shown when: regionCard.regionShape === "box" && !regionCard.absolute
  • Control: value (ValueField)
  • Unit: L
  • Default: 2.0
  • Shown when: regionCard.regionShape === "box" && !regionCard.absolute
  • Control: value (ValueField)
  • Unit: L
  • Default: 1.0
  • Shown when: regionCard.regionShape === "box" && !regionCard.absolute
  • Control: value (ValueField)
  • Unit: L
  • Default: 1.0
  • Shown when: regionCard.regionShape === "box" && !regionCard.absolute
  • Control: value (ValueField)
  • Unit: L
  • Default: 1.0
  • Shown when: regionCard.regionShape === "box" && !regionCard.absolute

The application reports no problems against this step.


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