fix(E03): 엄밀해 해 없음 허용 2 % — 찾은 최소가 Bishop +2 % 안이면 값 살림(converged_far · 요구 351)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
- 해 없는 견본 = 검증_sub4 STA.0+340 우기 깎기 비탈을 줄인 꼴(풍화토 위 · 풍화암 · 지표 수위 · 노면 하중):
|
||||
Bishop 임계 원에서 F_m · F_f 가 λ −2 ~ 2(M-P ±π)에서 안 만남 → 옛 엔진은 먼 원(F 1.82 · Bishop 1.34 의
|
||||
136 %)을 Spencer 값으로 냈음 → 이제 Spencer · M-P 원호 = F None · status no_solution · 까닭 · 넓은 곡선.
|
||||
- 허용 2 % — 찾은 최소가 Bishop + 2 % 안이면 값을 살림(status converged_far).
|
||||
- 해 있는 면 = 상태 converged · 잔차 < 1e-4 · λ 좁은 범위 안 · 곡선 21 점(옛 꼴 그대로).
|
||||
|
||||
./venv/Scripts/python.exe -m pytest resources/tester/test_532_2_stab_nosolution.py -q
|
||||
@@ -25,6 +26,7 @@ from test_532_2_stab_lem_benchmarks import ACADS_EXT, mats # noqa: E402
|
||||
|
||||
from E03_StabSection import E03_StabSection_Engine_GLE as gle # noqa: E402
|
||||
from E03_StabSection import E03_StabSection_Engine_LEM as lem # noqa: E402
|
||||
from E03_StabSection import E03_StabSection_Engine_Search as search # noqa: E402
|
||||
from E03_StabSection.E03_StabSection_Engine_Search import ( # noqa: E402
|
||||
analyze,
|
||||
evaluate_specified,
|
||||
@@ -118,5 +120,18 @@ def test_solved_surface_status_and_shape_unchanged():
|
||||
assert len(out["lambda_curve"]["lambda"]) == gle.CURVE_POINTS
|
||||
|
||||
|
||||
def test_far_tolerance_keeps_value_within_limit(monkeypatch):
|
||||
"""허용(FAR_TOL) 안이면 찾은 최소를 살림(converged_far) — 견본은 136 % 라 2 % 기본에선 해 없음 그대로."""
|
||||
monkeypatch.setattr(search, "FAR_TOL", 0.5)
|
||||
r = analyze(
|
||||
NO_SOLUTION_MODEL, direction=1, limits=[-9.561, 2.0], min_depth=0.3, noncircular=False,
|
||||
methods=("bishop", "spencer"),
|
||||
) # fmt: skip
|
||||
fb = r["methods"]["bishop"]["circular"]["F"]
|
||||
c = r["methods"]["spencer"]["circular"]
|
||||
assert c["status"] == "converged_far" and fb < c["F"] <= 1.5 * fb
|
||||
assert "살림" in c["reason"] and r["methods"]["spencer"]["min"]["F"] == c["F"]
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(pytest.main([__file__, "-q"]))
|
||||
|
||||
Reference in New Issue
Block a user