From 2349ed128ff983160e808bd7e07a6d2149eb381e Mon Sep 17 00:00:00 2001 From: lmoresi Date: Fri, 3 Jul 2026 12:07:31 +1000 Subject: [PATCH] chore(skills): ship UW3 Claude skills with the repository MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Version the domain-specific Claude Code skills alongside the code so they travel with a checkout and are reviewed via PR, rather than living only in each developer's ~/.claude/skills. Mirrors how .claude/commands/*.md are already tracked. Skills shipped (.claude/skills//SKILL.md + supporting assets): - adapt-on-top-faults NVB adapt-on-top fault modelling recipe - adaptive-meshing MMPDE node-movement convection setup - free-surface-convection free-surface integrator recipe - plasticity-solvers VEP / yield solver guidance - uw-visualisation PyVista render templates (+ .py helpers) - cetz-figures typst/cetz diagram authoring (+ examples) .gitignore: un-ignore .claude/skills/ selectively (SKILL.md + .py/.typ/ .json/.png assets), keeping settings and stray files (.DS_Store, caches) ignored — same restrictive style as the commands allow-list. Underworld development team with AI support from Claude Code --- .claude/skills/adapt-on-top-faults/SKILL.md | 236 + .claude/skills/adaptive-meshing/SKILL.md | 361 + .claude/skills/cetz-figures/SKILL.md | 138 + .../skills/cetz-figures/cetz-cheatsheet.md | 312 + .../cetz-figures/examples/curved-bc-data.json | 652 ++ .../examples/domain-demo-data.json | 6275 +++++++++++++++++ .../cetz-figures/examples/domain-demo.png | Bin 0 -> 572471 bytes .../cetz-figures/examples/domain-demo.typ | 124 + .../examples/facet-vs-true-normals.png | Bin 0 -> 68940 bytes .../examples/facet-vs-true-normals.typ | 119 + .../examples/generate-curved-bc-data.py | 127 + .../examples/generate-domain-demo-data.py | 154 + .../examples/generate-mesh-data.py | 107 + .../cetz-figures/examples/mesh-data.json | 252 + .../cetz-figures/examples/mesh-demo.png | Bin 0 -> 64363 bytes .../cetz-figures/examples/mesh-demo.typ | 204 + .../skills/cetz-figures/underworld-bridge.md | 75 + .../skills/free-surface-convection/SKILL.md | 177 + .claude/skills/plasticity-solvers/SKILL.md | 131 + .claude/skills/uw-visualisation/SKILL.md | 116 + .../skills/uw-visualisation/render_field.py | 57 + .../render_field_streamlines.py | 80 + .../skills/uw-visualisation/zoom_compare.py | 59 + .gitignore | 11 +- 24 files changed, 9766 insertions(+), 1 deletion(-) create mode 100644 .claude/skills/adapt-on-top-faults/SKILL.md create mode 100644 .claude/skills/adaptive-meshing/SKILL.md create mode 100644 .claude/skills/cetz-figures/SKILL.md create mode 100644 .claude/skills/cetz-figures/cetz-cheatsheet.md create mode 100644 .claude/skills/cetz-figures/examples/curved-bc-data.json create mode 100644 .claude/skills/cetz-figures/examples/domain-demo-data.json create mode 100644 .claude/skills/cetz-figures/examples/domain-demo.png create mode 100644 .claude/skills/cetz-figures/examples/domain-demo.typ create mode 100644 .claude/skills/cetz-figures/examples/facet-vs-true-normals.png create mode 100644 .claude/skills/cetz-figures/examples/facet-vs-true-normals.typ create mode 100644 .claude/skills/cetz-figures/examples/generate-curved-bc-data.py create mode 100644 .claude/skills/cetz-figures/examples/generate-domain-demo-data.py create mode 100644 .claude/skills/cetz-figures/examples/generate-mesh-data.py create mode 100644 .claude/skills/cetz-figures/examples/mesh-data.json create mode 100644 .claude/skills/cetz-figures/examples/mesh-demo.png create mode 100644 .claude/skills/cetz-figures/examples/mesh-demo.typ create mode 100644 .claude/skills/cetz-figures/underworld-bridge.md create mode 100644 .claude/skills/free-surface-convection/SKILL.md create mode 100644 .claude/skills/plasticity-solvers/SKILL.md create mode 100644 .claude/skills/uw-visualisation/SKILL.md create mode 100644 .claude/skills/uw-visualisation/render_field.py create mode 100644 .claude/skills/uw-visualisation/render_field_streamlines.py create mode 100644 .claude/skills/uw-visualisation/zoom_compare.py diff --git a/.claude/skills/adapt-on-top-faults/SKILL.md b/.claude/skills/adapt-on-top-faults/SKILL.md new file mode 100644 index 00000000..a209d5b1 --- /dev/null +++ b/.claude/skills/adapt-on-top-faults/SKILL.md @@ -0,0 +1,236 @@ +--- +name: adapt-on-top-faults +description: Recipe for Underworld3 FAULT models on an NVB adapt-on-top mesh — resolve a fault Surface by LOCAL refinement (mesh.adapt(engine="nvb") returns a child), drive it from the fault's EXACT signed distance, use rotated strong free-slip (composes with transverse-isotropy where Nitsche does not), recover dynamic topography from the constraint reaction, and run advection-diffusion on the adapted mesh with field transfer across re-adaptation. Reach for THIS for instantaneous/coupled fault-flow problems. For MMPDE node-movement convection use the `adaptive-meshing` skill instead; for rendering use `uw-visualisation`. +--- + +# adapt-on-top-faults + +The validated recipe for **fault problems on a locally-refined (adapt-on-top) mesh**. +Distilled from the annulus fault study (2026-07, `feature/adapt-on-top`). + +**This is the REFINEMENT paradigm**, not the mover one: +- `mesh.adapt(metric, engine="nvb")` bisects the base finest **locally** and returns + a **new child mesh** (`child.parent is mesh`). It is *adapt / re-adapt*, NOT node + movement — non-cumulative (each call re-marks from the static base). The child owns + a custom-P geometric-MG (FMG) tail so solvers on it get multigrid for free. +- For **MMPDE / equidistribution node movement** (deforming the same mesh to a field) + use the **`adaptive-meshing`** skill instead. Different tool; don't mix them up. + +Reference implementations (copy from these — all run np1/2/4): +`~/+Simulations/nvb_parallel_fault_study/` (weak-fault Stokes + FMG), +`~/+Simulations/shear_box_fault_study/` (iso vs TI, orientation sweeps), +`~/+Simulations/annulus_fault_study/` (rotated free-slip + topography + moving fault + +advection-diffusion). Companion skills: `uw-visualisation`, `adaptive-meshing`. + +--- + +## The core loop (fault → metric → adapt → child) + +```python +import underworld3 as uw, numpy as np, sympy + +# Base mesh MUST be built with refinement>=1 (supplies the coarse MG tail that NVB +# extends). Base cellSize ~ 2x the target h_near is the SWEET SPOT (see gotchas). +base = uw.meshing.Annulus(radiusInner=0.55, radiusOuter=1.0, cellSize=0.08, + refinement=1, qdegree=3) # or UnstructuredSimplexBox(..., refinement=2) + +# fault as a Surface (polyline control points, N x 3 with z=0 in 2D) +fault = uw.meshing.Surface("fault", base, fault_pts, symbol="F") +fault.discretize() + +# METRIC = a CALLABLE built from the fault's EXACT signed distance. This is the key +# to clean, non-patchy grading: it is evaluated at each refined level's centroids, +# so it resolves itself at the new resolution (no P1-field aliasing). +metric = fault.refinement_metric_function(h_near=0.02, h_far=0.08, width=0.05, + profile="linear") +child = base.adapt(metric, max_levels=3, engine="nvb") # -> graded child mesh +``` + +- `engine="nvb"` = graded newest-vertex bisection (bounded closure, parallel via the + native `uwnvb` transform; bit-confluent serial↔parallel). `engine="sbr"` = uniform + patch (the default; not graded). NVB is 2D only for now. +- `max_levels` is the isotropic-equivalent depth (NVB runs `2*max_levels` bisection + passes). The metric shape decides the grading; `max_levels` just caps it. + +### Metric options (all accepted by `adapt`) +1. **callable** `metric(centroids)->M` — **preferred for faults**. Evaluated per level. +2. MeshVariable / sympy expression — sampled via `uw.function.evaluate` from the BASE + mesh → a peaked `M=1/h²` aliases → *patchy* levels. Avoid for thin features. + +**Custom refinement shape** — pass any callable. For a *fat, uniformly-fine* band +(not just a thin line at the fault), a flat-core metric: +```python +def metric(pts, _f=fault): + d = _f.unsigned_distance(pts) # EXACT distance at arbitrary points + core, ramp, hn, hf = 0.02, 0.05, 0.01, 0.08 + h = np.where(d < core, hn, np.minimum(hn + (hf-hn)*(d-core)/ramp, hf)) + return 1.0 / h**2 +``` + +`Surface` distance API (all exact, arbitrary query points): +`fault.signed_distance(coords)`, `fault.unsigned_distance(coords)`, +`fault.director` (unit normal = normalised ∇(signed distance); the TI weak-plane +director), `fault.refinement_metric_function(...)`. + +--- + +## Fault as a constitutive weak zone (iso and TI) + +The metric only needs the fault GEOMETRY (pure distance). The constitutive weak zone +needs the fault's distance/normal ON THE CHILD. Two ways: + +```python +# (A) re-home the SAME fault onto the child (cleanest; distance recomputes on child) +fault.remap_to(child) +eta = fault.influence_function(width=0.04, value_near=1e-3, value_far=1.0, + profile="smoothstep") # isotropic weak zone + +# (B) or build a child-side Surface (needed if the base fault is still in use for a +# base-mesh metric — symbol disambiguation refuses a base-mesh symbol in a child +# solver). fault_c = uw.meshing.Surface("fault_c", child, fault_pts); fault_c.discretize() +``` + +Isotropic weak zone: +```python +stokes.constitutive_model = uw.constitutive_models.ViscousFlowModel +stokes.constitutive_model.Parameters.shear_viscosity_0 = eta # drops near fault +``` + +Transverse-isotropic weak PLANE (the physical fault; low fault-parallel shear): +```python +stokes.constitutive_model = uw.constitutive_models.TransverseIsotropicFlowModel +stokes.constitutive_model.Parameters.shear_viscosity_0 = eta_bulk # normal viscosity (constant) +stokes.constitutive_model.Parameters.shear_viscosity_1 = eta # weak near fault -> bulk far +stokes.constitutive_model.Parameters.director = fault.director # unit fault normal +``` +The **TI Jacobian is the full consistent tangent** (not isotropic + defect +correction — that framing is WRONG). The TI velocity FMG V-cycle needs a few more +iters than iso (~8 vs ~2) because of a directional near-null mode the isotropic +point-smoother doesn't damp — bounded and contrast-independent, not a bug. TI needs +~2 elements across the weak zone to resolve (iso ~1). + +--- + +## Rotated strong free-slip (the reason to use this, not Nitsche) + +Nitsche free-slip is INCOMPATIBLE with the TI model (its penalty scales by an +isotropic viscosity). Rotated strong free-slip imposes `u·n̂=0` as an ESSENTIAL +constraint in a per-node (n,t) frame → machine-zero leakage AND composes with TI. + +```python +nhat = mesh.CoordinateSystem.unit_e_0 # exact radial normal (annulus/sphere) +stokes.add_rotated_freeslip_bc("Upper", normal=nhat) +stokes.add_rotated_freeslip_bc("Lower", normal=nhat) +stokes.petsc_use_pressure_nullspace = True # enclosed -> pressure gauge +stokes.solve() # rigid-rotation gauge auto-removed +# Convergence status: read stokes._rotated_freeslip_info = {ksp_reason, +# nonlinear_iterations, rotation_gauge_removed, reaction} — NOT s.snes.getConvergedReason() +# (the rotated solve is a manual loop, not snes.solve). Also sanity-check v·n leakage (~1e-16). +``` + +**Nonlinear rheology / warm-start / timestepping (PR #298, `feature/rotated-snes`):** +rotated free-slip now works *inside* the nonlinear iteration — a nonlinearity probe +auto-dispatches power-law / VEP / TI-with-yield models to a Newton/Picard loop +(`solve_rotated_freeslip_nonlinear`), so warm-started time loops are correct. On the +worktree state *before* #298 lands, the rotated path is a SINGLE linear solve — it +silently returns one Newton linearisation from `u=0` for a nonlinear model. If you +run nonlinear TI + timestepping with rotated free-slip, make sure #298 is in. + +**Dynamic topography** from the constraint reaction (the reason to bother): +```python +h = uw.discretisation.MeshVariable("h", mesh, 1, degree=1) +stokes.dynamic_topography("Upper", h, buoyancy_scale=rho_g) # h = -(σ_nn - mean)/ρg +xs, sig = stokes.boundary_normal_traction("Upper") # or the raw σ_nn (lumped-mass) +``` + +--- + +## FMG under rotated free-slip — READ THIS (rough edge) + +`rotated_bc.solve_rotated_freeslip` builds its OWN fieldsplit KSP and uses custom-P +FMG **only if `solver._custom_mg` is set** (via `set_custom_fmg`). It does **not** +read the native `dm_hierarchy`. So: +- On an `adapt()` **child**, the mesh-owned custom-P tail is auto-picked-up for the + Stokes velocity block → FMG for free (standard, non-rotated solves). +- On a plain **refined `Annulus`** with **rotated** free-slip, native FMG is ignored; + to get FMG you must build a coarse-mesh tail and call: + ```python + from underworld3.utilities.custom_mg import set_custom_fmg + set_custom_fmg(stokes, [Annulus(cs=0.16), Annulus(cs=0.08)], field_id=0) # velocity block + ``` + (~4 velocity iters vs ~26 GAMG). Otherwise it falls back to GAMG (fine, just slower). + +The default velocity-block preconditioner and the pressure Schur (`1/η`) are already +near-optimal for TI — do **not** hand-roll a "TI-aware Schur"; measured, the default +`1/η₀` beats every alternative (the weak TI mode is fault-parallel shear, which is +volume-preserving, so pressure sees η₀). + +--- + +## Moving fault + re-adaptation + field transfer + +`adapt()` is non-cumulative and deterministic. Move the fault, re-adapt from the +static base, carry any field by interpolation: + +```python +for step in range(N): + fault_pts = move(fault_pts, step) # kinematics + fault = uw.meshing.Surface(f"fault{step}", base, fault_pts, symbol="F"); fault.discretize() + child = base.adapt(fault.refinement_metric_function(...), max_levels=3, engine="nvb") + # verify: folded=0 (all cell |vol|>0), base unchanged (non-cumulative) + # carry a field child_{k-1} -> child_k by interpolation: + T = uw.discretisation.MeshVariable(f"T{step}", child, 1, degree=1) + if T_prev is None: + T.data[:,0] = uw.function.evaluate(T0_expr, T.coords) + else: + T.data[:,0] = uw.function.evaluate(T_prev.sym, T.coords) # mesh->mesh interp + T_prev = T +``` +Transfer error is **non-accumulating** for a smooth field (bounded by the per-mesh P1 +representation floor, ~0.2% on a fine base, ~3% on a coarse base) — repeated +re-meshing does not diffuse a smooth field away. Sharp fronts lose more per transfer. + +--- + +## Advection-diffusion on the adapted mesh + +```python +T = uw.discretisation.MeshVariable("T", child, 1, degree=2) +adv = uw.systems.AdvDiffusionSLCN(child, u_Field=T, V_fn=stokes.u.sym, order=1, + monotone_mode="clamp") # clamp = bounded, no overshoot +adv.constitutive_model = uw.constitutive_models.DiffusionModel +adv.constitutive_model.Parameters.diffusivity = 2e-4 +adv.f = 0.0 +dt = 0.015 # FIXED dt — SLCN is semi-Lagrangian (unconditionally + # stable). estimate_dt() reports the tiny fault-band + # Courant limit; do NOT use it to size the step. +for step in range(nsteps): + adv.solve(timestep=dt) +``` +- **SLCN dt is NOT Courant-limited** by the fine fault-band cells — pick dt from the + coarse-region advection, verify accuracy. +- The scalar AD auto-FMG-injection bug (velocity-block custom-P mismatching a scalar + operator on adapt children → PtAP error 60) is **FIXED**: `auto_inject_custom_mg` + now calls `snes.setUp()` before reading the finest reduced map (so the DM section + is the finalized space the operator lives on) and validates that map against the + assembled operator. Custom-P installs successfully on scalar SLCN AdvDiffusion on + NVB adapt children (no skip-guard, no workaround) — `bugfix/custom-mg-parallel`. + +--- + +## Gotchas / rough edges (candidates to fix as we go) + +| symptom / edge | cause & handling | +|---|---| +| patchy along-fault refinement (level 4 here, 2 there) | P1-interpolated `M=1/h²` aliasing. Use the **callable exact-distance** metric. | +| child solver rejects `fault.distance.sym` (foreign-mesh error) | symbol disambiguation. `fault.remap_to(child)` or build a child-side `Surface`. **Rough edge**: needing two Surface objects. | +| adapt added-cell count jitters ±30% step-to-step | small-number geometry on a thin band. Deterministic; quality (near-fault h) is constant. Base ≈ **2× target** minimises it (CoV ~10% at 0.08 base vs 19% at 0.14, 24% at 0.05). | +| tiny AD timestep / slow advection | `estimate_dt` returns the fault-band Courant limit. Use a fixed dt (SLCN is unconditionally stable). **Rough edge**: `estimate_dt` not adapt-aware. | +| surface-breaking fault: huge local vmax; topo peak keeps growing | real stress singularity at the outcrop. Topo peak **saturates** (integrable/log, bounded by finite buoyancy) — far field is fine; only the pointwise outcrop value is mesh-dependent. | +| rotated free-slip Stokes "not converged" | `s.snes` isn't the solving object (manual loop). Read `stokes._rotated_freeslip_info['ksp_reason']` / `['nonlinear_iterations']` (PR #298); sanity-check v·n leakage. | +| nonlinear TI/VEP + rotated free-slip + timestepping gives a wrong (frozen) answer | pre-#298 the rotated path is ONE linear solve (one Newton step from u=0). PR #298 runs it inside a Newton/Picard loop — ensure it's merged for nonlinear/warm-start runs. | +| FMG not used under rotated free-slip | rotated_bc uses a self-contained KSP and reads `solver._custom_mg`, not the native `dm_hierarchy` — `set_custom_fmg(..., field_id=0)`. FUNDAMENTAL (DM-less rotated operator can't use the DM-coupled fieldsplit; #298 keeps it), not a quick fix. | +| NVB at np>1 raises NotImplementedError | native `_nvb_transform` extension not built (needs the custom-PETSc/amr env). | + +**Build/run**: this lives on the `feature/adapt-on-top` worktree; env +`.pixi/envs/amr-dev/bin/{python,mpirun}`; `./uw build` after source changes. diff --git a/.claude/skills/adaptive-meshing/SKILL.md b/.claude/skills/adaptive-meshing/SKILL.md new file mode 100644 index 00000000..429efbb3 --- /dev/null +++ b/.claude/skills/adaptive-meshing/SKILL.md @@ -0,0 +1,361 @@ +--- +name: adaptive-meshing +description: The canonical, workable recipe for Underworld3 moving-mesh / adaptive-mesh convection (annulus stagnant-lid, faults, free surface). Reach for THIS first when setting up any model with a deforming or adapted mesh — it encodes the combination that does not blow up, tangle, or inject spurious energy, and explains the failure modes so you don't re-derive them. Use before choosing movers, free-slip BCs, restart, or field-transfer options. +--- + +# adaptive-meshing + +The one workable combination for UW3 moving/adaptive-mesh convection, distilled +from many sessions that each re-picked options and stomped on each other's +defaults. **Start from this recipe; change one thing at a time and verify.** + +Reference implementation (current, validated): the **`underworld3.workflows` +adaptive-convection example** — +`docs/examples/workflows/adaptive_convection/` on the `feature/adaptive-convection` +worktree (`config.py`+`simulate.py` no-fault; `fault_config.py`+`fault_simulate.py` +fault; `diagnostics.py`, `render.py`, `compare.py`). Express adaptive runs as a +WORKFLOW (a `WorkflowConfig` + `@workflow_step` DAG + `Run`), NOT a monolithic +driver. The older `scripts/fault_convection_adapt_loop.py` (feature/fault-convection) +is superseded — its ideas are folded into the workflow + this skill. +Companion: the `uw-visualisation` skill for rendering results. + +**Choosing the paradigm:** THIS skill is the **mover** (node movement / +equidistribution, `smooth_mesh_interior`) — the mesh deforms to follow a field. For +**local refinement** instead (`mesh.adapt(engine="nvb")` returns a refined CHILD; a +fault resolved by a fine band + custom-P FMG + rotated free-slip + dynamic topography ++ advection-diffusion), use the **`adapt-on-top-faults`** skill. Different tools — +don't mix them. + +--- + +## Mover quick-start (copy-paste — this is the hard-to-discover bit) + +The mesh mover is `uw.meshing.smooth_mesh_interior`. Minimal correct setup to +adapt a mesh to a field `T` each step: + +```python +import underworld3 as uw + +# metric from |grad T|: refinement = finest:coarsest cell-size ratio (~5). +# Use refinement=R, NOT strategy= (strategy caps at ~2 and under-grades). +rho = uw.meshing.metric_density_from_gradient( + mesh, T, refinement=5, coarsening="auto", metric_choice="front-following") + +# move the mesh — mmpde: variational, non-folding, clusters AND aligns cells. +# It OWNS field transfer (remaps T + SLCN history, fires on_remesh hooks). +uw.meshing.smooth_mesh_interior( + mesh, metric=rho, method="mmpde", + method_kwargs=dict(step_frac=0.2, accel="cg", momentum=0.0), # mmpde's OWN kwargs + slip_surfaces=True, # boundary nodes slide tangentially (parallel-safe) + skip_threshold=0.9) # skip the move when the mesh is already aligned +``` + +For a **sharp feature (fault)** pass an anisotropic SPD TENSOR metric instead of +the scalar `rho` (thin ACROSS the feature normal n) and bake a gmsh base: + +```python +import sympy +n = sympy.Matrix([nx, ny]) # constant fault-normal unit vector +d = dfac.sym[0] # DIRECT unsigned distance field (P1) +M = rho * sympy.eye(2) + (Rf**2 - 1.0) * sympy.exp(-(d/w)**2) * (n * n.T) +# mesh built with: uw.meshing.Annulus(..., refine_lines=[xy], refine_size_min=smin) +uw.meshing.smooth_mesh_interior(mesh, metric=M, method="mmpde", + method_kwargs=dict(step_frac=0.2, accel="cg", momentum=0.0), + slip_surfaces=True, skip_threshold=None) # tensor metric: do the skip check yourself +``` + +Pitfalls that make it "not work": `method="anisotropic"`/`"ot"` (shred/sliver — use +mmpde); injecting `relax`/`n_outer` (starves mmpde's CG); `strategy=` instead of +`refinement=R` (under-grades); a scalar bump for a fault (refines a fat corridor, +leaves the centre coarse); signed `Surface.distance.sym` for `d` (bleeds along the +line extension — use a direct unsigned distance). Full rationale + the rest of the +recipe (BCs, restart, field transfer, cadence) below. + +--- + +## The canonical recipe (defaults that work) + +### 1. Mover — mmpde +`uw.meshing.smooth_mesh_interior(mesh, metric=..., method="mmpde", +method_kwargs=dict(step_frac=0.2, accel="cg", momentum=0.0), slip_surfaces=True)`. +- mmpde = Huang–Kamenski variational, **non-folding** (energy → ∞ as detJ → 0), + clusters AND aligns cells. It is the only clean mover. +- **NOT** the `anisotropic` mover (shreds/freezes on static features) or `OT` + (slivers — OT is optimal transport, sliver-prone, not a route around the cap). +- Do **not** inject `relax`/`n_outer` into mmpde (those are the anisotropic + mover's knobs and starve mmpde's internal CG). + +### 2. Metric +- Thermal: `metric_density_from_gradient(mesh, T, refinement=R, + metric_choice="front-following")` — `refinement=R` (≈5) is the finest:coarsest + grading ratio; named `strategy=` caps at ~2 and under-grades. R≈5 extracts ~all + the grading the node budget/layout allows; don't over-tune R (benign no-op above + budget). +- Fault / sharp feature: a **hand-built anisotropic SPD tensor** + `M = ρ·I + (Rf²−1)·exp(−(d/w)²)·n nᵀ` (thin ACROSS the feature normal n). A + scalar bump refines a fat isotropic corridor and leaves the centre-line coarse. +- Use a DIRECT unsigned distance field (geometry_tools) for `d`, NOT the Surface's + signed `.distance.sym` (its zero-contour bleeds the metric along the line + extension). + +### 3. Creation vs maintenance (the cap) — and the gmsh base COMPOUNDS +mmpde **cannot create** strong refinement from a uniform mesh — it saturates at a +fixed-topology cap (~1.8× on the fault, re-measured), because the mover has a FIXED +node budget (it redistributes, never adds nodes). To go finer you need MORE NODES, +which only gmsh can add at construction. **Bake refinement into the gmsh base** +(`Annulus(refine_lines=[xy], refine_size_min=...)` — now real, see the Faults +section) and the mover doesn't just MAINTAIN it: the extra gmsh nodes lift it off +its budget cap so it **compounds** (gmsh f2 base 0.44 → mover 0.29; f3 base 0.30 → +mover 0.19 ≈ 5× finer). Measured (Ra1e6 Rf8 res24, all folded=0): +uniform 0.55 (~1.8×) → gmsh-f2 0.29 (~3.4×) → gmsh-f3 0.19 (~5×). Judge by +fault/bulk nearest-neighbour spacing RATIO, never by global misalignment. + +### 4. Cadence — adapt as often as you like (forced every step is FINE) +Adapt every step or every few — on a CORRECT build (see §5) the mover converges +dead-flat and forced every-step adaptation under vigorous convection is stable +(validated: 39/39 forced adapts, mesh folded=0, area-ratio ~14 flat). Skipping +when aligned just saves cost. (An earlier claim that forcing adaptation +"tangles / over-injects energy" was WRONG — that was the deformed-eval bug in §5.) + +### 5. THE bug that wrecked adaptation (holes) — and the fix +SYMPTOM: giant empty cells / holes in the adapted mesh, intermittent area-ratio +spikes, convection wrecked. ROOT CAUSE (proven): `uw.function.evaluate` +**mis-locates points on a deformed mesh** (the nav kd-tree `mesh._nav_coords` was +captured from the ORIGINAL coords and never refreshed), so the metric — built with +strictly-positive nodal values — evaluates to **NEGATIVE garbage** (even at its own +DOFs) → non-SPD → the mover wrecks the mesh. FIX (both): +- **`8a9d2ff2`** (refresh `_nav_coords` + projected normals on every deform) — + the real fix; makes `function.evaluate`/`points_in_domain` track deformation. +- **Monotone RBF metric bake** (in `_winslow_mmpde`): Shepard-interpolate the + metric from its **positive nodal values** — a convex average is guaranteed ≥0 + (monotone) + fast (no cell-location). Use RBF for the metric; it doesn't need + high-precision eval. +With these, the metric stays positive/SPD; #259's SPD-floor never fires (harmless). +The mover, `accel`, and `refinement=R` (e.g. R=5) are all FINE — they were +red-herring symptoms of the eval bug. Always confirm a CLEAN BUILD first +(`./uw build`; `md5 site-packages/.../smoothing.py == src`); a stale build is its +own cause of holes. + +### 6. Stokes free-slip +Penalty (`add_natural_bc(KFS·v·n·n)`, KFS≈1e6) or Nitsche γ=10 both work on a +UNIFORM mesh. Nitsche preferred for sharp fault corners. Do NOT diagnose free-slip +with nodal v·n: Nitsche enforces v·n=0 weakly, so nodal v·n is large even when +correct — use vrms (kinetic energy). (An earlier "warm-restart × Nitsche → blow-up, +use cold restart" diagnosis was WRONG / confounded by the §5 eval bug + a stale build.) + +**On an ADAPTIVE mesh, Nitsche free-slip γ=10 is TOO SOFT → intermittent vrms +spikes at adapt steps** (under-enforcement, NOT a blow-up: single-step velocity +garbage that T survives because the solve is cold-restarted — e.g. vrms +144→8887→144). The mover pins the boundary and refines just beneath it, creating +high-aspect-ratio near-boundary cells whose Nitsche inverse-estimate constant needs +a bigger penalty. Two fixes, BOTH good (corroborated across sessions): +- **Nitsche γ=100** (not 10) for a free-slip top on an adaptive mesh — clean, smooth + signal. This is INDEPENDENT of the penalty's mesh-size scaling: local vs global `h` + are equivalent here (both garbage at γ=10, both clean at γ=100). +- **Don't fully pin the boundary in the mover** — let it tangential-slip + (`slip_surfaces=True`, the §1 default), NOT `pinned_labels=[Upper,...]`. Avoiding + the distorted near-boundary cells lets γ=10 work. Pin a boundary only when you must + hold a prescribed shape (e.g. a free-surface height the integrator just set). + +Aside — free-SURFACE held-lid is the OPPOSITE problem: the GLOBAL `h = +get_min_radius` drifts BELOW the surface cell as the interior refines → the Nitsche +penalty OVER-stiffens → a spurious one-step surface "mountain" (vhmax spike). Fix = +a LOCAL per-cell `h` via `mesh.cell_size()` (deformation/adaptation-tracking); +`add_nitsche_bc(..., local_h=True)` is the default (PR #275). So held-lid wants LESS +penalty (local-h), free-slip-adaptive wants MORE (γ=100) — different knobs. + +### 7. Advection + timestep +`AdvDiffusionSLCN(mesh, u_Field=T, V_fn=V.sym, theta=1.0, monotone_mode='clamp')`. +theta=1.0 (backward Euler) for stability; monotone clamp bounds SL overshoot; +`V_fn=V.sym` is the PHYSICAL velocity. **dt can be LARGE — SLCN is unconditionally +stable; the smallest/median adapted cell does NOT have to govern dt.** Use +`estimate_dt(percentile=50)` × a multiplier (e.g. dt_mult 3–5) to advance physical +time faster (needed to develop convection in stiff stagnant-lid regimes). + +### 8. Rheology +- **isotropic** (linear) ⇒ `snes_type=ksponly` (one exact KSP solve; default + newtonls rejects steps on vigorous flow). Cheap. Use for resolved features. +- **TI / anisotropic** weak fault (`TransverseIsotropicFlowModel`: + `shear_viscosity_0=η_FK`, `shear_viscosity_1=η_weak`, `director`=fault normal): + keep the **default newtonls** (NOT ksponly — ksponly converges to the WRONG + answer); use **penalty** free-slip (Nitsche trips the anisotropic-Jacobian bug); + **GAMG** (FMG ~7× slower). Measured on the gmsh-resolved + one-sided base + (Ra1e6 Δη1e3): ran clean to t=0.06, folded=0, vrms→20, **~10×** the isotropic + cost per step (GAMG eats the 1000× anisotropic contrast — well under the feared + 20×). The TI fault visibly steers the flow (persistent recirculation at the trace). +- Viscosity-bearing fields are **P0/P1 only** (positivity; higher order overshoots). + FK viscosity `η = exp(θ(1−T))`, θ = ln(Δη). Floor a weak zone, don't multiply → 0. + +### 9. Build discipline +- `./uw build` after ANY source change; verify `uw.__file__` is in site-packages + and (when debugging) that `site-packages/.../smoothing.py` matches `src/...`. A + **stale mover build is a top cause of "giant empty elements / holes"** in the + adapted mesh. +- **NEVER** `pip install -e .` (contaminates all envs). Run from inside the worktree + (`pixi run -e amr-dev`). + +--- + +## Faults — the gmsh-resolved, on-fault, one-sided recipe (validated 2026-06-23) + +The full fault recipe, hard-won. Reference implementation: the +`underworld3.workflows` adaptive-convection example +(`docs/examples/workflows/adaptive_convection/{config,fault_config}.py`, on the +`feature/adaptive-convection` worktree — built on the FIXED mover base). Use the +WORKFLOW system, not a monolithic driver. + +### gmsh line refinement (`refine_lines`) — NOW IMPLEMENTED in `Annulus` +```python +uw.meshing.Annulus(radiusOuter=1, radiusInner=0.5, cellSize=1/24, + refine_lines=[xy], # list of (N,2) polylines (model coords) + refine_size_min=cellSize/3, # cell size ON the line (factor 2-3 is plenty) + refine_dist_min=0.02, refine_dist_max=0.12) # size ramps back to cellSize +``` +A gmsh **Distance + Threshold** field along the polyline; INTERIOR points are +embedded so nodes land ON the line. Backward-compatible (default `None`). It is a +core meshing change → lands as its own small meshing PR, separate from the workflow +example. (Before this session it was only *called* in old scripts and never existed +— don't trust `refine_lines` on any branch but the one carrying this commit.) + +### Keeping refinement ON the fault (the metric-composition trap) +The fault metric is `M = ρ·I + (Rf²−1)·exp(−(d/wₙ)²)·n nᵀ` with the isotropic SIZE +density `ρ`. **Do NOT fuse the fault density into ρ_T by PRODUCT** — the cold +surface thermal BL (ρ_T ~ R^d ~ 20–25) out-competes the fault near its top and the +refinement drifts ABOVE the fault, starving the deep fault ("seems to repel"): +- Use `ρ = max(ρ_T, fault_ρ)` (NOT `ρ_T · fault_ρ`). +- Make `fault_ρ = 1 + amp·gauss` with **amp > ρ_T** (~25 at R=5) so the fault wins + the max along its whole length. +- DIAGNOSE this by comparing the gmsh BASE (step 0, refinement centered on the + fault — correct) vs the DEVELOPED mesh (drifted above) → it's the MOVER's metric, + not gmsh. Render the mesh with the **fault trace overlaid** (`render.py --fault`). + +### One-sided fault influence (the clean control) +Even with max+amp, the symmetric metric DEMANDS both flanks while realized nodes +drift to the hanging wall. Make it one-sided: +- Store the **SIGNED** distance in `dfac` (the gaussians square it, so magnitude is + unchanged — the sign only feeds a `0.5(1+tanh(m·d/w))` gate). Probe the + radially-outward side once to define "upper" regardless of the distance tool's + orientation convention. +- `fault_metric_side` (both/upper/lower) gates the refinement; `fault_rheology_side` + gates the weak zone. **`both=upper`** is the physical recipe: a one-sided + hanging-wall damage zone with the mesh refined on the same side (refinement and + rheology coincide; gmsh-f3 → fault/bulk ~0.19, folded=0). `metric_side=lower` + instead pulls refinement onto the footwall to counter the upward drift. + +### The wedge fill (anti-collision) +The fault pull and the surface-BL pull compete for the coarse cells in the radial +sliver BETWEEN them. `fault_wedge=True` gmsh-fills that wedge (sample radial +segments from each fault point up to the surface, add as a second `refine_lines` +point set) so both pulls have their own budget and merge into one coherent fine +wedge instead of colliding. + +### Weak zone (rheology) — geometric blend + gaussian PEAKED on the fault (2026-06-24) +The weak-zone viscosity blends `η_FK` (background) and `floor` (fault) by the +influence `f`∈[0,1] (P1, positive). Get it right with TWO rules (verify by +reconstructing + rendering the REALIZED η field — `render_fields.py` — and the +combined `η_FK(T)^(1−f)` field; never assume the floor is reached): +- **GEOMETRIC blend `η_weak = η_FK^(1−f)·floor^f`** (NOT arithmetic + `η_FK·(1−f)+floor·f`, whose `(1−f)` term leaks the stiff-lid background through + → η≈8 at f=0.97 in a 1000× lid). Geometric reaches the floor genuinely (η≈1.2 at + f=0.97) AND ties the contrast to the LOCAL η_FK — so the fault automatically + bites hardest where it cuts the cold stiff lid (physically correct), nothing in + the hot interior. +- **`f` must be PEAKED on the fault (gaussian), NOT a TOPHAT block.** A top-hat + makes a uniform weak BLOCK; its sharp edges mean strain follows ∇f (TWO parallel + lines at the block edges, not on the fault), and a one-sided block is offset to + the hanging wall (η_1=1 core sits ABOVE the drawn line). Use a **gaussian + `f=exp(−(d/w)²)`** (peak f=1 ON the fault → η_1=1 on the drawn line, strain + localizes INTO the slot as a single feature). side=both = symmetric; side=upper = + hanging-wall halo (gaussian taper up, sharp footwall recovery — NO halving gate). + Centre the METRIC too (`metric_side=both`) so nodes refine on the line. +THERMAL CONTRAST (Louis's insight, confirmed): even a symmetric gaussian gives a +much bigger η-contrast on the COLD (upper/surface) side than the warm (footwall) +side, because η_FK rises ~1000× toward the surface — so the fault's dynamical +prominence naturally concentrates in the cold lid. This is a feature, not a bug. +Verified (gmsh-f3, gaussian width=0.025, side+metric=both): weak zone centred on +the drawn fault on the adapted mesh, folded=0. TUNE AT STEP 0 (build mesh+fields, +no solve — fast; plot the 1D η_1(d) profile + the 2D field). COST: genuine 1000× +TI contrast ~25–145 s/step (cold-start steps slow, ~25 s once developed; GAMG). +For TI see §8. (`fault_config.py`: `fault_profile=gaussian` (default still tophat — +pass gaussian), geometric blend in `create_solvers`; `render_fields.py` light maps.) + +--- + +## Failure modes — symptom → cause → fix + +| Symptom | Cause | Fix | +|---|---|---| +| Giant empty cells / holes in adapted mesh; intermittent area-ratio spikes | `function.evaluate` mis-locates on deformed mesh → metric → negative/non-SPD (the real bug). OR stale build. | `8a9d2ff2` + monotone RBF metric bake; `./uw build` + verify md5 site-packages==src | +| Decays when it should convect | over-diffusion OR under-resolution OR dt too small to develop | check a resolved arbiter (finer space+time); raise node budget; **larger dt** (dt_mult 3–5) | +| Fault won't refine under convection | mmpde creation cap; field gives no signal in cold lid | gmsh `refine_lines` base — the gmsh nodes let mmpde COMPOUND past the cap (~5×) | +| Refinement drifts ABOVE the fault / "repels", deep fault starved | fault density fused by PRODUCT with ρ_T → thermal BL out-competes the fault near the surface | `ρ = max(ρ_T, fault_ρ)`; `amp > ρ_T` (~25); or one-sided `fault_metric_side`; +`fault_wedge` | +| Refinement on both flanks but you want one side | symmetric (unsigned-distance) metric | signed `dfac` + `fault_metric_side`/`fault_rheology_side` tanh gate (`both=upper` = physical) | +| TI fault solve: ksponly gives wrong answer | ksponly skips the Picard the inexact GAMG inner solve needs | keep default newtonls; penalty free-slip; GAMG (~10× isotropic cost, fine) | +| free-slip ADAPTIVE: vrms spikes at adapt steps (e.g. 144→8887→144), T stays bounded | Nitsche γ=10 too soft on the distorted near-boundary cells the pinned-top+interior-refine creates (under-enforcement) | **Nitsche γ=100** (not 10); OR don't pin the boundary (tangential-slip `slip_surfaces=True`). h-scaling (local vs global) is moot here | +| free-SURFACE held-lid: spurious one-step surface "mountain" / vhmax spike | global `h=get_min_radius` drifts below the surface cell as interior refines → Nitsche OVER-stiff | LOCAL per-cell h: `add_nitsche_bc(local_h=True)` (default, PR #275) = `mesh.cell_size()` | + +**Diagnose by:** vrms (KE), Nu (`BdIntegral` surface flux), fault/bulk NN-spacing +RATIO (cKDTree), folded-element count + min cell area. Compare runs **at matched +physical time t** (dt differs between meshes), not by step number. When unsure +whether behaviour is physical, build a **resolved arbiter** (uniform mesh finer in +BOTH space and time) — if it agrees with one candidate, that's the truth. + +## Diagnostics (in the workflow example, reusable) +`diagnostics.py`: `mesh_quality` (folded / area-ratio / aspect), `nn_spacing_ratios` +(BL + fault/bulk), `NusseltSurface`, `vrms`, `History`. `render.py`: T+mesh+ +streamlines on the `Run` layout, **`--fault`** overlays the fault trace (read from +the run manifest) + **`--focus-fault`** auto-crops on it + **`--mesh-only`** for the +clean mesh, **`--all`** for every frame. `compare.py`/`fault_refine_plot.py`: +matched-physical-time comparison + fault/bulk-ratio time series. +**Rendering long runs as they go:** a completion-only Monitor is NOT enough — arm a +Monitor that POLLS for new `run.mesh.NNNNN.xdmf` checkpoints and emits the index, so +you render each step as it lands. +**Checkpoint an ADAPTIVE mesh with `meshUpdates=True`** (per-step geometry) or the +saved frames pair deformed fields with stale step-0 geometry. + +## The verified canonical command + +Requires the fix (§5): `8a9d2ff2` (deformed-mesh point-location) + the monotone RBF +metric bake in `smoothing.py`. Validated 2026-06-22 at vigorous Ra1e6/Δη1e3 +stagnant-lid: forced adapt EVERY step (39/39), larger dt, → vrms→18, Nu→1.86, +|v|max 61, mesh CLEAN every frame (folded=0, area-ratio ~14 flat), no abort. + +```bash +# no-fault baseline (the workflow CLI; one flag per config field) +pixi run -e amr-dev python docs/examples/workflows/adaptive_convection/simulate.py \ + --output-dir ~/+Simulations//baseline \ + --rayleigh 1e6 --delta-eta 1e3 --cellsize 0.0417 \ + --resolution-ratio 5 --adapt-every 1 --dt-mult 4 --max-steps 80 --max-t 0.06 + +# resolved fault: gmsh base (factor 3) + on-fault + one-sided hanging wall + TI +pixi run -e amr-dev python docs/examples/workflows/adaptive_convection/fault_simulate.py \ + --output-dir ~/+Simulations//fault \ + --rayleigh 1e6 --delta-eta 1e3 --cellsize 0.0417 --resolution-ratio 5 \ + --fault-base-smin 0.0139 --fault-anisotropy 8 \ + --metric-combine max --fault-refine-amp 25 \ + --fault-rheology-side upper --fault-metric-side upper \ + --rheology ti --dt-mult 4 --max-steps 40 --max-t 0.06 +``` + +Key choices, verified: +- **`--resolution-ratio 5`** (R=5) is fine — the mover handles it on a correct build. +- **`--adapt-every 1`** force adapt every step (the strongest mesh test). +- **`--dt-mult 4`** — larger dt for STABILITY is fine (SLCN unconditional); but it + costs transient ACCURACY (over-diffusive backward-Euler DELAYS the convective + onset vs a resolved arbiter — dt×1.5 recovers it). Use small dt_mult for faithful + transients, large to reach quasi-steady fast. +- **`--freeslip penalty`** (default) — REQUIRED for TI (Nitsche trips the + anisotropic-Jacobian bug). It's the raw velocity penalty `kfs·(v·n)n`. +- Fault: `--fault-base-smin` (gmsh resolve), `--metric-combine max` + + `--fault-refine-amp 25` (keep refinement ON the fault), `--fault-*-side` (one-sided), + `--rheology ti` (real fault). Drop the fault flags for the no-fault control. + +Render with `render.py` (`--fault --focus-fault` to see the trace + refinement +coincide; `--mesh-only`; `--all`). Judge the mesh by folded/area-ratio, the physics +by vrms/Nu, ALWAYS at matched physical time. + +## Related memory +`project_adaptive_convection_as_workflow` (THIS session: workflow port, gmsh +refine_lines, on-fault/one-sided/wedge, TI, dt-accuracy), `project_mmpde_holes_real_root_cause`, +`project_fault_refine_fixed_topology_cap`, `project_uw_workflow_landing`, +`feedback_debug_adaptive_solver_method`, `project_fault_convection_working_settings`. diff --git a/.claude/skills/cetz-figures/SKILL.md b/.claude/skills/cetz-figures/SKILL.md new file mode 100644 index 00000000..976f4c97 --- /dev/null +++ b/.claude/skills/cetz-figures/SKILL.md @@ -0,0 +1,138 @@ +--- +name: cetz-figures +description: Build schematic / labelled-geometry figures for underworld3 papers using Typst + cetz. Use when the figure is primarily about topology, annotation, and math-typeset labels (meshes, solver diagrams, flow charts). Prefer Python → SVG → `#image()` for data-heavy figures (fields, colormaps, arrow plots) instead. +--- + +# cetz-figures + +Scaffold for Typst/cetz figures in `publications/**/figures/` alongside the +existing `arrays-sync-flow.typ`. This skill exists because upstream Claude +sessions draft cetz blind — this one actually compiles. + +## When to use cetz + +- Mesh schematics with a few labelled triangles / vertices / control points. +- Solver / data-flow diagrams (see `arrays-sync-flow.typ` in this repo). +- Anything where labels should render in the paper's math/text fonts. +- Anything that benefits from recompiling with the paper. + +## When to use something else + +- **Data-heavy plots** (scalar fields, colormaps, quiver plots, anything with + dense per-pixel or per-cell data) — generate SVG from Python/matplotlib, + include via `#image("foo.svg")`. cetz will fight you here. +- **Geometry computation** (Delaunay, intersections, interpolation) — do it in + Python offline, emit JSON with the shape `{"vertices": [...], + "triangles": [...], ...}`, let Typst just draw. + +## When NOT to use TikZ + +Evaluated and rejected: +- Slower compile than Typst. +- Drags in a LaTeX toolchain that isn't otherwise required by the project. +- No Typst math-font advantage over cetz for labels in our paper context. + +Keep TikZ in back pocket only if a co-author insists on TikZ source. + +## Before you draw (thesis-first discipline) + +When a user hands you a figure request — especially one replacing an +existing ASCII sketch, whiteboard photo, or reference figure — **do not +start transcribing**. The source artefact is a hypothesis about what +to communicate, not a specification. Before opening cetz: + +1. **State the thesis in one sentence.** What is the figure arguing? + If you can't write it plainly, you don't yet understand the figure. + Ask the user to articulate it. + +2. **Honestly audit the source.** If the original ASCII / sketch is + being replaced, it's often replaced *because it doesn't land well*. + Say what's broken about it before proposing the replacement — the + user often agrees and the new figure can do more than the old. + +3. **Enumerate design decisions as explicit questions, not assumptions.** + For a curved-boundary normals figure that's typically: + - Geometry (circle / ellipse / arc span / zoom level) + - Sampling density (number of facets, quadrature points per facet) + - Overlay vs. side-by-side + - Whether to show error quantitatively (arcs, annotations) or leave + it as a visible angle + - Where the figure lives in the repo (which doc / which branch) + Present a proposed interpretation with the decisions flagged; let + the user resolve them before you compile. + +4. **Only then open cetz.** Iterate visually — the discipline above is + about not committing to a design prematurely, not about planning + exhaustively. Once you start, compile often. + +The user's phrase "I'm not quite sure what this is intended to +illustrate" is the canonical trigger for this discipline. If you hear +it (or catch yourself about to transcribe without checking), stop and +do the four steps above. + +## Key gotchas (hit during iteration — not hypothetical) + +1. **Don't name helper parameters `anchor`.** cetz internals treat `anchor:` + specially and you get a cryptic panic: `"Unknown anchor 'anchor' for + element 'none'"`. Use `align-to` or similar. See `cetz-cheatsheet.md`. + +2. **Clipping is a Typst concern, not a cetz one.** cetz has no `\clip`. + Wrap the canvas in `#box(clip: true, width: ..., height: ..., ...)` and + draw slightly oversized inside the canvas — the box clips the overflow. + +3. **Painter's algorithm — order matters.** Draw the background first, the + highlight second. No z-index exists. Verified in `mesh-demo.typ`. + +4. **Semi-transparency via `rgb(r, g, b, a)`** (alpha 0–255) or + `color.transparentize(col, 50%)`. Both work for fill and stroke. + +5. **Math in labels just works.** `content(pos, $v_1$)` renders in the + document math font. No escape hatch needed. This is a real cetz win over + SVG. + +6. **`import cetz.draw: *` inside the canvas closure.** Without it, `line`, + `circle`, `content` aren't in scope. Helper functions that draw need + their own `import cetz.draw: *` line inside. + +## Project layout pattern + +Each blog post or paper section gets its own subdirectory under +`figures/`, so a post's figures travel together: + +``` +publications/blog-posts/figures/ +└── / + ├── .typ # cetz drawing + ├── .png # committed output + ├── -data.json # (optional) precomputed geometry + └── generate-.py # (optional) Python that writes the JSON +``` + +Concrete example: `publications/blog-posts/figures/finding-particles/` +holds `mesh-demo.*` and `domain-demo.*` for the post +`finding-particles.md`. + +The JSON intermediate is the forward bridge to underworld3 — see +`underworld-bridge.md`. + +## Reference files + +- `cetz-cheatsheet.md` — what worked from memory vs. needed lookup. +- `underworld-bridge.md` — JSON schema for future `uw.meshing` export. +- `examples/` — self-contained copies (each with `.typ`, `.png`, `.json`, + and generator `.py`) of the figures this skill is scaffolded from. + These are snapshots; the live versions may have drifted if a post or + doc was iterated on further. + - `mesh-demo.*` — element-level point-in-cell test. + Live: `publications/blog-posts/figures/finding-particles/`. + - `domain-demo.*` — parallel domain centroid ambiguity. + Live: `publications/blog-posts/figures/finding-particles/`. + - `facet-vs-true-normals.*` — facet normal vs. smooth-surface normal + on a curved boundary. Live: + `docs/advanced/figures/curved-bc/`. + +## Canonical reference in the repo + +`publications/blog-posts/figures/arrays-sync-flow.typ` — prior cetz figure +in the repo, established version (0.3.4) and house style (hex colours, +helper-function pattern). Follow its conventions. diff --git a/.claude/skills/cetz-figures/cetz-cheatsheet.md b/.claude/skills/cetz-figures/cetz-cheatsheet.md new file mode 100644 index 00000000..4d3c190c --- /dev/null +++ b/.claude/skills/cetz-figures/cetz-cheatsheet.md @@ -0,0 +1,312 @@ +# cetz cheatsheet — honest edition + +Separates **what I used correctly from memory** (so you probably can too) +from **what actually needed diagnosis** (so you should check the manual +at https://cetz-package.github.io/docs/ rather than trust the pattern). + +Version: cetz 0.3.4, Typst 0.13.1. Don't assume these patterns hold for +later cetz versions — the API has been unstable between minor versions. + +**External reference worth checking first:** + — curated gallery of ~130 scientific +diagrams with source (~120 in cetz, ~110 in TikZ). Heaviest coverage is +theoretical physics and ML; lighter on FE/meshes specifically, but +strong patterns for coordinate frames, Euler angles, 3D orientation, +and lattice structures. Worth browsing before inventing a new figure +from scratch — the answer to "how do people draw X in cetz" is often +sitting there. + +## Worked from memory (verified correct) + +```typst +#import "@preview/cetz:0.3.4" + +#cetz.canvas(length: 4cm, { + import cetz.draw: * + + // Straight line / polyline / closed polygon + line((0, 0), (1, 0), (1, 1), close: true, + fill: rgb(70, 120, 180, 60), + stroke: 1.2pt + rgb("#1f3a6b")) + + // Filled dot + circle((0.5, 0.5), radius: 0.02, fill: black, stroke: none) + + // Label at a position — math content renders in document math font + content((0.5, 0.5), $v_1$, anchor: "west") +}) +``` + +- `#box(clip: true, width: 8cm, height: 8cm, cetz.canvas(...))` — the + *Typst* box does the clipping. cetz itself doesn't clip. +- `rgb("#b8b8b8")` for hex colours, `rgb(r, g, b, a)` for RGBA (alpha 0–255). +- `json("file.json")` from outside the canvas, then `.at(i)` and field + access inside. Values flow through into cetz coordinates cleanly. +- `for tri in mesh.triangles { line(...) }` — plain Typst for-loops work + inside the canvas closure. + +## Needed diagnosis (check the manual if you do this) + +### Parameter-name collision with `anchor` + +```typst +// BROKEN — panic: "Unknown anchor 'anchor' for element 'none'" +#let dot(p, label, anchor: "west") = { + circle(p, radius: 0.02, fill: black) + content(p, label, anchor: anchor) +} +``` + +```typst +// FIX — rename the parameter +#let dot(p, label, align-to: "west") = { + circle(p, radius: 0.02, fill: black) + content(p, label, anchor: align-to) +} +``` + +Diagnosis cost: one compile failure, ~5 minutes of confusion, then the +rename. The error message does not point at your parameter. + +### Anchor values for `content()` + +Confirmed to work: `"north"`, `"south"`, `"east"`, `"west"`, +`"north-east"`, `"south-east"`, `"north-west"`, `"south-west"`, `"center"`. + +Not tried in this session: named anchors of other elements (e.g. +`"my-rect.east"`), element-specific anchors beyond compass. Verify +against the cetz anchors docs if you need those. + +### Content wider than the Typst box needs `align()` to re-centre + +`#box(clip: true, width: W, height: H, cetz.canvas(...))` does not centre +the cetz canvas if the cetz bounding box is larger than `W × H` (e.g. a +mesh drawn oversize for clipping). Typst default-aligns the canvas to +the top-left, which shifts the interesting region off-frame. Wrap: + +```typst +#box(clip: true, width: W, height: H, + align(center + horizon, cetz.canvas(length: L, { ... }))) +``` + +Encountered when the background mesh extent grew past `[-1, 1]` — +first compile looked fine because content fit; the next compile didn't. + +### Dashed / dotted strokes in cetz + +Pass a dict for the stroke: + +```typst +stroke: (paint: rgb("#1f3a6b"), thickness: 0.5pt, dash: "dotted") +stroke: (paint: rgb("#059669"), thickness: 0.7pt, dash: "dashed") +``` + +Valid `dash` values include `"dotted"`, `"dashed"`, `"densely-dotted"`, +`"loosely-dotted"`, etc. (Typst stroke spec, not a cetz extension.) + +### Line-to-viewport clipping is your job + +cetz does not clip lines at an imaginary viewport. If you want to +extend the line through `(p, q)` out to the edge of a `[-V, V]²` box, +compute the `t` values at each axis crossing, take the inner `t-enter` +and `t-exit`, and evaluate the line there. See `extend-to-viewport` in +`examples/mesh-demo.typ`. + +### Draw helpers that take `cetz.draw` primitives + +Helper functions defined **outside** `cetz.canvas({...})` need their +own `import cetz.draw: *` inside the function body: + +```typst +#let dot(p, label, ...) = { + import cetz.draw: * // REQUIRED — cetz.draw symbols not in scope otherwise + circle(p, ...) + content(...) +} +``` + +This feels like it shouldn't be necessary but is (cetz 0.3.4). + +## Probably wrong / would need checking + +These are *guesses* from adjacent Typst/cetz knowledge, not verified here: + +- `plot` module usage (axes, line plots, scatter plots). Upstream sessions + were shaky on this; assume the API has drifted and check the cetz plot + docs before using. +- `decorations` module (brace, waveform, etc.). Not touched in this session. +- Named-anchor references across draw calls via `name:` — syntax is + `element-name.anchor-name` but context behaviour needs testing. +- Gradient fills — not used, not verified. +- Transformations (`translate`, `rotate`, `scale`) — likely work but not + exercised here. + +## Compile workflow + +```bash +# First run downloads cetz and its deps (small, ~90 KB total) +typst compile mesh-demo.typ mesh-demo.png + +# PDF is default if no output specified +typst compile mesh-demo.typ # → mesh-demo.pdf + +# Watch mode for iteration +typst watch mesh-demo.typ mesh-demo.png +``` + +## Data-driven figures with JSON + +The preferred pattern for mesh/particle figures is to generate data in +Python (scipy.spatial.Delaunay, numpy), export as JSON, and render in +Typst/cetz. This separates the geometry computation from the drawing. + +```typst +#let mesh = json("mesh-data.json") +#let pt(i) = { + let v = mesh.vertices.at(i) + (v.at(0), v.at(1)) +} +// Loop over triangles +for tri in mesh.triangles { + line(pt(tri.at(0)), pt(tri.at(1)), pt(tri.at(2)), + close: true, fill: fill-col, stroke: stroke-mesh) +} +``` + +### Python generator pattern + +```python +from scipy.spatial import Delaunay +# Jittered equilateral lattice → Delaunay → JSON +tri = Delaunay(points) +data = { + "vertices": [[float(x), float(y)] for x, y in points], + "triangles": [[int(i), int(j), int(k)] for i, j, k in tri.simplices], + # ... domain membership, centroids, test points, etc. +} +json.dump(data, open("mesh-data.json", "w"), indent=2) +``` + +### Enumeration with index + +```typst +// .enumerate() gives (index, value) pairs — used for domain colouring +for (idx, tri) in mesh.triangles.enumerate() { + let d = get-domain(idx) + let fill-col = if d == "A" { fill-a } else { fill-b } + line(pt(tri.at(0)), pt(tri.at(1)), pt(tri.at(2)), + close: true, fill: fill-col, stroke: stroke-mesh) +} +``` + +### High-DPI PNG output + +```bash +typst compile figure.typ figure.png --ppi 300 +``` + +## Lessons from domain-demo figure + +- **Multiple domain colours**: Use low-alpha fills (25–45) so mesh edges + show through. Peripheral domains use even lower alpha to stay in background. +- **No heavy boundary lines needed**: Domain colours communicate the + partition without explicit boundary drawing. This looks more natural. +- **Smaller dots and tight labels** for a cleaner look: `radius: 0.028–0.032`, + label offsets of `(0.06, 0.06)` or `(0.08, 0.06)`. +- **Finer mesh** (SPACING ≈ 0.28, ~400 vertices, ~800 triangles) reads as + a realistic FE mesh. Coarser meshes (SPACING ≈ 1.25) work for + element-level diagrams. +- **View clipping**: Use `VIEW` parameter in JSON and `in-view()` check + to clip triangles at the edge of the rendered region. + +## Visual idioms that worked + +### Dashed-on-top-of-solid reveals coincidence + +When two arrows (or two paths) represent quantities that *sometimes* +coincide and *sometimes* diverge, draw the **dashed** one LAST so it +layers on top of the **solid** one. Where they overlap, the dashes +interleave with the solid underneath and both colours remain visible +— reading unmistakably as "they coincide here". If the solid were on +top, it would simply cover the dashed and the coincidence would be +invisible. + +Applied in `facet-vs-true-normals.typ`: the rust `mesh.Gamma` arrow is +drawn first, the green dashed true normal on top. At each facet +midpoint the green dashes sit over the rust — the coincidence is +obvious. At off-centre quadrature points both arrows are visible as +distinct directions. + +### Quadrature choice encodes pedagogy + +If your figure illustrates *within-element variation* of a quantity, +the quadrature rule you pick determines whether the variation is +visible at all: + +- **2-point Gauss–Legendre** (±1/√3 on [-1, 1]): both samples off + the element midpoint. Can show *average* per-element behaviour + but hides any quantity that's zero at the midpoint. +- **3-point Gauss–Legendre** (0, ±√(3/5)): one sample AT the + midpoint plus two off-centre. Reveals both the midpoint case and + the at-the-edge case in the same picture. + +Switching from 2-point to 3-point was the key move that made the +curved-boundary figure communicate "the error is zero at facet +midpoints" — not just "there is an error". + +### Legend in empty interior space beats per-arrow labels + +Per-arrow labels near the canvas edge fight cetz's bbox calculation +and often clip at the PNG boundary. If the figure has an obvious +empty interior region, put a small 2-row legend there: + +```typst +// Row 1 +line((lx, ly), (lx + 0.28, ly), stroke: gamma-stroke, + mark: (end: ">", fill: gamma-colour)) +content((lx + 0.36, ly), text(fill: gamma-colour, $hat(n)_Gamma$ + [ (label)]), + anchor: "west") +// Row 2, below +``` + +The short sample stroke uses the *same* stroke dict as the arrows in +the figure, so it looks identical. No leader lines, no per-arrow +crowding. + +### Short arrows read better than long + +Arrow lengths around **0.25–0.3 world units** (with canvas `length: +3cm`) stay visually subordinate to the geometry they annotate. +Longer arrows (0.4+) tend to dominate and obscure the mesh. Start +short; lengthen only if the arrow directions are genuinely hard to +read. + +### Explicit page dimensions + aligned canvas = reliable padding + +For docs figures that must look crisp in a PNG of specific dimensions: + +```typst +#set page(width: 12cm, height: 8cm, margin: 6pt) +#align(center + horizon, cetz.canvas(length: 3cm, { ... })) +``` + +This decouples the *rendered size* from cetz's (sometimes generous, +sometimes flaky) auto-bbox. Your content scales predictably and text +labels near the edges have room. Use it any time the figure goes +into a doc as a fixed-size image. + +## House style in this repo + +Figures live in per-post subdirectories under `publications/blog-posts/figures/`: +- `finding-particles/mesh-demo.typ` — element-level inside/outside test with control points +- `finding-particles/domain-demo.typ` — multi-domain parallel mesh with centroid ambiguity +- `arrays-sync-flow.typ` — flow diagram with nodes, regions, bezier connectors + (older figure, not yet moved into a per-post subdirectory) + +Patterns: +- Custom helper functions declared at the top of the canvas closure + (`node`, `region`, `elabel`, `dot`). +- Hex colours via `rgb("#...")`. +- Arrows via `mark: (end: ">", fill: black)`. +- Bezier connectors via `bezier(start, end, ctrl1, ctrl2, ...)`. +- Data from JSON files generated by companion Python scripts. diff --git a/.claude/skills/cetz-figures/examples/curved-bc-data.json b/.claude/skills/cetz-figures/examples/curved-bc-data.json new file mode 100644 index 00000000..0abb0757 --- /dev/null +++ b/.claude/skills/cetz-figures/examples/curved-bc-data.json @@ -0,0 +1,652 @@ +{ + "centre": [ + 0.0, + 0.0 + ], + "radius": 1.5, + "arc_points": [ + [ + 1.299, + 0.75 + ], + [ + 1.2858, + 0.7726 + ], + [ + 1.2721, + 0.7949 + ], + [ + 1.258, + 0.817 + ], + [ + 1.2436, + 0.8388 + ], + [ + 1.2287, + 0.8604 + ], + [ + 1.2135, + 0.8817 + ], + [ + 1.198, + 0.9027 + ], + [ + 1.182, + 0.9235 + ], + [ + 1.1657, + 0.944 + ], + [ + 1.1491, + 0.9642 + ], + [ + 1.1321, + 0.9841 + ], + [ + 1.1147, + 1.0037 + ], + [ + 1.097, + 1.023 + ], + [ + 1.079, + 1.042 + ], + [ + 1.0607, + 1.0607 + ], + [ + 1.042, + 1.079 + ], + [ + 1.023, + 1.097 + ], + [ + 1.0037, + 1.1147 + ], + [ + 0.9841, + 1.1321 + ], + [ + 0.9642, + 1.1491 + ], + [ + 0.944, + 1.1657 + ], + [ + 0.9235, + 1.182 + ], + [ + 0.9027, + 1.198 + ], + [ + 0.8817, + 1.2135 + ], + [ + 0.8604, + 1.2287 + ], + [ + 0.8388, + 1.2436 + ], + [ + 0.817, + 1.258 + ], + [ + 0.7949, + 1.2721 + ], + [ + 0.7726, + 1.2858 + ], + [ + 0.75, + 1.299 + ], + [ + 0.7272, + 1.3119 + ], + [ + 0.7042, + 1.3244 + ], + [ + 0.681, + 1.3365 + ], + [ + 0.6576, + 1.3482 + ], + [ + 0.6339, + 1.3595 + ], + [ + 0.6101, + 1.3703 + ], + [ + 0.5861, + 1.3808 + ], + [ + 0.5619, + 1.3908 + ], + [ + 0.5376, + 1.4004 + ], + [ + 0.513, + 1.4095 + ], + [ + 0.4884, + 1.4183 + ], + [ + 0.4635, + 1.4266 + ], + [ + 0.4386, + 1.4345 + ], + [ + 0.4135, + 1.4419 + ], + [ + 0.3882, + 1.4489 + ], + [ + 0.3629, + 1.4554 + ], + [ + 0.3374, + 1.4616 + ], + [ + 0.3119, + 1.4672 + ], + [ + 0.2862, + 1.4724 + ], + [ + 0.2605, + 1.4772 + ], + [ + 0.2347, + 1.4815 + ], + [ + 0.2088, + 1.4854 + ], + [ + 0.1828, + 1.4888 + ], + [ + 0.1568, + 1.4918 + ], + [ + 0.1307, + 1.4943 + ], + [ + 0.1046, + 1.4963 + ], + [ + 0.0785, + 1.4979 + ], + [ + 0.0523, + 1.4991 + ], + [ + 0.0262, + 1.4998 + ], + [ + 0.0, + 1.5 + ], + [ + -0.0262, + 1.4998 + ], + [ + -0.0523, + 1.4991 + ], + [ + -0.0785, + 1.4979 + ], + [ + -0.1046, + 1.4963 + ], + [ + -0.1307, + 1.4943 + ], + [ + -0.1568, + 1.4918 + ], + [ + -0.1828, + 1.4888 + ], + [ + -0.2088, + 1.4854 + ], + [ + -0.2347, + 1.4815 + ], + [ + -0.2605, + 1.4772 + ], + [ + -0.2862, + 1.4724 + ], + [ + -0.3119, + 1.4672 + ], + [ + -0.3374, + 1.4616 + ], + [ + -0.3629, + 1.4554 + ], + [ + -0.3882, + 1.4489 + ], + [ + -0.4135, + 1.4419 + ], + [ + -0.4386, + 1.4345 + ], + [ + -0.4635, + 1.4266 + ], + [ + -0.4884, + 1.4183 + ], + [ + -0.513, + 1.4095 + ], + [ + -0.5376, + 1.4004 + ], + [ + -0.5619, + 1.3908 + ], + [ + -0.5861, + 1.3808 + ], + [ + -0.6101, + 1.3703 + ], + [ + -0.6339, + 1.3595 + ], + [ + -0.6576, + 1.3482 + ], + [ + -0.681, + 1.3365 + ], + [ + -0.7042, + 1.3244 + ], + [ + -0.7272, + 1.3119 + ], + [ + -0.75, + 1.299 + ], + [ + -0.7726, + 1.2858 + ], + [ + -0.7949, + 1.2721 + ], + [ + -0.817, + 1.258 + ], + [ + -0.8388, + 1.2436 + ], + [ + -0.8604, + 1.2287 + ], + [ + -0.8817, + 1.2135 + ], + [ + -0.9027, + 1.198 + ], + [ + -0.9235, + 1.182 + ], + [ + -0.944, + 1.1657 + ], + [ + -0.9642, + 1.1491 + ], + [ + -0.9841, + 1.1321 + ], + [ + -1.0037, + 1.1147 + ], + [ + -1.023, + 1.097 + ], + [ + -1.042, + 1.079 + ], + [ + -1.0607, + 1.0607 + ], + [ + -1.079, + 1.042 + ], + [ + -1.097, + 1.023 + ], + [ + -1.1147, + 1.0037 + ], + [ + -1.1321, + 0.9841 + ], + [ + -1.1491, + 0.9642 + ], + [ + -1.1657, + 0.944 + ], + [ + -1.182, + 0.9235 + ], + [ + -1.198, + 0.9027 + ], + [ + -1.2135, + 0.8817 + ], + [ + -1.2287, + 0.8604 + ], + [ + -1.2436, + 0.8388 + ], + [ + -1.258, + 0.817 + ], + [ + -1.2721, + 0.7949 + ], + [ + -1.2858, + 0.7726 + ], + [ + -1.299, + 0.75 + ] + ], + "facet_vertices": [ + [ + 1.299, + 0.75 + ], + [ + 0.513, + 1.4095 + ], + [ + -0.513, + 1.4095 + ], + [ + -1.299, + 0.75 + ] + ], + "quadrature": [ + { + "pos": [ + 1.2105, + 0.8243 + ], + "facet_normal": [ + 0.6428, + 0.766 + ], + "true_normal": [ + 0.8265, + 0.5629 + ], + "facet_idx": 0 + }, + { + "pos": [ + 0.906, + 1.0798 + ], + "facet_normal": [ + 0.6428, + 0.766 + ], + "true_normal": [ + 0.6428, + 0.766 + ], + "facet_idx": 0 + }, + { + "pos": [ + 0.6016, + 1.3352 + ], + "facet_normal": [ + 0.6428, + 0.766 + ], + "true_normal": [ + 0.4108, + 0.9117 + ], + "facet_idx": 0 + }, + { + "pos": [ + 0.3974, + 1.4095 + ], + "facet_normal": [ + 0.0, + 1.0 + ], + "true_normal": [ + 0.2714, + 0.9625 + ], + "facet_idx": 1 + }, + { + "pos": [ + 0.0, + 1.4095 + ], + "facet_normal": [ + 0.0, + 1.0 + ], + "true_normal": [ + 0.0, + 1.0 + ], + "facet_idx": 1 + }, + { + "pos": [ + -0.3974, + 1.4095 + ], + "facet_normal": [ + 0.0, + 1.0 + ], + "true_normal": [ + -0.2714, + 0.9625 + ], + "facet_idx": 1 + }, + { + "pos": [ + -0.6016, + 1.3352 + ], + "facet_normal": [ + -0.6428, + 0.766 + ], + "true_normal": [ + -0.4108, + 0.9117 + ], + "facet_idx": 2 + }, + { + "pos": [ + -0.906, + 1.0798 + ], + "facet_normal": [ + -0.6428, + 0.766 + ], + "true_normal": [ + -0.6428, + 0.766 + ], + "facet_idx": 2 + }, + { + "pos": [ + -1.2105, + 0.8243 + ], + "facet_normal": [ + -0.6428, + 0.766 + ], + "true_normal": [ + -0.8265, + 0.5629 + ], + "facet_idx": 2 + } + ], + "radius_end": [ + 0.0, + 1.5 + ] +} \ No newline at end of file diff --git a/.claude/skills/cetz-figures/examples/domain-demo-data.json b/.claude/skills/cetz-figures/examples/domain-demo-data.json new file mode 100644 index 00000000..537920bb --- /dev/null +++ b/.claude/skills/cetz-figures/examples/domain-demo-data.json @@ -0,0 +1,6275 @@ +{ + "vertices": [ + [ + -2.4847, + -2.5034 + ], + [ + -2.1999, + -2.4889 + ], + [ + -1.9627, + -2.4734 + ], + [ + -1.6454, + -2.484 + ], + [ + -1.4008, + -2.5028 + ], + [ + -1.1072, + -2.4761 + ], + [ + -0.8119, + -2.4819 + ], + [ + -0.5432, + -2.5153 + ], + [ + -0.2569, + -2.5244 + ], + [ + 0.0383, + -2.4926 + ], + [ + 0.3145, + -2.5081 + ], + [ + 0.6064, + -2.478 + ], + [ + 0.8756, + -2.5171 + ], + [ + 1.1381, + -2.5255 + ], + [ + 1.4006, + -2.4897 + ], + [ + 1.7137, + -2.4738 + ], + [ + 1.9702, + -2.5073 + ], + [ + 2.2583, + -2.5174 + ], + [ + -2.3807, + -2.2589 + ], + [ + -2.0953, + -2.248 + ], + [ + -1.8035, + -2.2389 + ], + [ + -1.5088, + -2.268 + ], + [ + -1.2214, + -2.2404 + ], + [ + -0.9663, + -2.2694 + ], + [ + -0.6698, + -2.2777 + ], + [ + -0.4168, + -2.2851 + ], + [ + -0.1039, + -2.2483 + ], + [ + 0.1715, + -2.2418 + ], + [ + 0.4377, + -2.2537 + ], + [ + 0.6998, + -2.2791 + ], + [ + 1.0094, + -2.2591 + ], + [ + 1.2837, + -2.2427 + ], + [ + 1.5675, + -2.2545 + ], + [ + 1.8433, + -2.2685 + ], + [ + 2.0937, + -2.2611 + ], + [ + 2.384, + -2.2626 + ], + [ + -2.4802, + -2.0299 + ], + [ + -2.2447, + -2.0273 + ], + [ + -1.9516, + -2.006 + ], + [ + -1.6568, + -1.9991 + ], + [ + -1.3708, + -2.0203 + ], + [ + -1.0824, + -2.0337 + ], + [ + -0.8467, + -2.038 + ], + [ + -0.5275, + -2.0172 + ], + [ + -0.279, + -2.015 + ], + [ + 0.0005, + -2.004 + ], + [ + 0.297, + -2.0217 + ], + [ + 0.5689, + -2.0077 + ], + [ + 0.8523, + -2.0381 + ], + [ + 1.1186, + -1.9892 + ], + [ + 1.4429, + -2.0038 + ], + [ + 1.6869, + -1.9888 + ], + [ + 1.9956, + -2.0029 + ], + [ + 2.2572, + -2.0278 + ], + [ + -2.3826, + -1.75 + ], + [ + -2.0825, + -1.7892 + ], + [ + -1.8109, + -1.7681 + ], + [ + -1.5381, + -1.7526 + ], + [ + -1.2255, + -1.7602 + ], + [ + -0.9638, + -1.7654 + ], + [ + -0.6753, + -1.7641 + ], + [ + -0.4233, + -1.7773 + ], + [ + -0.1457, + -1.7729 + ], + [ + 0.1505, + -1.7924 + ], + [ + 0.4178, + -1.7676 + ], + [ + 0.7016, + -1.7487 + ], + [ + 1.0045, + -1.7811 + ], + [ + 1.2851, + -1.7993 + ], + [ + 1.5857, + -1.7735 + ], + [ + 1.8558, + -1.7959 + ], + [ + 2.1193, + -1.7731 + ], + [ + 2.4245, + -1.7685 + ], + [ + -2.5015, + -1.5431 + ], + [ + -2.2294, + -1.5289 + ], + [ + -1.9434, + -1.5568 + ], + [ + -1.6417, + -1.5079 + ], + [ + -1.4001, + -1.527 + ], + [ + -1.1219, + -1.5204 + ], + [ + -0.8323, + -1.5211 + ], + [ + -0.5273, + -1.515 + ], + [ + -0.282, + -1.5068 + ], + [ + 0.0049, + -1.556 + ], + [ + 0.3031, + -1.5373 + ], + [ + 0.5985, + -1.5128 + ], + [ + 0.8498, + -1.5047 + ], + [ + 1.1283, + -1.5292 + ], + [ + 1.4063, + -1.5056 + ], + [ + 1.6812, + -1.5555 + ], + [ + 1.9764, + -1.5025 + ], + [ + 2.2819, + -1.5161 + ], + [ + -2.3381, + -1.2655 + ], + [ + -2.0789, + -1.2979 + ], + [ + -1.7848, + -1.2785 + ], + [ + -1.5271, + -1.3103 + ], + [ + -1.2262, + -1.3009 + ], + [ + -0.9355, + -1.3021 + ], + [ + -0.7011, + -1.269 + ], + [ + -0.4194, + -1.3055 + ], + [ + -0.1144, + -1.2666 + ], + [ + 0.143, + -1.2982 + ], + [ + 0.4555, + -1.2611 + ], + [ + 0.72, + -1.3075 + ], + [ + 0.9728, + -1.3027 + ], + [ + 1.2594, + -1.2776 + ], + [ + 1.5388, + -1.2872 + ], + [ + 1.8509, + -1.283 + ], + [ + 2.1032, + -1.2705 + ], + [ + 2.4121, + -1.2742 + ], + [ + -2.5207, + -1.0661 + ], + [ + -2.1961, + -1.0508 + ], + [ + -1.9511, + -1.0457 + ], + [ + -1.6509, + -1.0196 + ], + [ + -1.392, + -1.0213 + ], + [ + -1.1266, + -1.042 + ], + [ + -0.8125, + -1.0671 + ], + [ + -0.5601, + -1.0496 + ], + [ + -0.2339, + -1.0397 + ], + [ + 0.0442, + -1.028 + ], + [ + 0.2982, + -1.0291 + ], + [ + 0.553, + -1.067 + ], + [ + 0.8784, + -1.0285 + ], + [ + 1.125, + -1.0434 + ], + [ + 1.4259, + -1.0245 + ], + [ + 1.7058, + -1.05 + ], + [ + 1.973, + -1.0492 + ], + [ + 2.2685, + -1.0245 + ], + [ + -2.3626, + -0.8167 + ], + [ + -2.0947, + -0.7888 + ], + [ + -1.7823, + -0.8247 + ], + [ + -1.5443, + -0.7973 + ], + [ + -1.2598, + -0.7844 + ], + [ + -0.9706, + -0.8225 + ], + [ + -0.6564, + -0.8213 + ], + [ + -0.4121, + -0.822 + ], + [ + -0.1415, + -0.8294 + ], + [ + 0.1351, + -0.8208 + ], + [ + 0.415, + -0.7975 + ], + [ + 0.7301, + -0.8085 + ], + [ + 0.9898, + -0.8023 + ], + [ + 1.301, + -0.7829 + ], + [ + 1.5344, + -0.8204 + ], + [ + 1.8253, + -0.8166 + ], + [ + 2.124, + -0.8073 + ], + [ + 2.3748, + -0.8097 + ], + [ + -2.4987, + -0.5824 + ], + [ + -2.2013, + -0.5852 + ], + [ + -1.9162, + -0.5826 + ], + [ + -1.6408, + -0.5376 + ], + [ + -1.3531, + -0.5432 + ], + [ + -1.0843, + -0.5521 + ], + [ + -0.8044, + -0.5806 + ], + [ + -0.538, + -0.5593 + ], + [ + -0.24, + -0.5622 + ], + [ + 0.0136, + -0.5523 + ], + [ + 0.2869, + -0.5803 + ], + [ + 0.5788, + -0.5648 + ], + [ + 0.845, + -0.5675 + ], + [ + 1.1325, + -0.5698 + ], + [ + 1.4132, + -0.5497 + ], + [ + 1.6886, + -0.535 + ], + [ + 2.0033, + -0.5612 + ], + [ + 2.2504, + -0.5581 + ], + [ + -2.3405, + -0.3091 + ], + [ + -2.063, + -0.3158 + ], + [ + -1.7926, + -0.3295 + ], + [ + -1.5068, + -0.3343 + ], + [ + -1.2291, + -0.2974 + ], + [ + -0.9806, + -0.3112 + ], + [ + -0.7027, + -0.305 + ], + [ + -0.4233, + -0.2932 + ], + [ + -0.1403, + -0.2919 + ], + [ + 0.1768, + -0.3124 + ], + [ + 0.4558, + -0.3011 + ], + [ + 0.745, + -0.3314 + ], + [ + 1.005, + -0.3403 + ], + [ + 1.2865, + -0.336 + ], + [ + 1.5636, + -0.3136 + ], + [ + 1.8381, + -0.3163 + ], + [ + 2.1348, + -0.3009 + ], + [ + 2.3996, + -0.312 + ], + [ + -2.4759, + -0.0964 + ], + [ + -2.2414, + -0.0982 + ], + [ + -1.9312, + -0.0797 + ], + [ + -1.6446, + -0.0655 + ], + [ + -1.3893, + -0.0528 + ], + [ + -1.0853, + -0.088 + ], + [ + -0.8276, + -0.0855 + ], + [ + -0.5592, + -0.0949 + ], + [ + -0.2356, + -0.0786 + ], + [ + 0.0135, + -0.0623 + ], + [ + 0.303, + -0.0507 + ], + [ + 0.5957, + -0.0763 + ], + [ + 0.8531, + -0.0479 + ], + [ + 1.1522, + -0.0499 + ], + [ + 1.3986, + -0.0555 + ], + [ + 1.7077, + -0.0963 + ], + [ + 1.9849, + -0.0647 + ], + [ + 2.2327, + -0.0777 + ], + [ + -2.3418, + 0.1559 + ], + [ + -2.0823, + 0.1641 + ], + [ + -1.8111, + 0.1908 + ], + [ + -1.5042, + 0.1456 + ], + [ + -1.2122, + 0.1886 + ], + [ + -0.9721, + 0.1862 + ], + [ + -0.702, + 0.1953 + ], + [ + -0.3907, + 0.1758 + ], + [ + -0.1429, + 0.1896 + ], + [ + 0.1336, + 0.1528 + ], + [ + 0.42, + 0.1829 + ], + [ + 0.7031, + 0.1904 + ], + [ + 1.0088, + 0.1414 + ], + [ + 1.2523, + 0.1423 + ], + [ + 1.5659, + 0.1842 + ], + [ + 1.8254, + 0.1869 + ], + [ + 2.0952, + 0.1842 + ], + [ + 2.424, + 0.1826 + ], + [ + -2.4889, + 0.4288 + ], + [ + -2.2458, + 0.3931 + ], + [ + -1.961, + 0.4101 + ], + [ + -1.6463, + 0.4171 + ], + [ + -1.3603, + 0.3905 + ], + [ + -1.0869, + 0.3927 + ], + [ + -0.8328, + 0.4216 + ], + [ + -0.5131, + 0.4161 + ], + [ + -0.2849, + 0.4164 + ], + [ + -0.0056, + 0.4314 + ], + [ + 0.3117, + 0.3915 + ], + [ + 0.5571, + 0.3921 + ], + [ + 0.8869, + 0.4075 + ], + [ + 1.1559, + 0.4175 + ], + [ + 1.4241, + 0.39 + ], + [ + 1.725, + 0.3987 + ], + [ + 1.9844, + 0.421 + ], + [ + 2.2684, + 0.4345 + ], + [ + -2.3797, + 0.6528 + ], + [ + -2.0854, + 0.6509 + ], + [ + -1.8213, + 0.6318 + ], + [ + -1.5324, + 0.6414 + ], + [ + -1.244, + 0.6585 + ], + [ + -0.9525, + 0.6474 + ], + [ + -0.6851, + 0.6365 + ], + [ + -0.3951, + 0.6421 + ], + [ + -0.146, + 0.6478 + ], + [ + 0.1586, + 0.637 + ], + [ + 0.4441, + 0.656 + ], + [ + 0.7313, + 0.6606 + ], + [ + 1.0085, + 0.642 + ], + [ + 1.2961, + 0.6551 + ], + [ + 1.5562, + 0.6594 + ], + [ + 1.8322, + 0.653 + ], + [ + 2.1333, + 0.674 + ], + [ + 2.4236, + 0.6525 + ], + [ + -2.4989, + 0.9116 + ], + [ + -2.2304, + 0.9137 + ], + [ + -1.9403, + 0.8733 + ], + [ + -1.684, + 0.914 + ], + [ + -1.4049, + 0.8825 + ], + [ + -1.1093, + 0.8765 + ], + [ + -0.8304, + 0.9084 + ], + [ + -0.5672, + 0.9131 + ], + [ + -0.24, + 0.8877 + ], + [ + 0.0006, + 0.9005 + ], + [ + 0.2787, + 0.8873 + ], + [ + 0.6057, + 0.9226 + ], + [ + 0.8752, + 0.8842 + ], + [ + 1.1505, + 0.9063 + ], + [ + 1.4137, + 0.9027 + ], + [ + 1.6726, + 0.8785 + ], + [ + 1.9814, + 0.876 + ], + [ + 2.2413, + 0.9137 + ], + [ + -2.3326, + 1.1404 + ], + [ + -2.061, + 1.1648 + ], + [ + -1.8201, + 1.1344 + ], + [ + -1.526, + 1.1138 + ], + [ + -1.2257, + 1.1336 + ], + [ + -0.9617, + 1.1177 + ], + [ + -0.6979, + 1.1601 + ], + [ + -0.4255, + 1.1223 + ], + [ + -0.1316, + 1.1368 + ], + [ + 0.1648, + 1.1369 + ], + [ + 0.4167, + 1.123 + ], + [ + 0.7392, + 1.145 + ], + [ + 1.0084, + 1.1468 + ], + [ + 1.2947, + 1.1126 + ], + [ + 1.5525, + 1.1395 + ], + [ + 1.831, + 1.1566 + ], + [ + 2.119, + 1.1523 + ], + [ + 2.4197, + 1.1376 + ], + [ + -2.4771, + 1.3847 + ], + [ + -2.2004, + 1.3709 + ], + [ + -1.9401, + 1.3816 + ], + [ + -1.6821, + 1.3741 + ], + [ + -1.3566, + 1.3871 + ], + [ + -1.1181, + 1.3708 + ], + [ + -0.8373, + 1.3532 + ], + [ + -0.5161, + 1.3769 + ], + [ + -0.2708, + 1.3853 + ], + [ + -0.0076, + 1.3674 + ], + [ + 0.3114, + 1.3873 + ], + [ + 0.607, + 1.3865 + ], + [ + 0.8587, + 1.3944 + ], + [ + 1.1626, + 1.3922 + ], + [ + 1.4459, + 1.3956 + ], + [ + 1.7205, + 1.3582 + ], + [ + 1.993, + 1.3764 + ], + [ + 2.263, + 1.3884 + ], + [ + -2.3337, + 1.6494 + ], + [ + -2.0919, + 1.6354 + ], + [ + -1.786, + 1.6137 + ], + [ + -1.5411, + 1.5966 + ], + [ + -1.2245, + 1.6217 + ], + [ + -0.9328, + 1.6203 + ], + [ + -0.6532, + 1.6173 + ], + [ + -0.3836, + 1.599 + ], + [ + -0.1169, + 1.6392 + ], + [ + 0.1838, + 1.6403 + ], + [ + 0.4141, + 1.6152 + ], + [ + 0.6947, + 1.6004 + ], + [ + 1.0098, + 1.6342 + ], + [ + 1.2953, + 1.6427 + ], + [ + 1.5734, + 1.6391 + ], + [ + 1.8147, + 1.6074 + ], + [ + 2.1268, + 1.6423 + ], + [ + 2.3723, + 1.6231 + ], + [ + -2.4901, + 1.8384 + ], + [ + -2.2255, + 1.8869 + ], + [ + -1.9304, + 1.8501 + ], + [ + -1.6402, + 1.8563 + ], + [ + -1.3602, + 1.8535 + ], + [ + -1.0949, + 1.859 + ], + [ + -0.8326, + 1.8864 + ], + [ + -0.5575, + 1.8415 + ], + [ + -0.2689, + 1.877 + ], + [ + 0.0372, + 1.8927 + ], + [ + 0.2886, + 1.8596 + ], + [ + 0.5597, + 1.869 + ], + [ + 0.8879, + 1.876 + ], + [ + 1.1453, + 1.8587 + ], + [ + 1.4433, + 1.8646 + ], + [ + 1.6795, + 1.8572 + ], + [ + 1.9558, + 1.8481 + ], + [ + 2.233, + 1.8622 + ], + [ + -2.3525, + 2.0985 + ], + [ + -2.0845, + 2.133 + ], + [ + -1.7859, + 2.1095 + ], + [ + -1.5321, + 2.1295 + ], + [ + -1.2548, + 2.0975 + ], + [ + -0.9371, + 2.1089 + ], + [ + -0.6664, + 2.1123 + ], + [ + -0.3914, + 2.096 + ], + [ + -0.1345, + 2.0973 + ], + [ + 0.1407, + 2.1282 + ], + [ + 0.4279, + 2.1107 + ], + [ + 0.7364, + 2.1231 + ], + [ + 0.9965, + 2.1059 + ], + [ + 1.3077, + 2.117 + ], + [ + 1.5776, + 2.1298 + ], + [ + 1.8561, + 2.0896 + ], + [ + 2.1235, + 2.085 + ], + [ + 2.4086, + 2.1328 + ], + [ + -2.4993, + 2.346 + ], + [ + -2.246, + 2.3755 + ], + [ + -1.9622, + 2.324 + ], + [ + -1.6742, + 2.3254 + ], + [ + -1.3825, + 2.3506 + ], + [ + -1.1105, + 2.3246 + ], + [ + -0.8418, + 2.3433 + ], + [ + -0.5646, + 2.3608 + ], + [ + -0.2764, + 2.3387 + ], + [ + 0.0141, + 2.3451 + ], + [ + 0.2721, + 2.328 + ], + [ + 0.6003, + 2.3218 + ], + [ + 0.8605, + 2.3492 + ], + [ + 1.1307, + 2.3459 + ], + [ + 1.4357, + 2.3688 + ], + [ + 1.6866, + 2.3398 + ], + [ + 1.9656, + 2.3486 + ], + [ + 2.2703, + 2.3345 + ], + [ + -2.3695, + 2.6163 + ], + [ + -2.1053, + 2.59 + ], + [ + -1.7882, + 2.5727 + ], + [ + -1.5453, + 2.572 + ], + [ + -1.2165, + 2.5647 + ], + [ + -0.9775, + 2.566 + ], + [ + -0.7018, + 2.599 + ], + [ + -0.4145, + 2.5961 + ], + [ + -0.1149, + 2.6118 + ], + [ + 0.1323, + 2.612 + ], + [ + 0.4467, + 2.5733 + ], + [ + 0.7353, + 2.6121 + ], + [ + 0.9862, + 2.6157 + ], + [ + 1.2774, + 2.598 + ], + [ + 1.5871, + 2.5845 + ], + [ + 1.8575, + 2.5821 + ], + [ + 2.1368, + 2.5979 + ], + [ + 2.3841, + 2.5874 + ] + ], + "triangles": [ + [ + 107, + 89, + 71 + ], + [ + 252, + 360, + 108 + ], + [ + 0, + 72, + 108 + ], + [ + 216, + 252, + 108 + ], + [ + 107, + 179, + 143 + ], + [ + 380, + 363, + 381 + ], + [ + 251, + 250, + 233 + ], + [ + 370, + 387, + 369 + ], + [ + 36, + 37, + 54 + ], + [ + 36, + 72, + 0 + ], + [ + 72, + 36, + 54 + ], + [ + 37, + 55, + 54 + ], + [ + 18, + 36, + 0 + ], + [ + 36, + 18, + 37 + ], + [ + 198, + 216, + 180 + ], + [ + 216, + 198, + 217 + ], + [ + 234, + 216, + 217 + ], + [ + 234, + 253, + 252 + ], + [ + 216, + 234, + 252 + ], + [ + 150, + 149, + 131 + ], + [ + 20, + 21, + 39 + ], + [ + 21, + 20, + 3 + ], + [ + 21, + 40, + 39 + ], + [ + 40, + 21, + 22 + ], + [ + 40, + 41, + 58 + ], + [ + 41, + 40, + 22 + ], + [ + 40, + 57, + 39 + ], + [ + 57, + 40, + 58 + ], + [ + 144, + 216, + 108 + ], + [ + 216, + 144, + 180 + ], + [ + 146, + 163, + 145 + ], + [ + 364, + 363, + 345 + ], + [ + 363, + 364, + 381 + ], + [ + 381, + 384, + 378 + ], + [ + 215, + 179, + 107 + ], + [ + 215, + 107, + 71 + ], + [ + 215, + 251, + 233 + ], + [ + 161, + 179, + 178 + ], + [ + 160, + 161, + 178 + ], + [ + 179, + 161, + 143 + ], + [ + 161, + 142, + 143 + ], + [ + 142, + 161, + 160 + ], + [ + 177, + 160, + 178 + ], + [ + 270, + 289, + 288 + ], + [ + 253, + 270, + 252 + ], + [ + 270, + 288, + 252 + ], + [ + 307, + 289, + 290 + ], + [ + 308, + 307, + 290 + ], + [ + 307, + 308, + 326 + ], + [ + 308, + 327, + 326 + ], + [ + 327, + 308, + 309 + ], + [ + 362, + 363, + 380 + ], + [ + 212, + 194, + 195 + ], + [ + 175, + 194, + 193 + ], + [ + 250, + 232, + 233 + ], + [ + 267, + 268, + 285 + ], + [ + 250, + 269, + 268 + ], + [ + 269, + 250, + 251 + ], + [ + 287, + 269, + 251 + ], + [ + 305, + 287, + 323 + ], + [ + 301, + 302, + 319 + ], + [ + 287, + 359, + 323 + ], + [ + 370, + 352, + 371 + ], + [ + 394, + 390, + 391 + ], + [ + 391, + 390, + 373 + ], + [ + 389, + 390, + 387 + ], + [ + 388, + 370, + 371 + ], + [ + 389, + 388, + 371 + ], + [ + 370, + 388, + 387 + ], + [ + 388, + 389, + 387 + ], + [ + 372, + 389, + 371 + ], + [ + 390, + 372, + 373 + ], + [ + 372, + 390, + 389 + ], + [ + 38, + 55, + 37 + ], + [ + 38, + 20, + 39 + ], + [ + 20, + 2, + 3 + ], + [ + 35, + 34, + 17 + ], + [ + 181, + 198, + 180 + ], + [ + 181, + 163, + 182 + ], + [ + 235, + 234, + 217 + ], + [ + 254, + 235, + 236 + ], + [ + 235, + 254, + 253 + ], + [ + 234, + 235, + 253 + ], + [ + 149, + 130, + 131 + ], + [ + 168, + 167, + 150 + ], + [ + 167, + 149, + 150 + ], + [ + 166, + 167, + 185 + ], + [ + 167, + 166, + 149 + ], + [ + 227, + 226, + 208 + ], + [ + 225, + 226, + 243 + ], + [ + 245, + 227, + 228 + ], + [ + 5, + 23, + 22 + ], + [ + 23, + 41, + 22 + ], + [ + 23, + 5, + 6 + ], + [ + 4, + 5, + 22 + ], + [ + 21, + 4, + 22 + ], + [ + 4, + 21, + 3 + ], + [ + 4, + 7, + 6 + ], + [ + 5, + 4, + 6 + ], + [ + 8, + 4, + 0 + ], + [ + 7, + 4, + 8 + ], + [ + 76, + 57, + 58 + ], + [ + 126, + 144, + 108 + ], + [ + 144, + 126, + 145 + ], + [ + 72, + 90, + 108 + ], + [ + 55, + 73, + 54 + ], + [ + 73, + 72, + 54 + ], + [ + 73, + 90, + 72 + ], + [ + 90, + 73, + 91 + ], + [ + 164, + 163, + 146 + ], + [ + 163, + 164, + 182 + ], + [ + 255, + 254, + 236 + ], + [ + 255, + 256, + 273 + ], + [ + 272, + 255, + 273 + ], + [ + 255, + 272, + 254 + ], + [ + 309, + 292, + 310 + ], + [ + 292, + 293, + 310 + ], + [ + 240, + 222, + 223 + ], + [ + 187, + 168, + 169 + ], + [ + 188, + 187, + 169 + ], + [ + 206, + 188, + 189 + ], + [ + 242, + 225, + 243 + ], + [ + 364, + 382, + 381 + ], + [ + 382, + 364, + 365 + ], + [ + 382, + 384, + 381 + ], + [ + 346, + 364, + 345 + ], + [ + 364, + 346, + 365 + ], + [ + 346, + 347, + 365 + ], + [ + 347, + 346, + 329 + ], + [ + 125, + 107, + 143 + ], + [ + 142, + 125, + 143 + ], + [ + 177, + 159, + 160 + ], + [ + 291, + 272, + 273 + ], + [ + 292, + 291, + 273 + ], + [ + 291, + 292, + 309 + ], + [ + 272, + 291, + 290 + ], + [ + 291, + 308, + 290 + ], + [ + 308, + 291, + 309 + ], + [ + 270, + 271, + 289 + ], + [ + 289, + 271, + 290 + ], + [ + 271, + 272, + 290 + ], + [ + 271, + 270, + 253 + ], + [ + 254, + 271, + 253 + ], + [ + 272, + 271, + 254 + ], + [ + 325, + 307, + 326 + ], + [ + 289, + 306, + 288 + ], + [ + 307, + 306, + 289 + ], + [ + 325, + 306, + 307 + ], + [ + 362, + 344, + 363 + ], + [ + 363, + 344, + 345 + ], + [ + 344, + 327, + 345 + ], + [ + 327, + 344, + 326 + ], + [ + 379, + 362, + 380 + ], + [ + 379, + 381, + 378 + ], + [ + 379, + 380, + 381 + ], + [ + 325, + 343, + 342 + ], + [ + 343, + 325, + 326 + ], + [ + 344, + 343, + 326 + ], + [ + 343, + 344, + 362 + ], + [ + 227, + 209, + 228 + ], + [ + 192, + 209, + 191 + ], + [ + 209, + 208, + 191 + ], + [ + 209, + 227, + 208 + ], + [ + 210, + 229, + 228 + ], + [ + 210, + 192, + 193 + ], + [ + 209, + 210, + 228 + ], + [ + 210, + 209, + 192 + ], + [ + 248, + 267, + 266 + ], + [ + 194, + 176, + 195 + ], + [ + 176, + 194, + 175 + ], + [ + 176, + 177, + 195 + ], + [ + 176, + 159, + 177 + ], + [ + 176, + 175, + 158 + ], + [ + 159, + 176, + 158 + ], + [ + 211, + 194, + 212 + ], + [ + 194, + 211, + 193 + ], + [ + 211, + 210, + 193 + ], + [ + 210, + 211, + 229 + ], + [ + 213, + 212, + 195 + ], + [ + 214, + 215, + 233 + ], + [ + 232, + 214, + 233 + ], + [ + 213, + 214, + 232 + ], + [ + 284, + 267, + 285 + ], + [ + 267, + 284, + 266 + ], + [ + 302, + 320, + 319 + ], + [ + 337, + 318, + 319 + ], + [ + 318, + 301, + 319 + ], + [ + 359, + 341, + 323 + ], + [ + 394, + 377, + 395 + ], + [ + 377, + 359, + 395 + ], + [ + 392, + 394, + 391 + ], + [ + 334, + 333, + 315 + ], + [ + 336, + 318, + 337 + ], + [ + 318, + 336, + 317 + ], + [ + 38, + 56, + 55 + ], + [ + 57, + 56, + 39 + ], + [ + 56, + 38, + 39 + ], + [ + 1, + 18, + 0 + ], + [ + 2, + 1, + 3 + ], + [ + 4, + 1, + 0 + ], + [ + 1, + 4, + 3 + ], + [ + 38, + 19, + 20 + ], + [ + 19, + 2, + 20 + ], + [ + 19, + 38, + 37 + ], + [ + 19, + 1, + 2 + ], + [ + 18, + 19, + 37 + ], + [ + 1, + 19, + 18 + ], + [ + 53, + 35, + 71 + ], + [ + 53, + 34, + 35 + ], + [ + 16, + 13, + 17 + ], + [ + 34, + 16, + 17 + ], + [ + 14, + 15, + 32 + ], + [ + 16, + 14, + 13 + ], + [ + 14, + 16, + 15 + ], + [ + 15, + 33, + 32 + ], + [ + 33, + 16, + 34 + ], + [ + 16, + 33, + 15 + ], + [ + 163, + 162, + 145 + ], + [ + 181, + 162, + 163 + ], + [ + 162, + 144, + 145 + ], + [ + 144, + 162, + 180 + ], + [ + 162, + 181, + 180 + ], + [ + 218, + 235, + 217 + ], + [ + 235, + 218, + 236 + ], + [ + 218, + 219, + 236 + ], + [ + 219, + 218, + 200 + ], + [ + 148, + 130, + 149 + ], + [ + 148, + 166, + 165 + ], + [ + 166, + 148, + 149 + ], + [ + 229, + 246, + 228 + ], + [ + 246, + 245, + 228 + ], + [ + 245, + 244, + 227 + ], + [ + 244, + 262, + 243 + ], + [ + 226, + 244, + 243 + ], + [ + 244, + 226, + 227 + ], + [ + 175, + 157, + 158 + ], + [ + 25, + 7, + 8 + ], + [ + 168, + 151, + 169 + ], + [ + 151, + 168, + 150 + ], + [ + 130, + 113, + 131 + ], + [ + 118, + 99, + 100 + ], + [ + 25, + 44, + 43 + ], + [ + 64, + 46, + 47 + ], + [ + 46, + 64, + 63 + ], + [ + 23, + 42, + 41 + ], + [ + 60, + 42, + 43 + ], + [ + 75, + 76, + 93 + ], + [ + 76, + 75, + 57 + ], + [ + 75, + 56, + 57 + ], + [ + 92, + 110, + 91 + ], + [ + 92, + 75, + 93 + ], + [ + 148, + 129, + 130 + ], + [ + 109, + 90, + 91 + ], + [ + 110, + 109, + 91 + ], + [ + 109, + 126, + 108 + ], + [ + 90, + 109, + 108 + ], + [ + 127, + 146, + 145 + ], + [ + 127, + 109, + 110 + ], + [ + 126, + 127, + 145 + ], + [ + 109, + 127, + 126 + ], + [ + 256, + 237, + 238 + ], + [ + 219, + 237, + 236 + ], + [ + 237, + 255, + 236 + ], + [ + 255, + 237, + 256 + ], + [ + 201, + 219, + 200 + ], + [ + 274, + 275, + 293 + ], + [ + 274, + 292, + 273 + ], + [ + 292, + 274, + 293 + ], + [ + 256, + 274, + 273 + ], + [ + 240, + 239, + 222 + ], + [ + 186, + 203, + 185 + ], + [ + 187, + 186, + 168 + ], + [ + 167, + 186, + 185 + ], + [ + 186, + 167, + 168 + ], + [ + 224, + 206, + 225 + ], + [ + 242, + 224, + 225 + ], + [ + 205, + 187, + 188 + ], + [ + 206, + 205, + 188 + ], + [ + 205, + 224, + 223 + ], + [ + 224, + 205, + 206 + ], + [ + 207, + 226, + 225 + ], + [ + 206, + 207, + 225 + ], + [ + 207, + 206, + 189 + ], + [ + 226, + 207, + 208 + ], + [ + 296, + 314, + 313 + ], + [ + 333, + 314, + 315 + ], + [ + 314, + 332, + 313 + ], + [ + 314, + 333, + 332 + ], + [ + 241, + 242, + 260 + ], + [ + 259, + 241, + 260 + ], + [ + 241, + 259, + 240 + ], + [ + 241, + 240, + 223 + ], + [ + 224, + 241, + 223 + ], + [ + 241, + 224, + 242 + ], + [ + 383, + 382, + 365 + ], + [ + 382, + 383, + 384 + ], + [ + 332, + 331, + 313 + ], + [ + 331, + 312, + 313 + ], + [ + 294, + 275, + 276 + ], + [ + 275, + 294, + 293 + ], + [ + 295, + 296, + 313 + ], + [ + 312, + 295, + 313 + ], + [ + 295, + 294, + 276 + ], + [ + 294, + 295, + 312 + ], + [ + 327, + 328, + 345 + ], + [ + 328, + 346, + 345 + ], + [ + 328, + 309, + 310 + ], + [ + 328, + 327, + 309 + ], + [ + 329, + 328, + 310 + ], + [ + 346, + 328, + 329 + ], + [ + 331, + 349, + 348 + ], + [ + 349, + 331, + 332 + ], + [ + 349, + 367, + 348 + ], + [ + 367, + 349, + 368 + ], + [ + 384, + 386, + 378 + ], + [ + 387, + 386, + 369 + ], + [ + 386, + 368, + 369 + ], + [ + 386, + 390, + 378 + ], + [ + 390, + 386, + 387 + ], + [ + 351, + 352, + 370 + ], + [ + 351, + 370, + 369 + ], + [ + 351, + 334, + 352 + ], + [ + 334, + 351, + 333 + ], + [ + 324, + 325, + 342 + ], + [ + 324, + 306, + 325 + ], + [ + 306, + 324, + 288 + ], + [ + 360, + 324, + 342 + ], + [ + 324, + 360, + 252 + ], + [ + 288, + 324, + 252 + ], + [ + 379, + 361, + 362 + ], + [ + 361, + 343, + 362 + ], + [ + 360, + 361, + 378 + ], + [ + 361, + 379, + 378 + ], + [ + 361, + 360, + 342 + ], + [ + 343, + 361, + 342 + ], + [ + 230, + 211, + 212 + ], + [ + 211, + 230, + 229 + ], + [ + 231, + 213, + 232 + ], + [ + 230, + 231, + 248 + ], + [ + 213, + 231, + 212 + ], + [ + 231, + 230, + 212 + ], + [ + 214, + 197, + 215 + ], + [ + 179, + 197, + 178 + ], + [ + 215, + 197, + 179 + ], + [ + 196, + 213, + 195 + ], + [ + 196, + 214, + 213 + ], + [ + 196, + 197, + 214 + ], + [ + 177, + 196, + 195 + ], + [ + 196, + 177, + 178 + ], + [ + 197, + 196, + 178 + ], + [ + 303, + 284, + 285 + ], + [ + 284, + 303, + 302 + ], + [ + 303, + 320, + 302 + ], + [ + 304, + 303, + 285 + ], + [ + 284, + 283, + 266 + ], + [ + 283, + 301, + 282 + ], + [ + 301, + 283, + 302 + ], + [ + 283, + 284, + 302 + ], + [ + 304, + 286, + 305 + ], + [ + 286, + 269, + 287 + ], + [ + 305, + 286, + 287 + ], + [ + 286, + 304, + 285 + ], + [ + 268, + 286, + 285 + ], + [ + 269, + 286, + 268 + ], + [ + 322, + 305, + 323 + ], + [ + 322, + 304, + 305 + ], + [ + 341, + 322, + 323 + ], + [ + 322, + 341, + 340 + ], + [ + 355, + 338, + 356 + ], + [ + 320, + 338, + 319 + ], + [ + 338, + 337, + 319 + ], + [ + 338, + 355, + 337 + ], + [ + 300, + 318, + 317 + ], + [ + 300, + 281, + 282 + ], + [ + 301, + 300, + 282 + ], + [ + 318, + 300, + 301 + ], + [ + 281, + 264, + 282 + ], + [ + 246, + 264, + 245 + ], + [ + 263, + 281, + 280 + ], + [ + 263, + 244, + 245 + ], + [ + 264, + 263, + 245 + ], + [ + 263, + 264, + 281 + ], + [ + 262, + 263, + 280 + ], + [ + 244, + 263, + 262 + ], + [ + 299, + 300, + 317 + ], + [ + 300, + 299, + 281 + ], + [ + 299, + 298, + 280 + ], + [ + 281, + 299, + 280 + ], + [ + 392, + 393, + 394 + ], + [ + 358, + 341, + 359 + ], + [ + 377, + 358, + 359 + ], + [ + 341, + 358, + 340 + ], + [ + 358, + 357, + 340 + ], + [ + 374, + 355, + 356 + ], + [ + 374, + 392, + 391 + ], + [ + 374, + 391, + 373 + ], + [ + 355, + 374, + 373 + ], + [ + 316, + 334, + 315 + ], + [ + 298, + 316, + 315 + ], + [ + 316, + 299, + 317 + ], + [ + 299, + 316, + 298 + ], + [ + 336, + 335, + 317 + ], + [ + 334, + 335, + 352 + ], + [ + 335, + 316, + 317 + ], + [ + 316, + 335, + 334 + ], + [ + 372, + 354, + 373 + ], + [ + 354, + 336, + 337 + ], + [ + 354, + 355, + 373 + ], + [ + 355, + 354, + 337 + ], + [ + 73, + 74, + 91 + ], + [ + 74, + 92, + 91 + ], + [ + 74, + 73, + 55 + ], + [ + 56, + 74, + 55 + ], + [ + 75, + 74, + 56 + ], + [ + 92, + 74, + 75 + ], + [ + 89, + 70, + 71 + ], + [ + 70, + 53, + 71 + ], + [ + 31, + 14, + 32 + ], + [ + 14, + 31, + 13 + ], + [ + 198, + 199, + 217 + ], + [ + 199, + 218, + 217 + ], + [ + 218, + 199, + 200 + ], + [ + 200, + 199, + 182 + ], + [ + 199, + 181, + 182 + ], + [ + 181, + 199, + 198 + ], + [ + 247, + 246, + 229 + ], + [ + 230, + 247, + 229 + ], + [ + 247, + 230, + 248 + ], + [ + 247, + 248, + 266 + ], + [ + 208, + 190, + 191 + ], + [ + 207, + 190, + 208 + ], + [ + 171, + 190, + 189 + ], + [ + 190, + 207, + 189 + ], + [ + 119, + 118, + 100 + ], + [ + 120, + 121, + 138 + ], + [ + 122, + 121, + 103 + ], + [ + 121, + 102, + 103 + ], + [ + 102, + 121, + 120 + ], + [ + 141, + 142, + 160 + ], + [ + 159, + 141, + 160 + ], + [ + 172, + 171, + 154 + ], + [ + 155, + 172, + 154 + ], + [ + 190, + 172, + 191 + ], + [ + 172, + 190, + 171 + ], + [ + 137, + 120, + 138 + ], + [ + 137, + 119, + 120 + ], + [ + 173, + 192, + 191 + ], + [ + 172, + 173, + 191 + ], + [ + 173, + 172, + 155 + ], + [ + 7, + 24, + 6 + ], + [ + 25, + 24, + 7 + ], + [ + 24, + 23, + 6 + ], + [ + 24, + 42, + 23 + ], + [ + 24, + 25, + 43 + ], + [ + 42, + 24, + 43 + ], + [ + 117, + 99, + 118 + ], + [ + 99, + 117, + 98 + ], + [ + 171, + 153, + 154 + ], + [ + 113, + 114, + 131 + ], + [ + 114, + 113, + 95 + ], + [ + 113, + 94, + 95 + ], + [ + 76, + 94, + 93 + ], + [ + 29, + 48, + 47 + ], + [ + 64, + 82, + 63 + ], + [ + 99, + 82, + 100 + ], + [ + 26, + 25, + 8 + ], + [ + 26, + 44, + 25 + ], + [ + 11, + 28, + 10 + ], + [ + 28, + 11, + 29 + ], + [ + 28, + 29, + 47 + ], + [ + 46, + 28, + 47 + ], + [ + 59, + 42, + 60 + ], + [ + 78, + 59, + 60 + ], + [ + 41, + 59, + 58 + ], + [ + 42, + 59, + 41 + ], + [ + 127, + 128, + 146 + ], + [ + 128, + 127, + 110 + ], + [ + 164, + 147, + 165 + ], + [ + 147, + 164, + 146 + ], + [ + 147, + 148, + 165 + ], + [ + 147, + 129, + 148 + ], + [ + 128, + 147, + 146 + ], + [ + 147, + 128, + 129 + ], + [ + 94, + 112, + 93 + ], + [ + 112, + 94, + 113 + ], + [ + 112, + 113, + 130 + ], + [ + 129, + 112, + 130 + ], + [ + 183, + 200, + 182 + ], + [ + 183, + 201, + 200 + ], + [ + 164, + 183, + 182 + ], + [ + 183, + 164, + 165 + ], + [ + 201, + 220, + 219 + ], + [ + 237, + 220, + 238 + ], + [ + 220, + 237, + 219 + ], + [ + 274, + 257, + 275 + ], + [ + 239, + 257, + 238 + ], + [ + 257, + 256, + 238 + ], + [ + 257, + 274, + 256 + ], + [ + 259, + 258, + 240 + ], + [ + 258, + 239, + 240 + ], + [ + 275, + 258, + 276 + ], + [ + 258, + 259, + 276 + ], + [ + 257, + 258, + 275 + ], + [ + 258, + 257, + 239 + ], + [ + 186, + 204, + 203 + ], + [ + 204, + 186, + 187 + ], + [ + 205, + 204, + 187 + ], + [ + 203, + 204, + 222 + ], + [ + 222, + 204, + 223 + ], + [ + 204, + 205, + 223 + ], + [ + 261, + 278, + 260 + ], + [ + 262, + 261, + 243 + ], + [ + 261, + 242, + 243 + ], + [ + 242, + 261, + 260 + ], + [ + 297, + 298, + 315 + ], + [ + 314, + 297, + 315 + ], + [ + 297, + 314, + 296 + ], + [ + 278, + 297, + 296 + ], + [ + 347, + 366, + 365 + ], + [ + 366, + 383, + 365 + ], + [ + 366, + 347, + 348 + ], + [ + 367, + 366, + 348 + ], + [ + 383, + 366, + 384 + ], + [ + 366, + 367, + 384 + ], + [ + 347, + 330, + 348 + ], + [ + 330, + 331, + 348 + ], + [ + 330, + 347, + 329 + ], + [ + 331, + 330, + 312 + ], + [ + 277, + 259, + 260 + ], + [ + 278, + 277, + 260 + ], + [ + 259, + 277, + 276 + ], + [ + 277, + 295, + 276 + ], + [ + 277, + 278, + 296 + ], + [ + 295, + 277, + 296 + ], + [ + 333, + 350, + 332 + ], + [ + 350, + 349, + 332 + ], + [ + 351, + 350, + 333 + ], + [ + 350, + 351, + 369 + ], + [ + 368, + 350, + 369 + ], + [ + 349, + 350, + 368 + ], + [ + 385, + 367, + 368 + ], + [ + 386, + 385, + 368 + ], + [ + 367, + 385, + 384 + ], + [ + 385, + 386, + 384 + ], + [ + 249, + 231, + 232 + ], + [ + 249, + 250, + 268 + ], + [ + 249, + 232, + 250 + ], + [ + 231, + 249, + 248 + ], + [ + 267, + 249, + 268 + ], + [ + 248, + 249, + 267 + ], + [ + 321, + 303, + 304 + ], + [ + 303, + 321, + 320 + ], + [ + 321, + 322, + 340 + ], + [ + 322, + 321, + 304 + ], + [ + 283, + 265, + 266 + ], + [ + 265, + 247, + 266 + ], + [ + 265, + 283, + 282 + ], + [ + 264, + 265, + 282 + ], + [ + 265, + 264, + 246 + ], + [ + 247, + 265, + 246 + ], + [ + 376, + 377, + 394 + ], + [ + 393, + 376, + 394 + ], + [ + 376, + 358, + 377 + ], + [ + 358, + 376, + 357 + ], + [ + 338, + 339, + 356 + ], + [ + 339, + 357, + 356 + ], + [ + 357, + 339, + 340 + ], + [ + 339, + 338, + 320 + ], + [ + 339, + 321, + 340 + ], + [ + 321, + 339, + 320 + ], + [ + 375, + 374, + 356 + ], + [ + 374, + 375, + 392 + ], + [ + 357, + 375, + 356 + ], + [ + 376, + 375, + 357 + ], + [ + 375, + 393, + 392 + ], + [ + 375, + 376, + 393 + ], + [ + 353, + 335, + 336 + ], + [ + 354, + 353, + 336 + ], + [ + 352, + 353, + 371 + ], + [ + 335, + 353, + 352 + ], + [ + 353, + 372, + 371 + ], + [ + 353, + 354, + 372 + ], + [ + 52, + 33, + 34 + ], + [ + 53, + 52, + 34 + ], + [ + 70, + 52, + 53 + ], + [ + 69, + 52, + 70 + ], + [ + 33, + 51, + 32 + ], + [ + 52, + 51, + 33 + ], + [ + 51, + 52, + 69 + ], + [ + 139, + 121, + 122 + ], + [ + 157, + 139, + 158 + ], + [ + 139, + 157, + 138 + ], + [ + 121, + 139, + 138 + ], + [ + 124, + 125, + 142 + ], + [ + 141, + 124, + 142 + ], + [ + 119, + 136, + 118 + ], + [ + 137, + 136, + 119 + ], + [ + 136, + 137, + 155 + ], + [ + 136, + 155, + 154 + ], + [ + 192, + 174, + 193 + ], + [ + 173, + 174, + 192 + ], + [ + 174, + 175, + 193 + ], + [ + 174, + 157, + 175 + ], + [ + 137, + 156, + 155 + ], + [ + 156, + 173, + 155 + ], + [ + 156, + 137, + 138 + ], + [ + 156, + 174, + 173 + ], + [ + 157, + 156, + 138 + ], + [ + 174, + 156, + 157 + ], + [ + 79, + 78, + 60 + ], + [ + 117, + 116, + 98 + ], + [ + 116, + 117, + 134 + ], + [ + 133, + 116, + 134 + ], + [ + 116, + 133, + 115 + ], + [ + 117, + 135, + 134 + ], + [ + 135, + 153, + 134 + ], + [ + 153, + 135, + 154 + ], + [ + 135, + 136, + 154 + ], + [ + 135, + 117, + 118 + ], + [ + 136, + 135, + 118 + ], + [ + 153, + 152, + 134 + ], + [ + 133, + 152, + 151 + ], + [ + 152, + 133, + 134 + ], + [ + 151, + 152, + 169 + ], + [ + 170, + 171, + 189 + ], + [ + 170, + 153, + 171 + ], + [ + 188, + 170, + 189 + ], + [ + 170, + 152, + 153 + ], + [ + 170, + 188, + 169 + ], + [ + 152, + 170, + 169 + ], + [ + 132, + 151, + 150 + ], + [ + 132, + 133, + 151 + ], + [ + 133, + 132, + 115 + ], + [ + 132, + 114, + 115 + ], + [ + 132, + 150, + 131 + ], + [ + 114, + 132, + 131 + ], + [ + 77, + 78, + 95 + ], + [ + 94, + 77, + 95 + ], + [ + 59, + 77, + 58 + ], + [ + 77, + 59, + 78 + ], + [ + 77, + 76, + 58 + ], + [ + 77, + 94, + 76 + ], + [ + 30, + 48, + 29 + ], + [ + 31, + 30, + 13 + ], + [ + 30, + 31, + 49 + ], + [ + 48, + 30, + 49 + ], + [ + 82, + 81, + 63 + ], + [ + 81, + 82, + 99 + ], + [ + 81, + 62, + 63 + ], + [ + 62, + 81, + 80 + ], + [ + 81, + 98, + 80 + ], + [ + 81, + 99, + 98 + ], + [ + 44, + 61, + 43 + ], + [ + 62, + 61, + 44 + ], + [ + 61, + 60, + 43 + ], + [ + 61, + 79, + 60 + ], + [ + 61, + 62, + 80 + ], + [ + 79, + 61, + 80 + ], + [ + 10, + 9, + 8 + ], + [ + 9, + 26, + 8 + ], + [ + 45, + 62, + 44 + ], + [ + 26, + 45, + 44 + ], + [ + 62, + 45, + 63 + ], + [ + 45, + 46, + 63 + ], + [ + 128, + 111, + 129 + ], + [ + 111, + 112, + 129 + ], + [ + 92, + 111, + 110 + ], + [ + 111, + 128, + 110 + ], + [ + 111, + 92, + 93 + ], + [ + 112, + 111, + 93 + ], + [ + 183, + 184, + 201 + ], + [ + 184, + 166, + 185 + ], + [ + 166, + 184, + 165 + ], + [ + 184, + 183, + 165 + ], + [ + 221, + 203, + 222 + ], + [ + 239, + 221, + 222 + ], + [ + 221, + 239, + 238 + ], + [ + 220, + 221, + 238 + ], + [ + 261, + 279, + 278 + ], + [ + 279, + 297, + 278 + ], + [ + 279, + 262, + 280 + ], + [ + 279, + 261, + 262 + ], + [ + 298, + 279, + 280 + ], + [ + 297, + 279, + 298 + ], + [ + 311, + 330, + 329 + ], + [ + 330, + 311, + 312 + ], + [ + 311, + 294, + 312 + ], + [ + 311, + 329, + 310 + ], + [ + 293, + 311, + 310 + ], + [ + 294, + 311, + 293 + ], + [ + 68, + 69, + 87 + ], + [ + 68, + 51, + 69 + ], + [ + 86, + 68, + 87 + ], + [ + 68, + 86, + 67 + ], + [ + 67, + 66, + 49 + ], + [ + 66, + 48, + 49 + ], + [ + 83, + 82, + 64 + ], + [ + 82, + 83, + 100 + ], + [ + 140, + 141, + 159 + ], + [ + 140, + 159, + 158 + ], + [ + 139, + 140, + 158 + ], + [ + 140, + 139, + 122 + ], + [ + 88, + 70, + 89 + ], + [ + 88, + 69, + 70 + ], + [ + 69, + 88, + 87 + ], + [ + 88, + 105, + 87 + ], + [ + 97, + 79, + 80 + ], + [ + 97, + 116, + 115 + ], + [ + 98, + 97, + 80 + ], + [ + 116, + 97, + 98 + ], + [ + 30, + 12, + 13 + ], + [ + 12, + 11, + 10 + ], + [ + 11, + 12, + 29 + ], + [ + 12, + 30, + 29 + ], + [ + 13, + 12, + 8 + ], + [ + 12, + 10, + 8 + ], + [ + 27, + 28, + 46 + ], + [ + 9, + 27, + 26 + ], + [ + 28, + 27, + 10 + ], + [ + 27, + 9, + 10 + ], + [ + 45, + 27, + 46 + ], + [ + 27, + 45, + 26 + ], + [ + 202, + 220, + 201 + ], + [ + 184, + 202, + 201 + ], + [ + 221, + 202, + 203 + ], + [ + 202, + 221, + 220 + ], + [ + 203, + 202, + 185 + ], + [ + 202, + 184, + 185 + ], + [ + 50, + 68, + 67 + ], + [ + 68, + 50, + 51 + ], + [ + 31, + 50, + 49 + ], + [ + 50, + 67, + 49 + ], + [ + 50, + 31, + 32 + ], + [ + 51, + 50, + 32 + ], + [ + 48, + 65, + 47 + ], + [ + 66, + 65, + 48 + ], + [ + 65, + 64, + 47 + ], + [ + 65, + 83, + 64 + ], + [ + 65, + 66, + 84 + ], + [ + 83, + 65, + 84 + ], + [ + 84, + 85, + 102 + ], + [ + 66, + 85, + 84 + ], + [ + 102, + 85, + 103 + ], + [ + 85, + 86, + 103 + ], + [ + 86, + 85, + 67 + ], + [ + 85, + 66, + 67 + ], + [ + 83, + 101, + 100 + ], + [ + 101, + 119, + 100 + ], + [ + 101, + 84, + 102 + ], + [ + 101, + 83, + 84 + ], + [ + 119, + 101, + 120 + ], + [ + 101, + 102, + 120 + ], + [ + 104, + 86, + 87 + ], + [ + 105, + 104, + 87 + ], + [ + 104, + 122, + 103 + ], + [ + 86, + 104, + 103 + ], + [ + 123, + 124, + 141 + ], + [ + 123, + 105, + 124 + ], + [ + 123, + 140, + 122 + ], + [ + 140, + 123, + 141 + ], + [ + 104, + 123, + 122 + ], + [ + 123, + 104, + 105 + ], + [ + 105, + 106, + 124 + ], + [ + 88, + 106, + 105 + ], + [ + 125, + 106, + 107 + ], + [ + 124, + 106, + 125 + ], + [ + 107, + 106, + 89 + ], + [ + 106, + 88, + 89 + ], + [ + 114, + 96, + 115 + ], + [ + 96, + 97, + 115 + ], + [ + 96, + 114, + 95 + ], + [ + 97, + 96, + 79 + ], + [ + 78, + 96, + 95 + ], + [ + 79, + 96, + 78 + ] + ], + "domains": { + "A": [ + 19, + 53, + 83, + 84, + 85, + 86, + 87, + 117, + 118, + 119, + 120, + 121, + 160, + 161, + 164, + 166, + 175, + 176, + 235, + 237, + 238, + 239, + 240, + 265, + 269, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 281, + 282, + 288, + 289, + 290, + 291, + 292, + 293, + 298, + 299, + 302, + 429, + 430, + 431, + 432, + 433, + 434, + 435, + 437, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 455, + 456, + 457, + 458, + 459, + 494, + 495, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 512, + 513, + 517, + 528, + 529, + 530, + 531, + 532, + 533, + 589, + 590, + 591, + 592, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 602, + 603, + 604, + 605, + 606, + 607, + 608, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 621, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 634, + 635, + 674, + 675, + 676, + 678, + 679, + 707, + 724, + 726, + 750, + 768 + ], + "B": [ + 6, + 7, + 36, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 88, + 89, + 90, + 124, + 127, + 128, + 159, + 162, + 163, + 165, + 167, + 177, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 229, + 230, + 231, + 232, + 233, + 234, + 280, + 283, + 284, + 285, + 286, + 287, + 294, + 295, + 296, + 297, + 300, + 301, + 303, + 310, + 311, + 312, + 313, + 314, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 335, + 336, + 337, + 338, + 339, + 340, + 345, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 365, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 425, + 426, + 427, + 428, + 511, + 514, + 515, + 516, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 525, + 526, + 527, + 534, + 535, + 536, + 537, + 538, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 680, + 681, + 682, + 683, + 684, + 685, + 686, + 687, + 688, + 689 + ], + "C": [ + 1, + 2, + 3, + 5, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 73, + 74, + 75, + 77, + 78, + 79, + 80, + 81, + 82, + 94, + 95, + 96, + 99, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 122, + 123, + 125, + 126, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 266, + 267, + 268, + 304, + 305, + 306, + 307, + 308, + 309, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 333, + 334, + 409, + 410, + 411, + 412, + 413, + 414, + 419, + 420, + 421, + 422, + 423, + 424, + 461, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 496, + 497, + 640, + 641, + 664, + 665, + 666, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 677, + 722, + 723, + 725, + 727 + ], + "D": [ + 0, + 4, + 34, + 35, + 37, + 38, + 39, + 40, + 41, + 42, + 52, + 76, + 91, + 92, + 93, + 97, + 98, + 100, + 129, + 130, + 131, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 178, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 236, + 241, + 242, + 243, + 244, + 245, + 341, + 342, + 343, + 344, + 346, + 347, + 348, + 349, + 415, + 416, + 417, + 418, + 436, + 438, + 439, + 449, + 450, + 451, + 452, + 453, + 454, + 460, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 593, + 594, + 609, + 636, + 637, + 638, + 639, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 653, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 698, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 717, + 718, + 719, + 720, + 721, + 728, + 729, + 730, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 749, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 762, + 763, + 764, + 765, + 766, + 767, + 769, + 770, + 771, + 772, + 773 + ] + }, + "domain_centroids": { + "A": [ + -0.1029, + -0.1178 + ], + "B": [ + 0.6824, + 1.1166 + ], + "C": [ + -1.4938, + -0.0269 + ], + "D": [ + 0.5989, + -1.2335 + ] + }, + "centroid_a": [ + -0.1029, + -0.1178 + ], + "centroid_b": [ + 0.6824, + 1.1166 + ], + "test_point": [ + 0.3, + 0.3 + ], + "view": 1.8 +} \ No newline at end of file diff --git a/.claude/skills/cetz-figures/examples/domain-demo.png b/.claude/skills/cetz-figures/examples/domain-demo.png new file mode 100644 index 0000000000000000000000000000000000000000..f439f3548edab06768a4780ead189901cfcbc062 GIT binary patch literal 572471 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

vd+OE(TB*{ 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 z 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 literal 0 HcmV?d00001 diff --git a/.claude/skills/cetz-figures/examples/facet-vs-true-normals.typ b/.claude/skills/cetz-figures/examples/facet-vs-true-normals.typ new file mode 100644 index 00000000..8f1b7169 --- /dev/null +++ b/.claude/skills/cetz-figures/examples/facet-vs-true-normals.typ @@ -0,0 +1,119 @@ +#import "@preview/cetz:0.3.4" + +// Explicit page size + aligned-centred canvas lets us control padding +// independently of whatever bbox cetz reports for its content. +#set page(width: 12cm, height: 8cm, margin: 6pt) +#set text(size: 10pt) + +#let data = json("curved-bc-data.json") + +// ── Colours ─────────────────────────────────────────────────────────── +#let arc-colour = rgb("#b0b0b0") // true smooth curve +#let facet-colour = rgb("#1f3a6b") // navy — mesh facets +#let gamma-colour = rgb("#c2410c") // rust — PETSc facet normal +#let true-colour = rgb("#059669") // emerald — true surface normal +#let centre-colour = black + +// ── Geometry access ─────────────────────────────────────────────────── +#let centre = (data.centre.at(0), data.centre.at(1)) +#let radius-end = (data.radius_end.at(0), data.radius_end.at(1)) + +// ── Figure ──────────────────────────────────────────────────────────── +#align(center + horizon, cetz.canvas(length: 3cm, { + import cetz.draw: * + + // 1. True smooth arc — thin dashed grey polyline. + let arc-stroke = (paint: arc-colour, thickness: 0.6pt, dash: "dashed") + for i in range(data.arc_points.len() - 1) { + let p0 = data.arc_points.at(i) + let p1 = data.arc_points.at(i + 1) + line((p0.at(0), p0.at(1)), (p1.at(0), p1.at(1)), stroke: arc-stroke) + } + + // 2. Radius-of-curvature indicator from centre to the arc midpoint. + line(centre, radius-end, + stroke: (paint: arc-colour, thickness: 0.5pt, dash: "dotted")) + // Label the radius midway along it, offset perpendicular. + let r-label-pos = ( + 0.5 * (centre.at(0) + radius-end.at(0)) + 0.07, + 0.5 * (centre.at(1) + radius-end.at(1)), + ) + content(r-label-pos, text(fill: arc-colour, size: 10pt, $R$), + anchor: "west") + + // 3. Facet polyline — thin black. The control points (vertex dots, + // Gauss-point dots) carry the visual weight; the segments between + // them are just the domain boundary. + for i in range(data.facet_vertices.len() - 1) { + let p0 = data.facet_vertices.at(i) + let p1 = data.facet_vertices.at(i + 1) + line((p0.at(0), p0.at(1)), (p1.at(0), p1.at(1)), + stroke: 0.6pt + black) + } + // Facet vertex markers + for v in data.facet_vertices { + circle((v.at(0), v.at(1)), radius: 0.038, + fill: facet-colour, stroke: none) + } + + // 4. Quadrature points with their two normals. + // - true normal (emerald, dashed) ← what free-slip wants + // - facet normal (rust, solid) ← what mesh.Gamma gives + let arrow-len = 0.28 + let true-stroke = (paint: true-colour, thickness: 0.9pt, dash: "dashed") + let gamma-stroke = 1.3pt + gamma-colour + for q in data.quadrature { + let pos = (q.pos.at(0), q.pos.at(1)) + let tn = q.true_normal + let fn = q.facet_normal + + // Facet normal arrow drawn FIRST, so the dashed true normal + // layers on top. Where the two coincide (facet midpoints), the + // green dashes interleave with the rust underneath and both + // colours stay visible — it reads as "they overlap here". + let tip-f = (pos.at(0) + arrow-len * fn.at(0), + pos.at(1) + arrow-len * fn.at(1)) + line(pos, tip-f, stroke: gamma-stroke, + mark: (end: ">", fill: gamma-colour)) + + // True normal arrow on top + let tip-t = (pos.at(0) + arrow-len * tn.at(0), + pos.at(1) + arrow-len * tn.at(1)) + line(pos, tip-t, stroke: true-stroke, + mark: (end: ">", fill: true-colour)) + + // Small quadrature dot + circle(pos, radius: 0.024, fill: black, stroke: none) + } + + // 5. Centre dot + label + circle(centre, radius: 0.038, fill: centre-colour, stroke: none) + content((centre.at(0) + 0.06, centre.at(1) - 0.06), + $O$, anchor: "north-west") + + // 6. Legend in the empty space below the arc. Short sample strokes + // next to each label, so the figure is self-explaining without + // leader lines or per-arrow annotations. + let lx = 0.25 // legend x start (inside the open area) + let ly = 0.55 // top row y + let row = 0.22 // row spacing + let sample-len = 0.28 + + // Row 1: facet normal sample + line((lx, ly), (lx + sample-len, ly), + stroke: gamma-stroke, + mark: (end: ">", fill: gamma-colour)) + content((lx + sample-len + 0.08, ly), + text(fill: gamma-colour, size: 9.5pt, + $hat(n)_Gamma$ + [ (facet, `mesh.Gamma`)]), + anchor: "west") + + // Row 2: true normal sample + line((lx, ly - row), (lx + sample-len, ly - row), + stroke: true-stroke, + mark: (end: ">", fill: true-colour)) + content((lx + sample-len + 0.08, ly - row), + text(fill: true-colour, size: 9.5pt, + $hat(n)_"true"$ + [ (smooth surface)]), + anchor: "west") +})) diff --git a/.claude/skills/cetz-figures/examples/generate-curved-bc-data.py b/.claude/skills/cetz-figures/examples/generate-curved-bc-data.py new file mode 100644 index 00000000..5af372f8 --- /dev/null +++ b/.claude/skills/cetz-figures/examples/generate-curved-bc-data.py @@ -0,0 +1,127 @@ +""" +Data for the "facet normals vs. true normals" figure in +`docs/advanced/curved-boundary-conditions.md`. + +The figure illustrates why `mesh.Gamma` (PETSc facet normals) diverges +from the true smooth-surface normal on a curved boundary: + + - Three straight facets approximate a circular arc. + - At each Gauss quadrature point (2 per facet), the facet normal + is constant across the facet while the true (radial) normal + rotates with position. + +Output schema: + + { + "centre": [cx, cy], + "radius": R, + "arc_points": [[x, y], ...], # densely sampled true arc + "facet_vertices": [[x, y], ...], # points on the circle + "quadrature": [ + {"pos": [x, y], + "facet_normal": [nx, ny], + "true_normal": [nx, ny], + "facet_idx": int}, + ... + ], + "radius_end": [x, y] # arc point at mid-angle + # (end of the radius indicator) + } +""" +import json +import math +from pathlib import Path + +CENTRE = (0.0, 0.0) +RADIUS = 1.5 +ANGLE_START = 30.0 # degrees — chosen so the error angle at +ANGLE_END = 150.0 # quadrature points is visually obvious (~12°) +N_FACETS = 3 +ARC_SAMPLES = 120 + + +def point_at_angle(deg, r=RADIUS): + rad = math.radians(deg) + return (CENTRE[0] + r * math.cos(rad), + CENTRE[1] + r * math.sin(rad)) + + +# 1. Dense sampling of the true arc (for a dashed polyline in Typst) +arc_points = [ + list(point_at_angle( + ANGLE_START + (i / ARC_SAMPLES) * (ANGLE_END - ANGLE_START) + )) + for i in range(ARC_SAMPLES + 1) +] + +# 2. Facet vertices — N_FACETS + 1 points evenly spaced on the arc +facet_vertices = [ + list(point_at_angle( + ANGLE_START + (i / N_FACETS) * (ANGLE_END - ANGLE_START) + )) + for i in range(N_FACETS + 1) +] + +# 3. Three-point Gauss–Legendre quadrature on [-1, 1]: 0, ±sqrt(3/5). +# Mapped to t ∈ [0, 1]: 0.5 ± sqrt(3/5)/2 and 0.5. +# The middle node lies exactly at the chord midpoint, where the +# facet normal and the radial true normal coincide — that's the +# "error vanishes at facet midpoint" case the figure needs to show. +_HALF = 0.5 * math.sqrt(0.6) +GAUSS_T = ( + 0.5 - _HALF, + 0.5, + 0.5 + _HALF, +) + +quadrature = [] +for facet_idx in range(N_FACETS): + p0 = facet_vertices[facet_idx] + p1 = facet_vertices[facet_idx + 1] + dx, dy = p1[0] - p0[0], p1[1] - p0[1] + length = math.hypot(dx, dy) + + # Outward perpendicular to the chord: pick the rotation of (dx, dy) + # whose dot-product with (midpoint - centre) is positive. + mid = ((p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2) + cand = (-dy / length, dx / length) + if (cand[0] * (mid[0] - CENTRE[0]) + + cand[1] * (mid[1] - CENTRE[1])) < 0: + cand = (dy / length, -dx / length) + facet_normal = cand + + for t in GAUSS_T: + pos = (p0[0] + t * dx, p0[1] + t * dy) + # True normal: unit radial vector from circle centre through pos. + rx, ry = pos[0] - CENTRE[0], pos[1] - CENTRE[1] + rlen = math.hypot(rx, ry) + true_normal = (rx / rlen, ry / rlen) + quadrature.append({ + "pos": [pos[0], pos[1]], + "facet_normal": [facet_normal[0], facet_normal[1]], + "true_normal": [true_normal[0], true_normal[1]], + "facet_idx": facet_idx, + }) + +# 4. Radius indicator: from centre to arc midpoint +radius_end = list(point_at_angle((ANGLE_START + ANGLE_END) / 2)) + +data = { + "centre": list(CENTRE), + "radius": RADIUS, + "arc_points": [[round(x, 4), round(y, 4)] for x, y in arc_points], + "facet_vertices": [[round(x, 4), round(y, 4)] for x, y in facet_vertices], + "quadrature": [ + {k: ([round(v[0], 4), round(v[1], 4)] if isinstance(v, list) else v) + for k, v in q.items()} + for q in quadrature + ], + "radius_end": [round(radius_end[0], 4), round(radius_end[1], 4)], +} + +out = Path(__file__).with_name("curved-bc-data.json") +out.write_text(json.dumps(data, indent=2)) +print(f"wrote {out.name}: " + f"{len(arc_points)} arc samples, " + f"{len(facet_vertices)} facet vertices, " + f"{len(quadrature)} quadrature points") diff --git a/.claude/skills/cetz-figures/examples/generate-domain-demo-data.py b/.claude/skills/cetz-figures/examples/generate-domain-demo-data.py new file mode 100644 index 00000000..1e4b9990 --- /dev/null +++ b/.claude/skills/cetz-figures/examples/generate-domain-demo-data.py @@ -0,0 +1,154 @@ +""" +Generate a 2D triangular mesh partitioned into two domains for the +parallel particle migration blog post figure. + +The mesh is larger than the element-level demo, with more equant +triangles. Two domains (A and B) are defined by a partition line. +A test particle is placed so it is closer to domain A's centroid +but actually inside domain B — illustrating why centroid-nearest +is insufficient for parallel migration. + +Output schema: + { + "vertices": [[x, y], ...], + "triangles": [[i, j, k], ...], + "domain_a": [tri_index, ...], # triangle indices in domain A + "domain_b": [tri_index, ...], # triangle indices in domain B + "centroid_a": [x, y], + "centroid_b": [x, y], + "test_point": [x, y] + } + +Run: python3 generate-domain-demo-data.py +""" +import json +from pathlib import Path + +import numpy as np +from scipy.spatial import Delaunay + +SEED = 42 +BOX = 2.5 +SPACING = 0.28 +JITTER = 0.10 + +rng = np.random.default_rng(SEED) + +# Jittered equilateral-triangular lattice +dy = SPACING * np.sqrt(3) / 2 +lattice = [] +ys = np.arange(-BOX, BOX + dy, dy) +for row, y in enumerate(ys): + offset = SPACING / 2 if row % 2 else 0.0 + for x in np.arange(-BOX + offset, BOX + 1e-9, SPACING): + lattice.append([x, y]) +lattice = np.array(lattice) + +# Jitter +lattice += rng.uniform(-JITTER * SPACING, JITTER * SPACING, size=lattice.shape) + +# Triangulate +tri = Delaunay(lattice) + +# Compute triangle centroids +centroids = lattice[tri.simplices].mean(axis=1) + +# Partition into four real domains, all with centroids: +# - Domain A (blue): L-shaped, left and lower +# - Domain B (red): upper-right plus top strip (contiguous) +# - Domain C (green): left strip +# - Domain D (yellow): bottom strip plus right edge of A's boundary + +def assign_domain(cx, cy): + """Assign a triangle centroid to a domain.""" + # Domain C (green): far left + if cx <= -1.2: + return "C" + # Domain D (yellow): far bottom, plus right boundary strip + if cy <= -1.2 or (cx > 1.4 and cy <= 0.1): + return "D" + # Domain B (red): upper-right quadrant plus entire top strip + if (cx > 0.1 and cy > 0.1) or cy > 1.4: + return "B" + # Domain A (blue): everything else (L-shaped, central-left and lower) + return "A" + +domains = {} +for label in ["A", "B", "C", "D"]: + domains[label] = [] + +for i, (cx, cy) in enumerate(centroids): + label = assign_domain(cx, cy) + domains[label].append(i) + +# Compute domain centroids +VIEW = 1.8 + +# Compute domain centroids using only triangles visible in the view, +# so the dots match what the reader sees in the clipped figure. +domain_centroids = {} +for label, indices in domains.items(): + visible = [i for i in indices + if abs(centroids[i, 0]) <= VIEW and abs(centroids[i, 1]) <= VIEW] + if visible: + domain_centroids[label] = centroids[visible].mean(axis=0) + elif indices: + domain_centroids[label] = centroids[indices].mean(axis=0) + +centroid_a = domain_centroids["A"] +centroid_b = domain_centroids["B"] + +# Place test particle: inside domain B but closer to centroid A. +test_point = [0.30, 0.30] + +dist_a = np.hypot(test_point[0] - centroid_a[0], test_point[1] - centroid_a[1]) +dist_b = np.hypot(test_point[0] - centroid_b[0], test_point[1] - centroid_b[1]) + +print(f"Domain A centroid: ({centroid_a[0]:.3f}, {centroid_a[1]:.3f})") +print(f"Domain B centroid: ({centroid_b[0]:.3f}, {centroid_b[1]:.3f})") +print(f"Test point: ({test_point[0]:.3f}, {test_point[1]:.3f})") +print(f"Distance to A: {dist_a:.3f}, Distance to B: {dist_b:.3f}") +print(f"Closer to A: {dist_a < dist_b}") + +if dist_a >= dist_b: + for ty in np.arange(0.12, 0.8, 0.02): + for tx in np.arange(0.12, 0.8, 0.02): + if assign_domain(tx, ty) != "B": + continue + da = np.hypot(tx - centroid_a[0], ty - centroid_a[1]) + db = np.hypot(tx - centroid_b[0], ty - centroid_b[1]) + if da < db: + test_point = [tx, ty] + print(f"Adjusted to ({tx:.3f}, {ty:.3f}), dist_a={da:.3f}, dist_b={db:.3f}") + break + else: + continue + break + +# All domain centroids +domain_centroids_out = {} +for label, indices in domains.items(): + if indices: + c = domain_centroids[label] + domain_centroids_out[label] = [round(float(c[0]), 4), round(float(c[1]), 4)] + +data = { + "vertices": [[round(float(x), 4), round(float(y), 4)] for x, y in lattice], + "triangles": [[int(i), int(j), int(k)] for i, j, k in tri.simplices], + "domains": {label: [int(i) for i in indices] for label, indices in domains.items()}, + "domain_centroids": domain_centroids_out, + "centroid_a": [round(float(centroid_a[0]), 4), round(float(centroid_a[1]), 4)], + "centroid_b": [round(float(centroid_b[0]), 4), round(float(centroid_b[1]), 4)], + "test_point": [round(float(test_point[0]), 4), round(float(test_point[1]), 4)], + "view": VIEW, +} + +out = Path(__file__).with_name("domain-demo-data.json") +out.write_text(json.dumps(data, indent=2)) + +print(f"\nWrote {out.name}: " + f"{len(data['vertices'])} vertices, " + f"{len(data['triangles'])} triangles") +for label, indices in domains.items(): + c = domain_centroids[label] + print(f" Domain {label}: {len(indices)} triangles, centroid ({c[0]:.3f}, {c[1]:.3f})") diff --git a/.claude/skills/cetz-figures/examples/generate-mesh-data.py b/.claude/skills/cetz-figures/examples/generate-mesh-data.py new file mode 100644 index 00000000..9fe4804a --- /dev/null +++ b/.claude/skills/cetz-figures/examples/generate-mesh-data.py @@ -0,0 +1,107 @@ +""" +Generate a deterministic 2D triangular mesh for the cetz demo figure. + +The central "highlight" triangle is forced into the Delaunay output by +seeding its vertices first and rejecting any other interior point that +would fall inside its circumcircle (Delaunay-empty-circle property). + +Output schema (identical to what a future underworld3 export will emit): + + { + "vertices": [[x, y], ...], # N x 2 + "triangles": [[i, j, k], ...], # M x 3 indices + "highlight": int # index into triangles + } + +Run: python3 generate-mesh-data.py +""" +import json +from pathlib import Path + +import numpy as np +from scipy.spatial import Delaunay + +SEED = 3 +BOX = 2.0 # point cloud extent — further out to ensure + # enough lattice points survive for cut edges on + # every side at the coarse spacing below. +SPACING = 1.25 # target edge length of the FE-like lattice — + # matched to the central triangle's average edge + # (~1.29) so it reads as a typical cell. +JITTER = 0.15 # fraction of SPACING — small randomness so the + # mesh reads as a real FE discretisation rather + # than a perfect lattice + +# Central triangle — deliberately asymmetric. +TRI = np.array([ + [-0.60, -0.38], + [ 0.58, -0.45], # v2 pulled in slightly from (0.62, -0.48) + # so it isn't flush with the frame. + [ 0.32, 0.70], # v3 shifted up-right so CA is the longest edge. +]) + + +def circumcircle(a, b, c): + """Return (cx, cy, r) of the circumscribed circle of triangle abc.""" + ax, ay = a; bx, by = b; cx_, cy_ = c + d = 2 * (ax * (by - cy_) + bx * (cy_ - ay) + cx_ * (ay - by)) + ux = ((ax**2 + ay**2) * (by - cy_) + + (bx**2 + by**2) * (cy_ - ay) + + (cx_**2 + cy_**2) * (ay - by)) / d + uy = ((ax**2 + ay**2) * (cx_ - bx) + + (bx**2 + by**2) * (ax - cx_) + + (cx_**2 + cy_**2) * (bx - ax)) / d + r = float(np.hypot(ux - ax, uy - ay)) + return float(ux), float(uy), r + + +cx, cy, r = circumcircle(*TRI) +SAFETY = 0.05 # keep candidates a little further out than the circle + +rng = np.random.default_rng(SEED) + +# Jittered equilateral-triangular lattice — visually uniform triangle +# sizes, like an FE mesh from gmsh with a single size field. Every other +# row is offset by half a spacing to build equilateral triangles. +dy = SPACING * np.sqrt(3) / 2 +lattice = [] +ys = np.arange(-BOX, BOX + dy, dy) +for row, y in enumerate(ys): + offset = SPACING / 2 if row % 2 else 0.0 + for x in np.arange(-BOX + offset, BOX + 1e-9, SPACING): + lattice.append([x, y]) +lattice = np.array(lattice) + +# Add a small jitter (after placing) so the mesh doesn't read as a +# perfect lattice — closer to a real FE mesh in appearance. +lattice += rng.uniform(-JITTER * SPACING, JITTER * SPACING, + size=lattice.shape) + +# Keep only lattice points outside the central triangle's circumcircle. +dist = np.hypot(lattice[:, 0] - cx, lattice[:, 1] - cy) +lattice = lattice[dist > r + SAFETY] + +points = np.vstack([TRI, lattice]) +tri = Delaunay(points) + +# Locate the central triangle among the simplices (any vertex order), +# then canonicalise its row to (0, 1, 2) so the Typst figure can rely +# on triangle[highlight].at(k) referring to the kth original TRI vertex. +target = {0, 1, 2} +highlight = next(i for i, s in enumerate(tri.simplices) if set(s) == target) +simplices = tri.simplices.copy() +simplices[highlight] = [0, 1, 2] + +data = { + "vertices": [[round(float(x), 4), round(float(y), 4)] for x, y in points], + "triangles": [[int(i), int(j), int(k)] for i, j, k in simplices], + "highlight": int(highlight), +} + +out = Path(__file__).with_name("mesh-data.json") +out.write_text(json.dumps(data, indent=2)) + +print(f"wrote {out.name}: " + f"{len(data['vertices'])} vertices, " + f"{len(data['triangles'])} triangles, " + f"highlight={highlight}") diff --git a/.claude/skills/cetz-figures/examples/mesh-data.json b/.claude/skills/cetz-figures/examples/mesh-data.json new file mode 100644 index 00000000..83d31e85 --- /dev/null +++ b/.claude/skills/cetz-figures/examples/mesh-data.json @@ -0,0 +1,252 @@ +{ + "vertices": [ + [ + -0.6, + -0.38 + ], + [ + 0.58, + -0.45 + ], + [ + 0.32, + 0.7 + ], + [ + -2.1554, + -2.0987 + ], + [ + -0.637, + -1.9692 + ], + [ + 0.3478, + -2.0251 + ], + [ + 1.7421, + -2.1276 + ], + [ + -1.287, + -1.0623 + ], + [ + -0.1658, + -0.9112 + ], + [ + 1.099, + -0.8849 + ], + [ + -1.9108, + 0.3362 + ], + [ + -0.8309, + 0.2208 + ], + [ + 1.5631, + 0.3426 + ], + [ + -1.4506, + 1.1778 + ], + [ + 0.0219, + 1.2795 + ], + [ + 1.1142, + 1.3501 + ], + [ + -2.1761, + 2.4077 + ], + [ + -0.7972, + 2.1767 + ], + [ + 0.5602, + 2.4919 + ], + [ + 1.6402, + 2.3789 + ] + ], + "triangles": [ + [ + 15, + 19, + 18 + ], + [ + 3, + 10, + 16 + ], + [ + 10, + 13, + 16 + ], + [ + 4, + 7, + 3 + ], + [ + 7, + 10, + 3 + ], + [ + 7, + 8, + 0 + ], + [ + 8, + 7, + 4 + ], + [ + 17, + 18, + 16 + ], + [ + 13, + 17, + 16 + ], + [ + 14, + 17, + 13 + ], + [ + 14, + 15, + 18 + ], + [ + 17, + 14, + 18 + ], + [ + 19, + 12, + 6 + ], + [ + 15, + 12, + 19 + ], + [ + 5, + 8, + 4 + ], + [ + 5, + 3, + 6 + ], + [ + 5, + 4, + 3 + ], + [ + 11, + 14, + 13 + ], + [ + 10, + 11, + 13 + ], + [ + 11, + 7, + 0 + ], + [ + 7, + 11, + 10 + ], + [ + 12, + 9, + 6 + ], + [ + 9, + 5, + 6 + ], + [ + 5, + 9, + 8 + ], + [ + 2, + 11, + 0 + ], + [ + 11, + 2, + 14 + ], + [ + 14, + 2, + 15 + ], + [ + 2, + 12, + 15 + ], + [ + 8, + 1, + 0 + ], + [ + 0, + 1, + 2 + ], + [ + 9, + 1, + 8 + ], + [ + 1, + 9, + 12 + ], + [ + 2, + 1, + 12 + ] + ], + "highlight": 29 +} \ No newline at end of file diff --git a/.claude/skills/cetz-figures/examples/mesh-demo.png b/.claude/skills/cetz-figures/examples/mesh-demo.png new file mode 100644 index 0000000000000000000000000000000000000000..d634ae2145733d42972ab20b09a75d9b0a86fcfc GIT binary patch literal 64363 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 Ap8x;= literal 0 HcmV?d00001 diff --git a/.claude/skills/cetz-figures/examples/mesh-demo.typ b/.claude/skills/cetz-figures/examples/mesh-demo.typ new file mode 100644 index 00000000..331bdea8 --- /dev/null +++ b/.claude/skills/cetz-figures/examples/mesh-demo.typ @@ -0,0 +1,204 @@ +#import "@preview/cetz:0.3.4" + +#set page(width: auto, height: auto, margin: 8pt) +#set text(size: 10pt) + +// ── Mesh data ───────────────────────────────────────────────────────── +#let mesh = json("mesh-data.json") + +#let pt(i) = { + let v = mesh.vertices.at(i) + (v.at(0), v.at(1)) +} + +// The central triangle is a genuine Delaunay cell. Python forces it +// into the triangulation and canonicalises its vertex order so +// triangle[highlight].at(k) is always TRI[k]. +#let h = mesh.triangles.at(mesh.highlight) +#let a = pt(h.at(0)) +#let b = pt(h.at(1)) +#let c = pt(h.at(2)) + +#let centroid = ( + (a.at(0) + b.at(0) + c.at(0)) / 3, + (a.at(1) + b.at(1) + c.at(1)) / 3, +) + +// ── Vector helpers ──────────────────────────────────────────────────── +#let vsub(p, q) = (p.at(0) - q.at(0), p.at(1) - q.at(1)) +#let vadd(p, q) = (p.at(0) + q.at(0), p.at(1) + q.at(1)) +#let vscale(p, s) = (s * p.at(0), s * p.at(1)) +#let vlen(p) = calc.sqrt(p.at(0) * p.at(0) + p.at(1) * p.at(1)) +#let vnorm(p) = { let m = vlen(p); (p.at(0) / m, p.at(1) / m) } +#let vmid(p, q) = ((p.at(0) + q.at(0)) / 2, (p.at(1) + q.at(1)) / 2) +#let dist(p, q) = vlen(vsub(p, q)) + +// ── Edge-midpoint markers (pair per edge: inside + outside) ─────────── +// Dot radius is 0.022 world units; gap 0.030 places the dot just clear. +#let edge-marker(p, q, gap: 0.030, side: "inside") = { + let m = vmid(p, q) + let dir = vnorm(vsub(centroid, m)) + let sign = if side == "outside" { -1.0 } else { 1.0 } + vadd(m, vscale(dir, sign * gap)) +} + +#let m-ab = edge-marker(a, b) +#let m-bc = edge-marker(b, c) +#let m-ca = edge-marker(c, a) + +#let m-ab-out = edge-marker(a, b, side: "outside") +#let m-bc-out = edge-marker(b, c, side: "outside") +#let m-ca-out = edge-marker(c, a, side: "outside") + +// For each face we store (endpoint0, endpoint1, inside-marker, outside-marker). +#let faces = ( + (a, b, m-ab, m-ab-out), + (b, c, m-bc, m-bc-out), + (c, a, m-ca, m-ca-out), +) + +// 2D cross product — used for the side-of-line test below. +#let cross2d(u, v) = u.at(0) * v.at(1) - u.at(1) * v.at(0) + +// Per-face rule: connect the test point to the *inside* marker if the +// test point lies on the same side of the edge as the centroid, else +// to the *outside* marker. A point inside the triangle lands on the +// centroid side of all three edges (→ all black); a point outside +// crosses at least one edge to the other side (→ at least one red). +#let marker-for(test, e0, e1, inside-marker, outside-marker) = { + let edge = vsub(e1, e0) + let s-test = cross2d(edge, vsub(test, e0)) + let s-ref = cross2d(edge, vsub(centroid, e0)) + if s-test * s-ref > 0 { inside-marker } else { outside-marker } +} + +// ── Sample (test) points ────────────────────────────────────────────── +// x_q: inside the triangle, pulled toward v2 so it sits closer to AB +// and BC, but shifted left enough that its line to the CA midpoint +// clears the centroid. +#let x-q = ( + 0.25 * a.at(0) + 0.60 * b.at(0) + 0.15 * c.at(0), + 0.25 * a.at(1) + 0.60 * b.at(1) + 0.15 * c.at(1), +) +// x_p: outside CA, nudged right so the connector to the AB midpoint +// doesn't graze the CA outside marker en route. +#let x-p = (-0.15, 0.80) + +// ── Line-through-edge extended to the viewport boundary ─────────────── +// Returns (before, after) — the two points where the infinite line +// through (p, q) crosses the axis-aligned box [-VIEW, VIEW]^2. +#let VIEW = 1.0 +#let extend-to-viewport(p, q) = { + let dx = q.at(0) - p.at(0) + let dy = q.at(1) - p.at(1) + let BIG = 1e6 + let tx-lo = if calc.abs(dx) < 1e-9 { -BIG } else { (-VIEW - p.at(0)) / dx } + let tx-hi = if calc.abs(dx) < 1e-9 { BIG } else { ( VIEW - p.at(0)) / dx } + let ty-lo = if calc.abs(dy) < 1e-9 { -BIG } else { (-VIEW - p.at(1)) / dy } + let ty-hi = if calc.abs(dy) < 1e-9 { BIG } else { ( VIEW - p.at(1)) / dy } + let tx-min = calc.min(tx-lo, tx-hi) + let tx-max = calc.max(tx-lo, tx-hi) + let ty-min = calc.min(ty-lo, ty-hi) + let ty-max = calc.max(ty-lo, ty-hi) + let t-enter = calc.max(tx-min, ty-min) + let t-exit = calc.min(tx-max, ty-max) + ( + (p.at(0) + t-enter * dx, p.at(1) + t-enter * dy), + (p.at(0) + t-exit * dx, p.at(1) + t-exit * dy), + ) +} + +// ── Colours ─────────────────────────────────────────────────────────── +#let tri-stroke = rgb("#1f3a6b") // navy — triangle +#let tri-fill = rgb(70, 120, 180, 55) // tinted navy +#let out-marker = rgb("#c2410c") // rust — outside midpoint dots +#let x-q-colour = rgb("#059669") // emerald — inside sample +#let x-p-colour = rgb("#7c3aed") // violet — outside sample + +// ── Labelled dot helper ─────────────────────────────────────────────── +#let dot(p, label: none, direction: (0.08, 0.08), align-to: "west", + radius: 0.022, colour: black, label-colour: none) = { + import cetz.draw: * + circle(p, radius: radius, fill: colour, stroke: none) + if label != none { + let lcolour = if label-colour == none { black } else { label-colour } + content( + (p.at(0) + direction.at(0), p.at(1) + direction.at(1)), + text(fill: lcolour, label), + anchor: align-to, + ) + } +} + +#let outward(p, gap: 0.11) = vscale(vnorm(vsub(p, centroid)), gap) + +// ── Figure ──────────────────────────────────────────────────────────── +#box( + clip: true, + width: 8cm, + height: 8cm, + stroke: 0.5pt + luma(50%), + align(center + horizon, cetz.canvas(length: 4cm, { + import cetz.draw: * + + // 1. Background mesh + for tri in mesh.triangles { + line( + pt(tri.at(0)), pt(tri.at(1)), pt(tri.at(2)), + close: true, + stroke: 0.4pt + rgb("#c0c0c0"), + ) + } + + // 2. Dotted extensions — triangle edges continued to the viewport. + let dotted = (paint: tri-stroke, thickness: 0.5pt, dash: "dotted") + for pair in ((a, b), (b, c), (c, a)) { + let p = pair.at(0) + let q = pair.at(1) + let ends = extend-to-viewport(p, q) + line(ends.at(0), p, stroke: dotted) + line(q, ends.at(1), stroke: dotted) + } + + // 3. Main triangle — fill + bold stroke on top of mesh and dots. + line(a, b, c, close: true, fill: tri-fill, stroke: 1.3pt + tri-stroke) + + // 4. Per-face connectors. Each test point draws three dashed lines, + // one per face, landing on black or red by the side-of-edge rule. + // All-black ⇒ inside; any-red ⇒ outside. + let dashed-stroke(col) = (paint: col, thickness: 0.7pt, dash: "dashed") + for face in faces { + let e0 = face.at(0) + let e1 = face.at(1) + let m-in = face.at(2) + let m-out = face.at(3) + line(x-q, marker-for(x-q, e0, e1, m-in, m-out), + stroke: dashed-stroke(x-q-colour)) + line(x-p, marker-for(x-p, e0, e1, m-in, m-out), + stroke: dashed-stroke(x-p-colour)) + } + + // 5. Vertex dots + labels outward from centroid. + let side-of(p) = if p.at(0) < centroid.at(0) { "east" } else { "west" } + dot(a, label: $v_1$, direction: outward(a), align-to: side-of(a)) + dot(b, label: $v_2$, direction: outward(b), align-to: side-of(b)) + dot(c, label: $v_3$, direction: outward(c), align-to: side-of(c)) + + // 6. Midpoint markers — inside (black) + outside companions (rust). + dot(m-ab); dot(m-bc); dot(m-ca) + dot(m-ab-out, colour: out-marker) + dot(m-bc-out, colour: out-marker) + dot(m-ca-out, colour: out-marker) + + // 7. Centroid + two sample points (each in its own colour). + // Centroid dot is smaller and its label tight against it so it + // reads as a derived reference rather than competing with the + // test points. + dot(centroid, label: $c$, direction: (0.055, 0), align-to: "west", + radius: 0.014) + dot(x-q, label: $x_q$, direction: (0.10, 0.05), align-to: "west", + colour: x-q-colour, label-colour: x-q-colour) + dot(x-p, label: $x_p$, direction: (0.10, 0.05), align-to: "west", + colour: x-p-colour, label-colour: x-p-colour) + })), +) diff --git a/.claude/skills/cetz-figures/underworld-bridge.md b/.claude/skills/cetz-figures/underworld-bridge.md new file mode 100644 index 00000000..f26c5791 --- /dev/null +++ b/.claude/skills/cetz-figures/underworld-bridge.md @@ -0,0 +1,75 @@ +# Bridging cetz figures to underworld3 mesh objects (sketch) + +This is a **sketch, not an implementation**. When we wire figures up to +real `underworld3` data, this is the contract the drawing code expects. + +## The JSON schema + +Any cetz figure that draws a mesh reads the same shape: + +```json +{ + "vertices": [[x, y], ...], // N x 2 floats + "triangles": [[i, j, k], ...], // M x 3 int indices into vertices + "highlight": 17 // optional: triangle of interest +} +``` + +Keep it minimal — cetz script should not have to do geometry or case +analysis. Anything derived (centroids, boundary detection, highlight +selection) is computed upstream and baked into the JSON. + +## How this maps to underworld3 + +Provisional — needs verification against the current `underworld3` mesh +API once we start using it: + +| JSON field | `underworld3` source | Notes | +|---|---|---| +| `vertices` | `mesh.data` (or `mesh.X.coords` — see repo style guide) | 2D only for this skill; 3D needs a projection | +| `triangles` | PETSc `DMPlex` cell-vertex connectivity | Simplex meshes only; quads/hexes need different rendering | +| `highlight` | Caller-provided or heuristic (e.g. closest-to-origin) | Chosen offline, not in Typst | + +Repo's data-access pattern guide: +`docs/developer/UW3_Style_and_Patterns_Guide.md`. + +## Python exporter sketch + +```python +# Not the current implementation — a target shape +def mesh_to_figure_json(mesh, *, highlight=None, path): + """Dump a uw.meshing object to the schema the cetz figures expect.""" + import json + # 2D coordinates + coords = mesh.X.coords # (N, 2) numpy, already preferred over mesh.data + cells = mesh.cell_vertex_indices # placeholder — actual accessor TBD + data = { + "vertices": [[round(float(x), 4), round(float(y), 4)] for x, y in coords], + "triangles": [[int(i) for i in cell] for cell in cells], + } + if highlight is not None: + data["highlight"] = int(highlight) + with open(path, "w") as f: + json.dump(data, f) +``` + +## What this intentionally does NOT do + +- **No coordinate transform / projection.** Caller passes whatever world + coordinates it wants; Typst draws them as-is. Transforming a spherical + mesh to a 2D projection is a Python concern. +- **No per-cell data.** This schema is for topology/geometry only. For + scalar fields, vector fields, colormaps → go the Python-generated-SVG + route and include via `#image()`. +- **No parallel-safe collection logic.** Caller is expected to gather the + mesh to rank 0 before exporting. Don't invent a parallel JSON writer. + +## Next steps (when we get here) + +1. Implement `mesh_to_figure_json` using the correct underworld3 accessors. + Verify which is idiomatic in the current codebase — `mesh.data` is + deprecated per `CLAUDE.md`. +2. Write a test figure consuming output from a small real mesh (e.g. one + of the existing example meshes). +3. Decide whether to ship the exporter as a `uw.utilities.export_figure` + helper or leave it as a per-paper script. diff --git a/.claude/skills/free-surface-convection/SKILL.md b/.claude/skills/free-surface-convection/SKILL.md new file mode 100644 index 00000000..e6687ef0 --- /dev/null +++ b/.claude/skills/free-surface-convection/SKILL.md @@ -0,0 +1,177 @@ +--- +name: free-surface-convection +description: The Underworld3 free-surface convection method we are hardening — the THREE-NUMBER pointwise topography integrator (held-lid stress equilibrium h_∞ + L-stable exponential relaxation), NOT FSSA. Reach for THIS before touching any free-surface / dynamic-topography convection run, choosing a surface-update scheme, or "stabilising" a free surface. It records the method, why FSSA is explicitly rejected, and the failure modes. +--- + +# free-surface-convection + +The free-surface scheme used in `~/+Simulations/FreeSurface/convection/fs4_compare.py` +and the design doc `docs/developer/design/FREESLIP_DYNAMIC_TOPOGRAPHY_FREESURFACE.md`. +**This is the method we are HARDENING — do not replace it; do not add FSSA.** + +> The 3-number integrator is necessary but NOT sufficient — see **Hardening strategies +> (2026-06)** below for the material-surface advection, tangential topography term, +> free-slip-inner nullspace, and graded/higher-order-mesh fixes that make it actually +> work. Reference impl + diagnostic tools live in `~/+Simulations/FreeSurface/convection/`. + +## ⚠️ NOT FSSA + +The `docs/examples/free_surface/advanced/Annulus*FS.py` examples use **FSSA** +(`add_natural_bc(δt·(Γ·v)Γ/2, "Upper")`). **That is NOT our method.** FSSA buys +stability by adding an implicit surface traction that **UNDER-deforms the surface** +— it trades accuracy for stability. Our scheme is designed to be stable **and** +accurate. If you find yourself adding `FSSA`, an `add_natural_bc` traction on the +free surface, or a `Gamma.dot(v)` stabiliser — STOP, you have the wrong method. +(Those example files are a template for a *different* approach, not this one.) + +## The three-number pointwise integrator (THE method) + +Two Stokes solves per step on the SAME mesh, then a pointwise surface update: + +1. **Free solve** — stress-free top (NO velocity BC on `Upper`; pressure datum is + pinned by the stress-free condition → no pressure nullspace). The surface + normal velocity `u_n` of this solve IS the kinematic rate `ḣ`. +2. **Held-lid solve** — a second Stokes solve with a RIGID free-slip held lid + (`u_n = 0`, via `add_nitsche_bc(Upper, local_h=True)` — see [[project_nitsche_local_h_pr275]]) + and a DRIVING-ONLY body force. Its surface normal stress `σ_nn` gives the + equilibrium topography `h_∞ = -(σ_nn - mean)/ρg`. (The free solve forces + `σ_nn = 0`, so the equilibrium MUST come from the held-lid stress.) +3. **Pointwise exp step**, per surface node, from THREE numbers (`h`, `ḣ=u_n`, + `h_∞`): + ``` + γ = ḣ / (h_∞ − h) # local relaxation rate, clamp γ ≥ 0 + h ← h_∞ + (h − h_∞)·exp(−γ·dt) + ``` + L-stable: the step is bounded between `h` and `h_∞`, so it **cannot overshoot** + regardless of a noisy local `γ` (no "drunken sailor"). 1 extra solve/step; + beats RK4 at large dt. NO per-node freeze-clamp (that was the old `relax` bug). +4. The nodal surface increment is **carried inward by a Laplacian diffuser** + (smooth, minimal mesh deformation — NOT full mmpde adaptation), then + `mesh.deform()`. Uniform meshes are fine; adaptivity is NOT required. + +Reference impl: `fs4_compare.py` → `_surface_step`, `_h_inf` (held-lid σ_nn via a +`Projection`), `_surf_un`, `_carry_diffuser`. The free-slip RIGID-top run (no +surface motion) is the reference; the free-surface run is the same driving solve +PLUS this surface update. See [[project_fs4_adaptive_2x2]], +[[project_stress_equilibrium_freesurface]], [[project_freeslip_topo_freesurface]]. + +## Performance + +- Free-slip (rigid top) stagnant-lid runs are FAST. The free-surface cost is the + extra held-lid solve **plus** that moving the surface forces a COLD-START Stokes + each step (can't warm-start across a deformed mesh). +- Use **uniform** meshes for this problem — the diffuser gives minimal deformation, + no mmpde needed. (FMG works on a uniform `refinement=N` hierarchy; scalar solvers + must avoid FMG — PETSc err62, issue underworldcode/underworld3#276.) + +## Hardening strategies (2026-06) — the integrator alone is not enough + +The 3-number integrator moves the surface correctly, but several *other* things must +be right or it runs away / tangles. All implemented in `fs4_compare.py` (flags noted). + +### 1. Material-surface advection — THE key fix (`--advect-velocity`) +The runaway (`u_n` 42→125→285→445, cold lid leaking in, plumes punching through) was +NOT an `h_∞`/BC bug (`h_∞` is verified correct, even in the stagnant FK lid — held-lid +free-slip is the EASY case there). The bug: the surface moves by the L-stable relaxed +rate `ũ_n = Δh/Δt ≤ u_n`, but T was advected with the **stress-free solve velocity** +(surface-normal = full `u_n`). Net material then crosses the surface. A free surface is +a MATERIAL boundary: advect T with a velocity whose surface-normal = `ũ_n`. Modes: +- `consistent` (the right way): a THIRD Stokes solve, same buoyancy, `v·n̂ = ũ_n` + PRESCRIBED at the surface (penalty), tangential stress-free. `ũ_n = (shape_new−shape0)/dt` + = the full ∂h/∂t at fixed θ (correct ALE target). +- `blend`: `α·v_free + (1−α)·v_held`, `α = φ1(γΔt) = (1−e^{−γΔt})/(γΔt)` (the exp-decay + time-average). By Stokes LINEARITY this *is* the prescribed-`ũ_n` solve for UNIFORM α + (and free for FK, which is linear in v). BUT the single mean-α collapse is NOT close + enough once γ varies per surface node — the planform diverges (mode-3 vs mode-1/2), + throughflow ~23 vs ~0.08. Per-node α breaks div-free (∇α·(v_free−v_held)). So the + per-node `consistent` 3rd solve is REQUIRED for structured planforms. +- `free`: advect with stress-free v (the inconsistent baseline — the runaway). + +### 2. Tangential topography advection (`--no-tangent-advect` to disable; default ON) +The pointwise relaxation omits the `v_t·∂_s h` term — a surface rotation/convergence +should carry the topography pattern along the surface; without it you get edge artefacts +where ∂_s h is large (plume-bulge edges). Fix = operator split per step: (1) departure- +point semi-Lagrangian transport of the surface shape in θ by `ω = v_t/r`, then (2) the +L-stable normal relaxation. Lowers throughflow + improves mesh quality. + +### 3. Free-slip inner boundary — rotation nullspace (`--inner freeslip`) +The rigid rotation `[-y,x]` is a velocity nullspace ONLY while the boundary is CIRCULAR. +Once the free surface DEFORMS, do NOT attach it to the held/consistent solves (→ held +22 s/`DIVERGED_LINEAR_SOLVE`, throughflow blow-up). Keep `petsc_use_pressure_nullspace`; +strip the gauge with the exact post-solve projection `_project_out_rotation` on `v`, +`v_cons` (drives advection) AND `v_h` (one consistent non-rotating frame). The undeformed +free-slip *reference* (`--surface freeslip`) is fine WITH the nullspace attached. + +### 4. Graded / higher-order meshes (drive node movement consistently) +- **Surface-ring detection**: tie the tolerance to the FINEST cell + (`0.5·mesh.get_min_radius()`), NOT the nominal `cellsize`. On a gmsh-graded mesh + (`cellSizeOuter`) the old tolerance scoops the first interior ring → a 2%-thick + "surface band" → tangling (looks like the surface "destroying itself"; it isn't — + the diffuser was fed a corrupt surface). BETTER (TODO): build the ring from the DMPlex + `Upper` label (`dm.getLabel("Upper").getStratumIS`), removing the tolerance entirely. +- **Node movement**: the solve velocity is P2; the mesh geometry is P1. Drive `u_n` and + the tangential transport from a P1 length-smoothed `Vector_Projection` of V (`v_p1`), + NOT a point-evaluation of the P2 field. +- **Stress smoothing**: `topo_proj.smoothing_length` = a fixed PHYSICAL length + (`--smooth-length`), not cell-count, so `h_∞` is mesh/order-independent. + +### 5. Cost — there is no acceleration win (don't chase it) +3 Stokes solves/step (free→u_n, held→h_∞, consistent→advect). Warm-start does NOT help +(outer KSP already 1 iter; FMG supplies its own nested guess — measured SLOWER). Blend- +skip rarely fires (α-spread always large). Operator/PC reuse: already reused across +`solve()`s (first 5.5 s setup, steady ~945 ms = irreducible FMG solve; RHS-only resolve +same cost). The per-step cost is the geometric FMG hierarchy REBUILD on the deforming +mesh — intrinsic to moving meshes, "live with it." The UNIFIED-PENALTY single solver +(`penalty·(v·n̂ − V₁·n̂)·n̂`; penalty=0→free, V₁=0→held, V₁=ũ_n→consistent — held & +consistent share the matrix) is the cleanest formulation (no recompile on the constant) +but doesn't cut the irreducible solve. + +### Elastic-plate flexure `h_∞` — IMPLEMENTED (`--flexure-D`) +Generalizes the LOCAL Airy `h_∞ = −σ_nn/ρg` (the D=0 limit) to a flexed plate +`(D ∂_s^4 + ρg) h_∞ = −σ_nn`, solved SPECTRALLY on the ring (serial Fourier — the +feasible substitute for UW3's blocked 1D-manifold FE solve): per mode +`h_∞(m) = −σ_nn(m)/(ρg + D(m/r_o)⁴)`. `D` sets the flexural wavelength `(D/ρg)^{1/4}` +and damps short-wavelength loads — the physically-grounded, mesh-independent length- +smoothing. In `_h_inf` (h_∞-ONLY — the stable form). **PROTOTYPE — amplitude response correct +(stiffer plate → less deflection) but it does NOT low-pass the SURFACE**: filtering `h_∞` only +sets a smooth set-point; the surface still picks up short-wavelength content from the SL +tangential transport + partial relaxation. "Filter every surface number (h, ḣ, h_∞)" was +TRIED and REJECTED — filtering the GEOMETRY `h` injects a spurious smooth-the-mesh motion into +`ũ_n` → flow runs away (Vrms 50→345); filtering `ḣ` alone is stable but elevates Vrms with no +benefit. So making flexure a TRUE surface low-pass without destabilising is OPEN/hard +(`_flex_filter` helper is in place). Examples: `stagnant_lid_mode1_study/{figures/flexure_*.png, +runs/flexure_D*}`. + +### Open / next (not yet done) +- **Label-based surface ring** (replace the radial heuristic with the `Upper` stratum). +- **Flexure D calibration** to a realistic lithospheric flexural wavelength. + +### Diagnostic tools (`~/+Simulations/FreeSurface/convection/stagnant_lid_mode1_study/scripts/`) +- `heldlid_hinf_check.py` — verify `h_∞` via 4 independent free-slip enforcements × Δη sweep +- `stitch_compare.py` — side-by-side montage of per-run dirs (`--dirs a,b,c`) +- `unified_penalty_solver.py` — the one-solver penalty formulation probe +- `resolve_timing_probe.py` — repeated-solve / lag-Jacobian / reuse-PC timing + +## Failure modes — symptom → cause + +| Symptom | Cause | +|---|---| +| Surface deforms but `u_n` RUNS AWAY (e.g. u_n 42→125→285→445), cold lid leaks in, plumes punch through | **RESOLVED**: material-surface advection inconsistency — T advected with stress-free `u_n` while surface moves by relaxed `ũ_n`. Fix = `--advect-velocity consistent` (Hardening §1). NOT an h_∞ bug, NOT fixed by FSSA. | +| `held` solve 22 s / `DIVERGED_LINEAR_SOLVE`, throughflow blows up, with `--inner freeslip` | rigid-rotation `[-y,x]` attached as a nullspace on the DEFORMED (non-circular) surface — invalid. Don't attach it on the moving surface; use the post-solve projection (Hardening §3). | +| Graded-mesh surface "destroys itself" (q→0.2, h_max 2% at step 1) | surface-detection tolerance scooped the first interior ring → 2%-thick band, NOT real deformation. Tie tolerance to finest cell (Hardening §4). The diffuser is innocent. | +| Stress-free top but surface not updated each step | nothing stops throughflow (the stress-free top is an open boundary unless the integrator moves the surface to track `u_n`) | +| Nu decays when it should be steady (kinematic free surface) | LAG: the SL foot reaches beyond an under-moved surface → cold pump. Fix = the h_∞ relaxation, not more smoothing | +| Surface "mountain" / one-step spike on adaptive mesh | held-lid Nitsche penalty over-stiffened by GLOBAL h; use `local_h=True` (default, PR #275) = `mesh.cell_size()` | + +## Dead ends (already tried — do NOT repeat) + +- **FSSA** signed-traction free-surface: diverges / under-deforms — rejected. +- **High-k post-smoothing** of the surface: the instability is low-m, smoothing + the wrong band. +- Per-node freeze-clamp in the relaxation (the old `relax` fatal bug). + +## Diagnose by + +`h_max` (deflection, as % of r_o), `u_n` / `vhmax` (surface throughflow — should NOT +grow unbounded), `hinf_max` (the equilibrium target), `vrms`, `Nu`. Compare the +free-surface run against the free-slip RIGID-top reference at matched physical time. diff --git a/.claude/skills/plasticity-solvers/SKILL.md b/.claude/skills/plasticity-solvers/SKILL.md new file mode 100644 index 00000000..9c0c243b --- /dev/null +++ b/.claude/skills/plasticity-solvers/SKILL.md @@ -0,0 +1,131 @@ +--- +name: plasticity-solvers +description: How to get hard-Min viscoplastic / visco-elastic-plastic (VEP) Stokes solves to CONVERGE in Underworld3 — the consistent Newton tangent (solver.consistent_jacobian), the δ-soft-min yield law, and the yield homotopy that pairs them. Reach for THIS first when a Drucker-Prager / yield-stress Stokes solve stalls, diverges (DIVERGED_LINEAR_SOLVE / line-search fail), or grinds through ~20+ nonlinear iterations. Tells you which tangent to use per model, how to confirm you are actually running Newton, and the measured failure modes. +--- + +# plasticity-solvers + +The workable recipe for **nonlinear convergence of yielding (viscoplastic / VEP) +Stokes** in Underworld3. Hard-`Min` yield laws have a non-differentiable kink that +breaks naive solvers; this encodes the combination that converges. + +**One call does it:** + +```python +stokes.constitutive_model = cm # ViscoPlastic / ViscoElasticPlastic / TI-VEP +cm.Parameters.yield_stress = tau_y # finite -> plasticity active +cm.enable_yield_homotopy() # <- the strategy: δ-ramp + the right tangent +stokes.solve(zero_init_guess=False) +``` + +`enable_yield_homotopy()` is the recommended default for any hard-Min solve. It picks +the Jacobian tangent per model (below) and ramps the soft-min δ→0 within one solve. + +--- + +## The two ingredients + +Yielding viscoplasticity is `η_eff = Min(η_visc, η_yield)`, +`η_yield = τ_y/(2·ε̇_II)`. The `Min` kink is what makes it hard. + +1. **Consistent Newton tangent** — `solver.consistent_jacobian`: + - `False` (default) — frozen-viscosity **Picard** tangent: contractive, globally + stable, **linear** (slow). Bit-identical to long-standing UW3. + - `True` — full **Newton** tangent (the assembled `dF1/dL` carries `∂η/∂(grad v)`): + **quadratic** near the solution; the kink can break it far from it. + - `"continuation"` — Picard→Newton α-blend (α a `constants[]` atom ramped 0→1). + +2. **δ-soft-min yield law + homotopy** — `g = 1 + ½(f-1+√((f-1)²+δ²)) − offset`, + `η_eff = η_ve/g`, `f = η_ve/η_pl`: + - **δ = 0 (default) ≡ exact `Min`** to machine precision. + - δ and the onset offset are `constants[]` atoms → δ is **runtime-rampable with no + JIT recompile**. `enable_yield_homotopy()` ramps δ from `delta_start`→0 within one + solve (residual-paced absolute schedule, via the `SNESSetUpdate` hook). The smooth + (δ>0) problem warm-starts the sharper one; δ ends at 0 so the **converged answer is + on the exact yield surface**. + +This is **problem-space** continuation (ramp the residual smooth→sharp). A smooth +Jacobian on a sharp `Min` residual is the consistent tangent of a *different* (harmonic) +problem and diverges worse than Picard — don't do that. + +--- + +## Confirm you are actually running Newton + +A consistent-Newton solve should converge **quadratically** — the residual roughly +squares each iteration and reaches ~1e-12 in 3–6 nonlinear steps. A **linear** tail +(residual dropping by a roughly constant factor over ~15–25 steps) means you are on the +Picard tangent — check `solver.consistent_jacobian is True` and that the viscosity is a +field of the unknowns, not a constant. + +Direct symbolic check that the Newton term is in the Jacobian (`dF1/dL` differs between +the frozen and unwrapped flux by exactly the `∂η/∂(grad v)` term): + +```python +import sympy +from underworld3.function.expressions import unwrap_expression +F1 = sympy.Array(stokes.F1.sym) # residual flux (η wrapped) +L = sympy.Array(stokes.Unknowns.L) # velocity-gradient symbols +G_picard = sympy.derive_by_array(F1, L) +F1_unwrapped = sympy.Array( + [unwrap_expression(e, mode="symbolic_keep_constants") for e in F1], F1.shape) +G_newton = sympy.derive_by_array(F1_unwrapped, L) +assert sympy.simplify(sympy.Array(G_newton) - sympy.Array(G_picard)) != \ + sympy.Array([0]*len(list(sympy.flatten(F1)))*len(list(sympy.flatten(L)))) +# nonzero difference == the Newton form is present +``` + +--- + +## Which tangent for which model (measured) + +`enable_yield_homotopy(consistent_tangent="auto")` is **model-aware**: + +| Model | `"auto"` picks | Why | +|-------|----------------|-----| +| `ViscoPlasticFlowModel` (non-elastic) | **Newton** + δ-ramp | δ-ramp keeps the residual smooth while Newton finds the basin; both sharpen to exact Min together. From a viscous guess the consistent tangent is robust (≈3–4 quadratic iters). | +| `ViscoElasticPlasticFlowModel` (VEP) | **Picard** + δ-ramp | The consistent yield tangent over the elastic stress-history block makes the Jacobian **indefinite → `DIVERGED_LINEAR_SOLVE`**. Picard is contractive; with the δ-ramp it converges to the exact yield surface. | +| `TransverseIsotropicVEPFlowModel` (TI-VEP) | **Picard** + δ-ramp | same as VEP (elastic). | + +Override with `consistent_tangent=True` / `False` / `"continuation"`. + +> Measured: VEP loading-through-yield — Picard+δ-ramp converges (σ locks at τ_y), +> Newton+δ-ramp diverges every step (`DIVERGED_LINEAR_SOLVE`). + +--- + +## Failure modes → fixes + +| Symptom | Cause | Fix | +|---------|-------|-----| +| `DIVERGED_LINEAR_SOLVE`, 0 iters, VEP | consistent Newton tangent on the elastic block → indefinite | use Picard (`consistent_tangent=False`, or `"auto"` on a VEP model) | +| Line-search failure at first step | `bt` line search trips on the kink as δ steps down | `enable_yield_homotopy` sets `snes_linesearch_type="basic"` (full step); keep it | +| Converges but σ sits **below** τ_y | solving a *smoothed* problem (fixed δ>0, or a smooth surrogate) | use the δ-ramp (δ→0) so the endpoint is exact Min | +| Linear (~20-iter) convergence | running Picard when you wanted Newton | `consistent_jacobian=True` on a non-elastic model (see "Confirm" above) | + +--- + +## Gotchas + +- **`./uw build` → `amr-dev` env.** Verify `uw.__file__` is the worktree site-packages. +- **Run VEP tests UNFORKED** — `pytest --forked` SIGABRTs here (fork of multithreaded PETSc). +- `enable_yield_homotopy` raises the `snes_max_it` floor to 100 and needs the model + **attached to a solver first** (`solver.constitutive_model = model`). +- `harmonic` yield mode is a **distinct physical model** (parallel blend), not an + approximation to Min — the homotopy does not apply to it. +- If you project η, use a **low-order** field (P0/P1) — higher order overshoots and η + is not guaranteed positive. + +--- + +## Reference + +- `ViscousFlowModel._combine_yield`, `enable_yield_homotopy` / `_yield_homotopy_step` + in `constitutive_models.py`; `solver.consistent_jacobian` / `_jacobian_source`. +- Design: `docs/developer/design/jacobian-consistent-tangent.md`. +- Tests: `tests/test_1053_yield_homotopy.py`. +- Benchmark: `docs/examples/WIP/Benchmark/Ex_VP_Spiegelman_Benchmark.py`. + +Footnote: before this work UW3 differentiated the flux with the viscosity still +wrapped, so `∂η/∂(grad v)` was dropped and viscoplastic solves silently ran the Picard +tangent — the origin of the "~20 iterations is intrinsic" folklore. diff --git a/.claude/skills/uw-visualisation/SKILL.md b/.claude/skills/uw-visualisation/SKILL.md new file mode 100644 index 00000000..87cba71f --- /dev/null +++ b/.claude/skills/uw-visualisation/SKILL.md @@ -0,0 +1,116 @@ +--- +name: uw-visualisation +description: Render Underworld3 mesh fields (T, V, viscosity, the adapted mesh) correctly with PyVista. Use whenever you need to SEE a UW3 result — a field colormap, the moving/adapted mesh, streamlines, or compare runs. Reach for THIS before hand-rolling a renderer; getting the four cosmetic settings wrong makes renders look grey/patchy/blocky and wastes a round-trip with Louis. +--- + +# uw-visualisation + +Canonical PyVista recipe for Underworld3 fields. This exists because every fresh +Claude session re-derives the renderer and gets the colormap / background / +lighting / DOF-sampling wrong, producing "grey/patchy/weird" images Louis +rejects. The settings below match his reference renders exactly. + +**Use PyVista (`underworld3.visualisation`), NOT matplotlib.** Louis reaffirmed +this even after seeing the legacy matplotlib renderer +(`scripts/fault_convection_frames.py`) — that one is NOT preferred. + +## Hard rules (artifacts + output location) + +- **Outputs go under `~/+Simulations/...`, NEVER `/tmp`** (Louis can't view /tmp + or harness task paths). Mirror the run's `--sim-dir`; write `T_.png` into + the run directory, comparison figures into the sim-dir root. +- `pv.OFF_SCREEN = True` at import; finish with `pl.screenshot(path); pl.close()`. + +## The field+mesh pattern (copy this exactly) + +```python +import numpy as np, underworld3 as uw, underworld3.visualisation as vis, pyvista as pv +pv.OFF_SCREEN = True + +mesh = uw.discretisation.Mesh(f"{label}.mesh.00000.h5") # or the live mesh +T = uw.discretisation.MeshVariable("T_v2p1", mesh, 1, degree=3, continuous=True) +T.read_timestep(label, "T_v2p1", 0, outputPath=D) # or use the live var + +pv_T = vis.meshVariable_to_pv_mesh_object(T) # Delaunay through T's OWN DOFs +pv_T.point_data["T"] = np.asarray(T.data[:, 0]) # attach DOF values DIRECTLY (P3-faithful) +edges = vis.mesh_to_pv_mesh(mesh).extract_all_edges() + +pl = pv.Plotter(off_screen=True, window_size=(1000, 1000)) +pl.set_background("white") # rule 2 +pl.add_mesh(pv_T, scalars="T", cmap="RdBu_r", clim=(0, 1), # rules 1 + clim required + show_edges=False, lighting=False) # rule 3 +pl.add_mesh(edges, color="black", line_width=0.5, lighting=False) # mesh overlay +pl.view_xy(); pl.camera.zoom(1.3) +pl.screenshot(out); pl.close() +``` + +## The four things that make renders look bad (all COSMETIC) + +1. `cmap="coolwarm"` → muddy grey-lavender midtone — this IS the "blue/grey/red" + Louis rejects. **Use `cmap="RdBu_r"`** (clean blue→white→red). +2. PyVista's default grey background bleeds through RdBu_r's white (T≈0.5) → dirty + grey. **Always `pl.set_background("white")`.** +3. Default lighting darkens the colormap. **Always `lighting=False`** on every + `add_mesh`. +4. Re-evaluating via `scalar_fn_to_pv_points` / vertex-only sampling drops the + high-order DOFs → blocky. **Attach `T.data[:,0]` directly** to the DOF-cloud + mesh from `meshVariable_to_pv_mesh_object` (it is correct for annulus/box/disc + — do NOT avoid it). `clim` MUST be passed (default `clim=""` trips `np.any`). + +## Seeing the MESH (adaptation / moving mesh) + +The full-annulus T colormap **washes out mesh detail** — at whole-domain zoom the +grading is invisible. To judge adaptation you MUST crop: + +- Zoom the feature region with a parallel camera: + `pl.camera.parallel_projection = True; pl.camera.parallel_scale = half_width; + pl.camera.focal_point = (cx, cy, 0)`. +- For mesh-only views, drop the field and draw `edges` on white, `line_width≈0.7`. +- Real corruption vs render artifact: apparent "holes / lumps" are often a + mesh-overlay/low-res artifact. Before calling adaptation broken, CHECK the + field's value range is bounded and count folded elements (negative cell area) + programmatically — do NOT diagnose from a render alone. +- **Overlay the feature you're refining to** (a fault trace, an interface): draw it + as a red `pv.PolyData` line over the mesh. Without it you cannot tell whether the + refinement sits ON the feature or has drifted off it (a real failure mode — see + the `adaptive-meshing` skill). Read the geometry from the run manifest so any run + renders the same way. + +## Adaptive / long runs + +- **Render each checkpoint as it lands**, not just the last frame: arm a Monitor that + polls for new `run.mesh.NNNNN.{xdmf,h5}` and emits the index → render on each + event. A completion-only watch leaves you blind for a multi-hour (e.g. TI) run. +- The per-step mesh GEOMETRY must have been written (`write_timestep(..., + meshUpdates=True)`) or you'll render deformed fields on the stale step-0 mesh. + Load the per-step `run.mesh.NNNNN.h5` as the mesh, then `read_timestep` the vars. + +## Velocity + +Same pattern; use **streamlines, not glyphs**. Build a pv mesh for V, add +`pv_mesh.streamlines(...)` or evaluate V on a line seed. Magnitude with the same +white-bg / lighting=False rules. + +## Quantities to judge a convection run (not just pretty pictures) + +- `vrms` from `uw.function.evaluate(V.sym.dot(V.sym), mesh.X.coords)` → the clean + kinetic-energy indicator (more reliable than nodal boundary metrics). +- Surface heat flux Nu via `uw.maths.BdIntegral` on the Upper boundary. +- Mesh quality: fault/bulk nearest-neighbour spacing RATIO (cKDTree) for refinement; + folded-element count + min cell area for tangling. + +## Templates in this skill + +- `render_field.py` — single/`--all`-steps T+mesh render of a run directory. +- `render_field_streamlines.py` — T colormap + mesh + **V streamlines** (sparse + seeds, thin lines, short integration so weak/closed cells read clearly, not + black spiral-blobs). Use for convection. `--tag --all`. +- `zoom_compare.py` — side-by-side cropped mesh+field for N runs at one step. + +Copy these into the run's `scripts/` (or run in place), point `--sim-dir` at the +run, and adjust the field/variable names. They already encode every rule above. + +## Related memory + +`feedback_use_uw_pyvista_visualisation.md`, `feedback_pyvista_viz_pattern.md`, +`feedback_render_all_steps.md`, `project_adaptation_corruption_was_render_artifact.md`. diff --git a/.claude/skills/uw-visualisation/render_field.py b/.claude/skills/uw-visualisation/render_field.py new file mode 100644 index 00000000..c02e29c8 --- /dev/null +++ b/.claude/skills/uw-visualisation/render_field.py @@ -0,0 +1,57 @@ +"""Render a UW3 scalar MeshVariable + mesh edges for one or all snapshots of a +run directory, following the canonical UW3 PyVista pattern (see SKILL.md). + +Outputs _.png into the run directory. Outputs live under ~/+Simulations. + +Usage: + python render_field.py --tag --sim-dir ~/+Simulations/ [--step stepNNNN | --all] + python render_field.py --tag myrun --var T_v2p1 --degree 3 --clim 0 1 --all +""" +import os, glob, re, argparse +import numpy as np, underworld3 as uw, underworld3.visualisation as vis, pyvista as pv + +pv.OFF_SCREEN = True +ap = argparse.ArgumentParser() +ap.add_argument("--tag", required=True) +ap.add_argument("--sim-dir", default="~/+Simulations/StagnantLid") +ap.add_argument("--var", default="T_v2p1", help="MeshVariable name in the checkpoint") +ap.add_argument("--degree", type=int, default=3) +ap.add_argument("--clim", type=float, nargs=2, default=[0.0, 1.0]) +ap.add_argument("--cmap", default="RdBu_r") +ap.add_argument("--step", default="", help="stepNNNN; empty = latest") +ap.add_argument("--all", action="store_true", help="render every snapshot") +args = ap.parse_args() +D = os.path.expanduser(os.path.join(args.sim_dir, args.tag)) + +cands = sorted(glob.glob(os.path.join(D, "step*.mesh.00000.h5")), + key=lambda c: int(re.search(r"step(\d+)\.mesh", c).group(1))) +if args.all: + labels = [re.search(r"(step\d+)\.mesh", os.path.basename(c)).group(1) for c in cands] +elif args.step: + labels = [args.step] +else: + labels = [re.search(r"(step\d+)\.mesh", os.path.basename(cands[-1])).group(1)] + + +def render(label): + mesh = uw.discretisation.Mesh(os.path.join(D, f"{label}.mesh.00000.h5")) + var = uw.discretisation.MeshVariable(args.var, mesh, 1, degree=args.degree, + continuous=True) + var.read_timestep(label, args.var, 0, outputPath=D) + pv_v = vis.meshVariable_to_pv_mesh_object(var) + pv_v.point_data["f"] = np.asarray(var.data[:, 0]) + edges = vis.mesh_to_pv_mesh(mesh).extract_all_edges() + pl = pv.Plotter(off_screen=True, window_size=(1000, 1000)) + pl.set_background("white") + pl.add_mesh(pv_v, scalars="f", cmap=args.cmap, clim=tuple(args.clim), + show_edges=False, lighting=False, + scalar_bar_args={"title": args.var}) + pl.add_mesh(edges, color="black", line_width=0.5, lighting=False) + pl.view_xy(); pl.camera.zoom(1.3) + out = os.path.join(D, f"{args.var}_{label}.png") + pl.screenshot(out); pl.close() + print("->", out, flush=True) + + +for lab in labels: + render(lab) diff --git a/.claude/skills/uw-visualisation/render_field_streamlines.py b/.claude/skills/uw-visualisation/render_field_streamlines.py new file mode 100644 index 00000000..c0fc4752 --- /dev/null +++ b/.claude/skills/uw-visualisation/render_field_streamlines.py @@ -0,0 +1,80 @@ +"""Render a UW3 run: T colormap + mesh edges + VELOCITY STREAMLINES. +Follows the canonical UW3 PyVista pattern (RdBu_r, white bg, lighting=False, +DOF-faithful) and overlays streamlines of V. Outputs _.png. + +Usage: + python render_field_streamlines.py --tag --sim-dir ~/+Simulations/ [--step stepNNNN | --all] +""" +import os, glob, re, argparse +import numpy as np, underworld3 as uw, underworld3.visualisation as vis, pyvista as pv +pv.OFF_SCREEN = True + +ap = argparse.ArgumentParser() +ap.add_argument("--tag", required=True) +ap.add_argument("--sim-dir", default="~/+Simulations/StagnantLid") +ap.add_argument("--tvar", default="T_v2p1"); ap.add_argument("--tdeg", type=int, default=3) +ap.add_argument("--vvar", default="V_v2p1"); ap.add_argument("--vdeg", type=int, default=2) +ap.add_argument("--clim", type=float, nargs=2, default=[0.0, 1.0]) +ap.add_argument("--step", default=""); ap.add_argument("--all", action="store_true") +ap.add_argument("--rin", type=float, default=0.5); ap.add_argument("--rout", type=float, default=1.0) +args = ap.parse_args() +D = os.path.expanduser(os.path.join(args.sim_dir, args.tag)) + +cands = sorted(glob.glob(os.path.join(D, "step*.mesh.00000.h5")), + key=lambda c: int(re.search(r"step(\d+)\.mesh", c).group(1))) +if args.all: + labels = [re.search(r"(step\d+)\.mesh", os.path.basename(c)).group(1) for c in cands] +elif args.step: + labels = [args.step] +else: + labels = [re.search(r"(step\d+)\.mesh", os.path.basename(cands[-1])).group(1)] + + +def render(label): + mesh = uw.discretisation.Mesh(os.path.join(D, f"{label}.mesh.00000.h5")) + T = uw.discretisation.MeshVariable(args.tvar, mesh, 1, degree=args.tdeg, continuous=True) + T.read_timestep(label, args.tvar, 0, outputPath=D) + V = uw.discretisation.MeshVariable(args.vvar, mesh, mesh.dim, degree=args.vdeg, continuous=True) + V.read_timestep(label, args.vvar, 0, outputPath=D) + + pv_T = vis.meshVariable_to_pv_mesh_object(T) + pv_T.point_data["T"] = np.asarray(T.data[:, 0]) + edges = vis.mesh_to_pv_mesh(mesh).extract_all_edges() + + # velocity mesh + 3D vectors for streamlines + pv_V = vis.meshVariable_to_pv_mesh_object(V) + Vd = np.asarray(V.data) + vec = np.zeros((pv_V.n_points, 3)); vec[:, 0] = Vd[:, 0]; vec[:, 1] = Vd[:, 1] + pv_V["V"] = vec; pv_V.set_active_vectors("V") + vmax = float(np.linalg.norm(Vd, axis=1).max()) + + # seed a sparse disc of points across the annulus (sparse + short + # integration so streamlines read as flow direction, not wound-up spirals + # that black out the field — low-Ra cells are tight closed loops). + rng = np.linspace(args.rin + 0.05, args.rout - 0.05, 4) + th = np.linspace(0, 2 * np.pi, 14, endpoint=False) + R, TH = np.meshgrid(rng, th) + seed = pv.PolyData(np.c_[(R * np.cos(TH)).ravel(), + (R * np.sin(TH)).ravel(), + np.zeros(R.size)]) + strm = pv_V.streamlines_from_source( + seed, vectors="V", integration_direction="both", + max_step_length=0.5, initial_step_length=0.02, + max_steps=300, terminal_speed=max(vmax * 1e-4, 1e-9)) + + pl = pv.Plotter(off_screen=True, window_size=(1000, 1000)) + pl.set_background("white") + pl.add_mesh(pv_T, scalars="T", cmap="RdBu_r", clim=tuple(args.clim), + show_edges=False, lighting=False, scalar_bar_args={"title": "T"}) + pl.add_mesh(edges, color="grey", line_width=0.3, lighting=False, opacity=0.4) + if strm.n_points > 0: + pl.add_mesh(strm, color="black", line_width=1.4, lighting=False) + pl.add_text(f"{label} |v|max={vmax:.2f}", font_size=10, color="black") + pl.view_xy(); pl.camera.zoom(1.3) + out = os.path.join(D, f"TV_{label}.png") + pl.screenshot(out); pl.close() + print("->", out, flush=True) + + +for lab in labels: + render(lab) diff --git a/.claude/skills/uw-visualisation/zoom_compare.py b/.claude/skills/uw-visualisation/zoom_compare.py new file mode 100644 index 00000000..0025aaab --- /dev/null +++ b/.claude/skills/uw-visualisation/zoom_compare.py @@ -0,0 +1,59 @@ +"""Zoomed side-by-side of the fault region (12 o'clock) showing T + the +adapted mesh for several runs at one step. The full-annulus render washes out +fault mesh detail (memory note); this crops to the fault neighbourhood so the +clustering (or lack of it) is visible. + +Usage: + python fault_zoom_compare.py --step step0060 \ + --tags rq_passive_uniform rq_passive_gmsh --labels "uniform 1.6x" "gmsh 4.7x" +""" +import os, argparse +import numpy as np, underworld3 as uw, underworld3.visualisation as vis, pyvista as pv + +pv.OFF_SCREEN = True +ap = argparse.ArgumentParser() +ap.add_argument("--step", default="step0060") +ap.add_argument("--tags", nargs="+", required=True) +ap.add_argument("--labels", nargs="+", default=None) +ap.add_argument("--sim-dir", default="~/+Simulations/StagnantLid+Fault") +ap.add_argument("--out", default="fault_zoom_compare.png") +# Fault is at theta=90 (top), dipping east. Crop a box around the trace. +ap.add_argument("--cx", type=float, default=0.12) +ap.add_argument("--cy", type=float, default=0.82) +ap.add_argument("--half", type=float, default=0.34) +args = ap.parse_args() + +SIM = os.path.expanduser(args.sim_dir) +labels = args.labels or args.tags +n = len(args.tags) + +pl = pv.Plotter(off_screen=True, shape=(1, n), window_size=(700 * n, 760), + border=False) +pl.set_background("white") +for i, (tag, lab) in enumerate(zip(args.tags, labels)): + D = os.path.join(SIM, tag) + mp = os.path.join(D, f"{args.step}.mesh.00000.h5") + if not os.path.exists(mp): + continue + mesh = uw.discretisation.Mesh(mp) + T = uw.discretisation.MeshVariable("T_v2p1", mesh, 1, degree=3, + continuous=True, varsymbol="T") + T.read_timestep(args.step, "T_v2p1", 0, outputPath=D) + pv_T = vis.meshVariable_to_pv_mesh_object(T) + pv_T.point_data["T"] = np.asarray(T.data[:, 0]) + edges = vis.mesh_to_pv_mesh(mesh).extract_all_edges() + pl.subplot(0, i) + pl.add_text(lab, font_size=11, color="black") + pl.add_mesh(pv_T, scalars="T", cmap="RdBu_r", clim=(0, 1), + show_edges=False, lighting=False, show_scalar_bar=False) + pl.add_mesh(edges, color="black", line_width=0.7, lighting=False) + pl.view_xy() + pl.camera.focal_point = (args.cx, args.cy, 0.0) + pl.camera.position = (args.cx, args.cy, 10.0) + pl.camera.parallel_projection = True + pl.camera.parallel_scale = args.half + +out = os.path.join(SIM, args.out) +pl.screenshot(out) +pl.close() +print("->", out) diff --git a/.gitignore b/.gitignore index 7e962177..18fb2948 100644 --- a/.gitignore +++ b/.gitignore @@ -204,12 +204,21 @@ Jupyterbook/Notebooks/.DS_Store Jupyterbook/Notebooks/Examples-NavierStokes/order_1/NS_test_Re_250_0.06_step_0.png Documentation/index.aux -# Claude Code files (track commands, ignore settings) +# Claude Code files (track commands and skills, ignore settings) CLAUDE.md .claude/* !.claude/commands/ .claude/commands/* !.claude/commands/*.md +# Ship skills with the repo: allow SKILL.md + supporting assets, ignore junk +!.claude/skills/ +.claude/skills/**/* +!.claude/skills/**/ +!.claude/skills/**/*.md +!.claude/skills/**/*.py +!.claude/skills/**/*.typ +!.claude/skills/**/*.json +!.claude/skills/**/*.png # Prevent future markdown clutter in root (allow essential docs only) /*_ANALYSIS.md