Next: local_map_size    Up: Size/memory estimation routines    Previous: find_mvals


find_scan_ring_range

subroutine find_scan_ring_range( pixelization, scan, nmmax, myid, numprocs, first_ring, last_ring, outerror)

Purpose:

Calculates a distribution of all observed (iso-latitude) rings (as defined in scan) over all processors assigning to each proc an interval of rings defined by first_ring and last_ring (both in a global ring numbering scheme).
The rings assigned to each proc are consecutive with an exception of unobserved rings which are excised. The numbers first_ring and last_ring always refer to the rings of the Northern hemisphere (plus an equatorial ring). The distribution is designed to load balance the transform computation.
Each proc should call the routine.

N.B.1. Any other division of all rings is also permitted, provided that they do not overlap, cover all the observed rings on either Northern or Southern hemisphere (and may, sometimes have to, include some of the unobserved ones as well), and are assigned to the procs in an ascending manner (the first range to proc 0, etc). Each proc has to have at least one ring assigned.

N.B.2. This routine is typically called via the get_local_data_sizes driver, which in a single call determines data sizes in both rings and harmonic domains.

Parameters:

Input:
pixelization-- [type( pixeltype)], an S2HAT structure defining pixelization;
scan-- [type(scandef)], an S2HAT structure defining observed sky;
nmmax-- [int], maximum m mode to be included;
myid-- [int], a proc id number;
numprocs-- [int], total number of procs;
Output:
first_ring- [int], lower ring range limit;
last_ring- [int], upper ring range limit (included).

outerror- [int], errorcode (0- ok; 1- error).



Next: local_map_size    Up: Size/memory estimation routines    Previous: find_mvals

radek stompor 2009-10-15