플랑크 흑체복사 법칙을 파이썬으로 그래프를 그려보자.
Planck's blackbody radiation
입사하는 전자기파를 모두 흡수하는 이상적 물체를 흑체(blackbody)라 부른다. 흑체가 열평형상태에서 방출하는 복사에너지의 양은 플랑크 흑체 복사 법칙을 따른다. 플랑크 흑체복사 법칙은 흑체의 절대온도에 따른 방출되는 복사 에너지의 양을 방출되는 전자기파의 파장에 대한 함수로 나타낸다. 이를 이용하면 특정 절대온도의 흑체에서 파장에 따라 방출되는 복사에너지의 양을 계산 할 수 있다.
Blackbody Radiation of Sun and Earth
Plotting the two curves of spectral exitance as functions of the wavelength based on Planck's blackbody radiation law using Python, where the temperature for two curves are to be fixed to T = 5900K (Sun) and T = 300K (Earth), respectively.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import gridspec
from math import pi
lambda_nm = np.linspace(100,5000,1000)
lambda_m = lambda_nm = lambda_nm*1e-9
# Plank's constant (Js)
h = 6.6260755e-34
# Speed of light in vaccum (m/s)
c = 299792458
# Boltzmann constant (J/k)
k = 1.380649e-23
# Temperature (K)
T_sun = 5900
T_earth = 300
# Wien's displacement constant (mK)
C = 2.898e-3
# spectrum
spectrum = np.arange(0.001e-6,3.0e-6,0.001e-6) #(m)
# Plank's blackbody radiation law
def planck(w, T):
M_lambda = (2.0*pi*h*c**2)/((w**5)*(np.exp((h*c)/(w*k*T))-1.0))
return M_lambda
# spectral radiant exitance
M_lambda_sun = planck(spectrum,T_sun)
M_lambda_earth = planck(10*spectrum,T_earth)
# Wien's displacement law
lambda_max_sun = C/T_sun
M_lambda_max_sun = planck(lambda_max_sun,T_sun)
lambda_max_earth = C/T_earth
M_lambda_max_earth = planck(lambda_max_earth,T_earth)
# plot
plt.plot(spectrum, M_lambda_sun, 'r-', label='Spectral exitance curve')
#plt.plot(lambda_max_sun, M_lambda_max_sun, 'b*', label='peak')
plt.title('Blackbody Radiation of Sun')
plt.xlabel('λ [m]')
plt.ylabel('Spectral exitance [W/m^3]')
plt.legend()
plt.ticklabel_format(axis='x',style='sci',scilimits=(-6,-6))
plt.ticklabel_format(axis='y',style='sci',scilimits=(10,10))
plt.show()
plt.plot(10*spectrum, M_lambda_earth, 'b-', label='Spectral exitance curve')
#plt.plot(lambda_max_earth, M_lambda_max_earth, 'r*', label='peak')
plt.title('Blackbody Radiationof Earth')
plt.xlabel('λ [m]')
plt.ylabel('Spectral exitance [W/m^3]')
plt.legend()
plt.ticklabel_format(axis='x',style='sci',scilimits=(-6,-6))
plt.show()
'etc.' 카테고리의 다른 글
Lens equation (using Python) (0) | 2021.11.08 |
---|---|
Stefan-Boltzman law (using Python) (0) | 2021.11.08 |
Wien's displacement law (using Python) (0) | 2021.11.08 |