Eletromagnetic spectrum (xfig example)

From Remeis-Wiki
Jump to navigation Jump to search

Eletromagnetic spectrum

Elmag.png
require("isisscripts");
%%%%%%%%%%%%%%%%%%%%%%%%%%
%Define Constants 

variable wavelength; % m
variable frequency; % 1/s = Hz
variable energy;
variable c = 299792458.0; %m/s
variable h_J = 6.62606957*10^(-34); % J·s
variable h_eV = 4.135667516*10^(-15); % eV*s
variable h_erg = 6.62606957*10^(-27); % erg*s

variable give_wavelength=NULL;
variable give_frequency=22*10^9;
define to_rgb (r, g, b)
{
          return (r << 16) | (g << 8) | b;
}
xfig_new_color ("dark_gray", 0x606060);
xfig_new_color ("orange", 0xEF9F2E);
xfig_new_color ("dark_orange", 0xF97305);
xfig_new_color ("pink", 0xF90580);
xfig_new_color("banana",to_rgb(232,197,0));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
define wavelength2frequency(wavelength)
{
frequency = (1./wavelength)*c;
return frequency;
}
%%%%%%%%%%%%%%%%%
define frequency2wavelength(frequency)
{
wavelength = (1./frequency)*c;
return wavelength;
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
define frequency2energy_J(frequency)
{
energy = frequency*h_J;
return energy;
}
%%%%%%%%%%%%%%%%%
define frequency2energy_eV(frequency)
{
energy = frequency*h_eV;
return energy;
}
%%%%%%%%%%%%%%%%%
define frequency2energy_erg(frequency)
{
energy = frequency*h_erg;
return energy;
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
define energy2frequency_J(energy)
{
frequency = energy/h_J;
return frequency;
}
%%%%%%%%%%%%%%%%%
define energy2frequency_eV(energy)
{
frequency = energy/h_eV;
return frequency;
}
%%%%%%%%%%%%%%%%%
define energy2frequency_erg(energy)
{
frequency = energy/h_erg;
return frequency;
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
define energy2wavelength_J(energy)
{
wavelength = h_J*c/energy;
return wavelength;
}
%%%%%%%%%%%%%%%%%
define energy2wavelength_eV(energy)
{
wavelength = h_eV*c/energy;
return wavelength;
}
%%%%%%%%%%%%%%%%%
define energy2wavelength_erg(energy)
{
wavelength = h_erg*c/energy;
return wavelength;
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
define wavelength2energy_J(wavelength)
{
energy = h_J*c/wavelength;
return energy;
}
%%%%%%%%%%%%%%%%%
define wavelength2energy_eV(wavelength)
{
energy = h_eV*c/wavelength;
return energy;
}
%%%%%%%%%%%%%%%%%
define wavelength2energy_erg(wavelength)
{
energy = h_erg*c/wavelength;
return energy;
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

variable wavelength_range = [99., 1e-21];
variable plotwidth = 30;
variable wavecol = "black";
variable freqcol="black"; variable energycol = "black"; variable energycol2 = "black";


variable spectrum = xfig_plot_new(plotwidth,20);

spectrum.world(0,20,0,20);
spectrum.x1axis(;off);spectrum.x2axis(;off);spectrum.y1axis(;off);spectrum.y2axis(;off);

variable wave = xfig_plot_new(plotwidth,1);
wave.world(wavelength_range[0],wavelength_range[1],0,1; color=wavecol);
wave.y1axis(;off); wave.y2axis(;off);wave.x2axis(;off);
wave.xlabel("$\lambda$ [m]"R; color= wavecol);
variable major_ticks = [wavelength_range[1]:0:100];
variable minor_ticks= [0:wavelength_range[1]:5];

wave.x1axis(;log, color =wavecol, ticlabel_color=wavecol, major=major_ticks);
%if (give_wavelength!=NULL){wave.plot(give_wavelength, 0.1;sym="+", symcolor="gray");
%wave.xylabel(give_wavelength, 0.5, sprintf("%.2e\n",give_wavelength); color="gray");}
%if (give_frequency!=NULL){wave.plot(frequency2wavelength(give_frequency), 0.1;sym="+", symcolor="gray");
%wave.xylabel(frequency2wavelength(give_frequency), 0.5, sprintf("%.2e\n",frequency2wavelength(give_frequency)); color="gray");}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
wave.plot([wavelength_range[0], 10*10^-3], [1, 1];color="goldenrod",forward_arrow, backward_arrow);
wave.xylabel(1,1.4, "RADIO"; color="goldenrod");

wave.add_object(xfig_new_polyline([10*10^-3,300*10^-6 ], [1, 1];forward_arrow, backward_arrow, color="orange2"),
[10*10^-3,300*10^-6 ], [1, 1]) ; wave.xylabel(1.5*10^-3,1.4, "MICROWAVE"; color="orange2");

wave.add_object(xfig_new_polyline([300*10^-6, 750*10^-9], [1, 1];forward_arrow, backward_arrow, color="red2"), 
[300*10^-6, 750*10^-9], [1, 1]); wave.xylabel(10^-5,1.4, "IR"; color="red2");

wave.add_object(xfig_new_polyline([750*10^-9, 390*10^-9], [1, 1]; forward_arrow, backward_arrow,color="purple"),
[750*10^-9, 390*10^-9], [1, 1]) ; wave.xylabel(550*10^-9,1.4, "OP"; color="purple");

wave.add_object(xfig_new_polyline([390*10^-9, 10^-8], [1, 1]; forward_arrow, backward_arrow,color="blue4"),
[390*10^-9, 10^-8], [1, 1]) ; wave.xylabel(5*10^-8,1.4, "UV"; color="blue4");

wave.add_object(xfig_new_polyline([10^-8, 100*10^-12], [1, 1]; forward_arrow, backward_arrow, color="dodgerblue"), 
[10^-8, 100*10^-12], [1, 1]); wave.xylabel(10*10^-10,1.4, "soft"; color="dodgerblue");

wave.add_object(xfig_new_polyline([100*10^-12, 10*10^-12], [1, 1]; forward_arrow, backward_arrow,color="teal"), 
[100*10^-12, 10*10^-12], [1, 1]); wave.xylabel(35*10^-12,1.4, "hard X-rays"; color="teal");
wave.add_object(xfig_new_polyline([10*10^-12, wavelength_range[1]], [1, 1]; forward_arrow, backward_arrow, color="forestgreen"), 
[10*10^-12, wavelength_range[1]], [1, 1]);
wave.xylabel(10^-15,1.4, "$\gamma$-rays"R; color="forestgreen");
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
spectrum.add_object(wave, 0 , 0 , 0 , 0);
%%%%
variable energy_range = xfig_plot_new(plotwidth,1);
energy_range.world(wavelength2energy_eV(wavelength_range[0]),wavelength2energy_eV(wavelength_range[1]),0,1; color=energycol);
energy_range.x1axis(;log, color=energycol, ticlabel_color=energycol); energy_range.y1axis(;off); energy_range.y2axis(;off);energy_range.x2axis(;off);
energy_range.xlabel("E [eV]"R; color=energycol);
%if (give_wavelength!=NULL){energy_range.plot(wavelength2energy_eV(give_wavelength), 0.1;sym="+", symcolor="gray");
%energy_range.xylabel(wavelength2energy_eV(give_wavelength), 0.5, sprintf("%.2e\n",wavelength2energy_eV(give_wavelength)); color="gray");
%}
spectrum.add_object(energy_range, 0, 0, 0 , 1;depth=50);

% variable energy_range2 = xfig_plot_new(plotwidth,1);
% energy_range2.world(wavelength2energy_erg(wavelength_range[0]),wavelength2energy_erg(wavelength_range[1]),0,1; color=energycol2);
% energy_range2.x1axis(;log, color=energycol2, ticlabel_color=energycol2); energy_range2.y1axis(;off); energy_range2.y2axis(;off);energy_range2.x2axis(;off);
% energy_range2.xlabel("E [erg]"R; color=energycol2);
% if (give_wavelength!=NULL){energy_range2.plot(wavelength2energy_erg(give_wavelength), 0.1;sym="+", symcolor="gray");
% energy_range2.xylabel(wavelength2energy_erg(give_wavelength), 0.5, sprintf("%.2e\n",wavelength2energy_erg(give_wavelength)); color="gray");
% }
% spectrum.add_object(energy_range2, 0, 0, 0 , 2);


% OPTIONAL AXIS
variable freq = xfig_plot_new(plotwidth,1);
freq.world(wavelength2frequency(wavelength_range[0]),wavelength2frequency(wavelength_range[1]),0,1; color=freqcol);
freq.x1axis(;log, color=freqcol, ticlabel_color=freqcol); freq.y1axis(;off); freq.y2axis(;off);freq.x2axis(;off);
freq.xlabel("$\nu$ [Hz]"R; color=freqcol);
%if (give_wavelength!=NULL){freq.plot(wavelength2frequency(give_wavelength), 0.1;sym="+", symcolor="gray");
%freq.xylabel(wavelength2frequency(give_wavelength), 0.5, sprintf("%.2e\n",wavelength2frequency(give_wavelength)); color="gray");}
%if (give_frequency!=NULL){freq.plot(give_frequency, 0.1;sym="+", symcolor="gray");
%freq.xylabel(give_frequency, 0.5, sprintf("%.2e\n",give_frequency); color="gray%");}
spectrum.add_object(freq, 0, 0, 0 , 2;depth=50);

%OPTIONAL EMPTY EM SPECTRUM
%spectrum.render("spectrum.pdf");



%OPTIONAL: HESS ENERGY RANGE
#iffalse
%%%%%%%%%%
% ADD GOOD HESS RANGES!
variable new = xfig_plot_new(plotwidth,6.5);
new.world(wavelength2frequency(wavelength_range[0]),wavelength2frequency(wavelength_range[1]),0,4; color=freqcol);
new.x1axis(;log, color=freqcol, ticlabel_color=freqcol,off); new.y1axis(;off); new.y2axis(;off);new.x2axis(;off);


variable r_lo = 100e9;
variable r_hi=100e12;
new.shade_region(energy2frequency_eV(r_lo),energy2frequency_eV(r_hi),0,0.8;world10, fillcolor="black", fill=3,depth=2000);
spectrum.add_object(new, 0, 0, 0,0.25;depth=100);
spectrum.render("spectrum_hess.pdf");
#endiffalse


%%%%%%%%%%
%NEW! ADD GOOD RANGES!

%%%%%%%%%%%%%%%%%%
% ADD RANGES TANAMI
%%
variable new = xfig_plot_new(plotwidth,6.5);
new.world(wavelength2frequency(wavelength_range[0]),wavelength2frequency(wavelength_range[1]),0,4; color=freqcol);
new.x1axis(;log, color=freqcol, ticlabel_color=freqcol,off); new.y1axis(;off); new.y2axis(;off);new.x2axis(;off);

variable tan_lo=8.4e9;
variable tan_hi = 22.3e9;
new.shade_region((tan_lo), (tan_hi),0,0.8;world10, color="black", fill=4,width=0,depth=2000);


%%%%%%%%%%%%%%%%%%
% ADD RANGES OPTICAL
%%
variable ou_lo = 5468e-10;
variable ou_hi=1928e-10;
new.shade_region(wavelength2frequency(ou_lo), wavelength2frequency(ou_hi),0,0.8;world10, width=0,fillcolor="black", fill=4,depth=2000);


%%%%%%%%%%%%%%%%%%
% ADD RANGES XRT
%%
variable x_lo = 0.5e3;
variable x_hi=10e3;

new.shade_region(energy2frequency_eV(x_lo),energy2frequency_eV(x_hi),0,0.8;world10, width=0,fillcolor="black", fill=4,depth=2000);


%%%%%%%%%%%%%%%%%%
% ADD RANGES BAT
%%
variable x_lob = 15e3;
variable x_hib=150e3;

new.shade_region(energy2frequency_eV(x_lob),energy2frequency_eV(x_hib),0,0.8;world10, fillcolor="dodgerblue", fill=30,width=0,depth=2000);



%%%%%%%%%%%%%%%%%%
% ADD RANGES FERMI
%%

variable f_lo = 20e6;
variable f_hi=300e9;

new.shade_region(energy2frequency_eV(f_lo),energy2frequency_eV(f_hi),0,0.8;world10, width=0,fill=4,fillcolor="black",depth=2000);

spectrum.add_object(new, 0, 0, 0,0.25;depth=100);
spectrum.render("spectrum2.pdf");