void initialise_chunk() { int x_cells = grid.x_cells; int y_cells = grid.y_cells; int z_cells = grid.z_cells; int x_min = field.x_min; int x_max = field.x_max; int y_min = field.y_min; int y_max = field.y_max; int z_min = field.z_min; int z_max = field.z_max; int rangex[] = {x_min-2, x_max+3, y_min-2, y_max+3, z_min-2, z_max+3}; int rangey[] = {x_min-2, x_max+3, y_min-2, y_max+3, z_min-2, z_max+3}; int rangez[] = {x_min-2, x_max+3, y_min-2, y_max+3, z_min-2, z_max+3}; int rangefull[] = {-2, x_cells+8, -2, y_cells+8, -2, z_cells+8}; ops_par_loop_initialise_chunk_kernel_xx("initialise_chunk_kernel_xx", clover_grid, 3, rangefull, ops_arg_dat(xx, S3D_000_STRID3D_X, "int", OPS_WRITE), ops_arg_idx()); ops_par_loop_initialise_chunk_kernel_yy("initialise_chunk_kernel_yy", clover_grid, 3, rangefull, ops_arg_dat(yy, S3D_000_STRID3D_Y, "int", OPS_WRITE), ops_arg_idx()); ops_par_loop_initialise_chunk_kernel_zz("initialise_chunk_kernel_zz", clover_grid, 3, rangefull, ops_arg_dat(zz, S3D_000_STRID3D_Z, "int", OPS_WRITE), ops_arg_idx()); ops_par_loop_initialise_chunk_kernel_x("initialise_chunk_kernel_x", clover_grid, 3, rangex, ops_arg_dat(vertexx, S3D_000_STRID3D_X, "double", OPS_WRITE), ops_arg_dat(xx, S3D_000_STRID3D_X, "int", OPS_READ), ops_arg_dat(vertexdx, S3D_000_STRID3D_X, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_y("initialise_chunk_kernel_y", clover_grid, 3, rangey, ops_arg_dat(vertexy, S3D_000_STRID3D_Y, "double", OPS_WRITE), ops_arg_dat(yy, S3D_000_STRID3D_Y, "int", OPS_READ), ops_arg_dat(vertexdy, S3D_000_STRID3D_Y, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_z("initialise_chunk_kernel_z", clover_grid, 3, rangez, ops_arg_dat(vertexz, S3D_000_STRID3D_Z, "double", OPS_WRITE), ops_arg_dat(zz, S3D_000_STRID3D_Z, "int", OPS_READ), ops_arg_dat(vertexdz, S3D_000_STRID3D_Z, "double", OPS_WRITE)); rangex[0] = x_min-2; rangex[1] = x_max+2; ops_par_loop_initialise_chunk_kernel_cellx("initialise_chunk_kernel_cellx", clover_grid, 3, rangex, ops_arg_dat(vertexx, S3D_000_P100_STRID3D_X, "double", OPS_READ), ops_arg_dat(cellx, S3D_000_STRID3D_X, "double", OPS_WRITE), ops_arg_dat(celldx, S3D_000_STRID3D_X, "double", OPS_WRITE)); rangey[2] = y_min-2; rangey[3] = y_max+2; ops_par_loop_initialise_chunk_kernel_celly("initialise_chunk_kernel_celly", clover_grid, 3, rangey, ops_arg_dat(vertexy, S3D_000_0P10_STRID3D_Y, "double", OPS_READ), ops_arg_dat(celly, S3D_000_STRID3D_Y, "double", OPS_WRITE), ops_arg_dat(celldy, S3D_000_STRID3D_Y, "double", OPS_WRITE)); rangez[4] = z_min-2; rangez[5] = z_max+2; ops_par_loop_initialise_chunk_kernel_cellz("initialise_chunk_kernel_cellz", clover_grid, 3, rangez, ops_arg_dat(vertexz, S3D_000_00P1_STRID3D_Z, "double", OPS_READ), ops_arg_dat(cellz, S3D_000_STRID3D_Z, "double", OPS_WRITE), ops_arg_dat(celldz, S3D_000_STRID3D_Z, "double", OPS_WRITE)); int rangexyz[] = {x_min-2,x_max+2,y_min-2,y_max+2,z_min-2,z_max+2}; ops_par_loop_initialise_chunk_kernel_volume("initialise_chunk_kernel_volume", clover_grid, 3, rangexyz, ops_arg_dat(volume, S3D_000, "double", OPS_WRITE), ops_arg_dat(celldy, S3D_000_STRID3D_Y, "double", OPS_READ), ops_arg_dat(xarea, S3D_000, "double", OPS_WRITE), ops_arg_dat(celldx, S3D_000_STRID3D_X, "double", OPS_READ), ops_arg_dat(yarea, S3D_000, "double", OPS_WRITE), ops_arg_dat(celldz, S3D_000_STRID3D_Z, "double", OPS_READ), ops_arg_dat(zarea, S3D_000, "double", OPS_WRITE)); }
void initialise_chunk() { int x_cells = grid.x_cells; int y_cells = grid.y_cells; int x_min = field.x_min; int x_max = field.x_max; int y_min = field.y_min; int y_max = field.y_max; int range[] = {x_min, x_max, y_min, y_max}; ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(density, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(energy0, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(energy1, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(u, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(u0, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(vector_r, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(vector_rstore, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(vector_rtemp, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(vector_Mi, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(vector_w, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(vector_z, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(vector_utemp, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(vector_Kx, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(vector_Ky, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(vector_p, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(vector_sd, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(tri_cp, 1, S2D_00, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, range, ops_arg_dat(tri_bfp, 1, S2D_00, "double", OPS_WRITE)); int rangefull1[] = {-2, x_cells + 2, -2, y_cells + 2}; ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, rangefull1, ops_arg_dat(volume, 1, S2D_00, "double", OPS_WRITE)); int rangefull2[] = {-2, x_cells + 3, -2, y_cells + 2}; ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, rangefull2, ops_arg_dat(xarea, 1, S2D_00, "double", OPS_WRITE)); int rangefull3[] = {-2, x_cells + 2, -2, y_cells + 3}; ops_par_loop_initialise_chunk_kernel_zero( "initialise_chunk_kernel_zero", tea_grid, 2, rangefull3, ops_arg_dat(yarea, 1, S2D_00, "double", OPS_WRITE)); int rangex[] = {x_min - 2, x_max + 2, y_min - 2, y_max + 2}; ops_par_loop_initialise_chunk_kernel_zero_x( "initialise_chunk_kernel_zero_x", tea_grid, 2, rangex, ops_arg_dat(cellx, 1, S2D_00_STRID2D_X, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero_x( "initialise_chunk_kernel_zero_x", tea_grid, 2, rangex, ops_arg_dat(celldx, 1, S2D_00_STRID2D_X, "double", OPS_WRITE)); rangex[1]++; ops_par_loop_initialise_chunk_kernel_zero_x( "initialise_chunk_kernel_zero_x", tea_grid, 2, rangex, ops_arg_dat(vertexx, 1, S2D_00_STRID2D_X, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero_x( "initialise_chunk_kernel_zero_x", tea_grid, 2, rangex, ops_arg_dat(vertexdx, 1, S2D_00_STRID2D_X, "double", OPS_WRITE)); int rangey2[] = {x_min - 2, x_max + 2, y_min - 2, y_max + 2}; ops_par_loop_initialise_chunk_kernel_zero_y( "initialise_chunk_kernel_zero_y", tea_grid, 2, rangey2, ops_arg_dat(celly, 1, S2D_00_STRID2D_Y, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero_y( "initialise_chunk_kernel_zero_y", tea_grid, 2, rangey2, ops_arg_dat(celldy, 1, S2D_00_STRID2D_Y, "double", OPS_WRITE)); rangey2[3]++; ops_par_loop_initialise_chunk_kernel_zero_y( "initialise_chunk_kernel_zero_y", tea_grid, 2, rangey2, ops_arg_dat(vertexy, 1, S2D_00_STRID2D_Y, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_zero_y( "initialise_chunk_kernel_zero_y", tea_grid, 2, rangey2, ops_arg_dat(vertexdy, 1, S2D_00_STRID2D_Y, "double", OPS_WRITE)); int rangefull[] = {x_min - 2, x_max + 3, y_min - 2, y_max + 3}; ops_execute(); ops_par_loop_initialise_chunk_kernel_xx( "initialise_chunk_kernel_xx", tea_grid, 2, rangefull, ops_arg_dat(xx, 1, S2D_00_STRID2D_X, "int", OPS_WRITE), ops_arg_idx()); ops_par_loop_initialise_chunk_kernel_yy( "initialise_chunk_kernel_yy", tea_grid, 2, rangefull, ops_arg_dat(yy, 1, S2D_00_STRID2D_Y, "int", OPS_WRITE), ops_arg_idx()); ops_par_loop_initialise_chunk_kernel_x( "initialise_chunk_kernel_x", tea_grid, 2, rangex, ops_arg_dat(vertexx, 1, S2D_00_STRID2D_X, "double", OPS_WRITE), ops_arg_dat(xx, 1, S2D_00_STRID2D_X, "int", OPS_READ), ops_arg_dat(vertexdx, 1, S2D_00_STRID2D_X, "double", OPS_WRITE)); ops_par_loop_initialise_chunk_kernel_y( "initialise_chunk_kernel_y", tea_grid, 2, rangey2, ops_arg_dat(vertexy, 1, S2D_00_STRID2D_Y, "double", OPS_WRITE), ops_arg_dat(yy, 1, S2D_00_STRID2D_Y, "int", OPS_READ), ops_arg_dat(vertexdy, 1, S2D_00_STRID2D_Y, "double", OPS_WRITE)); rangex[0] = x_min - 2; rangex[1] = x_max + 2; rangex[2] = y_min - 2; rangex[3] = y_max + 2; ops_par_loop_initialise_chunk_kernel_cellx( "initialise_chunk_kernel_cellx", tea_grid, 2, rangex, ops_arg_dat(vertexx, 1, S2D_00_P10_STRID2D_X, "double", OPS_READ), ops_arg_dat(cellx, 1, S2D_00_STRID2D_X, "double", OPS_WRITE), ops_arg_dat(celldx, 1, S2D_00_STRID2D_X, "double", OPS_WRITE)); int rangey[] = {x_min - 2, x_max + 3, y_min - 2, y_max + 2}; ops_par_loop_initialise_chunk_kernel_celly( "initialise_chunk_kernel_celly", tea_grid, 2, rangey, ops_arg_dat(vertexy, 1, S2D_00_0P1_STRID2D_Y, "double", OPS_READ), ops_arg_dat(celly, 1, S2D_00_STRID2D_Y, "double", OPS_WRITE), ops_arg_dat(celldy, 1, S2D_00_STRID2D_Y, "double", OPS_WRITE)); int rangexy[] = {x_min - 2, x_max + 2, y_min - 2, y_max + 2}; ops_par_loop_initialise_chunk_kernel_volume( "initialise_chunk_kernel_volume", tea_grid, 2, rangexy, ops_arg_dat(volume, 1, S2D_00, "double", OPS_WRITE), ops_arg_dat(celldy, 1, S2D_00_STRID2D_Y, "double", OPS_READ), ops_arg_dat(xarea, 1, S2D_00, "double", OPS_WRITE), ops_arg_dat(celldx, 1, S2D_00_STRID2D_X, "double", OPS_READ), ops_arg_dat(yarea, 1, S2D_00, "double", OPS_WRITE)); }