|
Line-of-sight Modeling | ||||||
|
Summary
Since each point on the sky represents emission from along the line-of-sight (los) through that point, it is useful to consider a general ``los_integral'' routine that integrates the emission along the los at a point on the sky. This is especially useful if one or more of these conditions apply:
As a simple example consider the emission though a large, thin spherical shell as calculated by the contents of los_demo.sl (printed below.) The plot created and shown here is of the emission calculated along a portion of the outer rim of the shell from 25 arc seconds inside the shell to 5 arc seconds beyond the shell. There are significant variations in the projected emission on a sub-arc-second scale. Obtaining comparable quality results with a volumetric 3D cube approach would require (and under-utilize) quite a few 3d cells.
The emission at the rim of a spherical shell. The black curve is for an outer radius of 900 arc seconds and a shell thickness of 20 arc seconds; the red curve has 1000'' radius and 17'' thickness.
%
% file: los_demo.sl
%
% Simple demonstration of the los_integral routine
%
% 1/8/07 - dd
% Parameters for the emissivity function:
variable oxyz, radin, radout;
% rough radius of SN 1006 in arc seconds:
radout = 900.0;
radin = 880.0;
% put the edge at the origin with radius along 30 degree line
oxyz = radout*[-0.8660, -0.5000, 0.0];
% - - -
% define an emissivity function of 3D point
%
define emiss_func (los, s)
{
variable emiss;
variable pt = los.near + s * (los.far - los.near);
variable radsq = sum((pt - oxyz)^2);
emiss = 0.0;
if ( (radsq < radout*radout) and
(radsq > radin*radin) ) emiss = 1.0;
return emiss;
}
% - - -
variable ip, path, skyx, skyy, near, far, this_los, all_los;
% move along a radial path in a direction making 30 degrees from-x-to-y
% path location in arc seconds:
path = [-25.0:5.0:0.2];
all_los = Double_Type [length(path)];
_for ip (0,length(path)-1,1)
{
skyx = 0.866*path[ip];
skyy = 0.5*path[ip];
near = [skyx, skyy, 1000.0];
far = [skyx, skyy, -1000.0];
() = los_integral(&emiss_func, near, far, &this_los);
all_los[ip] = this_los;
}
variable binlo, binhi;
binlo = path - 0.5*(path[1]-path[0]);
binhi = path + 0.5*(path[1]-path[0]);
% plot it
hplot(binlo, binhi, all_los);
% Change the parameters...
% and overplot new integral
radout = 1000.0;
radin = 983.0;
oxyz = radout*[-0.8660, -0.5000, 0.0];
_for ip (0,length(path)-1,1)
{
skyx = 0.866*path[ip];
skyy = 0.5*path[ip];
near = [skyx, skyy, 1000.0];
far = [skyx, skyy, -1000.0];
() = los_integral(&emiss_func, near, far, &this_los);
all_los[ip] = this_los;
}
%
ohplot(binlo, binhi, all_los);
|
This page was last updated Sep 25, 2008 by Dan Dewey.
Contact John Houck with any ``los'' comments.
![]()