fix(b08): 돌쌓기 물구멍관 개소당 길이를 평균두께로 — 전개·양식 함께
- 브레인 판정(PLAN 10장): 관이 벽을 가로지르므로 개소당 길이 = 평균두께(옛 붙박이 0.5m) - 골막이는 그 정본이 0.5 라 그대로 둠 - 찰쌓기 양식 물구멍관 식도 같이 고쳐 대조 시험 121건 그대로 일치, 길이 시험 1건 추가 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016VBGFXB9AbJBwXP19z75Qq
This commit is contained in:
@@ -293,7 +293,9 @@ STONE_MASONRY = {
|
||||
# ⚠ **구조물마다 다른 값이다** — 실무 관측: 반중력식 옹벽 0.32 m/m · 돌기슭막이 0.39 m ·
|
||||
# 돌골막이 0.5 m/개소(2026-09-08 랩탑 보조). 여기 0.5 하나로 돌고 있으니 그 사실을
|
||||
# 적어 둔다 — 관측 원단위가 있는 종류는 그 표가 이기고, 없는 종류만 이 값으로 선다.
|
||||
"weep_hole_length_m": 0.5, # 물구멍관 1개소당 관 길이
|
||||
# ⓘ 2026-09-13 — 돌쌓기(기슭막이)는 **평균두께**로 갈음(브레인 판정).
|
||||
# 이 값은 골막이 정본용으로만 남음.
|
||||
"weep_hole_length_m": 0.5, # 물구멍관 1개소당 관 길이 — 골막이
|
||||
"mortar_m3_per_m2": 0.009, # 줄눈 모르터 (찰쌓기만)
|
||||
# ⚠ 터파기 여유폭·되메우기 두께는 **공용 한 벌**로 옮겼다
|
||||
# (`common_util/common_util_excavation.py` — 화면 B06 과 짝인 TS 가 있다).
|
||||
@@ -1066,7 +1068,7 @@ def stone_masonry(
|
||||
)
|
||||
# ⚠ 여기서 멈춘다 — 모르터를 시멘트·모래로 쪼개지 않는다(㉢).
|
||||
|
||||
# 물구멍 — 벽면적 2㎡당 1개소, 개소당 0.5m.
|
||||
# 물구멍 — 벽면적 2㎡당 1개소, 개소당 관 길이 = **평균두께**(관이 벽을 가로지름).
|
||||
# ⚠ 이것은 **관(파이프) 자재**이지 공제 대상이 아니다. 품셈 1-2-1 이 「공제하지 않는다」고
|
||||
# 말하는 물구멍은 **콘크리트 체적에서 뺄 구멍**이고, 여기 값은 그 구멍에 넣는 **관 길이**다.
|
||||
# ⚠⚠ **㉥ 이중계상** — 품셈 13-6-2·13-7-2 [주]③ 은 제잡비 **윗단** 값에
|
||||
@@ -1078,17 +1080,17 @@ def stone_masonry(
|
||||
# 이름에 붙인다(`물구멍 Ø50`). 지어내지 않고 규격 없는 이름으로 둔다.
|
||||
# ⚠ 「미확정」만 적으면 사용자가 무엇을 정해야 하는지 모른다 —
|
||||
# **지금 무슨 값으로 돌고 있는지**를 함께 적는다(원단위 미확보와 같은 방식).
|
||||
# ⓘ 정본은 개소당 관 길이를 **평균두께**로 잡는다(H=2.0 에서 0.83m). 우리는 상수 0.5m 라
|
||||
# 그만큼 짧게 선다 — 관은 벽을 가로지르므로 정본 쪽이 이치에 맞는다(미결).
|
||||
# ⭐ 2026-09-13 브레인 판정(PLAN 10장) — 개소당 관 길이 = **평균두께**. 정본이 그렇게 잡고
|
||||
# 관은 벽을 가로지르므로 이치에도 맞음. 옛 상수 0.5m 는 그만큼 짧게 섰음.
|
||||
# ⚠ 골막이(`_Revetment`)는 그 정본이 0.5 라 그대로 둠 — 여기는 기슭막이 계열만.
|
||||
hole_area, hole_dia, hole_basis = weep_hole_spec(options)
|
||||
components.append(
|
||||
Component(
|
||||
"물구멍관",
|
||||
"m",
|
||||
masonry_area / hole_area * constants["weep_hole_length_m"],
|
||||
masonry_area / hole_area * thickness,
|
||||
DESTINATION["물구멍관"],
|
||||
f"돌쌓기 ÷ {hole_area:g}㎡/개소 × {constants['weep_hole_length_m']:g} m/개소"
|
||||
f" · {hole_basis}",
|
||||
f"돌쌓기 ÷ {hole_area:g}㎡/개소 × 평균두께 {thickness:.2f} m/개소 · {hole_basis}",
|
||||
spec=f"Ø{hole_dia}",
|
||||
)
|
||||
)
|
||||
|
||||
@@ -176,8 +176,8 @@
|
||||
"seq": 9,
|
||||
"name": "물구멍관",
|
||||
"spec": "Ø{HOLE_DIA}",
|
||||
"formula": "A/HOLE_AREA*0.5",
|
||||
"formula_text": "돌쌓기 ÷ 개소당 벽면적 × 0.5 m/개소 (실무 관측 2㎡ · 법은 2~3㎡당 1개소 이상)",
|
||||
"formula": "A/HOLE_AREA*(IF(TOP_IN>0,TOP_IN,L3/100+0.3)+IF(BOT_IN>0,BOT_IN,IF(TOP_IN>0,TOP_IN,L3/100+0.3)+0.3*MAX(H-1,0)))/2",
|
||||
"formula_text": "돌쌓기 ÷ 개소당 벽면적 × 평균두께(관이 벽을 가로지름) — 2㎡ 기본 · 품셈 [주]⑤ 2~3㎡당 1개소 이상 · PVC Ø50(3~6㎝)",
|
||||
"refs": { "A": 1 },
|
||||
"unit": "m",
|
||||
"destination": "material",
|
||||
|
||||
@@ -271,6 +271,18 @@ def test_물구멍_잠정값이_근거에_적힐것() -> None:
|
||||
assert "2~3㎡" in basis # 법이 정한 범위
|
||||
|
||||
|
||||
def test_물구멍관_길이는_평균두께() -> None:
|
||||
"""2026-09-13 브레인 판정(PLAN 10장) — 개소당 관 길이 = 평균두께(옛 상수 0.5m 아님).
|
||||
|
||||
H=2.0 · 뒷길이 45 → 상부 0.75 · 하부 1.05 · 평균 0.90. 1:0.3 · 2㎡/개소.
|
||||
"""
|
||||
result = expand(돌쌓기찰(height=2.0, length=10.0, back_len_cm=45, face_slope_ratio=0.3))
|
||||
돌쌓기 = 성분(result, "돌쌓기").amount
|
||||
물구멍관 = 성분(result, "물구멍관")
|
||||
assert 물구멍관.amount == pytest.approx(돌쌓기 / 2.0 * 0.90)
|
||||
assert "평균두께 0.90" in 물구멍관.basis
|
||||
|
||||
|
||||
def test_큰돌쌓기를_돌쌓기_식으로_돌리지_않을것() -> None:
|
||||
"""⚠ 2026-09-07 발견 — 큰돌쌓기는 품셈 **13-6**, 돌쌓기는 **13-4** 로 **규격 축이 다르다**.
|
||||
돌쌓기는 뒷길이(35·45·55·60㎝), 큰돌쌓기는 직경(40~60·60~80·80~100㎝).
|
||||
|
||||
Reference in New Issue
Block a user