Source: https://guthlabs.ai/docs/instruments/mohr-s-circle-for-3d-stress-principal-stresses/

instrument / verified-clean

# Mohr's Circle for 3D Stress (Principal Stresses)

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/mohr-s-circle-for-3d-stress-principal-stresses/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/mohr-s-circle-for-3d-stress-principal-stresses/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/mohr-s-circle-for-3d-stress-principal-stresses/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/mohr-s-circle-for-3d-stress-principal-stresses/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Mechanical, Civil & Structural Engineering — Statics/Dynamics, Strength of Materials, Machine Design, Civil, HVAC, Vibration

**Tranche**: tranche-8

**Evidence ID**: t8-007

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The core formula is standard and correct under the stated constraints. Verdict is NEEDS_REVIEW because the specification omits the required symmetric-tensor validation, eigenvalue ordering requirement, and input/output unit declaration.

### Formula and scope findings

- The eigenvalue method is correct for a 3D Cauchy stress tensor, provided the input tensor is symmetric: [[σx,τxy,τzx],[τxy,σy,τyz],[τzx,τyz,σz]]. The specification does not explicitly state this symmetry constraint.

- σ1, σ2, and σ3 must be explicitly sorted so that σ1 ≥ σ2 ≥ σ3; otherwise τmax=(σ1-σ3)/2 is ambiguous.

- The stated cubic-characteristic-equation method should use a real symmetric/Hermitian eigensolver or otherwise reject materially nonsymmetric input. A generic numerical eigensolver may return complex or order-dependent results.

- The maximum shear formula is correct for the maximum absolute shear stress over all planes in 3D, not merely the largest of the three coordinate-plane shear components.

### Unit assumptions

- σx, σy, σz, τxy, τyz, and τzx must all use the same stress unit; outputs σ1, σ2, σ3, and τmax use that same unit.

- The test vectors use MPa throughout. No input unit is specified by the instrument, so unit conversion behavior is undefined.

- Stress components are signed quantities, with tension positive and compression negative under the usual solid-mechanics convention.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The extreme-magnitude vector exposes a numeric hazard: although the exact mathematical principal stresses are finite, binary64/JavaScript arithmetic overflows the τmax subtraction to Infinity, and cubic characteristic-equation coefficient formation can also overflow.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "sigma_x": "0 MPa",
    "sigma_y": "0 MPa",
    "sigma_z": "0 MPa",
    "tau_xy": "0 MPa",
    "tau_yz": "0 MPa",
    "tau_zx": "0 MPa"
  },
  "expected_outputs": {
    "principal_stresses": [
      "0 MPa",
      "0 MPa",
      "0 MPa"
    ],
    "tau_max": "0 MPa",
    "canonical_exact_result": {
      "characteristic_polynomial": "lambda^3",
      "eigenvalues": [
        "0",
        "0",
        "0"
      ],
      "ordering": "sigma1 = sigma2 = sigma3 = 0"
    },
    "eigenvector_verification": {
      "A_v1": [
        "1.000000000",
        "0.000000000",
        "0.000000000"
      ],
      "lambda1_v1": [
        "0.000000000",
        "0.000000000",
        "0.000000000"
      ],
      "A_v2": [
        "0.000000000",
        "1.000000000",
        "0.000000000"
      ],
      "lambda2_v2": [
        "0.000000000",
        "0.000000000",
        "0.000000000"
      ],
      "A_v3": [
        "0.000000000",
        "0.000000000",
        "1.000000000"
      ],
      "lambda3_v3": [
        "0.000000000",
        "0.000000000",
        "0.000000000"
      ]
    },
    "spot_checks": [
      {
        "at": "zero tensor, eigenvalue 1",
        "input_side": 0,
        "answer_side": 0
      },
      {
        "at": "zero tensor, eigenvalue 2",
        "input_side": 0,
        "answer_side": 0
      }
    ]
  },
  "reference_data": {
    "stress_tensor": "[[0,0,0],[0,0,0],[0,0,0]] MPa",
    "eigenvectors": [
      "[1,0,0]",
      "[0,1,0]",
      "[0,0,1]"
    ]
  },
  "working": "A = [[0,0,0],[0,0,0],[0,0,0]] MPa.\n det(lambda I - A) = det([[lambda,0,0],[0,lambda,0],[0,0,lambda]]) = lambda^3.\n Therefore lambda = 0, 0, 0 MPa, so sigma1 = sigma2 = sigma3 = 0 MPa.\n tau_max = (sigma1 - sigma3)/2 = (0 - 0)/2 = 0 MPa.\n Verification: A times each coordinate-basis eigenvector is [0,0,0], equal to lambda times that eigenvector."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche8/tranche8-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
