What's new?
September 2008

 

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:

  • the size of the modelled region in the plane of the sky is much smaller than the length of the emission along the line of sight.
  • the emission has relevant gradients on small scales.
  • the emission function can be expressed analytically.
  • the problem is chiefly along a path on the sky (e.g., one-dimensional.)

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.

los demo plot
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.
Valid HTML 4.01! Made with JED Viewable With Any Browser