[PowerSimCore / models] 포인터 기반 전력망 컴포넌트 레지스트리 재설계

1 min read

기존 값 복사 방식의 장비 저장 구조에서 발생할 수 있는 댕글링 포인터 문제를 방지하기 위해 models 스코프의 전력 시스템 레지스트리를 개편했다. 복잡한 기기 간 연결 관계를 효율적으로 추적하기 위해 포인터 기반의 토폴로지 맵을 적용했다.

중앙 집중형 장비 데이터 딕셔너리 및 연결 매핑 구조 개선

  • PowerSystem 내 기존 std::vector 기반의 기기 저장소를 std::mapstd::shared_ptr을 조합한 딕셔너리 구조로 변경했다.
  • 포인터 기반 설계를 통해 컴포넌트 복사에 따른 오버헤드를 제거하고 다형성 객체들의 메모리 접근 안전성을 확보했다.
  • 송전선로에 차단기와 변류기의 식별자를 맵핑하는 attachCBToLineattachCTToLine 메서드를 도입하여 토폴로지 연동 기능을 추가했다.
  • CT와 차단기를 논리적으로 연동시키는 connectRelay 인터페이스를 구현하여 보호 계전 장비 간의 연결 관계를 표현했다.
  • getConnectedEquipment 메서드를 수정하여 특정 모선(Bus)에 연결된 모든 기기를 포인터 기반 구조에 맞춰 정확히 탐색하도록 로직을 개선했다.
  • 모선 ID나 기기 이름을 키(Key)로 사용하여 탐색이 가능하도록 레지스트리 조회 메서드를 재작성했다.