33 CartVect( -1, -1, -1 ),
CartVect( 1, -1, -1 ),
CartVect( 1, 1, -1 ),
CartVect( -1, 1, -1 ),
CartVect( -1, -1, 1 ),
36 CartVect( 0, -1, -1 ),
CartVect( 1, 0, -1 ),
CartVect( 0, 1, -1 ),
CartVect( -1, 0, -1 ),
CartVect( -1, -1, 0 ),
37 CartVect( 1, -1, 0 ),
CartVect( 1, 1, 0 ),
CartVect( -1, 1, 0 ),
CartVect( 0, -1, 1 ),
CartVect( 1, 0, 1 ),
40 CartVect( 0, -1, 0 ),
CartVect( 1, 0, 0 ),
CartVect( 0, 1, 0 ),
CartVect( -1, 0, 0 ),
CartVect( 0, 0, -1 ),
45 const double EPS1 = 1.0e-6;
56 for( params[0] = -1; params[0] <= 1; params[0] += 0.2 )
58 for( params[1] = -1; params[1] <= 1; params[1] += 0.2 )
60 for( params[2] = -1; params[2] <= 1; params[2] += 0.2 )
79 if( !test_integrate )
return;
119 for(
int i = 0; i < num_ents; i++ )
125 if( !test_integrate )
return;
126 if( !num_ents || !ents )
CHECK_ERR( MB_FAILURE );
130 double tot_vol = 0.0;
131 for(
int i = 0; i < num_ents; i++ )
162 double tri_verts[] = { -1.0, -1.0, -1.0, 1.0, -1.0, -1.0, -1.0, 1.0, -1.0 };
166 std::vector< EntityHandle > connect;
167 std::copy( verts.
begin(), verts.
end(), std::back_inserter( connect ) );
183 std::vector< EntityHandle > connect;
184 std::copy( verts.
begin(), verts.
end(), std::back_inserter( connect ) );
200 std::vector< EntityHandle > connect;
201 std::copy( verts.
begin(), verts.
end(), std::back_inserter( connect ) );
217 std::vector< EntityHandle > connect;
218 std::copy( verts.
begin(), verts.
end(), std::back_inserter( connect ) );
234 int conn_inds[] = { 1, 6, 4, 5, 1, 4, 6, 3, 0, 1, 3, 4, 1, 2, 3, 6, 3, 4, 6, 7 };
238 for(
unsigned int i = 0; i < 20; i++ )
239 conn[i] = verts[conn_inds[i]];
241 for(
unsigned int i = 0; i < 5; i++ )
242 tets[i] = starth + i;
250 std::vector< double > vals( verts.
size(), 1.0 );
270 for(
int i = 0; i < 4; i++ )
277 for(
int i = 0; i < 4; i++ )
281 double val = nrms[7][0] * nrms[0][0] + nrms[7][1] * nrms[0][1] + nrms[7][2] * nrms[0][2];
286 double val = nrms[2 * i + 1][0] * nrms[2 * ( i + 1 )][0] + nrms[2 * i + 1][1] * nrms[2 * ( i + 1 )][1] +
287 nrms[2 * i + 1][2] * nrms[2 * ( i + 1 )][2];
307 for(
int i = 0; i < 4; i++ )
314 for(
int i = 0; i < 4; i++ )
318 double val = nrms[7][0] * nrms[0][0] + nrms[7][1] * nrms[0][1] + nrms[7][2] * nrms[0][2];
323 double val = nrms[2 * i + 1][0] * nrms[2 * ( i + 1 )][0] + nrms[2 * i + 1][1] * nrms[2 * ( i + 1 )][1] +
324 nrms[2 * i + 1][2] * nrms[2 * ( i + 1 )][2];
344 for(
int i = 0; i < 4; i++ )
351 for(
int i = 0; i < 4; i++ )
355 double val = nrms[7][0] * nrms[0][0] + nrms[7][1] * nrms[0][1] + nrms[7][2] * nrms[0][2];
360 double val = nrms[2 * i + 1][0] * nrms[2 * ( i + 1 )][0] + nrms[2 * i + 1][1] * nrms[2 * ( i + 1 )][1] +
361 nrms[2 * i + 1][2] * nrms[2 * ( i + 1 )][2];
381 for(
int i = 0; i < 4; i++ )
388 for(
int i = 0; i < 4; i++ )
392 double val = nrms[7][0] * nrms[0][0] + nrms[7][1] * nrms[0][1] + nrms[7][2] * nrms[0][2];
397 double val = nrms[2 * i + 1][0] * nrms[2 * ( i + 1 )][0] + nrms[2 * i + 1][1] * nrms[2 * ( i + 1 )][1] +
398 nrms[2 * i + 1][2] * nrms[2 * ( i + 1 )][2];
409 const double coords[] = { 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0, 0, 0, -1, 0 };
410 const size_t num_vtx =
sizeof( coords ) /
sizeof(
double ) / 3;
412 const int conn[] = { 0, 1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 1 };
413 const size_t num_elems =
sizeof( conn ) /
sizeof(
int ) / 3;
416 for(
size_t i = 0; i < num_vtx; ++i )
421 for(
size_t i = 0; i < num_elems; ++i )
424 for(
int j = 0; j < 3; j++ )
425 c[j] = verts[conn[3 * i + j]];
432 const double coords[] = { 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, -1, 1,
433 0, -1, 0, 0, -1, -1, 0, 0, -1, 0, 1, -1, 0 };
434 const size_t num_vtx =
sizeof( coords ) /
sizeof(
double ) / 3;
436 const int conn[] = { 0, 1, 2, 3, 0, 3, 4, 5, 0, 5, 6, 7, 0, 7, 8, 1 };
437 const size_t num_elems =
sizeof( conn ) /
sizeof(
int ) / 4;
440 for(
size_t i = 0; i < num_vtx; ++i )
445 for(
size_t i = 0; i < num_elems; ++i )
448 for(
int j = 0; j < 4; j++ )
449 c[j] = verts[conn[4 * i + j]];
454 else if( type ==
MBTET )
456 const double coords[] = { 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0, 0, 0, -1, 0, 0, 0, 1 };
457 const size_t num_vtx =
sizeof( coords ) /
sizeof(
double ) / 3;
459 const int conn[] = { 0, 1, 2, 5, 0, 2, 3, 5, 0, 3, 4, 5, 0, 4, 1, 5 };
460 const size_t num_elems =
sizeof( conn ) /
sizeof(
int ) / 4;
463 for(
size_t i = 0; i < num_vtx; ++i )
468 for(
size_t i = 0; i < num_elems; ++i )
471 for(
int j = 0; j < 4; j++ )
472 c[j] = verts[conn[4 * i + j]];
477 else if( type ==
MBHEX )
479 const double coords[] = { 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, -1, 1, 0, -1, 0, 0,
480 -1, -1, 0, 0, -1, 0, 1, -1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1,
481 0, 1, 1, -1, 1, 1, -1, 0, 1, -1, -1, 1, 0, -1, 1, 1, -1, 1 };
482 const size_t num_vtx =
sizeof( coords ) /
sizeof(
double ) / 3;
484 const int conn[] = { 0, 1, 2, 3, 9, 10, 11, 12, 0, 3, 4, 5, 9, 12, 13, 14,
485 0, 5, 6, 7, 9, 14, 15, 16, 0, 7, 8, 1, 9, 16, 17, 10 };
486 const size_t num_elems =
sizeof( conn ) /
sizeof(
int ) / 8;
489 for(
size_t i = 0; i < num_vtx; ++i )
494 for(
size_t i = 0; i < num_elems; ++i )
497 for(
int j = 0; j < 8; j++ )
498 c[j] = verts[conn[8 * i + j]];