- 관 지점 시설 속성(box_culvert · ford_bridge)으로 보조 탭 줄에 「측점 종류」 표시 · 그 탭 = 공용 카드 빈 장(측점 · 종류 · 안내) - 관 지점 계산 장은 그대로 · 물넘이포장 · 기슭막이는 지금처럼 관 계산 장 - [저장]에서 빈 장 지점은 빠짐 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4uKaV4ZBhsJN4GHG7yRj4
66 lines
2.6 KiB
Python
66 lines
2.6 KiB
Python
"""B08 4탭 홍수량 계산서 — 기본값 · 선택지 한 곳 (PLAN 62-3).
|
||
|
||
임의로 정한 값 — 사용자가 나중에 고침. B05/B06 · 배수유역 값과 잇지 않음(자기 기본값만).
|
||
근거 후보: docs/raw/조사/2026-10-06_62-1_홍수량_방법.md (별표2 2.0배 · KDS 표 2.7-1 · 실무 견본).
|
||
"""
|
||
|
||
from __future__ import annotations
|
||
|
||
from typing import Any
|
||
|
||
#: 할증(Qd = Q × 할증) — 2.0 별표2 법정 · 1.5 견본(울진 2공구) · 1.2 구기준
|
||
FACTORS = (2.0, 1.5, 1.2)
|
||
|
||
#: 단면 가정 — 만관 · 240° 유효(수심 0.75D) · 유효 70 %(배관 제안 방식)
|
||
SECTIONS = {"full": "만관", "arc240": "240° 유효단면", "eff70": "유효 70 %"}
|
||
|
||
#: 관 종류별 조도계수 n — 파형강관은 KDS 표에 없음(지금 배관 제안 0.024)
|
||
PIPE_KINDS = {"파형강관": 0.024, "흄관": 0.013, "콘크리트관": 0.015}
|
||
|
||
#: 처음 값 = 표준 값만(69-6) · 측점 고유 값(유역면적 · L · H · D · S)은 None(빈칸)
|
||
#: R24 · 지역은 공사지 자료(B08_Quantity_Hydro_Site) — 자료가 없을 때만 화면 입력
|
||
DEFAULTS: dict[str, Any] = {
|
||
"factor": 2.0,
|
||
"runoff": 0.80, # 유출계수 f — KDS 가파른 산지
|
||
"area_km2": None,
|
||
"length_m": None, # 산정에서 하천시점까지 거리
|
||
"height_m": None, # 산정에서 하천시점까지 표고차
|
||
"tc_min_minutes": 5.0, # 최소 도달시간(KDS 2.4)
|
||
"r24_mm": None,
|
||
"region": "",
|
||
"return_period": 100,
|
||
"pipe_kind": "파형강관",
|
||
"n": None, # None = 관 종류 값
|
||
"diameter_mm": None,
|
||
"slope_denominator": None, # 하상경사 S = 1 / 이 값
|
||
"section": "full",
|
||
}
|
||
|
||
|
||
#: 계산 방법 정하는 중인 시설(73-1) — 관 계산 대신 빈 장 · 값은 관 지점 시설 속성(pipe_points)
|
||
PENDING_FACILITIES = {"box_culvert": "박스암거", "ford_bridge": "세월교"}
|
||
|
||
|
||
def station_rows(points: list[Any]) -> list[dict[str, Any]]:
|
||
"""관 지점 → 보조 탭 줄(측점 차례) · 박스암거 · 세월교는 pending(빈 장)."""
|
||
rows = [
|
||
{
|
||
"chainage_m": p.chainage_m,
|
||
"facility": p.facility,
|
||
"kind": PENDING_FACILITIES.get(p.facility, ""),
|
||
"pending": p.facility in PENDING_FACILITIES,
|
||
}
|
||
for p in points
|
||
]
|
||
return sorted(rows, key=lambda s: s["chainage_m"])
|
||
|
||
|
||
def options() -> dict[str, Any]:
|
||
"""화면 선택지 — 기본값 · 할증 · 단면 가정 · 관 종류 n."""
|
||
return {
|
||
"defaults": DEFAULTS,
|
||
"factors": list(FACTORS),
|
||
"sections": SECTIONS,
|
||
"pipe_kinds": PIPE_KINDS,
|
||
}
|