본문 바로가기
현장과 프로젝트

pygasflow - 준 1차원(Quasi-1D) 이상 기체역학

by 도서관경비원 2026. 6. 3.
반응형

pygasflow는 Python으로 준 1차원(Quasi-1D) 이상 기체역학(Ideal Gasdynamics) 계산을 쉽고 빠르게 수행할 수 있도록 만들어진 과학/공학용 라이브러리이다. Davide Sandri가 개발했으며, 항공우주공학 분야에서 압축성 유동 해석에 활용된다.


주요 기능

pygasflow는 다음과 같은 압축성 유동 솔버를 제공한다:

  • 등엔트로피 유동 (Isentropic Flow): isentropic_solver()
  • 파노 유동 (Fanno Flow): fanno_solver() — 마찰이 있는 단열 관 유동
  • 레일리 유동 (Rayleigh Flow): rayleigh_solver() — 열전달이 있는 유동
  • 수직 충격파 (Normal Shock Wave): normal_shockwave_solver()
  • 경사 충격파 (Oblique Shock Wave): shockwave_solver()
  • 원뿔형 충격파 (Conical Shock Wave): conical_shockwave_solver()
  • 압력-편향각 선도 (Pressure-Deflection Diagram): PressureDeflectionLocusPressureDeflectionDiagram

또한 드 라발 노즐(De Laval Nozzle) 및 노즐 서브모듈을 통해 수렴-발산 노즐, Rao's TOP 노즐(추력 최적 포물선), 최소 길이 노즐(Method of Characteristics) 등을 이해하고 계산할 수 있다.

공기열역학(Aerothermodynamics) 모듈(pygasflow.atd)도 포함되어 있어, 평판 또는 정체 영역에서의 경계층 두께, 열유속, 벽면 전단응력 추정 상관식, 그리고 뉴턴 유동 이론(Newtonian Flow Theory)을 이용한 물체 주변 압력 분포 및 공기역학적 특성 계산도 지원한다.


사용 예시

마하수 2에서 등엔트로피 유동 계산 예시:

from pygasflow import isentropic_solver

res = isentropic_solver("m", 2, to_dict=True)
res.show()
# m   M        2.00000000
# pr  P / P0   0.12780453
# dr  rho/rho0 0.23004815
# tr  T / T0   0.55555556
# ars A / A*   1.68750000
# pm  Prandtl-Meyer 26.37976081

pint 라이브러리와 연동하면 단위(units)를 붙여서 계산하는 것도 지원합니다.


라이선스 및 환경

Python 3.9~3.13을 지원하며, GPLv3 라이선스로 배포된다. 과학/공학 연구 및 물리·수학 분야를 대상으로 한다.


한마디로

항공우주공학, 유체역학을 공부하거나 연구하는 분들이 충격파, 노즐 유동, 압축성 유동을 Python 환경에서 빠르게 계산하고 시각화하고 싶을 때 매우 유용한 라이브러리이다. 공식 문서는 pygasflow.readthedocs.io에서 확인할 수 있다.

네, 문서 내용을 바탕으로 설명해 드릴게요!

 

De Laval Nozzle (수렴-발산 노즐) 계산

pygasflow에서는 세 가지 노즐 유형을 제공한다.


1. CD_Conical_Nozzle (원뿔형 발산 노즐)

발산부가 직선 원뿔 형태인 가장 기본적인 설계이다.

 

주요 파라미터:

Ri = 0.4     # 수렴부 입구 반지름
Rt = 0.2     # 목(throat) 반지름
Re = 1.2     # 발산부 출구 반지름
Rj = 0.1    # 수렴-발산 접합부 반지름
R0 = 0       # 연소실-수렴부 접합부 반지름
theta_c = 40 # 수렴부 반각 (degrees)
theta_N = 15 # 발산부 반각 (degrees)

 

계산 결과 출력 예시:

C-D Conical Nozzle
Radius:
    Ri    0.4
    Re    1.2
    Rt    0.2
Areas:
    Ai    0.5027   ← 입구 단면적 (π × 0.4²)
    Ae    4.5239   ← 출구 단면적 (π × 1.2²)
    At    0.1257   ← 목 단면적   (π × 0.2²)
Lengths:
    Lc    0.2747   ← 수렴부 길이
    Ld    3.7452   ← 발산부 길이
    L     4.0200   ← 전체 노즐 길이
Angles:
    theta_c  40
    theta_N  15

2. CD_TOP_Nozzle (추력 최적화 포물선 노즐)

Rao의 포물선 근사법 기반으로, Fractional Length K 값으로 길이를 조절합니다. K는 "같은 출구 면적비를 가진 15° 원뿔 노즐 대비 길이 비율"이다.

K = [0.6, 0.7, 0.8, 0.9, 1.0]  # K가 작을수록 짧고 가벼운 노즐

3. CD_Min_Length_Nozzle (최소 길이 노즐)

특성선법(Method of Characteristics) 을 이용해 설계하며, 날카로운 목 코너에서 Prandtl-Meyer 팽창파가 발생한다. 평면(planar) 형상만 지원합니다.


형상 유형 (geometry_type)

유형 단면적 계산 설명
"axisymmetric" A = π × r² 원형 단면, 로켓 엔진 노즐
"planar" A = 2 × r 평면 단면, 반지름 = 벽면까지 거리

사용 유동 요약

from pygasflow.nozzles import CD_Conical_Nozzle, CD_TOP_Nozzle, CD_Min_Length_Nozzle

# 1. 노즐 생성
nozzle = CD_Conical_Nozzle(Ri=0.4, Re=1.2, Rt=0.2,
                            theta_c=40, theta_N=15,
                            geometry_type="axisymmetric")

# 2. 노즐 정보 출력
print(nozzle)          # 치수, 면적, 길이 출력

# 3. 형상 좌표 추출 → 시각화
x, y = nozzle.build_geometry()

# 4. De Laval 솔버로 유동 해석
from pygasflow.solvers import De_Laval_Solver
solver = De_Laval_Solver(nozzle, ...)

 

문서의 그림을 보면 원뿔형 노즐은 발산부가 직선이고, TOP 노즐은 K값이 작을수록 더 짧고 곡선형으로 설계되어 있다. 실제 로켓에서는 무게와 추력 효율의 균형 때문에 주로 TOP 노즐(K ≈ 0.8)이 많이 쓰인다.

반응형