No description
|
All checks were successful
Deploy Documentation / build-and-deploy (push) Successful in 3m17s
|
||
|---|---|---|
| .forgejo/workflows | ||
| POSCO_GY_COKE_OVEN_TMS | ||
| result-140205-4A-mod | ||
| result-221128-3A | ||
| result-221128-3A-Plan1 | ||
| result-221128-3A-Plan2 | ||
| result-1402050-4A | ||
| (답변)20240611_코크스 코드 질의사항(서용원).pptx | ||
| .gitignore | ||
| AF-Calculator.ipynb | ||
| Battery Initialization Results.ipynb | ||
| Battery Service Results-140205-mod.ipynb | ||
| Battery Service Results-140205.ipynb | ||
| Battery Service Results.ipynb | ||
| Battery.py | ||
| build_docs.py | ||
| coke.history | ||
| coke.history2 | ||
| CokeOvenBrickWall-Scales.ipynb | ||
| CokeOvenServiceSimulator.ipynb | ||
| CokeOvenWallTemperature.csv | ||
| gas.history | ||
| gas.history2 | ||
| Heat_History_140205_4A.csv | ||
| Heat_History_221128_3A.csv | ||
| Heat_Mod_140205_4A.csv | ||
| Heat_Plan_221128_3A-1.csv | ||
| Heat_Plan_221128_3A-2.csv | ||
| mkdocs.yml | ||
| Oven Brick Model Parameters.ipynb | ||
| Oven Brick Model.ipynb | ||
| oven.state | ||
| oven.state2 | ||
| README.md | ||
| requirements-docs.txt | ||
| requirements.txt | ||
| sample_heat_140205_4A-Mod1.txt | ||
| sample_heat_140205_4A.txt | ||
| sample_heat_221128_3A-Plan1.txt | ||
| sample_heat_221128_3A-Plan2.txt | ||
| sample_heat_221128_3A.txt | ||
| Temperature_History_140205_4A.csv | ||
| wall.history | ||
| wall.history2 | ||
| 감급 후 최저 열량 공급 시간 ( 정수 시간 ).ipynb | ||
일관 제철소 코크스 오븐 조업 시뮬레이터 (Coke Oven Operation Simulator)
본 프로젝트는 일관 제철소(Integrated Steel Mill) 코크스 오븐 배터리(Coke Oven Battery)의 연소실(Combustion Chamber)과 탄화실(Coke Chamber) 내벽 간의 열전달 및 조업 스케줄을 시스템 모델링하고 시뮬레이션하기 위한 코드 패키지입니다.
🚀 주요 개선 사항: 초고속 NumPy 1D 열전달 솔버 도입
기존 시뮬레이터는 내벽의 1차원 비선형 열전도 편미분방정식을 풀기 위해 범용 PDE 솔버인 py-pde 라이브러리를 사용했습니다. 하지만 py-pde는:
- 범용 솔버 특성상 매 조업 루프마다 방정식을 인메모리 컴파일하는 큰 오버헤드가 발생했습니다.
- 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) 하실 수 있습니다.