# Helical wire surface The wire's surface in the `examples/wire_coil.py` hex mesh (face tag `coil`), smoothed as a free-standing surface with its open rim frozen, as built or with perturbed input. ```{include} _generated/wire_coil_surface.viewer.inc ``` ## Key points - **The target surface is circular**: the wire has no CAD description, so its vertices are held to a tessellation of the mesh's own curved quads. This shows how the smoother redistributes vertices on a given surface, not a check against an independent geometry. - **Vertices move a lot**: the helical template skews its quads by design, so vertices move by whole local edges (the lines below the table). As built, the minimum barely changes while the mean and the worst 5 % improve. - **The smoother does not touch the hexes**, and moving the surface this far on its own does not leave valid layers around it ({ref}`wire-coil-hexes`). The surface numbers are not volume-mesh quality. - *Perturbed input*: every movable vertex shifted by up to 0.2 of its local edge length, then put back on the surface. ## The numbers ```{include} _generated/wire_coil_surface.table.inc ``` Run `python examples/smoother/quad/cs_wire_coil.py` to reproduce; it prints these numbers. (wire-coil-hexes)= ## The hexes - `examples/smoother/quad/cs_wire_coil_hex.py` takes the order-1 hex mesh (the corner geometry a `.re2` file holds) and puts the smoothed surface's vertices in place of the old ones; every other vertex stays where the example put it. - Measured at the 8 corners (what `.re2` holds) and re-read on a finer lattice at order 7, the solver's. ```{include} _generated/wire_coil_hex.text.inc ``` ```{include} _generated/wire_coil_hex.table.inc ``` - *Exterior*: every named face by boundary group, one checkbox each (`outer` and `wall` start off so `coil` is visible). *Cross-section*: across and along the pipe, by scaled Jacobian or region (fluid or solid). Drag to orbit. ```{include} _generated/wire_coil_hex.viewer.inc ``` Run `python examples/smoother/quad/cs_wire_coil_hex.py` to reproduce; it prints these numbers.
Notes and caveats - `coil` separates fluid from wire, so `hexmesh.boundary_mesh(mesh, "coil")` returns every quad twice, once per side; the script keeps one of each pair. - The surface is too large for the data to keep a stage history, so the viewer shows only the input and the final state (panels and histogram as in {doc}`simple_geometries`). - The tables are regenerated by `docs/_ext/gen_smoother_quad_assets.py` and `docs/_ext/gen_smoother_quad_hexviews_assets.py`; nothing is typed in.