void clear (void) { int i; beam_t *b; for (i = 0; i < NUM_BEAMS; ++i) { b = get_beam(i); *(b->blue) = 0; *(b->green) = 0; *(b->red) = 0; *(b->dirty) = 1; } draw(); }
int create_basis_late(int size, double max, double *vec){ int i,j,n; double c,x,y,z,w; //basis_late = (double **)create_array(size,pmax_late+1); basis_late_flat = (double*) malloc(size * (pmax_late+1) * sizeof *basis_late_flat); double (*restrict basis_late)[pmax_late+1] = (double (*restrict)[pmax_late+1]) basis_late_flat; if(eflag_order_late<4){ basis_functions_bi(basis_late_flat, size, pmax_late, max, vec); }else if(eflag_order_late==4){ double **basis_temp = (double **)create_array(size,pmax_late-1); basis_functions_fourier(basis_temp, size, pmax_late-2, max, vec); for (i=0;i<size;i++){ for (j=0;j<pmax_late-1;j++){ basis_late[i][j] = basis_temp[i][j]; } } destroy_array(basis_temp); basis_late[0][pmax_late-1] = 0.0; basis_late[0][pmax_late] = 0.0; for (i=1;i<size;i++){ x = vec[i]*(vec[i]+1e0)/(max*(max+1e0)); y = (2e0*vec[i]+1e0)/(2e0*max+1e0); z = sqrt(x); w = pow(y,1e0/6e0); basis_late[i][pmax_late-1] = w/z; basis_late[i][pmax_late] = w*z; } }else if(eflag_order_late==5){ double **basis_temp = (double **)create_array(size,pmax_late-4); basis_functions_fourier(basis_temp, size, pmax_late-5, max, vec); for (i=0;i<size;i++){ for (j=0;j<pmax_late-4;j++){ basis_late[i][j] = basis_temp[i][j]; } } destroy_array(basis_temp); basis_late[0][pmax_late-4] = t_wgt[0]; basis_late[0][pmax_late-3] = 0.0; basis_late[0][pmax_late-2] = 0.0; basis_late[0][pmax_late-1] = 0.0; basis_late[0][pmax_late] = 0.0; for (i=1;i<size;i++){ x = vec[i]*(vec[i]+1.0)/(max*(max+1e0)); y = (2e0*vec[i]+1.0)/(2e0*max+1.0); z = sqrt(x); w = pow(y,1.0/6e0); basis_late[i][pmax_late-4] = t_wgt[i]; basis_late[i][pmax_late-3] = w/z; basis_late[i][pmax_late-2] = w*z; basis_late[i][pmax_late-1] = t_wgt[i]*w/z; basis_late[i][pmax_late] = t_wgt[i]*w*z; } }else if(eflag_order_late==6){ double **basis_temp = (double **)create_array(size,pmax_late-7); basis_functions_fourier(basis_temp, size, pmax_late-8, max, vec); for (i=0;i<size;i++){ for (j=0;j<pmax_late-7;j++){ basis_late[i][j] = basis_temp[i][j]; } } destroy_array(basis_temp); basis_late[0][pmax_late-7] = 0.0; basis_late[0][pmax_late-6] = 0.0; basis_late[0][pmax_late-5] = 0.0; basis_late[0][pmax_late-4] = 0.0; basis_late[0][pmax_late-3] = 0.0; basis_late[0][pmax_late-2] = 0.0; basis_late[0][pmax_late-1] = 0.0; basis_late[0][pmax_late] = 0.0; for (i=1;i<size;i++){ x = vec[i]*(vec[i]+1.0)/(max*(max+1e0)); y = (2e0*vec[i]+1.0)/(2e0*max+1.0); z = sqrt(x); w = pow(y,1.0/6e0); c = sqrt(get_cl(i)+get_noise(i)/(get_beam(i)*get_beam(i))); if(c!=0.0)c = w/c; basis_late[i][pmax_late-7] = w/z; basis_late[i][pmax_late-6] = w*z; basis_late[i][pmax_late-5] = c; basis_late[i][pmax_late-4] = c*x; basis_late[i][pmax_late-3] = c*get_lens_tt(i); basis_late[i][pmax_late-2] = c*get_lens_tp(i); basis_late[i][pmax_late-1] = c*x*get_lens_tt(i); basis_late[i][pmax_late] = c*x*get_lens_tp(i); } }else if(eflag_order_late==7){ double **basis_temp = (double **)create_array(size,pmax_late-1); basis_functions_bi(&basis_temp[0][0], size, pmax_late-2, max, vec); for (i=0;i<size;i++){ for (j=0;j<pmax_late-1;j++){ basis_late[i][j] = basis_temp[i][j]; } } destroy_array(basis_temp); basis_late[0][pmax_late-1] = 0.0; basis_late[0][pmax_late] = 0.0; for (i=1;i<size;i++){ x = vec[i]*(vec[i]+1e0)/(max*(max+1e0)); y = (2e0*vec[i]+1e0)/(2e0*max+1e0); z = sqrt(x); w = pow(y,1e0/6e0); basis_late[i][pmax_late-1] = w/z; basis_late[i][pmax_late] = w*z; } }else if(eflag_order_late==8){ double min = 2e0; basis_functions_sinlog(basis_late_flat, size, pmax_late, min, max, vec); }else if(eflag_order_late==9){ double **basis_temp = (double **)create_array(size,pmax_late-1); basis_functions_legendre(basis_temp, size, pmax_late-2, max, vec); for (i=0;i<size;i++){ for (j=0;j<pmax_late-1;j++){ basis_late[i][j] = basis_temp[i][j]; } } destroy_array(basis_temp); basis_late[0][pmax_late-1] = 0.0; basis_late[0][pmax_late] = 0.0; for (i=1;i<size;i++){ x = vec[i]*(vec[i]+1e0)/(max*(max+1e0)); y = (2e0*vec[i]+1e0)/(2e0*max+1e0); z = sqrt(x); w = pow(y,1e0/6e0); basis_late[i][pmax_late-1] = w/z; basis_late[i][pmax_late] = w*z; } } // JB offload basis_late_flat /* int basis_late_flat_size = size * (pmax_late+1); int offload_target; MPI_Comm_rank(MPI_COMM_WORLD, &offload_target); #pragma offload_transfer target(mic:offload_target) in(basis_late_flat[0:basis_late_flat_size] : ALLOC RETAIN) */ return 0; }