You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Umbrella for the four issues that extend the package beyond "axis-aligned box, scalar κ, Dirichlet/Neumann/Periodic". The comment threads already tie them together: #61's binary mask is the φ ∈ {0,1} special case of #69's phase-field candidate; Robin on an irregular domain is #62 ∩ #69; #70's face-averaging policy depends on whether the coefficient Diffusion carries becomes φD.
Leaf bodies stay array-level; a per-cell variable stencil is the thing to avoid, and an index-driven gather is the way to avoid it.
apply_adjoint! remains the exact discrete transpose, checked by ⟨Lx,y⟩ = ⟨x,Lᵀy⟩ on a materialized small problem. Corner ghosts on forests and slabs are garbage by design today; a cross-derivative leaf needs the corner-aware exchange before it touches those paths.
operator_diagonal becomes per-cell; multigrid depends on it.
Uniform CartesianGrid first for every item. Masked or tensor BlockForest / slabs are follow-ups.
🤖 Beep boop — Claude filed the umbrella; Kyle is not standing under it talking to himself.
Umbrella for the four issues that extend the package beyond "axis-aligned box, scalar κ, Dirichlet/Neumann/Periodic". The comment threads already tie them together: #61's binary mask is the φ ∈ {0,1} special case of #69's phase-field candidate; Robin on an irregular domain is #62 ∩ #69; #70's face-averaging policy depends on whether the coefficient
Diffusioncarries becomesφD.Sub-issues, in order
active::Field{Bool}and aφ::Field{T}want to be the same seam.CartesianGrid. Unblocks the downstream microvascular model; per-celloperator_diagonalhas a closed form under mirroring.Fieldcoefficient question is the real design call. Prior art for the irregular-domain version is shared with feat(grids): finite differences on non-trivial geometry — pick the seam #69 option 4.tensor_field, lift the two scalar-eltype guards) can proceed at any time; stages 2–3 (tensor face averaging, cross-derivative terms) wait on feat(grids): finite differences on non-trivial geometry — pick the seam #69 because the averaging policy forφDacross a geometric interface differs fromDacross a fiber-orientation jump.Invariants that bind every sub-issue
apply_adjoint!remains the exact discrete transpose, checked by ⟨Lx,y⟩ = ⟨x,Lᵀy⟩ on a materialized small problem. Corner ghosts on forests and slabs are garbage by design today; a cross-derivative leaf needs the corner-aware exchange before it touches those paths.operator_diagonalbecomes per-cell; multigrid depends on it.CartesianGridfirst for every item. Masked or tensorBlockForest/ slabs are follow-ups.🤖 Beep boop — Claude filed the umbrella; Kyle is not standing under it talking to himself.