coke-oven-maintenance-plan/README.md

4 KiB

일관 제철소 코크스 오븐 조업 시뮬레이터 (Coke Oven Operation Simulator)

본 프로젝트는 일관 제철소(Integrated Steel Mill) 코크스 오븐 배터리(Coke Oven Battery)의 연소실(Combustion Chamber)과 탄화실(Coke Chamber) 내벽 간의 열전달 및 조업 스케줄을 시스템 모델링하고 시뮬레이션하기 위한 코드 패키지입니다.


🚀 주요 개선 사항: 초고속 NumPy 1D 열전달 솔버 도입

기존 시뮬레이터는 내벽의 1차원 비선형 열전도 편미분방정식을 풀기 위해 범용 PDE 솔버인 py-pde 라이브러리를 사용했습니다. 하지만 py-pde는:

  1. 범용 솔버 특성상 매 조업 루프마다 방정식을 인메모리 컴파일하는 큰 오버헤드가 발생했습니다.
  2. 132개의 모든 오븐 벽을 풀기 위해 대규모 프로세스 풀(multiprocessing.Pool(12))을 매 스텝마다 생성/소멸시켜 직렬화 및 IPC 통신 병목이 극심했습니다.

새로 도입된 해결책 (Custom NumPy Solver):

  • 초고속 순수 NumPy 계산: 프로세스 생성 및 통신 오버헤드 없이 단일 스레드 순차 연산만으로 마이크로초 단위로 작동합니다.
  • 수학적 완벽 일치: 기존 py-pde 베이스라인 솔버의 계산 결과와 10^{-13} K (기계 정밀도 한계) 미만의 오차로 100% 동일한 온도 결과를 도출합니다.
  • 엄청난 성능 단축: 60시간 동안의 연속 오븐 조업 시뮬레이션 시간을 기존 약 20분에서 단 58초 수준으로 20배 이상(스텝별로는 1000배 이상) 단축시켰습니다.

📁 주요 디렉토리 및 파일 구조

  • Battery.py: 시뮬레이션의 핵심 코드로, 오븐 스케줄링(Battery), 벽면 열전도(RefractoryWall), 연소열 발열량 계산(CombustionChamber), 석탄 열량 흡수(CokeCharge) 등을 모델링합니다.
  • CokeOvenWallTemperature.csv: 장입 이후 경과 시간에 따른 코크스 오븐 내벽 온도 측정 테이블 파일입니다.
  • Heat_Plan_*.csv / sample_heat_*.txt: 노열 공급 프로그램 및 가열 계획 데이터 파일입니다.
  • (답변)20240611_코크스 코드 질의사항(서용원).pptx: 코크스 조업 코드 로직과 해석 모델에 대한 Q&A 자료입니다. (추가 개발을 위해 반드시 참고하시기 바랍니다.)
  • gas.history, wall.history, coke.history, oven.state: 이전 시뮬레이션 결과로부터 상태를 복구하기 위한 피클(pickle) 데이터 파일들입니다.

🛠️ 개발 환경 설정 및 실행 방법

본 프로젝트는 최신 Cantera 3.2.0 환경에 최적화되어, 기존 CTI/XML 포맷을 최신 YAML 포맷(gri30.yaml)으로 대체하여 Cantera 3+ 호환성을 확보했습니다.

1. 가상환경 구축 및 패키지 설치

터미널에서 아래 명령어를 실행하여 파이썬 가상환경을 활성화하고 패키지를 설치합니다:

# 가상환경 생성
python3 -m venv .venv

# 가상환경 활성화 (Linux/macOS)
source .venv/bin/activate

# 필수 패키지 설치
pip install -r requirements.txt

2. 시뮬레이션 실행

가상환경이 활성화된 상태에서 메인 시뮬레이터를 실행합니다:

python Battery.py

실행이 완료되면 최종 시뮬레이션의 가스 온도, 벽 온도, 코크스 조업 상태를 gas.history2, wall.history2 등으로 자동 저장합니다.


⚙️ 솔버 구성 설정 (Configuration)

Battery.py 파일 최상단의 글로벌 설정 변수 USE_CUSTOM_SOLVER를 통해 손쉽게 검증 및 가속화 모드를 토글할 수 있습니다:

# Battery.py 상단 설정
USE_CUSTOM_SOLVER = True  # True: 초고속 NumPy FDM 솔버 (기본값)
                          # False: 검증용 py-pde 베이스라인 솔버

Tip

추가 개발 시 새로 짠 솔버가 올바른 결과를 내는지 확인하려면 USE_CUSTOM_SOLVER = False로 두고 기존 논문/해석 엔진 데이터와 크로스 체크(Cross-check) 하실 수 있습니다.