Skip to content

Mesh Generation

In XdTd, mesh generation is performed in a completely automatic fashion. You don't enter element counts, element sizes, or refinement parameters per region — when you run an analysis, the engine inspects the panel and discretizes it on its own.

The high-level control you have over the resulting mesh is a single refinement level, set on a five-step slider that ranges from Very Coarse to Very Fine, with Moderate as the default. In rare cases where you need finer control than the global slider provides, you can also set a per-edge discretization on any edge of the geometry — useful for matching an analytical reference or refining an unusually narrow feature. These edge-level overrides take precedence over the slider and are described under point 1 below.

The refinement level is stored per result set, so the same case study can hold runs at different refinement levels for direct comparison — making it easy to check convergence of the solution as the mesh is refined.

If you want to inspect the mesh that was used for a given analysis, enable Draw Mesh in the panel view settings. The mesh is otherwise an internal detail of the analysis and is not shown.


How the discretization is built

The engine follows the geometry rather than imposing element sizes on it. The mesh is anchored at physical features and grows outward from there:

  1. Forced overrides come first. If you have set a forced discretization on a specific edge, those endpoints are pre-meshed and the rest of the mesh flows around them.
  2. Fastened-stiffener pitches anchor the mesh. Element size along a fastened stiffener is the fastener pitch, and the stiffener endpoints are meshed before anything else.
  3. Cracks are discretized next. Each crack edge receives a number of elements that depends on the refinement level. The crack tips become the next layer of anchors.
  4. The mesh propagates outward from those anchors. Segments touching two anchored points interpolate between the known sizes; segments touching only one grow geometrically toward the loose end.
  5. Unanchored segments are sized last, from a baseline derived from the panel perimeter, with patches and bonded stiffeners getting their own scaling.
  6. Internal points are then placed inside the panel and patches, denser near boundaries and crack tips, sparser in the interior.

The same logic runs at every refinement level — only the underlying element-count budgets and spacing targets change. As a consequence, two identical geometries with cracks in different positions will mesh differently, because the anchor topology is not the same.


When to deviate from the slider

For the vast majority of analyses, choosing a refinement level and running is enough. If you need finer control on a specific region — for example, to match an analytical reference or to refine an unusually narrow feature — set a forced discretization on the relevant edge. The global slider keeps controlling everything else.