Sprint 3 — Must Feature 5종 추가 (상부→하부 순서)

상부 구조물:
- DeckSlabIR + DeckSlabBuilder + 기하학 (직사각형 슬래브 스위프)

연결부:
- BearingIR + BearingBuilder (카탈로그 기반, KDS 기본값 포함)

하부 구조물:
- PierIR + PierBuilder + 기하학 (다주 지원, 코핑 포함)
- AbutmentIR + AbutmentBuilder + 기하학 (흉벽 + 기초 + 날개벽)

core에 BearingType·PierType·ColumnShape·AbutmentType 열거형 추가
kernel: sweep.rs 공유 모듈 (sweep_profile_flat·box·prism·merge)
psc_i.rs → sweep.rs 의존으로 리팩터
GeomKernel trait에 4개 메서드 추가 (상부→하부 문서화 주석)

cargo test 57개 전부 통과

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
minsung
2026-04-14 19:27:57 +09:00
parent 40857f39c5
commit bdacea5253
16 changed files with 1113 additions and 85 deletions

View File

@@ -105,6 +105,48 @@ pub enum MaterialGrade {
Sm490,
}
/// Bearing type (support device between girder and substructure).
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum BearingType {
Elastomeric, // 탄성받침 — most common, PSC bridge
Pot, // 포트받침 — steel box, large loads
Spherical, // 구면받침 — rotation in all directions
Rocker, // 롤러받침 — fixed rotation, expansion
FixedPin, // 고정핀
}
/// Pier type (교각 형식).
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum PierType {
SingleColumn, // 단주식
MultiColumn, // 다주식
Hammerhead, // 해머헤드식
Wall, // 벽식
Portal, // 문형
}
/// Pier column cross-section.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ColumnShape {
Circular,
Rectangular,
Oval,
}
/// Abutment type (교대 형식).
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum AbutmentType {
ReverseT, // 역T형 — most common
Wall, // 중력식
SemiIntegral, // 반일체식
Integral, // 일체식
Counterfort, // 부벽식
}
// ─── Tests ────────────────────────────────────────────────────────────────────
#[cfg(test)]