commit 7a0bdc13aee4fb8291e1e3169662f79ecf5659e2
parent 82fb7a980b0a90b7ee3b9a106324f4336910e16d
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Tue, 15 Mar 2022 10:29:34 +0100
Update the loading test
Diffstat:
1 file changed, 26 insertions(+), 30 deletions(-)
diff --git a/src/test_smsh_load.c b/src/test_smsh_load.c
@@ -65,7 +65,7 @@ check_smsh_desc
}
static void
-test_load_tetrahedra(struct smsh* smsh)
+test_load_mesh(struct smsh* smsh, const uint32_t dnode, const uint32_t dcell)
{
struct smsh_desc desc = SMSH_DESC_NULL;
FILE* fp = NULL;
@@ -73,9 +73,7 @@ test_load_tetrahedra(struct smsh* smsh)
const uint64_t pagesize = 16384;
const uint64_t nnodes = 287;
const uint64_t ncells = 192;
- const unsigned dnode = 3;
- const unsigned dcell = 3;
- size_t i;
+ size_t i, j;
char byte = 0;
ASSERT(smsh);
@@ -94,11 +92,10 @@ test_load_tetrahedra(struct smsh* smsh)
/* Write vertex nodes */
FOR_EACH(i, 0, nnodes) {
- double pos[3];
- pos[0] = (double)i + 0.0;
- pos[1] = (double)i + 0.1;
- pos[2] = (double)i + 0.2;
- CHK(fwrite(pos, sizeof(*pos), 3, fp) == 3);
+ FOR_EACH(j, 0, dnode) {
+ const double dbl = (double)i + (double)j * 0.1;
+ CHK(fwrite(&dbl, sizeof(dbl), 1, fp) == 1);
+ }
}
/* Padding */
@@ -106,12 +103,10 @@ test_load_tetrahedra(struct smsh* smsh)
/* Write tetrahedra */
FOR_EACH(i, 0, ncells) {
- uint64_t ids[4];
- ids[0] = (i*4 + 0) % nnodes;
- ids[1] = (i*4 + 1) % nnodes;
- ids[2] = (i*4 + 2) % nnodes;
- ids[3] = (i*4 + 3) % nnodes;
- CHK(fwrite(ids, sizeof(*ids), 4, fp) == 4);
+ FOR_EACH(j, 0, dcell) {
+ const uint64_t ui64 = (i*dcell + j) % nnodes;
+ CHK(fwrite(&ui64, sizeof(ui64), 1, fp) == 1);
+ }
}
/* Padding. Write one char to position the EOF indicator */
@@ -205,6 +200,7 @@ test_load_files(struct smsh* smsh, int argc, char** argv)
CHK(smsh);
FOR_EACH(i, 1, argc) {
struct smsh_desc desc = SMSH_DESC_NULL;
+ size_t j;
size_t inode;
size_t icell;
@@ -213,23 +209,21 @@ test_load_files(struct smsh* smsh, int argc, char** argv)
CHK(smsh_get_desc(smsh, &desc) == RES_OK);
FOR_EACH(inode, 0, desc.nnodes) {
- const double* pos = smsh_desc_get_node(&desc, inode);
- CHK(pos[0] == pos[0]); /* !NaN */
- CHK(pos[1] == pos[1]); /* !NaN */
- CHK(pos[2] == pos[2]); /* !NaN */
- CHK(!IS_INF(pos[0]));
- CHK(!IS_INF(pos[1]));
- CHK(!IS_INF(pos[2]));
+ const double* node = smsh_desc_get_node(&desc, inode);
+ FOR_EACH(j, 0, desc.dnode) {
+ CHK(node[j] == node[j]); /* !NaN */
+ CHK(!IS_INF(node[j]));
+ }
}
FOR_EACH(icell, 0, desc.ncells) {
const uint64_t* ids = smsh_desc_get_cell(&desc, icell);
- /* Check non degenerated tetrahedron */
- CHK(ids[0] != ids[1]);
- CHK(ids[0] != ids[2]);
- CHK(ids[0] != ids[3]);
- CHK(ids[1] != ids[2]);
- CHK(ids[1] != ids[3]);
- CHK(ids[2] != ids[3]);
+ FOR_EACH(j, 0, desc.dcell) {
+ size_t k;
+ FOR_EACH(k, 0, desc.dcell) {
+ if(k == j) continue;
+ CHK(ids[j] != ids[k]); /* Check non degenerated cell */
+ }
+ }
}
}
}
@@ -246,7 +240,9 @@ main(int argc, char** argv)
CHK(smsh_create(&args, &smsh) == RES_OK);
- test_load_tetrahedra(smsh);
+ test_load_mesh(smsh, 3, 4); /* Tetrahedra */
+ test_load_mesh(smsh, 3, 3); /* Triangles 3D */
+ test_load_mesh(smsh, 2, 3); /* Triangles 2D */
test_load_fail(smsh);
test_load_files(smsh, argc, argv);