Skip to content

Commit

Permalink
extracts faces, dup quads
Browse files Browse the repository at this point in the history
  • Loading branch information
Mike Park authored and Mike Park committed Sep 28, 2022
1 parent 389dace commit d53d84a
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 2 deletions.
75 changes: 74 additions & 1 deletion src/ref_oct.c
Expand Up @@ -598,13 +598,86 @@ REF_FCN static REF_STATUS ref_oct_export_node(REF_OCT ref_oct, REF_INT node,
REF_GRID ref_grid) {
REF_INT i;
if (ref_oct_leaf_node(ref_oct, node)) {
REF_CELL ref_cell;
REF_INT nodes[REF_CELL_MAX_SIZE_PER], new_cell;
REF_DBL diag, tol = 0.1;
REF_INT cell_face, face_node;
for (i = 0; i < 8; i++)
RAS(REF_EMPTY != ref_oct_c2n(ref_oct, i, node), "expects to be set");
for (i = 8; i < 27; i++)
REIS(REF_EMPTY, ref_oct_c2n(ref_oct, i, node), "implement 2-1");
for (i = 0; i < 8; i++) nodes[i] = ref_oct_c2n(ref_oct, i, node);
RSS(ref_cell_add(ref_grid_hex(ref_grid), nodes, &new_cell), "add hex");
ref_cell = ref_grid_hex(ref_grid);
RSS(ref_cell_add(ref_cell, nodes, &new_cell), "add hex");
ref_cell = ref_grid_qua(ref_grid);
RSS(ref_oct_bbox_diag(bbox, &diag), "diag");

cell_face = 0; /* ymin */
if (ABS(bbox[2] - ref_oct->bbox[2]) < tol * diag) {
for (face_node = 0; face_node < 4; face_node++) {
nodes[face_node] =
ref_cell_f2n_gen(ref_grid_hex(ref_grid), face_node, cell_face);
nodes[face_node] = ref_oct_c2n(ref_oct, nodes[face_node], node);
}
nodes[ref_cell_id_index(ref_cell)] = 3;
RSS(ref_cell_add(ref_cell, nodes, &new_cell), "add quad");
}

cell_face = 1; /* xmax */
if (ABS(bbox[1] - ref_oct->bbox[1]) < tol * diag) {
for (face_node = 0; face_node < 4; face_node++) {
nodes[face_node] =
ref_cell_f2n_gen(ref_grid_hex(ref_grid), face_node, cell_face);
nodes[face_node] = ref_oct_c2n(ref_oct, nodes[face_node], node);
}
nodes[ref_cell_id_index(ref_cell)] = 2;
RSS(ref_cell_add(ref_cell, nodes, &new_cell), "add quad");
}

cell_face = 2; /* ymax */
if (ABS(bbox[3] - ref_oct->bbox[3]) < tol * diag) {
for (face_node = 0; face_node < 4; face_node++) {
nodes[face_node] =
ref_cell_f2n_gen(ref_grid_hex(ref_grid), face_node, cell_face);
nodes[face_node] = ref_oct_c2n(ref_oct, nodes[face_node], node);
}
nodes[ref_cell_id_index(ref_cell)] = 4;
RSS(ref_cell_add(ref_cell, nodes, &new_cell), "add quad");
}

cell_face = 3; /* xmin */
if (ABS(bbox[0] - ref_oct->bbox[0]) < tol * diag) {
for (face_node = 0; face_node < 4; face_node++) {
nodes[face_node] =
ref_cell_f2n_gen(ref_grid_hex(ref_grid), face_node, cell_face);
nodes[face_node] = ref_oct_c2n(ref_oct, nodes[face_node], node);
}
nodes[ref_cell_id_index(ref_cell)] = 1;
RSS(ref_cell_add(ref_cell, nodes, &new_cell), "add quad");
}

cell_face = 4; /* zmin */
if (ABS(bbox[4] - ref_oct->bbox[4]) < tol * diag) {
for (face_node = 0; face_node < 4; face_node++) {
nodes[face_node] =
ref_cell_f2n_gen(ref_grid_hex(ref_grid), face_node, cell_face);
nodes[face_node] = ref_oct_c2n(ref_oct, nodes[face_node], node);
}
nodes[ref_cell_id_index(ref_cell)] = 5;
RSS(ref_cell_add(ref_cell, nodes, &new_cell), "add quad");
}

cell_face = 5; /* zmax */
if (ABS(bbox[5] - ref_oct->bbox[5]) < tol * diag) {
for (face_node = 0; face_node < 4; face_node++) {
nodes[face_node] =
ref_cell_f2n_gen(ref_grid_hex(ref_grid), face_node, cell_face);
nodes[face_node] = ref_oct_c2n(ref_oct, nodes[face_node], node);
}
nodes[ref_cell_id_index(ref_cell)] = 6;
RSS(ref_cell_add(ref_cell, nodes, &new_cell), "add quad");
}

} else {
REF_INT child_index;
for (i = 0; i < 27; i++)
Expand Down
5 changes: 4 additions & 1 deletion src/ref_oct_test.c
Expand Up @@ -25,6 +25,7 @@

#include "ref_args.h"
#include "ref_cell.h"
#include "ref_export.h"
#include "ref_grid.h"
#include "ref_import.h"
#include "ref_mpi.h"
Expand Down Expand Up @@ -229,6 +230,7 @@ int main(int argc, char *argv[]) {
RSS(ref_oct_create(&ref_oct), "make oct");
RSS(ref_oct_export(ref_oct, ref_grid), "export");
REIS(1, ref_cell_n(ref_grid_hex(ref_grid)), "hex");
REIS(6, ref_cell_n(ref_grid_qua(ref_grid)), "qua");
RSS(ref_oct_free(ref_oct), "free oct");
RSS(ref_grid_free(ref_grid), "free grid");
}
Expand All @@ -240,7 +242,9 @@ int main(int argc, char *argv[]) {
RSS(ref_oct_create(&ref_oct), "make oct");
RSS(ref_oct_split(ref_oct, 0), "split root");
RSS(ref_oct_export(ref_oct, ref_grid), "export");
/* ref_export_by_extension(ref_grid,"test.tec");
REIS(8, ref_cell_n(ref_grid_hex(ref_grid)), "hex");
REIS(24, ref_cell_n(ref_grid_qua(ref_grid)), "qua"); */
RSS(ref_oct_free(ref_oct), "free oct");
RSS(ref_grid_free(ref_grid), "free grid");
}
Expand Down Expand Up @@ -296,7 +300,6 @@ int main(int argc, char *argv[]) {
RSS(ref_oct_split(ref_oct, 0), "split root");
RSS(ref_oct_split(ref_oct, 1), "split first child");
RSS(ref_oct_split(ref_oct, 9), "split second gen");

RSS(ref_oct_contains(ref_oct, xyz, &node, bbox), "contains oct");
REIS(17, node, "expects third level");
RSS(ref_oct_free(ref_oct), "free oct");
Expand Down

0 comments on commit d53d84a

Please sign in to comment.