[python] SciPy를 사용하여 스트림릿 함수 계산하기

스트림릿(Stremline) 함수는 유체 역학에서 유체의 흐름을 시각화하는데 사용되는 기술입니다. 스트림릿 함수를 계산하는 방법 중 하나는 SciPy 라이브러리를 사용하는 것입니다. SciPy는 다양한 과학 및 엔지니어링 응용 프로그램을 위한 기능을 제공하는 파이썬 라이브러리입니다.

이번 포스트에서는 SciPy를 사용하여 스트림릿 함수를 계산하는 방법을 알아보겠습니다.

필요한 라이브러리 설치

pip install numpy
pip install scipy

스트림릿 함수 계산하기

먼저, 필요한 라이브러리를 불러옵니다.

import numpy as np
import matplotlib.pyplot as plt
from scipy import integrate

다음으로, 스트림릿 함수를 계산할 유체의 속도 필드를 정의합니다. 이 예제에서는 단순한 유체 흐름인 시계 방향의 원을 사용하도록 하겠습니다.

def velocity_field(x, y):
    r = np.sqrt(x**2 + y**2)
    theta = np.arctan2(y, x)
    u = np.sin(theta)
    v = -np.cos(theta)
    return u, v

그런 후, 스트림릿 함수를 계산하기 위해 integrate.nquad() 함수를 사용합니다.

def stream_function(x, y):
    def integrand(t, r):
        u, v = velocity_field(r * np.cos(t), r * np.sin(t))
        return u * np.cos(t) + v * np.sin(t)

    return integrate.nquad(integrand, [[0, 2*np.pi], [0, 1]], args=(np.sqrt(x**2 + y**2),))[0]

마지막으로, 계산된 스트림릿 함수를 시각화합니다.

x = np.linspace(-2, 2, 100)
y = np.linspace(-2, 2, 100)
X, Y = np.meshgrid(x, y)
Z = np.zeros_like(X)

for i in range(len(x)):
    for j in range(len(y)):
        Z[j, i] = stream_function(X[j, i], Y[j, i])

plt.contour(X, Y, Z, levels=20, colors='k')
plt.contourf(X, Y, Z, levels=20)
plt.colorbar(label="Stream function")
plt.xlabel("x")
plt.ylabel("y")
plt.title("Streamline Function")
plt.show()

위의 코드를 실행하면, 시각화된 스트림릿 함수를 확인할 수 있습니다.

결론

SciPy를 사용하여 스트림릿 함수를 계산하는 방법에 대해 알아보았습니다. 이를 통해 유체 흐름을 시각화하고 분석하는데 도움을 줄 수 있습니다.

더 많은 정보를 알고 싶다면, SciPy 문서를 참조하십시오.

참고 자료: