#!/usr/bin/perl
# Varun Bhalerao
# http://www.astro.caltech.edu/~varun/ay20/ps4/blackbody_v.pl
# Calculate the surface intensity of a blackbody in a given band
#
# **********
# CGS units !
# **********
$h=6.63e-27;
$c=2.998e10;
$k=1.38e-16;
$hc2=$h*$c*$c;
$step=1000; #step size as a fraction of wavelength, 1/$step = dlambda / lambda
sub count(){
($lstart,$lend,$t)=@_;
$hckt=$h*$c/$k/$t;
print "Wavelength band: $lstart nm - $lend nm. ";
$lstart*=1e-7; #convert nm into cm
$lend*=1e-7; #convert nm into cm
$dlambda=$lstart/$step;
$lambda=$lstart;
my $integral=0;
while ($lambda<$lend){
$dlambda=$lambda/$step; #it is important that step size varies with the wavelength !
$lambda+=$dlambda;
$bldl=2*$hc2/$lambda**5/ (exp($hckt/$lambda) -1) *$dlambda;
$integral+=$bldl;
}
printf("I_\\lambda = %E erg/cm^2/sec/sr for temperature = %d K\n", $integral, $t);
}
# main part starts here:
# call the function "count" with arguments lambda_min, lambda_max, temperature
# output is the I_lambda for a blackbody of that temperature, integrated from lambda_min to lambda_max
# First, the V band intensity of the sun
&count(505,595,5777);
# Next, the V band intensity for the O7III companion star
&count(505,595,35000);
# calculate total flux from the sun, just for fun:
&count(0.519,519000,5777); #peak emission for 5777K is 519 nm. integrating from 519/1000 to 519*1000 should give us almost all the flux
# note that I_V (sun) is about 12% of the total energy emitted by the sun.