Beispiel #1
0
void ind_sort(int *ind_list, double *vals, int len)
{

  int pivot;

  pivot=partition(ind_list, vals, len);
    
  if (pivot>=2)
    ind_sort(ind_list, vals, pivot);
  if (pivot <= len - 3)
    ind_sort(ind_list+pivot+1, vals+pivot+1, len-pivot-1);
}
Beispiel #2
0
void isw_beams_preproc(ParamCoLoRe *par)
{
  //Sort radii in ascending order
  int ir;
  flouble *r0_i=my_malloc(par->pd_map->nr*sizeof(flouble));
  flouble *rf_i=my_malloc(par->pd_map->nr*sizeof(flouble));

  memcpy(r0_i,par->pd_map->r0,par->pd_map->nr*sizeof(flouble));
  memcpy(rf_i,par->pd_map->rf,par->pd_map->nr*sizeof(flouble));

  int *i_sorted=ind_sort(par->pd_map->nr,par->pd_map->r0);
  for(ir=0;ir<par->pd_map->nr;ir++) {
    par->pd_map->r0[ir]=r0_i[i_sorted[ir]];
    par->pd_map->rf[ir]=rf_i[i_sorted[ir]];
  }
  free(r0_i);
  free(rf_i);
  free(i_sorted);

  //Zero all data and clear
#ifdef _HAVE_OMP
#pragma omp parallel default(none)		\
  shared(par)
#endif //_HAVE_OMP
  {
    long ipp;

#ifdef _HAVE_OMP
#pragma omp for
#endif //_HAVE_OMP
    for(ipp=0;ipp<par->pd_map->num_pix*par->pd_map->nr;ipp++) {
      par->pd_map->data[ipp]=0;
      par->pd_map->nadd[ipp]=1;
    } //end omp for
  } //end omp parallel

  return;
}