
코드의 목적
이 코드는 로켓 또는 초음속 추진 시스템에서 사용되는 최대 추력 노즐(Maximum-Thrust Nozzle)을 설계하기 위한 데스크탑 시뮬레이션 도구입니다. 핵심 알고리즘은 공기역학 분야에서 초음속 유동 해석에 널리 쓰이는 특성곡선법(Method of Characteristics, MOC)으로, 스탠퍼드 대학교의 Britton Jeffrey Olson 교수의 코드를 완전히 이식하고, 물리적 정확성을 대조 검증하였습니다.
노즐 설계의 핵심 과제는 "주어진 연소실 조건에서 손실 없이 최대 추력을 낼 수 있는 노즐의 형상(벽면 좌표)을 어떻게 결정하는가"입니다. 이 프로그램은 그 질문에 수치적으로 정확한 답을 제공하며, 결과를 직관적인 그래프로 시각화합니다.
물리 및 수치 알고리즘 구성
코드의 물리 엔진은 두 단계로 구성됩니다.
● 1단계 — 추력 곡선 계산 (Part A)
등엔트로피 유동 관계식과 뉴턴-랩슨(Newton-Raphson) 반복법을 이용하여, 출구 면적을 점진적으로 증가시키면서 각 면적에서의 마하수(Mach number), 압력, 속도, 밀도를 계산합니다. 이로부터 추력(모멘텀 추력 + 압력 추력)을 구하고, 추력이 최대가 되는 최적 출구 면적($A_{max}$)과 출구 마하수($M_e$)를 결정합니다.
● 2단계 — 특성선법을 통한 노즐 형상 설계 (Part B)
결정된 출구 마하수를 바탕으로 Prandtl-Meyer 팽창 함수를 적용하여 특성선 그리드를 구성합니다. 각 격자점에서 K⁺/K⁻ 불변량(Riemann invariants), 마하 각도($\mu$), 유동 각도($\theta$)를 계산한 뒤, 연립 선형방정식으로 격자 교점의 물리적 좌표를 추적합니다. 이 좌표들을 이어 노즐 벽면 형상을 최종적으로 결정합니다.

계산 완료 후에는 준-1차원(Quasi-1D) 등엔트로피 관계식으로 노즐 축을 따라 마하수와 압력 분포도 추가 계산합니다.

GUI 구성
프로그램은 tkinter + Matplotlib으로 구성된 GUI 애플리케이션으로, 별도 설치 없이 표준 Python 환경에서 실행할 수 있습니다.
인터페이스 구성:
왼쪽 사이드바에서 9가지 설계 파라미터를 입력합니다.
- 연소실 온도($T_c$, K), 연소실 압력($P_c$, Pa), 대기압($P_{amb}$, Pa)
- 비열비($\gamma$, gamma), 분자량($Mw$, kg/kmol)
- 노즐 폭(width, m), 목(throat) 높이($h_{th}$, m)
- 특성선 수(num), 초기 유동 각도($θ_i$, deg)
▶ Run Simulation 버튼을 누르면 계산이 시작되며, 진행 상태바와 상태 메시지로 실시간 진행률을 확인할 수 있습니다. 계산 도중 ⏹ Stop 버튼으로 중단도 가능합니다.
결과는 세 탭으로 시각화됩니다:
- 📐 Nozzle Shape — 특성선(주황색)과 노즐 벽면(파란색)을 실제 축척으로 표시
- 📈 Thrust Curve — 출구 면적에 따른 추력 변화 곡선 및 노즐 벽면 좌표 테이블
- 📊 Mach & Pressure — 노즐 길이 방향 마하수 분포 및 압력비($P/P_{amb}$) 분포
계산 완료 후 사이드바 하단 Results 패널에 출구 마하수, 최대 면적, 노즐 길이/높이, 면적 및 마하수 오차율이 수치로 요약됩니다.
활용 분야
이 도구는 소형 로켓 엔진 설계, 항공우주공학 교육, 초음속 노즐 형상 최적화 연구에 직접 활용할 수 있으며, MATLAB 없이 Python 환경에서 동일한 정확도의 MOC 해석을 수행할 수 있다는 점에서 실용적 가치가 높습니다. <끝>
'프로젝트 > ROCKET' 카테고리의 다른 글
| METAL-CASE 1.0 - 금속 압력용기의 파열압력 계산 (0) | 2026.04.17 |
|---|---|
| 원통형 압력 용기의 파열 압력 추정 (0) | 2026.04.16 |
| TDB Viewer 1.0 — 에너지 물질 데이터베이스 (0) | 2026.04.15 |
| 로켓 노즐 초음속 유동과 배기에서 발생하는 팽창파 해석 (0) | 2026.04.12 |
| HTPB (Hydroxyl-Terminated Polybutadiene) (0) | 2026.04.12 |