Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
467 commits
Select commit Hold shift + click to select a range
236a777
Validity gates shared by both primitives; check_faces always-on; FE e…
lmoresi Aug 10, 2026
ef69815
Merge pull request #521 from underworldcode/bugfix/520-interpolate-in…
lmoresi Aug 10, 2026
5e02e50
Merge remote-tracking branch 'origin/development' into feature/fault-…
lmoresi Aug 10, 2026
0d90266
Merge development (#518 #519 #521); composed parallel chain regressio…
lmoresi Aug 10, 2026
ba15d04
FaultNetwork 3-D: native place route (opt-in), rim triangulator, docs
lmoresi Aug 10, 2026
c39a2bd
remove_embedded: delete a placed surface or zone, refill to backgroun…
lmoresi Aug 11, 2026
1180c1a
2-D placement goes parallel: one rebuild for every dimension and rank…
lmoresi Aug 11, 2026
336637f
The 2-D ribbon and 2-D removal go parallel; the lifecycle composes, b…
lmoresi Aug 11, 2026
dba2890
Outcropping faults: the sheet meets the upper surface (specify-long +…
lmoresi Aug 11, 2026
606583e
Outcropping zones: the fault zone leaves its band on the surface (#526)
lmoresi Aug 11, 2026
5082433
Merge pull request #502 from underworldcode/feature/fault-split-node
lmoresi Aug 12, 2026
c1cddb9
Support detached Gadi Pixi environments in PETSc builds (#516)
gthyagi Aug 12, 2026
6067bac
Update adapt vs ref24 cost script for current APIs (#479)
ss2098 Aug 12, 2026
d474a15
Update anisotropic convection demo for current APIs (#480)
ss2098 Aug 12, 2026
bc53cfc
Adapt-review fixes: collective pinned-band verdicts, partition-indepe…
lmoresi Aug 12, 2026
a4a8ba1
Fix the red trunk: inverted inside-test in the fault-network line cli…
lmoresi Aug 12, 2026
24e4929
Quickfix batch: clone() arguments (#498), print_table keywords (#499)…
lmoresi Aug 12, 2026
f73d64f
Solver options: fallback observability, tolerance ownership, the sing…
lmoresi Aug 12, 2026
fc331e4
TI-VEP viscosity reports the yield-limited weak-plane value; Nitsche …
lmoresi Aug 12, 2026
6274422
Release, don't destroy: held DM handles and data views survive the Me…
lmoresi Aug 12, 2026
689523f
CI: pin UCX to tcp,sm,self — the MANA-NIC verbs flake dies here (#529)
lmoresi Aug 13, 2026
a059273
skills: adapt engines, band pinning, FMG on adapt children — brought …
lmoresi Aug 13, 2026
0b574ac
Boundary flux on degree-3 traces: per-slot DOF identity, true edge-no…
lmoresi Aug 13, 2026
e71cbd4
Fuse overlapping fault zones instead of fragmenting them
lmoresi Aug 13, 2026
b8fe937
Record the hybrid fault-zone architecture as a design note
lmoresi Aug 13, 2026
e475246
Reuse the rotated free-slip solver workspace across solves — reworked…
lmoresi Aug 13, 2026
2ee633f
Record what slicing costs and what it does not
lmoresi Aug 13, 2026
a8ae8dc
Rotated solve: stop counting the pinned row, and report the verdict
lmoresi Aug 13, 2026
ff30327
Merge remote-tracking branch 'origin/feature/fuse-zone' into bugfix/f…
lmoresi Aug 13, 2026
4c8caba
Barr & Houseman faulted-medium analytic solution in uw.analytic
lmoresi Aug 13, 2026
09103bf
2-D fault zones reach the domain boundary: the ribbon outcrops (#549)
lmoresi Aug 13, 2026
c1ef107
A rank with no cells must answer every global mesh query like its pee…
lmoresi Aug 14, 2026
006d0ae
Close two verification gaps found in review of the analytic solution
lmoresi Aug 14, 2026
92d7f5b
Make the assembly argument keyword-only
lmoresi Aug 14, 2026
edfd64b
Cache the polar symbols, and let theta be real rather than positive
lmoresi Aug 14, 2026
3f54218
Point locator: reject foreign points cheaply, locate once, and contai…
lmoresi Aug 14, 2026
3bc363c
Place a tip vertex from the face that holds it, not from the mesh at …
lmoresi Aug 14, 2026
ffbcf98
Merge pull request #541 from underworldcode/feature/fuse-zone
lmoresi Aug 14, 2026
71e255f
Merge remote-tracking branch 'origin/development' into bugfix/fault-o…
lmoresi Aug 14, 2026
18491a2
Split velocity and pressure evaluation: the tip is singular in one, n…
lmoresi Aug 14, 2026
a25dd1e
Merge pull request #552 from underworldcode/bugfix/fault-outcrop-2d
lmoresi Aug 14, 2026
18f36a2
Add the analytic traction, so a boundary can leave a component free
lmoresi Aug 14, 2026
7e1def6
Mesh files: one directory, atomic writes, and a quick tier that is qu…
lmoresi Aug 14, 2026
bdb5671
Rotated free-slip: weight the nodal normal by the facet measure the a…
lmoresi Aug 14, 2026
84ff77e
Run the tests across worker processes by default
lmoresi Aug 15, 2026
85d3ea1
Set the CI worker count explicitly, and never run xdist with one worker
lmoresi Aug 15, 2026
1e43914
Complete the boundary-normal sum across ranks, and make the partition…
lmoresi Aug 15, 2026
857d759
Hold CI serial until the locator defect is fixed; keep the developer …
lmoresi Aug 15, 2026
7c75a8f
CI: raise the job timeout to 120 minutes - the suite outgrew 60 (#572)
lmoresi Aug 15, 2026
a0c6053
Merge pull request #565 from underworldcode/bugfix/mesh-cache-race
lmoresi Aug 15, 2026
0addec1
Merge pull request #566 from underworldcode/feature/parallel-test-runs
lmoresi Aug 15, 2026
657aa35
The analytic solution suite: uw.analytic with the full Velic family, …
lmoresi Aug 15, 2026
c3c7c24
A test file with no tests was switching the units system on at collec…
lmoresi Aug 15, 2026
63dc0c8
feat(container): lean pixi-based two-stage container with multi-arch …
jcgraciosa Aug 15, 2026
e035377
Barr & Houseman's faulted medium joins uw.analytic
lmoresi Aug 15, 2026
421b4ab
docs: a solution with a fault in it
lmoresi Aug 15, 2026
3c53e04
Two gates the faulted medium needed and did not have
lmoresi Aug 15, 2026
e4f1d9b
Rename Barr-Houseman analytic module for 1996 reference
gthyagi Aug 15, 2026
f6b609a
Analytic solutions declare their own boundary conditions
lmoresi Aug 15, 2026
4643069
Document how an analytic solution states its boundary conditions
lmoresi Aug 15, 2026
51e0b09
Name issue #577 at the CylindricalStokes nullspace TODO
lmoresi Aug 15, 2026
df1b7b2
Review fixes: test the free_slip call, not the solver's default
lmoresi Aug 15, 2026
5998283
Merge pull request #578 from underworldcode/feature/analytic-bc-refactor
lmoresi Aug 16, 2026
e445701
Merge development: analytic solutions declare their own boundary cond…
lmoresi Aug 16, 2026
7c8ab21
Drop the mixin references from the faulted medium's refusal
lmoresi Aug 16, 2026
db2c374
Merge remote-tracking branch 'origin/feature/pr550-integrate' into fe…
lmoresi Aug 16, 2026
31eb3e1
Clip the fault assembly against the mesh's own boundary, built as OCC…
lmoresi Aug 16, 2026
5b6ae76
Skill: refinement=R is a factor on the background spacing, not a grad…
lmoresi Aug 16, 2026
9b87c4e
Identify the outcrop band as the boundary TRACE and label it
lmoresi Aug 16, 2026
0c4c878
Add mesh-files-only spherical shell generation
gthyagi Aug 16, 2026
1912958
Generalise the 2-D outcrop carve/sew to the mesh's own boundary; annu…
lmoresi Aug 16, 2026
ef5dbd2
Parallel coverage for the general-boundary outcrop; trace count is pa…
lmoresi Aug 16, 2026
5c0054a
Teaching examples: crossing fault zones, and what a gouge zone's widt…
lmoresi Aug 16, 2026
605ca5b
Refine the crossing result: the quoted percentages were bounds, and h…
lmoresi Aug 16, 2026
519743e
Answer the review: the 2-D degeneracy does not carry to 3-D, and ther…
lmoresi Aug 16, 2026
04cca8e
A ribbon out through a box corner embeds; wall labels restored per re…
lmoresi Aug 16, 2026
afad6de
Preconditioner defaults: PETSc's GAMG cycle, node aggregation, flexib…
lmoresi Aug 16, 2026
fa2a5d4
Test modules must not build state while being collected
lmoresi Aug 16, 2026
30e414b
The collection guard has an off switch for harnesses that generate an…
lmoresi Aug 16, 2026
18e3833
Report the collection offence as a collection error, not a session abort
lmoresi Aug 16, 2026
e956fcc
Refuse a rotated constraint and a block constraint on one solver; dro…
lmoresi Aug 16, 2026
aa2b8d8
Check the constraint pair at the solve as well as at registration
lmoresi Aug 16, 2026
732831f
Avoid replicated 3D boundary-flux recovery
gthyagi Aug 16, 2026
cce0753
Add Zhong 2008 geoid postprocessing
gthyagi Aug 16, 2026
d79627c
Generalize spherical-shell geoid postprocessing
gthyagi Aug 16, 2026
47b9600
Separate pure and rotated harmonic degree constraints
gthyagi Aug 16, 2026
95b3470
Add Zhong 2008 propagator-matrix analytic response
gthyagi Aug 16, 2026
fb9ce95
Document Zhong propagator mathematics and oracle API
gthyagi Aug 16, 2026
2ab2484
Merge pull request #588 from underworldcode/bugfix/test-collection-hy…
lmoresi Aug 17, 2026
a24c558
Merge pull request #590 from underworldcode/bugfix/rotated-guard-dead…
lmoresi Aug 17, 2026
7c38640
Declare mat_block_size only where the velocity block is node-blocked
lmoresi Aug 17, 2026
9de6c7c
Branching faults and junctions: the shear-box study, and what a crack…
lmoresi Aug 17, 2026
94d35c7
The adapt level loop stops on a collective fact, not a rank-local one
lmoresi Aug 17, 2026
3e96cc5
An owned option's user latch dies with the option
lmoresi Aug 17, 2026
4845fa8
Merge remote-tracking branch 'origin/feature/pr550-integrate' into bu…
lmoresi Aug 17, 2026
a897d03
cetz skill: correct the anchor gotcha's mechanism, and add four more
lmoresi Aug 17, 2026
db55e8e
Resolve the merge: the faulted medium lives in uw.analytic
lmoresi Aug 17, 2026
cd07f21
Merge remote-tracking branch 'origin/development' into bugfix/pr550-m…
lmoresi Aug 17, 2026
0f9ec7d
Figure: where the rotation lives under rotated boundary conditions
lmoresi Aug 17, 2026
9d05b11
Merge pull request #550 from underworldcode/feature/barr-houseman-ana…
lmoresi Aug 17, 2026
6cda9c6
Merge pull request #596 from underworldcode/bugfix/adapt-collective-f…
lmoresi Aug 18, 2026
74f1c49
Merge pull request #597 from underworldcode/bugfix/solver-review-foll…
lmoresi Aug 18, 2026
87232f0
Merge pull request #582 from underworldcode/bugfix/fault-clip-boundary
lmoresi Aug 18, 2026
cdcec34
Merge pull request #591 from gthyagi/feature/spherical-geoid-postproc…
lmoresi Aug 18, 2026
794d49b
Merge pull request #594 from gthyagi/feature/zhong2008-analytic
lmoresi Aug 18, 2026
a6be730
Merge pull request #592 from gthyagi/feature/spherical-shell-mesh-fil…
lmoresi Aug 18, 2026
f432bb3
Merge pull request #593 from gthyagi/bugfix/boundary-flux-memory-scaling
lmoresi Aug 18, 2026
a2d3231
Merge pull request #548 from underworldcode/bugfix/rotated-pin-residual
lmoresi Aug 18, 2026
5e59174
Merge pull request #580 from underworldcode/docs/adaptive-meshing-ref…
lmoresi Aug 18, 2026
5915fb8
Merge pull request #583 from underworldcode/docs/ribbon-teaching-2d
lmoresi Aug 18, 2026
4ba0488
Merge pull request #598 from underworldcode/docs/cetz-cheatsheet-gotchas
lmoresi Aug 18, 2026
fe6b2e1
Merge pull request #599 from underworldcode/docs/rotated-bc-figure
lmoresi Aug 18, 2026
8ed2558
Merge remote-tracking branch 'origin/development' into bugfix/fix584-…
lmoresi Aug 18, 2026
8b7c8b9
Merge pull request #584 from underworldcode/bugfix/solver-config-defa…
lmoresi Aug 18, 2026
7811686
Swarm.migrate: shrink the working set instead of reclassifying every …
lmoresi Aug 19, 2026
e29d6ea
Renumber to 0777: 0776 was already taken
lmoresi Aug 19, 2026
63b76d0
Quick-fix batch: pressure nullspace, mesh cache filename, test number
lmoresi Aug 19, 2026
85bd9c9
Merge pull request #609 from underworldcode/bugfix/shrinking-working-set
lmoresi Aug 20, 2026
9b03af0
Merge pull request #619 from underworldcode/bugfix/quickfix-batch-3
lmoresi Aug 20, 2026
5595b66
Reach the boundary-snap reduction on every rank, and scan for the sha…
lmoresi Aug 22, 2026
70e4cdb
Count sub-solves that stop at their iteration cap, and record the FMG…
lmoresi Aug 23, 2026
1d64c32
Diagnose a hung parallel job: per-rank watchdog and a roll-call repor…
lmoresi Aug 23, 2026
556b8cc
Blame the right rank, rather than require every rank to have dumped (…
lmoresi Aug 23, 2026
075dc0d
Make the fall off the multigrid loud, and move the penalty into the t…
lmoresi Aug 23, 2026
c5e3940
Wait for the evidence, not for the clock (#636)
lmoresi Aug 24, 2026
09b032d
Visualisation: principal-stress glyphs and stress trajectories (#601)
lmoresi Aug 24, 2026
9f4cb20
Fault ribbons from the fault's own surface, and the fault-patch multi…
lmoresi Aug 26, 2026
83c0882
Fault networks: the network mesher, one specification with two realis…
lmoresi Aug 28, 2026
b431182
Forward the location policy on the empty-rank path (#611) (#656)
lmoresi Aug 28, 2026
a5ff218
Fault networks in parallel: co-located multigrid tail, gather-safe pa…
lmoresi Aug 28, 2026
9cdcfa4
3-D fault networks in parallel: one redistribution for the whole netw…
lmoresi Sep 1, 2026
0b2e3ea
The finite-width 3-D fault network: one band, both realisations (#664)
lmoresi Sep 1, 2026
99b64eb
Document why the multigrid coarse level must be small (#644) (#666)
lmoresi Sep 2, 2026
6592401
Fault networks in parallel: the split keeps its multigrid tail, the w…
lmoresi Sep 2, 2026
f4551f9
Keep snapshot PETSc I/O paths compact (#667)
gthyagi Sep 2, 2026
3aa7f07
Destroy temporary PETSc field decompositions in reaction assembly (#668)
gthyagi Sep 2, 2026
5aa513c
Pin the spherical relaxation rate and the direction of the surface re…
lmoresi Sep 2, 2026
efcfaac
Retire the rotated-BC figure: it has moved to the note that uses it (…
lmoresi Sep 2, 2026
2fef47b
Stop the mesh factories recommending a deprecated, broken API (#538) …
lmoresi Sep 2, 2026
28b0b79
Document the long-HDF5-path segfault and the Gadi MatMult placement f…
lmoresi Sep 2, 2026
b789e1c
Use PETSc's options parser instead of our own (#642) (#652)
lmoresi Sep 2, 2026
31ef66a
Say so when evaluate() answers for points this rank does not own (#60…
lmoresi Sep 2, 2026
9b128e8
Rebuild P2 boundary-recovery vertices from the midpoints, and exonera…
lmoresi Sep 2, 2026
0aaac1f
Take slip normals per boundary, not from the deprecated Gamma_P1 (#53…
lmoresi Sep 2, 2026
a9945bc
Return the whole boundary traction from the constrained solver (#607)…
lmoresi Sep 3, 2026
bd8eeee
Refuse CBF recovery on a multiplier-constrained boundary (#614) (#653)
lmoresi Sep 3, 2026
fe356da
Strip every launcher's variables before the serial reference child (#…
lmoresi Sep 3, 2026
8b0d817
Supervise every parallel batch: bound a collective hang and name the …
lmoresi Sep 4, 2026
11cd96e
Time the hang watchdog from the kernel, so disarming it cannot wedge …
lmoresi Sep 4, 2026
a63f513
Run the whole parallel directory, and at four ranks as well as two (#…
lmoresi Sep 4, 2026
aaf3324
Recover non-finite parallel point evaluations (#602)
gthyagi Sep 4, 2026
60311db
Update adapt cost microbenchmark for current APIs (#476)
ss2098 Sep 4, 2026
56100b7
Stokes JIT: rank-0 compile + CSE before printing + configurable flags…
bknight1 Sep 4, 2026
37308de
fix: swarm empty-rank save deadlock (MPIO dtype) and estimate_dt resh…
bknight1 Sep 4, 2026
119dafc
Separate reconstructed and in-place PETSc field reloads (#674)
gthyagi Sep 4, 2026
9da04b7
Add cylindrical annulus geoid postprocessing (#648)
gthyagi Sep 4, 2026
6e1a6c6
fix: infer mesh cell family collectively on empty MPI ranks (#691)
gthyagi Sep 6, 2026
0ed5281
Add spherical-shell reaction projection using the upstream traction i…
gthyagi Sep 6, 2026
e5ceed7
Make mesh.cell_size() local and partition independent (#692)
gthyagi Sep 6, 2026
d1cc658
Quadrature-point (delta) finite element as a PETSc plugin space
lmoresi Sep 6, 2026
178edbb
IntegrationPointVariable: a public field stored at the mesh integrati…
lmoresi Sep 6, 2026
90857d9
IntegrationPointSemiLagrangian: SLCN history at the integration points
lmoresi Sep 6, 2026
5e4a434
IntegrationPointSemiLagrangian: refuse an under-sampled rule; measure…
lmoresi Sep 6, 2026
e46f49a
IntegrationPointSemiLagrangian: stability measured by power iteration
lmoresi Sep 6, 2026
78cbf67
Semi-Lagrangian trace-back: mid-point velocity at the mid time
lmoresi Sep 7, 2026
c903007
SemiLagrangian: midtime_velocity switch (False = the pre-2026-09 v^n-…
lmoresi Sep 7, 2026
cfb1d96
SemiLagrangian: copy the velocity variable's data into v_prev when V_…
lmoresi Sep 7, 2026
b9e1125
Semi-Lagrangian velocity history: snapshot the variables inside V_fn
lmoresi Sep 7, 2026
e1d6894
Semi-Lagrangian velocity history: cache by evaluation at the true nodes
lmoresi Sep 7, 2026
c4562ba
Tests: make the integration-point tests rank-aware
lmoresi Sep 7, 2026
5c1549a
Semi-Lagrangian velocity cache and integration-point history: units f…
lmoresi Sep 7, 2026
1d5e8c1
Navier-Stokes with Eulerian SUPG momentum transport, and a partition-…
lmoresi Sep 8, 2026
3725169
Merge development (#688 Navier-Stokes SUPG, #687 cell size) into feat…
lmoresi Sep 8, 2026
602a599
Docs: the integration-point history is an AdvDiffusionSLCN plugin
lmoresi Sep 8, 2026
7d2083c
Integration-point history reachable in the composed AdvDiffusion at B…
lmoresi Sep 8, 2026
1c26a3e
SemiLagrangian: remove the unused swarm_degree / swarm_continuous and…
lmoresi Sep 8, 2026
cfffcac
IntegrationPointSemiLagrangian: per-instance bcs default; oversamplin…
lmoresi Sep 8, 2026
af72c01
SemiLagrangian docstring: no swarm is used; departure points are the …
lmoresi Sep 8, 2026
4fa6350
IntegrationPointVariable: any number of components
lmoresi Sep 8, 2026
c953786
SwarmVariable proxy_location='integration_points': particles to the i…
lmoresi Sep 8, 2026
400b2de
Docs: swarm proxy at the integration points
lmoresi Sep 8, 2026
dade727
Test: layered Couette flow, interface on mesh edges, exact with the i…
lmoresi Sep 8, 2026
ebe100e
SwarmVariable proxy_location='cells': least-squares polynomial per cell
lmoresi Sep 8, 2026
c7a5cee
Evaluator: forward `simplify` to the local path; cells proxy: bounded…
lmoresi Sep 8, 2026
6c24a81
Test: FLIP invalid-option probe passes the required continuous argument
lmoresi Sep 8, 2026
ea6d1bd
Lagrangian_Swarm samples its history before the particles first move
lmoresi Sep 8, 2026
2980af7
DDt histories share one characteristic trace per solver
lmoresi Sep 8, 2026
343b57a
Merge pull request #703 from underworldcode/feature/quadrature-point-…
lmoresi Sep 8, 2026
dac3116
Merge pull request #705 from underworldcode/bugfix/slcn-dead-swarm-de…
lmoresi Sep 8, 2026
3cfe2ed
Evaluator: internal simplify defaults off, matching the public API
lmoresi Sep 8, 2026
3162bef
Merge remote-tracking branch 'origin/development' into feature/integr…
lmoresi Sep 8, 2026
2980bcb
Review (#707): refresh the proxy before the FLIP read-back, drop a mi…
lmoresi Sep 8, 2026
8709113
Merge pull request #707 from underworldcode/feature/integration-point…
lmoresi Sep 8, 2026
80ce199
Swarm.repopulate and population control; the cells fit guards against…
lmoresi Sep 9, 2026
9b1305e
Swarm advection: mid-time velocity for the RK2 mid-point stage
lmoresi Sep 9, 2026
7fe205a
Viscoelastic stress history on particles: Lagrangian_Swarm as the Sto…
lmoresi Sep 9, 2026
4a5533f
Docs: the stress-patch discrepancy between nodal and particle histori…
lmoresi Sep 9, 2026
0fc612b
Review (#713): nearest-neighbour distances by kd-tree in the cap path…
lmoresi Sep 9, 2026
359810a
Merge pull request #713 from underworldcode/feature/particle-repopula…
lmoresi Sep 9, 2026
9ba8d21
Material index at the integration points; repopulation keeps a label …
lmoresi Sep 9, 2026
7741b1c
Review (#715): IndexSwarmVariable stored the wrong proxy_location; fo…
lmoresi Sep 9, 2026
0b0e09d
Frame the material-index page around what the symbol can do, with a c…
lmoresi Sep 9, 2026
fbdc622
The gradient of a particle field: point the refusal at the cell fit, …
lmoresi Sep 9, 2026
e56c149
evaluate() recovers the gradient of an integration-point field; the w…
lmoresi Sep 9, 2026
d53d003
Two constants of the same name were one symbol in the generated C
lmoresi Sep 10, 2026
9f33445
proxy_sampling: where the assembler reads, and what it reads there
lmoresi Sep 10, 2026
72fdb84
Materials: name them, say where they are, and stop
lmoresi Sep 10, 2026
dba87db
Two constants of the same name were one symbol in the generated C
lmoresi Sep 10, 2026
f95687d
SLCN at the integration points: vector and tensor histories
lmoresi Sep 10, 2026
7b25a03
Review (#720): the storage map follows the shape, not the mesh dimension
lmoresi Sep 10, 2026
174bb08
Review (#717): normalise the sort key, and shorten the incident note
lmoresi Sep 10, 2026
1430612
Review: the fix needed BOTH halves, and the tests had to prove it
lmoresi Sep 10, 2026
f25149f
Review (#720): guard the setter, separate TENSOR from SYM_TENSOR, lig…
lmoresi Sep 10, 2026
586224f
Take the 006x-007x test band whole, so a sibling test is not dark again
lmoresi Sep 10, 2026
b362632
Review (#715): eleven materials defects, one of which killed the job
lmoresi Sep 10, 2026
81a3afe
Charter: rename `model`, use .array in new code, rebuild both examples
lmoresi Sep 10, 2026
0b54364
Symmetric-tensor and deferred writes through .array were silently lost
lmoresi Sep 11, 2026
b74bd58
Nitsche free-slip tests: a wiring check, a real assert, and the compa…
lmoresi Sep 11, 2026
6cfc910
Merge pull request #726 from underworldcode/bugfix/sym-tensor-array-w…
lmoresi Sep 11, 2026
343de17
Merge pull request #717 from underworldcode/bugfix/jit-constant-colli…
lmoresi Sep 11, 2026
fae3fbd
Merge pull request #720 from underworldcode/feature/slcn-ip-tensor
lmoresi Sep 11, 2026
c3281a1
Tier C is what does not gate: the comparison tests, and the Charter w…
lmoresi Sep 11, 2026
854ed7f
Merge development: take the reviewed JIT fix, keep this branch's refu…
lmoresi Sep 11, 2026
224d65a
Merge pull request #715 from underworldcode/feature/particle-demos
lmoresi Sep 11, 2026
fb4ccb3
A guard for the test globs, and 22 session scripts out of the test tr…
lmoresi Sep 11, 2026
5653c02
Review (#729): marks merge, so the tier goes on the test — and the co…
lmoresi Sep 11, 2026
7198bd2
Review (#723): the guard listed a covered file as deferred, and never…
lmoresi Sep 11, 2026
9c4f27c
Merge pull request #728 from underworldcode/bugfix/nitsche-freeslip-t…
lmoresi Sep 11, 2026
7bd6e13
Merge pull request #729 from underworldcode/docs/tier-c-characterisat…
lmoresi Sep 11, 2026
128d368
Merge pull request #723 from underworldcode/docs/audit-2026-09
lmoresi Sep 11, 2026
d6aacfb
Stop excluding tests by band, let tier C report instead of gate, and …
lmoresi Sep 11, 2026
ab9e32a
Review (#731): teach the coverage guard the array call form, and reti…
lmoresi Sep 11, 2026
dd69ed3
CLAUDE.md is a router, not a manual: 22.9 KB to 8.3 KB
lmoresi Sep 10, 2026
142b680
Move the tier C report off the pull-request path: it is a report, not…
lmoresi Sep 12, 2026
fba7999
Hard baselines instead of drift detectors, and pin cell_size so a red…
lmoresi Sep 14, 2026
6d62107
Merge pull request #731 from underworldcode/ci/undefer-bands-and-tier-c
lmoresi Sep 15, 2026
c3bc917
Merge pull request #743 from underworldcode/bugfix/cell-size-hard-bas…
lmoresi Sep 15, 2026
347d7e6
Merge pull request #725 from underworldcode/docs/claude-md-trim
lmoresi Sep 15, 2026
70ad6fc
fix: make every MPI rank compile the same generated C, rather than re…
lmoresi Sep 22, 2026
fe609ac
docs(release): v3.2.0 feature table with TRL ratings and test evidence
Sep 24, 2026
d903aba
docs(release): committee pre-read; fix free-surface and doc links
Sep 25, 2026
62d1931
fix(release): add --timeout to parallel runs; validate at 4 ranks
Sep 25, 2026
a9c548f
Merge upstream/main into release/v3.2.0 (step 4)
Sep 28, 2026
955de6b
manifest: 15 new entries for v3.2.0; promote fmg to supported
Sep 28, 2026
a06271a
docs(release): itemise the swarm speedup; draft release-note sections
Sep 28, 2026
2944bce
docs(release): v3.2.0 release notes; committee pack with KPIs and roa…
Sep 28, 2026
a5077fa
docs(release): swap TRL 7 and 8; align band labels with the release n…
Sep 28, 2026
8fce79f
manifest: split two bundled entries; regenerate notes and pack
Sep 29, 2026
2671c18
manifest: rename navier-stokes-supg to SUPG-Stabilised Transport
Sep 30, 2026
4c271d8
Merge pull request #710 from jcgraciosa/ci/gadi-container
lmoresi Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
23 changes: 16 additions & 7 deletions .claude/commands/check-patterns.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,24 @@
description: Find deprecated access patterns in code and documentation
---

## Reference Document
## Run the CI scanner first

**Read the authoritative patterns guide first:**
`docs/developer/UW3_Style_and_Patterns_Guide.qmd`
The `src/` pattern list is machine-enforced; the scanner is the single source of
truth for what is banned and what is allowlisted legacy:

Key sections:
- Section 4 "Array and Data Management" - array indexing patterns
- Section 5 "Context Managers" - deprecated vs current access patterns
- Section 6 "MPI and Parallel Patterns" - parallel safety
```bash
pixi run -e amr-dev python scripts/check_deprecated_patterns.py
python scripts/check_deprecated_patterns.py --include-docs # report-only docs inventory
```

Policy and pattern definitions: `docs/developer/guides/style-gates.md`
(allowlist shrinks only — never add entries to make a PR pass).

## Reference Documents

- `docs/developer/UW3_STYLE_CHARTER.md` — normative rules (§3 naming, §4 comments, §7 data access)
- `docs/developer/subsystems/data-access.md` — governing data-access reference
- `docs/developer/UW3_Style_and_Patterns_Guide.md` — broader style reference

---

Expand Down
369 changes: 369 additions & 0 deletions .claude/skills/adapt-on-top-faults/SKILL.md

Large diffs are not rendered by default.

405 changes: 405 additions & 0 deletions .claude/skills/adaptive-meshing/SKILL.md

Large diffs are not rendered by default.

143 changes: 143 additions & 0 deletions .claude/skills/cetz-figures/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
---
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 give a helper a parameter named after a `cetz.draw` export**
— `anchor`, `fill`, `stroke`. The cause is the `import cetz.draw: *` the
helper needs (gotcha 6): it runs *inside* the function body and shadows the
parameter, so the parameter name resolves to cetz's function rather than to
the value you passed. `anchor` panics with `"Unknown anchor 'anchor' for
element 'none'"`; `fill` gives `"expected color, gradient, tiling, or none,
found function"` pointing into `canvas.typ`, nowhere near your code. Rename
to `align-to`, `bg`, `edge`. 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/
└── <post-slug>/
├── <figure-name>.typ # cetz drawing
├── <figure-name>.png # committed output
├── <figure-name>-data.json # (optional) precomputed geometry
└── generate-<figure-name>.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.
Loading
Loading