| 1 | function lbb,lambda,t |
|---|
| 2 | |
|---|
| 3 | ; black body radiance (W/m2/sr/um) at monochromatic wavelength lambda (m) and |
|---|
| 4 | ; temperature T (K) |
|---|
| 5 | |
|---|
| 6 | check=check_math() |
|---|
| 7 | if (check and not 32) ne 0 then stop |
|---|
| 8 | ;c1=3.741775e-22 |
|---|
| 9 | c2=.0143877 |
|---|
| 10 | ln_c1_over_pi=-50.48204 |
|---|
| 11 | lbb=c2/(lambda*t) ; actually exponent |
|---|
| 12 | over=where(lbb gt 88.8) ; check for overflow |
|---|
| 13 | w=where(lbb le 88.8) |
|---|
| 14 | if over[0] ge 0 then lbb[over]=!values.f_infinity |
|---|
| 15 | if w[0] ge 0 then lbb[w]=exp(lbb[w])-1. |
|---|
| 16 | under=where(lbb lt 1e-45) ; check for underflow |
|---|
| 17 | w=where(lbb ge 1e-45) |
|---|
| 18 | if under[0] ge 0 then lbb[under]=!values.f_infinity ; now ln(lbb) |
|---|
| 19 | if w[0] ge 0 then lbb[w]=ln_c1_over_pi-5.*alog(lambda)-alog(lbb[w]) |
|---|
| 20 | under=where(lbb lt -87.3) ; check for underflow |
|---|
| 21 | over=where(lbb gt 88.8) ; check for overflow |
|---|
| 22 | w=where(lbb ge -87.3 and lbb le 88.8) |
|---|
| 23 | if under[0] ge 0 then lbb[under]=0. |
|---|
| 24 | if over[0] ge 0 then lbb[over]=!values.f_infinity |
|---|
| 25 | if w[0] ge 0 then lbb[w]=exp(lbb[w]) |
|---|
| 26 | return,lbb |
|---|
| 27 | |
|---|
| 28 | end |
|---|