Skip to content

Say in the library what a 3-D split patch needs from the mesh around it - #719

Open
lmoresi wants to merge 1 commit into
developmentfrom
docs/split-3d-requirements
Open

Say in the library what a 3-D split patch needs from the mesh around it#719
lmoresi wants to merge 1 commit into
developmentfrom
docs/split-3d-requirements

Conversation

@lmoresi

@lmoresi lmoresi commented Sep 10, 2026

Copy link
Copy Markdown
Member

Two requirements of split_along_label_3d were recorded only in a study rig's README. They are properties of the splitter, not of that rig, and they will bite anyone building a 3-D patch of their own.

Both follow from the interior-vertex rule — a split patch is doubled everywhere strictly inside its rim, so every face needs a vertex that is not on the rim.

  • A patch is about four cells across, minimum, in each direction. A vertical fault in a box needs more than the fault: a blind top setback of two cells or more, four cells or more of fault depth, and three cells or more of base clearance for the carve's cavity to clear the wall. A box shallower than about nine cells cannot hold a splittable vertical fault at all, however finely the fault itself is triangulated. Refining the fault does not help; the budget is in the background mesh.

  • Corner quads must be triangulated on the other diagonal. A structured extrusion cuts each quad in two, and at a corner one choice produces a triangle whose three vertices all lie on the rim. That face has no interior vertex and the split refuses it. It is a choice of diagonal, not a call for refinement.

Changed here: the split_along_label_3d docstring gains both; docs/advanced/fault-networks.md gains a section in its 3-D part; and the refusal itself now names both remedies instead of asking only for refinement, which is the wrong answer to the second.

No behaviour change beyond the message text. 43 tests across the 2-D and 3-D split, fault API, network 3-D, width and conforming-sheet suites pass.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RzK7JXSxsc2GoG7TGnQgUS

Both requirements follow from the interior-vertex rule, and both were
recorded only in a study rig's README, where nobody building a patch of
their own would find them.

A patch must be about four cells across in each direction, and a
vertical fault in a box needs a blind top setback, a fault depth and a
base clearance on top of that, so a box shallower than about nine cells
cannot hold a splittable vertical fault however finely the fault itself
is triangulated. Separately, a structured extrusion triangulates each
corner quad on a diagonal that can cut off a triangle with all three
vertices on the rim; that face has no interior vertex and the split
refuses it, and the fix is to flip that one diagonal, not to refine.

The refusal now names both remedies instead of asking only for
refinement, which is the wrong answer to the second one.

Underworld development team with AI support from Claude Code

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RzK7JXSxsc2GoG7TGnQgUS
Copilot AI lite review requested due to automatic review settings September 10, 2026 16:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The changes are limited to documentation and error-message text, with no functional behavior changes detected in the reviewed diffs.

Pull request overview

This PR improves the usability of the 3‑D fault patch splitter by documenting two key mesh/triangulation prerequisites for split_along_label_3d, and by updating the corresponding refusal message to name both remedies (coarseness vs. corner-quad diagonal choice). This helps users design splittable 3‑D patches up front rather than encountering a generic “refine” instruction that doesn’t address the diagonal case.

Changes:

  • Expanded the split_along_label_3d docstring with two concrete “interior-vertex rule” consequences (minimum patch scale; corner-quad diagonal rule).
  • Added a new documentation section in the advanced fault networks guide describing the same constraints for 3‑D patches.
  • Updated the “no interior vertex” refusal message to describe both likely causes and the correct fix for each.
File summaries
File Description
src/underworld3/utilities/fault_split.py Adds splitter prerequisites to the docstring and clarifies the “no interior vertex” refusal message with two specific remedies.
docs/advanced/fault-networks.md Documents the 3‑D patch mesh requirements (minimum surrounding mesh budget and corner quad diagonal choice) in the user guide.
Review details
  • Files reviewed: 2/2 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants