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).
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:The published Newman-Raju equation (and the sibling a <= c branch a few lines up, which correctly uses
a_c**1.5e0) has0.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 of0.14*(c/a)^1.5.Impact
Currently dormant:
bending_stressis hardcoded to0.0e0inside 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).