Low-level libsharp SHT interface


Enumerations

enum  sharp_jobtype {
  SHARP_YtW = 0, SHARP_MAP2ALM = SHARP_YtW, SHARP_Y = 1, SHARP_ALM2MAP = SHARP_Y,
  SHARP_Yt = 2, SHARP_WY = 3, SHARP_ALM2MAP_DERIV1 = 4
}
enum  sharp_jobflags { SHARP_DP = 1<<4, SHARP_ADD = 1<<5, SHARP_REAL_HARMONICS = 1<<6 }

Functions

void sharp_execute (sharp_jobtype type, int spin, void *alm, void *map, const sharp_geom_info *geom_info, const sharp_alm_info *alm_info, int ntrans, int flags, double *time, unsigned long long *opcnt)

Detailed Description


Enumeration Type Documentation

Enumeration of SHARP job types.

Enumerator:
SHARP_YtW  analysis
SHARP_MAP2ALM  analysis
SHARP_Y  synthesis
SHARP_ALM2MAP  synthesis
SHARP_Yt  adjoint synthesis
SHARP_WY  adjoint analysis
SHARP_ALM2MAP_DERIV1  synthesis of first derivatives

Definition at line 160 of file sharp_lowlevel.h.

Job flags

Enumerator:
SHARP_DP  map and a_lm are in double precision
SHARP_ADD  results are added to the output arrays, instead of overwriting them
SHARP_REAL_HARMONICS  Use the real spherical harmonic convention. For m==0, the alm are treated exactly the same as in the complex case. For m!=0, alm[i] represent a pair (+abs(m), -abs(m)) instead of (real, imag), and the coefficients are scaled by a factor of sqrt(2) relative to the complex case. In other words, (sqrt(.5) * alm[i]) recovers the corresponding complex coefficient (when accessed as complex).

Definition at line 170 of file sharp_lowlevel.h.


Function Documentation

void sharp_execute ( sharp_jobtype  type,
int  spin,
void *  alm,
void *  map,
const sharp_geom_info *  geom_info,
const sharp_alm_info *  alm_info,
int  ntrans,
int  flags,
double *  time,
unsigned long long *  opcnt 
)

Performs a libsharp SHT job. The interface deliberately does not use the C99 "complex" data type, in order to be callable from C89 and C++.

Parameters:
type the type of SHT
spin the spin of the quantities to be transformed
alm contains pointers to the a_lm coefficients. If spin==0, alm[0] points to the a_lm of the first SHT, alm[1] to those of the second etc. If spin>0, alm[0] and alm[1] point to the a_lm of the first SHT, alm[2] and alm[3] to those of the second, etc. The exact data type of alm depends on whether the SHARP_DP flag is set.
map contains pointers to the maps. If spin==0, map[0] points to the map of the first SHT, map[1] to that of the second etc. If spin>0, or type is SHARP_ALM2MAP_DERIV1, map[0] and map[1] point to the maps of the first SHT, map[2] and map[3] to those of the second, etc. The exact data type of map depends on whether the SHARP_DP flag is set.
geom_info A sharp_geom_info object compatible with the provided map arrays.
alm_info A sharp_alm_info object compatible with the provided alm arrays. All m values from 0 to some mmax<=lmax must be present exactly once.
ntrans the number of simultaneous SHTs
flags See sharp_jobflags. In particular, if SHARP_DP is set, then alm is expected to have the type "complex double **" and map is expected to have the type "double **"; otherwise, the expected types are "complex float **" and "float **", respectively.
time If not NULL, the wall clock time required for this SHT (in seconds) will be written here.
opcnt If not NULL, a conservative estimate of the total floating point operation count for this SHT will be written here.

Definition at line 869 of file sharp.c.


Generated on Thu Oct 8 14:48:51 2015 for LevelS SHT library