|
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