Skip to content

ViscoPlasticFlowModel + split-node fault path + consistent tangent: velocity PC setup dies with 'Computed maximum singular value as zero' (error 77) #507

Description

@lmoresi

On feature/fault-split-node (PR #502): a Stokes solve with
ViscoPlasticFlowModel, a split-node fault BC (add_fault_bc, so the
solve goes through the rotated path / solve_with_fault), and a
consistent tangent fails during the rotated fieldsplit-Schur KSP setup:

PETSc has generated inconsistent data
Computed maximum singular value as zero
error code 77, in KSP.solve via rotated_bc._solve_rotated_iterative

Facts from the isolation (box + one frictionless split fault, h = 0.03):

  • consistent_jacobian = True with picard>0 correctly raises the
    guided NotImplementedError (use "continuation").
  • consistent_jacobian = "continuation", picard=3: error 77 above —
    and it fails even with uniform yield_stress = 1e4, i.e. a
    problem that is numerically pure viscous. A spatially varying (masked)
    yield stress makes no difference: both fail identically.
  • Default (Picard) tangent with picard=8: both the uniform and the
    masked yield-stress cases solve fine.
  • Plain ViscousFlowModel through the same fault path: fine (all the
    fault teaching examples).

So the failing intersection is specifically {ViscoPlasticFlowModel,
rotated fault path, frozen-Picard-then-Newton compilation}. Since the
1e4-yield case is numerically linear, the zero/degenerate operator the
velocity PC sees presumably comes from the continuation machinery's
frozen-tangent compilation of the VP flux rather than from the physics.

Reproducer (worktree env): build a split-fault box, set
ViscoPlasticFlowModel with yield_stress = 1e4,
consistent_jacobian = "continuation", add_fault_bc(0, ...),
solve_with_fault(picard=3).

Workaround in use: the Picard tangent (default) with a few extra
iterations, adequate for mild localised yielding (junction plugs).
The consistent-tangent path matters once yielding is stiff/global
(the notch-class problems on faulted meshes).

Underworld development team with AI support from Claude Code

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