Skip to content

Newman-Raju G22 term wrong in surface-crack SIF for a > c: multiplication instead of exponentiation #4530

Description

@dallonby

Describe the bug

In CsFatigue.surface_stress_intensity_factor (process/models/cs_fatigue.py), the a > c branch computes the G22 coefficient of H2 as:

(0.55e0 - 0.72e0 * c_a**0.75e0 + 0.14e0 * c_a * 1.5e0) * a_t_2  # G22

The published Newman-Raju equation (and the sibling a <= c branch a few lines up, which correctly uses a_c**1.5e0) has 0.14 (c/a)^1.5 — the code multiplies by 1.5 instead of raising to the power 1.5, i.e. 0.21*(c/a) in place of 0.14*(c/a)^1.5.

Impact

Currently dormant: bending_stress is hardcoded to 0.0e0 inside the function, so H1/H2 never enter the returned stress intensity factor and no present output is affected. It becomes a real error in CS fatigue life the moment bending is enabled (the dead # * 3.0 * M / (w*d**2.0) comment suggests that is intended eventually).

Related: neither existing SIF unit test exercises the a > c branch at all (both use a < c at phi = pi/2), so the branch is entirely uncovered.

Proposed fix

Replace the multiplication with exponentiation and add a > c test coverage with independently computed Newman-Raju reference values. PR ready (found during an independent audit of v3.4.2).

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