Skip to content

What should the rheology be where two fault zones overlap at a high angle? #544

Description

@lmoresi

Rescoped 2026-08-16 after review. This was originally filed as three defects; two of them do not survive scrutiny and are withdrawn below. What remains is one open modelling question.

The question

Where two fault zones overlap, the fused zone carries a single label by design — that ignorance is what makes fuse (#541) remove junction detection, and it is deliberate. So the rheology at an overlap comes entirely from the Surface lookup, which today gives each node the director of the nearest surface.

At a low-angle crossing or a tangential merge the two directors nearly agree, so the choice does not matter. At a high-angle crossing the overlap is weak in two directions, and a single director represents only one of them.

The open question is whether that matters in practice. The ownership boundary is a measure-zero surface with cells either side taking opposite directors, so the net response of the overlap region may already approximate the orthotropic answer without anyone constructing it. That is plausible and unmeasured.

What would settle it

A high-angle crossing — the tangential geometries used so far cannot discriminate, since both directors agree there by construction. Compare, on one mesh:

  • nearest-fault director (current behaviour)
  • an explicit orthotropic treatment, e.g. summing the two weak planes' compliance tensors and inverting — which represents both weaknesses, is continuous, and degenerates correctly where only one surface is near

against the gmsh-union control. If they agree, the current rule is fine and this issue closes. If not, the gap is the error being carried today.

Note the connection to #539: an additive-compliance treatment needs the TI compliance tensor and the eta -> 1/(4 eta) structure that issue records. The two are related if this route is taken.

Withdrawn from the original report

  • "Nearest vertex, not nearest surface." Real as stated — a densely-sampled trace annexes territory from a sparsely-sampled one — but this is a modelling-discipline requirement, not a defect: a fault set that builds one model should be consistently sampled. Generalising the KDTree to exact distance-to-segment would make a coarse triangulation work well enough to keep, which is the wrong service. Refine or retriangulate the surface instead, which fixes the distance query and everything else that reads it.
  • "The director flips discontinuously across the partition boundary." Poor wording on my part: "partition" here meant the geometric medial axis between the two traces, not the MPI decomposition. Nothing is decomposition-dependent — the KDTree is built from replicated Surface vertices and queried with rank-local coordinates, so a given point gets the same answer at any rank count. The parallel contract is intact.

Underworld development team with AI support from Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions