[PowerSimCore / models] 포인터 기반 전력망 컴포넌트 레지스트리 재설계
• 1 min read
기존 값 복사 방식의 장비 저장 구조에서 발생할 수 있는 댕글링 포인터 문제를 방지하기 위해 models 스코프의 전력 시스템 레지스트리를 개편했다. 복잡한 기기 간 연결 관계를 효율적으로 추적하기 위해 포인터 기반의 토폴로지 맵을 적용했다.
중앙 집중형 장비 데이터 딕셔너리 및 연결 매핑 구조 개선
PowerSystem내 기존std::vector기반의 기기 저장소를std::map과std::shared_ptr을 조합한 딕셔너리 구조로 변경했다.- 포인터 기반 설계를 통해 컴포넌트 복사에 따른 오버헤드를 제거하고 다형성 객체들의 메모리 접근 안전성을 확보했다.
- 송전선로에 차단기와 변류기의 식별자를 맵핑하는
attachCBToLine및attachCTToLine메서드를 도입하여 토폴로지 연동 기능을 추가했다. CT와 차단기를 논리적으로 연동시키는connectRelay인터페이스를 구현하여 보호 계전 장비 간의 연결 관계를 표현했다.getConnectedEquipment메서드를 수정하여 특정 모선(Bus)에 연결된 모든 기기를 포인터 기반 구조에 맞춰 정확히 탐색하도록 로직을 개선했다.- 모선 ID나 기기 이름을 키(Key)로 사용하여 탐색이 가능하도록 레지스트리 조회 메서드를 재작성했다.