16 int max_num_vertices_per_cell = 0;
17 for (
size_t i = 0; i < grid.num_cells; ++i)
18 if (grid.num_vertices_per_cell[i] > max_num_vertices_per_cell)
19 max_num_vertices_per_cell = grid.num_vertices_per_cell[i];
27 (
size_t)max_num_vertices_per_cell *
sizeof(*(cell.
edge_type))),
28 .num_corners = (size_t)max_num_vertices_per_cell,
29 .
array_size = (
size_t)max_num_vertices_per_cell};
32 for (
size_t cell_idx = 0; cell_idx < grid.num_cells; ++cell_idx) {
35 size_t num_vertices = grid.num_vertices_per_cell[cell_idx];
37 grid.cell_to_vertex + grid.cell_to_vertex_offsets[cell_idx];
38 size_t * cell_to_edge =
39 grid.cell_to_edge + grid.cell_to_edge_offsets[cell_idx];
40 for (
size_t i = 0; i < num_vertices; ++i) {
46 size_t edge_idx = cell_to_edge[i];
47 cell.
edge_type[i] = grid.edge_type[edge_idx];
60 free(grid.vertex_coordinates);
62 free(grid.vertex_ids);
64 free(grid.core_cell_mask);
65 free(grid.core_vertex_mask);
66 free(grid.core_edge_mask);
67 free(grid.num_vertices_per_cell);
68 free(grid.num_cells_per_vertex);
69 free(grid.cell_to_vertex);
70 free(grid.cell_to_vertex_offsets);
71 free(grid.cell_to_edge);
72 if (grid.cell_to_vertex_offsets != grid.cell_to_edge_offsets)
73 free(grid.cell_to_edge_offsets);
74 free(grid.vertex_to_cell);
75 free(grid.vertex_to_cell_offsets);
76 free(grid.edge_to_vertex);