static PyObject * get_triplets_reciprocal_mesh_at_q(PyObject *self, PyObject *args) { PyArrayObject* map_triplets; PyArrayObject* grid_address_py; PyArrayObject* map_q; int fixed_grid_number; PyArrayObject* mesh; int is_time_reversal; PyArrayObject* rotations; if (!PyArg_ParseTuple(args, "OOOiOiO", &map_triplets, &map_q, &grid_address_py, &fixed_grid_number, &mesh, &is_time_reversal, &rotations)) { return NULL; } int (*grid_address)[3] = (int(*)[3])grid_address_py->data; int *map_triplets_int = (int*)map_triplets->data; int *map_q_int = (int*)map_q->data; const int* mesh_int = (int*)mesh->data; SPGCONST int (*rot)[3][3] = (int(*)[3][3])rotations->data; const int num_rot = rotations->dimensions[0]; const int num_ir = spg_get_triplets_reciprocal_mesh_at_q(map_triplets_int, map_q_int, grid_address, fixed_grid_number, mesh_int, is_time_reversal, num_rot, rot); return PyInt_FromLong((long) num_ir); }
static PyObject * get_triplets_reciprocal_mesh_at_q(PyObject *self, PyObject *args) { PyArrayObject* weights; PyArrayObject* grid_points; PyArrayObject* third_q; int fixed_grid_number; PyArrayObject* mesh; int is_time_reversal; PyArrayObject* rotations; if (!PyArg_ParseTuple(args, "OOOiOiO", &weights, &grid_points, &third_q, &fixed_grid_number, &mesh, &is_time_reversal, &rotations)) { return NULL; } int i, j, k; const int num_grid = grid_points->dimensions[0]; long *grid_points_long = (long*)grid_points->data; int grid_points_int[num_grid][3]; long *weights_long = (long*)weights->data; int weights_int[num_grid]; long *third_q_long = (long*)third_q->data; int third_q_int[num_grid]; int mesh_int[3]; const long* mesh_long = (long*)mesh->data; for (i = 0; i < 3; i++) { mesh_int[i] = (int) mesh_long[i]; } const long* rot_long = (long*)rotations->data; const int num_rot = rotations->dimensions[0]; int rot[num_rot][3][3]; for (i = 0; i < num_rot; i++) { for (j = 0; j < 3; j++) { for (k = 0; k < 3; k++) { rot[i][j][k] = (int) rot_long[ i*9 + j*3 + k ]; } } } const int num_ir = spg_get_triplets_reciprocal_mesh_at_q(weights_int, grid_points_int, third_q_int, fixed_grid_number, mesh_int, is_time_reversal, num_rot, rot); for (i = 0; i < num_grid; i++) { weights_long[i] = (long) weights_int[i]; third_q_long[i] = (long) third_q_int[i]; for (j = 0; j < 3; j++) { grid_points_long[ i*3 + j ] = (long) grid_points_int[i][j]; } } return PyInt_FromLong((long) num_ir); }