DART-Ray
Data Types | Functions/Subroutines | Variables
ray_list Module Reference

Contains all the subroutines to handle the ray lists. A ray goes into a ray list if it is blocked because of the solid angle requirements for the ray beam not being fulfilled but still having substantial luminosity to be processed. There is a "high" list for rays to be split and a "low" list for rays that can potentially be joined together. More...

Data Types

type  list_type1
 

Functions/Subroutines

subroutine create_high_ray_list (idir, idir2, src_lum, src_id, nside_low)
 This routine creates the first ray to be processed. It is set up as an high ray type. More...
 
subroutine extract_ray_list (nside)
 This routine extracts a ray_list with the input NSIDE() value for the next ray propagation loop. More...
 
subroutine expand_ray_list (label)
 This routines expands ray_list arrays when there are too many rays to be added to the list. More...
 
subroutine compress_high_list ()
 This routine removes the elements from high_list that will be processed later. More...
 
subroutine compress_low_list ()
 This routine removes elements from low_list that will be processed later. More...
 
subroutine add_to_high_ray_list (theta, phi, nside, prev, isel_old, dplane, src_lum, cc, ray_type)
 This subroutine add the blocked ray to the high ray list. More...
 
subroutine add_to_low_ray_list (theta, phi, nside, prev, isel_old, cproj, src_lum, cc)
 This routine adds the blocked ray to the low ray list. More...
 

Variables

type(list_type1), dimension(:), allocatable ray_high_list
 
type(list_type1), dimension(:), allocatable ext_ray_list
 
type(list_type1), dimension(:), allocatable ray_low_list
 
integer ihigh
 
integer ilow
 
integer dim_high
 
integer dim_low
 
integer, dimension(:), allocatable ind_ext
 
integer, parameter inum =2000
 
logical no_ray
 
integer, parameter ray_type_high = 0
 
integer, parameter ray_type_low = 1
 
integer, parameter ray_type_reco = 2
 
integer, parameter ray_type_gone = 3
 
integer, parameter ray_type_i_obs = 4
 
integer, parameter ray_type_i_obs_in = 5
 

Detailed Description

Contains all the subroutines to handle the ray lists. A ray goes into a ray list if it is blocked because of the solid angle requirements for the ray beam not being fulfilled but still having substantial luminosity to be processed. There is a "high" list for rays to be split and a "low" list for rays that can potentially be joined together.

Function/Subroutine Documentation

subroutine ray_list::add_to_high_ray_list ( real(kind=real64)  theta,
real(kind=real64)  phi,
integer  nside,
real(kind=real64)  prev,
integer  isel_old,
real(kind=real64)  dplane,
real(kind=real64), dimension(0:lnum-1)  src_lum,
integer  cc,
integer  ray_type 
)

This subroutine add the blocked ray to the high ray list.

Parameters
[in]thetaTheta angle of the blocked ray direction
[in]phiPhi angle of the blocked ray direction
[in]NsideHEALPix nside parameter associated with the blocked ray
[in]prevPath crossed by the ray until the last intersection plane
[in]isel_oldIndex specifying the direction of the perpendicular to the last intersection plane (0=x, 1=y, 2=z).
[in]dplaneDistance from the ray origin to the last intersection plane along the perpendicular to that plane.
[in]src_lumSource luminosity associated with the ray
[in]ccID number of the last intersected cell
[in[ray_type Ray type of the blocked ray

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine ray_list::add_to_low_ray_list ( real(kind=real64)  theta,
real(kind=real64)  phi,
integer  nside,
real(kind=real64)  prev,
integer  isel_old,
real(kind=real64), dimension(3)  cproj,
real(kind=real64), dimension(0:lnum-1)  src_lum,
integer  cc 
)

This routine adds the blocked ray to the low ray list.

Parameters
thetaTheta angle of the blocked ray direction
phiPhi angle of the blocked ray direction
nsideHEALPix nside parameter associated with the blocked ray
prevPath length crossed by the ray
isel_oldIndex specifying the direction of the perpendicular to the last intersection plane (0=x, 1=y, 2=z).
cprojProjection cosines of the ray direction
src_lumSource luminosity
ccID number of the last intersected cell

Here is the call graph for this function:

subroutine ray_list::compress_high_list ( )

This routine removes the elements from high_list that will be processed later.

Here is the caller graph for this function:

subroutine ray_list::compress_low_list ( )

This routine removes elements from low_list that will be processed later.

Here is the caller graph for this function:

subroutine ray_list::create_high_ray_list ( integer  idir,
integer  idir2,
real(kind=real64), dimension(0:lnum-1)  src_lum,
integer  src_id,
integer  nside_low 
)

This routine creates the first ray to be processed. It is set up as an high ray type.

Parameters
[in]idirFirst index used for determining ray number on the HEALPix sphere. Values in the range [0, npix_main-1]. HEALPix pixel number in NESTED scheme equal to idir*nside**2+idir2*nside**2/4.
[in]idir2Second index used for determining ray number on the HEALPix sphere. Values in the range [0, 3]. HEALPix pixel number in NESTED scheme equal to idir*nside**2+idir2*nside**2/4.
[in]src_lumSource luminosity.
[in]src_idSource ID number.
[in]nside_lowHEALPix NSIDE parameter for the resolution level immediately lower to the ray that has to be created. In this case alway equal to nside_min()/2.

Here is the call graph for this function:

subroutine ray_list::expand_ray_list ( integer  label)

This routines expands ray_list arrays when there are too many rays to be added to the list.

Parameters
[in]labelray_type_high() or ray_type_low() depending on which ray list has to be expanded.

Here is the caller graph for this function:

subroutine ray_list::extract_ray_list ( integer  nside)

This routine extracts a ray_list with the input NSIDE() value for the next ray propagation loop.

Parameters
[in]nsideHEALPix NSIDE parameter for the next ray loop in main_dir_loop().

Here is the call graph for this function:

Variable Documentation

integer ray_list::dim_high
Parameters
dim_highDimension of ray_high_list(). The list can be expanded if necessary.
integer ray_list::dim_low
Parameters
di_lowDimension of ray_low_list(). The list can be expanded if necessary.
type (list_type1), dimension(:), allocatable ray_list::ext_ray_list
Parameters
ext_ray_listExtracted ray list. These rays are going to be processed in the next ray iteration.
integer ray_list::ihigh
Parameters
ihighCounter of rays in the ray_high_list()
integer ray_list::ilow
Parameters
ilowCounter of rays in the ray_low_list()
integer, dimension(:), allocatable ray_list::ind_ext
Parameters
ind_extArray containing the indeces of the rays to be extracted
integer, parameter ray_list::inum =2000
Parameters
inumInitial dimension of the ray lists.
logical ray_list::no_ray
Parameters
no_rayLogical equal to TRUE if there are no rays to be extracted from the lists.
type (list_type1), dimension(:), allocatable ray_list::ray_high_list
Parameters
ray_high_listHigh ray list. These rays are going to be split.
type (list_type1), dimension(:), allocatable ray_list::ray_low_list
Parameters
ray_low_listLow ray list. These rays are going to be merged if possible.
integer, parameter ray_list::ray_type_gone = 3
Parameters
ray_type_goneRay type identifier for "gone" rays. These rays can be eliminated.
integer, parameter ray_list::ray_type_high = 0
Parameters
ray_type_highRay type identifier for "high" rays. These rays are going to be split.
integer, parameter ray_list::ray_type_i_obs = 4
Parameters
ray_type_i_obsRay type identifier for "i_obs" rays. These rays are used when calculating the values for the i_obs() array.
integer, parameter ray_list::ray_type_i_obs_in = 5
Parameters
ray_type_i_obs_inRay type identifier for "i_obs_in" rays. These rays are used when calculating the values for the i_obs_in() array.
integer, parameter ray_list::ray_type_low = 1
Parameters
ray_type_lowRay type identifier for "low" rays. These rays are going to be merged if possible.
integer, parameter ray_list::ray_type_reco = 2
Parameters
ray_type_recoRay type identifier for "reco" rays. These rays could not be merged and their propagation restarted from where they were blocked.