Winslow smoothing

smooth.winslow is an alternative to Laplace for the cases where Laplace fails: concave outlines and thin, curved, high-aspect blocks. The L-shape of Which method when, one block, its reflex corner at (1, 1):

worst-corner scaled J≤ 01input boundary

L-shape

input
min J -0.32 · 10 inverted (9 off the corner)
Laplace
min J -0.95 · 6 inverted (5 off the corner)
Winslow
min J -0.68 · 1 inverted, at the corner

Key points

  • Inverse Laplace: the logical coordinates are harmonic in physical space, so the neighbour weights are physical lengths.

  • No fold away from a reflex corner, where two quads must share a 270-degree turn.

  • Close to the optimizer’s shape on a valid, ungraded input, for less time.

  • Same boundary handling as Laplace: every constraint and every boundary setting (Constraints and projection).

The equation

For each Cartesian component of the map \(x(\xi,\eta)\):

\[\alpha\,x_{\xi\xi}-2\beta\,x_{\xi\eta}+\gamma\,x_{\eta\eta}=0, \qquad \alpha=|x_\eta|^2,\ \ \beta=x_\xi\!\cdot x_\eta,\ \ \gamma=|x_\xi|^2 .\]

A \(\xi\) neighbour weighs \(\alpha\), the square of the other spacing: on a thin cell the long direction hardly acts. On a surface the constraints drop the normal part of each move, which gives the surface equation.

A sweep

One Gauss-Seidel pass over coloured vertices, \(\alpha,\beta,\gamma\) from the current positions, over the ring of \(2n\) neighbours \(x_k\) (edge neighbours and opposite corners), with \(w_k=\alpha W_{\xi\xi,k}-2\beta W_{\xi\eta,k}+\gamma W_{\eta\eta,k}\):

\[x_v \leftarrow x_v+\omega\,\frac{\sum_k w_k\,(x_k-x_v)}{\sum_k w_k}.\]

vertex

stencil \(W\)

valence 4

the 9-point stencil, \(x_{\xi\xi}=E-2x+W\), \(x_{\xi\eta}=\tfrac14(NE-NW+SW-SE)\)

valence \(n\ne4\)

least-squares quadratic fit on \(n\) congruent rhombi of angle \(2\pi/n\); keeps \(\sum_k w_k>0\)

boundary

\(x\leftarrow\tfrac12(x_{\text{prev}}+x_{\text{next}})\), tangential under Tangent; a corner is held

The guard: a sweep that adds an inverted quad, or drops the minimum scaled Jacobian more than max_sj_drop below the best reached, is retried with \(\omega\) halved (retries), then refused: the stage stops. It also stops below tol.

What it does here

input

reading

Laplace (100 passes)

Winslow (200 sweeps)

L-shape (concave)

inverted quads (input 10)

6

1

L-shape (concave)

of which away from the reflex corner

5

0

free disk

area change (%)

+0.0

+0.0

graded layer, frozen wall

layer thickness change (%)

+229

+207

graded layer, max_sj_drop=1

layer thickness change (%)

+229

+778

graded layer, KeepLayer(rings=4)

layer thickness change (%)

+0

+0

When to use it, and when not

  • Use it where Laplace leaves folds on a concave outline or squeezes a thin curved block, or as a cheaper optimizer on a valid, ungraded mesh. Add it by hand: ("winslow", {"sweeps": 100}).

  • Not on a graded layer without KeepLayer: the guard stops it early here, but relaxed it erases the grading.

  • Not for long runs on a closed surface: with no boundary the mesh can slide over it. Keep sweeps modest; the guard stops a slow slide.

  • A reflex-corner quad can stay inverted: no method here repairs it on a one-block layout; give the corner more quads.

Parameters

parameter

default

meaning

sweeps

200

maximum Gauss-Seidel sweeps

omega

1.0

under-relaxation of every move, in (0, 1]

tol

1e-06

stop when the largest move of a sweep is below this many local edge lengths

normals

None

reference normals (default: the input’s winding; pass the surface’s)

elements

None

boolean mask of quads: only their vertices move (the local variant)

max_sj_drop

0.05

a sweep that adds an inverted quad or lowers the minimum scaled J by more than this below the best reached is retried with omega halved, then refused and the stage stops

retries

3

number of omega halvings tried on a refused sweep

kappa

1000.0

inversion-penalty weight, used only for the F/quad reading in the log

eps

0.05

inversion-penalty threshold on the scaled J, likewise only for the reading

winslow_local is the same call with elements set to the failing quads.

References

  • A. M. Winslow, “Numerical solution of the quasilinear Poisson equation in a nonuniform triangle mesh”, Journal of Computational Physics 1(2), 149-172 (1966), doi:10.1016/0021-9991(66)90001-5. Used for: the elliptic smoothing equation, harmonic logical coordinates in the physical domain.

  • P. M. Knupp, S. Steinberg, Fundamentals of Grid Generation, CRC Press (1993). Used for: the inverse form of the equations and the discrete 9-point stencil.