diff --git a/E03_StabSection/E03_StabSection_Types.py b/E03_StabSection/E03_StabSection_Types.py index adfa50720..e4763828c 100644 --- a/E03_StabSection/E03_StabSection_Types.py +++ b/E03_StabSection/E03_StabSection_Types.py @@ -4,6 +4,8 @@ E04 가 이 파일을 그대로 import — 이름 · 열쇠를 바꾸지 않음. """ +import json +from pathlib import Path from typing import Literal, TypedDict GAMMA_W = 9.81 # 물 단위중량 kN/m³ @@ -30,54 +32,6 @@ class Surcharge(TypedDict): q: float # 연직 등분포 kPa -# 요구서 345 6장 기본값(사용자가 E02 에서 바꿈) — 사전조사 후보의 보수 쪽. -DEFAULT_MATERIALS: list[Material] = [ - { - "id": "weathered_soil", - "name": "풍화토", - "gamma_t": 18.0, - "gamma_sat": 19.0, - "c": 15.0, - "phi": 30.0, - }, - { - "id": "weathered_rock", - "name": "풍화암", - "gamma_t": 20.0, - "gamma_sat": 21.0, - "c": 30.0, - "phi": 33.0, - }, - { - "id": "soft_rock", - "name": "연암", - "gamma_t": 24.0, - "gamma_sat": 24.5, - "c": 150.0, - "phi": 35.0, - }, - { - "id": "hard_rock", - "name": "경암", - "gamma_t": 26.0, - "gamma_sat": 26.0, - "c": 300.0, - "phi": 40.0, - }, - {"id": "fill", "name": "성토", "gamma_t": 18.0, "gamma_sat": 19.0, "c": 10.0, "phi": 25.0}, - { - "id": "colluvium", - "name": "붕적토", - "gamma_t": 17.5, - "gamma_sat": 18.5, - "c": 5.0, - "phi": 27.0, - }, -] - -DEFAULT_ROAD_SURCHARGE_KPA = 10.0 # 노면 하중 기본 - - def material(raw: dict) -> Material: """밖에서 온 물성 한 줄을 꼴에 맞춤 — 빠진 γsat 는 γt · 음수 · 범위 밖은 오류.""" gamma_t = float(raw["gamma_t"]) @@ -122,3 +76,14 @@ def surcharges(raw: list[dict] | None) -> list[Surcharge]: if x1 > x0: out.append({"x0": x0, "x1": x1, "q": float(item["q"])}) return out + + +# 기본 물성 · 노면 하중 = M02 마스터 층 `ground_defaults.json`(E02 초기값과 한 벌 · 사용자가 E02 에서 바꿈). +_DEFAULTS = json.loads( + ( + Path(__file__).resolve().parents[1] + / "resources/master_template/stability/ground_defaults.json" + ).read_text(encoding="utf-8") +) +DEFAULT_MATERIALS: list[Material] = [material(m) for m in _DEFAULTS["materials"]] +DEFAULT_ROAD_SURCHARGE_KPA = float(_DEFAULTS["road_surcharge_kpa"]) # 노면 하중 기본