📄 planck.pro
字号:
function planck,wave,temp;+; NAME:; PLANCK() ; PURPOSE: ; To calculate the Planck function in units of ergs/cm2/s/A ;; CALLING SEQUENCE: ; bbflux = PLANCK( wave, temp) ;; INPUT PARAMETERS: ; WAVE Scalar or vector giving the wavelength(s) in **Angstroms**; at which the Planck function is to be evaluated.; TEMP Scalar giving the temperature of the planck function in degree K;; OUTPUT PARAMETERS:; BBFLUX - Scalar or vector giving the blackbody flux (i.e. !pi*Intensity); in erg/cm^2/s/A in at the specified wavelength points.;; EXAMPLES:; To calculate the blackbody flux at 30,000 K every 100 Angstroms between; 2000A and 2900 A; ; IDL> wave = 2000 + findgen(10)*100; IDL> bbflux = planck(wave,30000);; If a star with a blackbody spectrum has a radius R, and distance,d, then; the flux at Earth in erg/cm^2/s/A will be bbflux*R^2/d^2; PROCEDURE:; The wavelength data are converted to cm, and the Planck function; is calculated for each wavelength point. See Allen (1973), Astrophysical; Quantities, section 44 for more information.;; NOTES:; See the procedure planck_radiance.pro in ; ftp://origin.ssec.wisc.edu/pub/paulv/idl/Radiance/planck_radiance.pro; for computation of Planck radiance given wavenumber in cm-1 or ; wavelength in microns ; MODIFICATION HISTORY:; Adapted from the IUE RDAF August, 1989; Converted to IDL V5.0 W. Landsman September 1997; Improve precision of constants W. Landsman January 2002;- On_error,2 if ( N_elements(wave) LT 1 ) then begin print,'Syntax - bbflux = planck( wave, temp)' return,0 endif if ( N_elements( temp ) NE 1 ) then $ read,'Enter a blackbody temperature', temp bbflux = wave*0.; Gives the blackbody flux (i.e. PI*Intensity) ergs/cm2/s/a w = wave / 1.E8 ; Angstroms to cm ;constants appropriate to cgs units. c1 = 3.7417749d-5 ; =2*!DPI*h*c*c C2 = 1.4387687d ; =h*c/k val = c2/w/temp mstr = machar(double = (size(val,/type) EQ 5) ) ;Get machine precision good = where( val LT alog(mstr.xmax), Ngood ) ;Avoid floating underflow if ( Ngood GT 0 ) then $ bbflux[ good ] = C1 / ( w[good]^5 * ( exp( val[good])-1. ) ) return, bbflux*1.E-8 ; Convert to ergs/cm2/s/A end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -