Skip to content

Kisu53/OSM-Wizard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BEM-OSM Patcher

Pollination에서 생성된 geometry-only OSM 파일을 받아서 단계별로 HVAC, 스케줄, 부하 등을 적용하여 시뮬레이션 가능한 OSM 파일로 변환하는 내부용 도구입니다.

주요 기능

Step-by-Step 워크플로우

Step 이름 설명
01 Naming Rules Zone/Surface 네이밍 규칙 검증 및 자동 수정
02 Thermostat Dual Setpoint 써모스탯 생성 및 할당
03 BEM-Protocol HVAC 규칙 파싱 및 Zone 매칭 프리뷰
04 HVAC Systems BEM-Protocol 기반 HVAC 시스템 자동 생성
05 Schedules Space Type별 운영 스케줄 생성
06 Internal Loads ASHRAE 90.1 기반 내부 부하 적용
07 Sizing Zone/System/Plant 사이징 파라미터 설정
08 QA Checks 모델 품질 검증 및 오류 리포트

BEM-Protocol DSL

Zone에 HVAC 시스템을 할당하기 위한 간단한 규칙 언어입니다.

# 형식: (ZoneMask) > Terminal > AirLoop >> PlantLoop > HeatSource > HeatRejection

# 예시
(.*_DVM_.*) > DVM                           # DVM Zone들에 VRF 시스템 적용
(.*_AHU[0-9]+.*) > AHU > AHU_Main           # AHU Zone들에 VAV 시스템 적용
(.*_FCU[0-9]+) > FCU                        # FCU Zone들에 팬코일 적용
(.*Corridor.*|.*Stair.*) > NONE             # 복도/계단은 비공조

지원 Terminal 유형:

  • VAV / AHU - 중앙공조 VAV 시스템
  • FCU - 4관식 팬코일 유닛
  • DVM - Samsung VRF 시스템
  • SAC / EIAC / GIAC - 개별 에어컨 (PTAC)
  • NONE - 비공조

자동 Space Type 인식

Zone 이름에서 Space Type을 자동으로 추출하여 적절한 스케줄과 부하를 적용합니다.

지원 Space Type: Office, OpenOffice, ClosedOffice, Conference, Lobby, Corridor, Restroom, Breakroom, Kitchen, Retail, Storage, Mechanical, IT_room, Data Center

설치

요구사항

  • Python 3.10+
  • OpenStudio 3.9

의존성 설치

python -m pip install -r requirements.txt

requirements.txt:

openstudio==3.9.0
PySide6>=6.6.0
PyYAML>=6.0
jsonschema>=4.20.0

실행

python main.py

사용 방법

1. OSM 파일 로드

  • File > Open OSM 또는 Load OSM 버튼 클릭
  • Pollination에서 내보낸 geometry-only OSM 파일 선택

2. Geometry 탭에서 Zone 확인

  • Zone 목록과 시스템 코드 확인
  • 색상으로 시스템 유형 구분 (DVM=파랑, AHU=초록, FCU=주황 등)

3. HVAC 탭에서 Protocol 작성

  • Auto-Suggest from Zones 버튼으로 자동 생성 가능
  • Zone 이름 패턴에 맞게 규칙 수정
  • Validate 버튼으로 문법 검증
  • Preview Assignments 버튼으로 Zone 매칭 확인

4. Step 실행

  • 왼쪽 패널에서 Step 더블클릭으로 실행
  • 설정 다이얼로그에서 파라미터 조정
  • 실행 결과는 Report 탭에서 확인

5. 저장 및 내보내기

  • Save OSM - 현재 모델 저장
  • Export Manifest - 전체 작업 이력 JSON 내보내기

출력 파일

각 Step 실행 시 다음 파일들이 생성됩니다:

output/
├── Step01_NamingRules.osm      # Step 적용 후 OSM
├── Step01_NamingRules.json     # Step 실행 리포트
├── Step02_Thermostat.osm
├── Step02_Thermostat.json
├── ...
└── project_manifest.json        # 전체 프로젝트 매니페스트

프로젝트 구조

Vibe/
├── main.py                      # 앱 진입점
├── requirements.txt
├── config/
│   ├── naming_rules.yaml        # 네이밍 규칙 설정
│   └── hvac_templates.yaml      # HVAC 템플릿 정의
└── src/
    ├── core/                    # 핵심 엔진
    │   ├── step_runner.py       # Step 실행기
    │   ├── step_base.py         # Step 추상 클래스
    │   └── report.py            # JSON 리포트
    ├── steps/                   # Step 구현체
    │   ├── naming_rules.py
    │   ├── thermostat.py
    │   ├── hvac_system.py
    │   ├── schedules.py
    │   ├── internal_loads.py
    │   ├── sizing.py
    │   └── qa_checks.py
    ├── templates/               # HVAC 템플릿 빌더
    │   ├── hvac_builder.py
    │   ├── dvm_template.py
    │   ├── ahu_template.py
    │   └── fcu_template.py
    ├── protocols/               # BEM-Protocol DSL
    │   └── bem_protocol.py
    └── ui/                      # PySide6 UI
        ├── main_window.py
        ├── step_panel.py
        ├── step_config_dialog.py
        └── report_viewer.py

설정 파일

naming_rules.yaml

Zone, Surface, SubSurface의 네이밍 규칙을 정의합니다.

zones:
  pattern: "^[A-Z][a-zA-Z]*_[A-Z0-9]+_[0-9]+[A-Z]?$"
  examples:
    - "Office_01_001"
    - "Restroom_B1_002"

hvac_templates.yaml

HVAC 시스템 템플릿의 기본값을 정의합니다.

templates:
  VAV_CHW_HW:
    defaults:
      supply_air_temp_cooling: 12.8
      chw_temp: 6.7
      hw_temp: 60.0
      vav_min_flow_fraction: 0.3

기술 스택

  • OpenStudio SDK 3.9 - 에너지 시뮬레이션 모델링
  • PySide6 - Qt 기반 GUI
  • PyYAML - 설정 파일 파싱

라이선스

내부용 도구 (Internal Use Only)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors