9 size_t nbr_vertices[2], int cyclic[2]) {
13 "ERROR(yac_generate_basic_grid_data_reg2d_common): "
14 "grids that are cyclic in the y direction are not yet supported")
16 size_t num_cells_2d[2] =
17 {nbr_vertices[0] - ((cyclic[0])?0:1), nbr_vertices[1] - 1};
18 size_t num_vertices_2d[2] = {num_cells_2d[0] + ((cyclic[0])?0:1),
20 size_t num_cells = num_cells_2d[0] * num_cells_2d[1];
21 size_t num_vertices = num_vertices_2d[0] * num_vertices_2d[1];
23 (num_cells_2d[1] + 1) * num_cells_2d[0] +
24 (num_cells_2d[0] + ((cyclic[0])?0:1)) * num_cells_2d[1];
34 for (
size_t i = 0, j =
num_vertices - num_vertices_2d[0];
35 i < num_vertices_2d[0]; ++i, ++j) {
39 for (
size_t i = 0, j = num_vertices_2d[0] - 1;
40 i <
num_vertices; i+=num_vertices_2d[0], j+=num_vertices_2d[0]) {
49 for (
size_t i = 0, j =
num_vertices - num_vertices_2d[0];
50 i < num_vertices_2d[0]; ++i, ++j) {
60 for (
size_t i = 0, k = 0; i < num_cells_2d[1]; ++i) {
61 size_t temp_cell_to_vertex[4] =
62 {i * num_vertices_2d[0],
63 i * num_vertices_2d[0] + 1,
64 (i + 1) * num_vertices_2d[0] + 1,
65 (i + 1) * num_vertices_2d[0]};
66 for (
size_t j = 0; j < num_cells_2d[0]; ++j)
67 for (
size_t l = 0; l < 4; ++l, ++k)
71 size_t temp_cell_to_vertex[4] =
72 {0, 1, num_vertices_2d[0] + 1, num_vertices_2d[0]};
73 for (
size_t i = 0, k = 0, m = 0; i < num_cells_2d[1]; ++i)
74 for (
size_t j = 0; j < num_cells_2d[0]; ++j, ++m)
75 for (
int l = 0; l < 4; ++l, ++k)
77 for (
size_t i = 0; i < num_cells_2d[1]; ++i) {
78 cell_to_vertex[4*((i+1)*num_cells_2d[0]-1)+1] = i * num_cells_2d[0];
79 cell_to_vertex[4*((i+1)*num_cells_2d[0]-1)+2] = (i + 1) * num_cells_2d[0];
87 for (
size_t i = 0, k = 0; i < num_cells_2d[1]; ++i) {
88 size_t edge_id_offset = (2 * num_cells_2d[0] + 1);
89 size_t edge_id = i * edge_id_offset;
90 for (
size_t j = 0; j < num_cells_2d[0]; ++j, k += 4, edge_id += 2) {
98 for (
size_t i =
num_edges - num_cells_2d[0],
99 j = 4 * num_cells_2d[0] * (num_cells_2d[1] - 1) + 2;
101 for (
size_t i = 0, j = 4 * (num_cells_2d[0] - 1) + 1;
102 i < num_cells_2d[1]; ++i, j += 4 * num_cells_2d[0])
105 size_t edge_id_offset = 2 * num_cells_2d[0];
106 for (
size_t i = 0, k = 0; i < num_cells_2d[1]; ++i) {
107 size_t edge_id = i * edge_id_offset + 1;
108 for (
size_t j = 0; j < num_cells_2d[0]; ++j, k += 4, edge_id += 2) {
116 for (
size_t i = 0; i < num_cells_2d[1]; ++i) {
121 for (
size_t i = 0, * curr_cell_to_edge; i < num_cells_2d[1]; ++i) {
122 curr_cell_to_edge = &
cell_to_edge[4*((i+1)*num_cells_2d[0]-1)];
123 size_t edge_id = 1 + i * edge_id_offset;
124 curr_cell_to_edge[0] = edge_id;
125 curr_cell_to_edge[1] = edge_id + 1;
126 curr_cell_to_edge[2] = edge_id + edge_id_offset;
127 curr_cell_to_edge[3] = edge_id + edge_id_offset - 2;
131 edge_id = 2 * (num_cells_2d[0] * num_cells_2d[1] + 1);
132 i < num_cells_2d[0] - 2; ++i, curr_edge += 4, ++edge_id) {
133 *curr_edge = edge_id;
137 size_t vertex_to_cell_size;
140 vertex_to_cell_size =
142 2 * 2 * (num_cells_2d[0] - 1) +
143 2 * 2 * (num_cells_2d[1] - 1) +
144 4 * (num_cells_2d[0] - 1) * (num_cells_2d[1] - 1);
149 for (
size_t i = 0; i < num_cells_2d[0] - 1; ++i) {
154 for (
size_t i = 0, cell_idx = 0; i < num_cells_2d[1] - 1; ++i) {
158 for (
size_t j = 0; j < num_cells_2d[0] - 1; ++j, ++cell_idx) {
175 vertex_to_cell_size = 4 * (
num_vertices - num_vertices_2d[0]);
180 for (
size_t i = 0; i < num_cells_2d[0]; ++i) {
186 size_t vertex_idx = 0;
187 for (
size_t i = 0; i < num_cells_2d[1] - 1; ++i) {
188 for (
size_t j = 0; j < num_cells_2d[0]; ++j, ++vertex_idx) {
196 vertex_idx - 1 + num_cells_2d[0];
199 for (
size_t i = 0; i < num_cells_2d[0]; ++i, ++vertex_idx) {
216 for (
size_t i = 0, k = 0, vertex_idx = 0; i < num_cells_2d[1]; ++i) {
217 for (
size_t j = 0; j < num_cells_2d[0]; ++j, k += 2, ++vertex_idx) {
228 for (
size_t i =
num_edges - num_cells_2d[0],
235 for (
size_t i = 1, vertex_idx = 0;
236 i < 2 * num_cells_2d[0] * num_cells_2d[1]; i += 2, ++vertex_idx) {
242 for (
size_t i = 0; i <= num_cells_2d[1]; ++i) {
246 edge_to_vertex[2*i*num_cells_2d[0]+1][1] = (i + 1) * num_cells_2d[0]-1;
248 for (
size_t i = 1; i <= num_cells_2d[1]; ++i) {
249 edge_to_vertex[2*i*num_cells_2d[0]-1][0] = i * num_cells_2d[0] - 1;
250 edge_to_vertex[2*i*num_cells_2d[0]-1][1] = (i + 1) * num_cells_2d[0] - 1;
252 for (
size_t i = 2; i < num_cells_2d[0]; ++i) {
254 num_cells_2d[0]*num_cells_2d[1]+i-1;
256 num_cells_2d[0]*num_cells_2d[1]+i;