| 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. | 
 1.8.11
 1.8.11