DART-Ray
|
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 |
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.
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.
[in] | theta | Theta angle of the blocked ray direction |
[in] | phi | Phi angle of the blocked ray direction |
[in] | Nside | HEALPix nside parameter associated with the blocked ray |
[in] | prev | Path crossed by the ray until the last intersection plane |
[in] | isel_old | Index specifying the direction of the perpendicular to the last intersection plane (0=x, 1=y, 2=z). |
[in] | dplane | Distance from the ray origin to the last intersection plane along the perpendicular to that plane. |
[in] | src_lum | Source luminosity associated with the ray |
[in] | cc | ID number of the last intersected cell |
[in[ | ray_type Ray type of the blocked ray |
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.
theta | Theta angle of the blocked ray direction |
phi | Phi angle of the blocked ray direction |
nside | HEALPix nside parameter associated with the blocked ray |
prev | Path length crossed by the ray |
isel_old | Index specifying the direction of the perpendicular to the last intersection plane (0=x, 1=y, 2=z). |
cproj | Projection cosines of the ray direction |
src_lum | Source luminosity |
cc | ID number of the last intersected cell |
subroutine ray_list::compress_high_list | ( | ) |
This routine removes the elements from high_list that will be processed later.
subroutine ray_list::compress_low_list | ( | ) |
This routine removes elements from low_list that will be processed later.
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.
[in] | idir | First 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] | idir2 | Second 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_lum | Source luminosity. |
[in] | src_id | Source ID number. |
[in] | nside_low | HEALPix 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. |
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.
[in] | label | ray_type_high() or ray_type_low() depending on which ray list has to be expanded. |
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.
[in] | nside | HEALPix NSIDE parameter for the next ray loop in main_dir_loop(). |
integer ray_list::dim_high |
dim_high | Dimension of ray_high_list(). The list can be expanded if necessary. |
integer ray_list::dim_low |
di_low | Dimension of ray_low_list(). The list can be expanded if necessary. |
type (list_type1), dimension(:), allocatable ray_list::ext_ray_list |
ext_ray_list | Extracted ray list. These rays are going to be processed in the next ray iteration. |
integer ray_list::ihigh |
ihigh | Counter of rays in the ray_high_list() |
integer ray_list::ilow |
ilow | Counter of rays in the ray_low_list() |
integer, dimension(:), allocatable ray_list::ind_ext |
ind_ext | Array containing the indeces of the rays to be extracted |
integer, parameter ray_list::inum =2000 |
inum | Initial dimension of the ray lists. |
logical ray_list::no_ray |
no_ray | Logical equal to TRUE if there are no rays to be extracted from the lists. |
type (list_type1), dimension(:), allocatable ray_list::ray_high_list |
ray_high_list | High ray list. These rays are going to be split. |
type (list_type1), dimension(:), allocatable ray_list::ray_low_list |
ray_low_list | Low ray list. These rays are going to be merged if possible. |
integer, parameter ray_list::ray_type_gone = 3 |
ray_type_gone | Ray type identifier for "gone" rays. These rays can be eliminated. |
integer, parameter ray_list::ray_type_high = 0 |
ray_type_high | Ray type identifier for "high" rays. These rays are going to be split. |
integer, parameter ray_list::ray_type_i_obs = 4 |
ray_type_i_obs | Ray 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 |
ray_type_i_obs_in | Ray 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 |
ray_type_low | Ray type identifier for "low" rays. These rays are going to be merged if possible. |
integer, parameter ray_list::ray_type_reco = 2 |
ray_type_reco | Ray type identifier for "reco" rays. These rays could not be merged and their propagation restarted from where they were blocked. |