11 #include "../TestUtil.hpp"
44 unsigned long long total_storage;
56 unsigned long long entity_storage;
57 unsigned long long amortized_entity_storage;
74 if(
rank == 0 ) std::cout <<
"Success";
76 std::cout <<
"Success";
82 std::cout <<
"Failure";
95 double time_start, time_avg, time_total;
98 Range inverts, inedges, infaces, incells;
111 else if( infaces.
size() )
116 else if( incells.
size() )
122 std::cout << std::endl;
123 std::cout <<
"Initial Mesh Size: "
124 <<
"NV = " << inverts.
size() <<
", NE = " << init_ents.
size() << std::endl;
144 unsigned long long vTotS, vTAS, vES, vAES, vAS, vAAS, vTS, vATS;
145 vTotS = vTAS = vES = vAES = vAS = vAAS = vTS = vATS = 0;
146 mbImpl->
estimated_memory_use( inverts, &vTotS, &vTAS, &vES, &vAES, &vAS, &vAAS, NULL, 0, &vTS, &vATS );
148 unsigned long long eTotS, eTAS, eES, eAES, eAS, eAAS, eTS, eATS;
149 eTotS = eTAS = eES = eAES = eAS = eAAS = eTS = eATS = 0;
150 mbImpl->
estimated_memory_use( init_ents, &eTotS, &eTAS, &eES, &eAES, &eAS, &eAAS, NULL, 0, &eTS, &eATS );
157 std::cout <<
"MEMORY STORAGE:: Initial Mesh" << std::endl;
158 std::cout << std::endl;
159 std::cout <<
"Total storage = " << umem[0].
total_storage << std::endl;
160 std::cout <<
"Vertex storage = " << umem[0].
vertex_storage << std::endl;
161 std::cout <<
"Entity storage = " << umem[0].
entity_storage << std::endl;
172 std::cout << std::endl;
176 std::cout <<
"Creating a hm object" << std::endl;
178 std::vector< EntityHandle > set;
180 std::cout <<
"Starting hierarchy generation" << std::endl;
185 std::cout <<
"Finished hierarchy generation" << std::endl;
189 std::cout <<
"Total time in secs:: generate mesh hierarchy:: L = " << num_levels <<
" :: " << time_total
191 std::cout << std::endl;
195 for(
int l = 0; l < num_levels; l++ )
202 std::cout <<
"Mesh size for level " << l + 1 <<
" :: deg = " << level_degrees[l] <<
" :: NV = " << verts.
size()
203 <<
", NE = " << ents.
size() << std::endl;
208 std::cout << std::endl;
209 unsigned long long vTotS, vTAS, vES, vAES, vAS, vAAS, vTS, vATS;
210 vTotS = vTAS = vES = vAES = vAS = vAAS = vTS = vATS = 0;
211 mbImpl->
estimated_memory_use( verts, &vTotS, &vTAS, &vES, &vAES, &vAS, &vAAS, NULL, 0, &vTS, &vATS );
212 unsigned long long eTotS, eTAS, eES, eAES, eAS, eAAS, eTS, eATS;
213 eTotS = eTAS = eES = eAES = eAS = eAAS = eTS = eATS = 0;
214 mbImpl->
estimated_memory_use( ents, &eTotS, &eTAS, &eES, &eAES, &eAS, &eAAS, NULL, 0, &eTS, &eATS );
230 std::cout <<
"MEMORY STORAGE:: Mesh level " << l + 1 << std::endl;
231 std::cout << std::endl;
232 std::cout <<
"Total storage = " << umem[l + 1].
total_storage << std::endl;
233 std::cout <<
"Vertex storage = " << umem[l + 1].
vertex_storage << std::endl;
234 std::cout <<
"Entity storage = " << umem[l + 1].
entity_storage << std::endl;
246 std::cout << std::endl;
260 time_avg = time_total / (double)verts.
size();
262 std::cout <<
"Class NR :: OPERATION:: get_coordinates"
263 <<
" :: Time_total = " << time_total <<
" :: Time_avg = " << time_avg << std::endl;
273 time_avg = time_total / (double)verts.
size();
275 std::cout <<
"Class Core :: OPERATION:: get_coordinates"
276 <<
" :: Time_total = " << time_total <<
" :: Time_avg = " << time_avg << std::endl;
282 std::vector< EntityHandle > conn;
286 time_avg = time_total / (double)ents.
size();
287 std::cout << std::endl;
288 std::cout <<
"Class NR :: OPERATION:: get_connectivity"
289 <<
" :: Time_total = " << time_total <<
" :: Time_avg = " << time_avg << std::endl;
294 std::vector< EntityHandle > conn;
298 time_avg = time_total / (double)ents.
size();
300 std::cout <<
"Class Core :: OPERATION:: get_connectivity"
301 <<
" :: Time_total = " << time_total <<
" :: Time_avg = " << time_avg << std::endl;
302 std::cout << std::endl;
344 const double coords[] = { 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0,
345 4, 1, 0, 3, 1, 0, 2, 1, 0, 1, 1, 0, 0, 1, 0 };
346 const size_t num_vtx =
sizeof( coords ) /
sizeof(
double ) / 3;
348 const int conn[] = { 1, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 0 };
349 const size_t num_elems =
sizeof( conn ) /
sizeof(
int ) / 2;
352 for(
size_t i = 0; i < num_vtx; ++i )
358 for(
size_t i = 0; i < num_elems; ++i )
361 c[0] = verts[conn[2 * i]];
362 c[1] = verts[conn[2 * i + 1]];
368 else if( type ==
MBTRI )
370 const double coords[] = { 0, 0, 0, 1, 0, 0, 2, 0, 0, 2.5, 1, 0, 1.5, 1, 0, 0.5, 1,
371 0, -0.5, 1, 0, -0.5, -1, 0, 0.5, -1, 0, 1.5, -1, 0, 2.5, -1, 0 };
373 const size_t num_vtx =
sizeof( coords ) /
sizeof(
double ) / 3;
375 const int conn[] = { 0, 5, 6, 0, 1, 5, 1, 4, 5, 1, 2, 4, 2, 3, 4,
376 7, 8, 0, 8, 1, 0, 8, 9, 1, 9, 2, 1, 9, 10, 2 };
378 const size_t num_elems =
sizeof( conn ) /
sizeof(
int ) / 3;
381 for(
size_t i = 0; i < num_vtx; ++i )
387 for(
size_t i = 0; i < num_elems; ++i )
390 for(
int j = 0; j < 3; j++ )
391 c[j] = verts[conn[3 * i + j]];
399 const double coords[] = { 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 5, 0, 0, 0, 1, 0, 1, 1, 0, 2, 1, 0,
400 3, 1, 0, 4, 1, 0, 5, 1, 0, 0, 2, 0, 1, 2, 0, 2, 2, 0, 3, 2, 0, 4, 2, 0, 5, 2, 0 };
402 const size_t num_vtx =
sizeof( coords ) /
sizeof(
double ) / 3;
404 const int conn[] = { 0, 1, 7, 6, 1, 2, 8, 7, 2, 3, 9, 8, 3, 4, 10, 9, 4, 5, 11, 10,
405 6, 7, 13, 12, 7, 8, 14, 13, 8, 9, 15, 14, 9, 10, 16, 15, 10, 11, 17, 16 };
407 const size_t num_elems =
sizeof( conn ) /
sizeof(
int ) / 4;
410 for(
size_t i = 0; i < num_vtx; ++i )
416 for(
size_t i = 0; i < num_elems; ++i )
419 for(
int j = 0; j < 4; j++ )
420 c[j] = verts[conn[4 * i + j]];
426 else if( type ==
MBTET )
428 const double coords[] = { 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0, 0, 0, -1, 0, 0, 0, 1 };
430 const size_t num_vtx =
sizeof( coords ) /
sizeof(
double ) / 3;
432 const int conn[] = { 0, 1, 2, 5, 3, 0, 2, 5, 4, 1, 0, 5, 4, 0, 3, 5 };
434 const size_t num_elems =
sizeof( conn ) /
sizeof(
int ) / 4;
437 for(
size_t i = 0; i < num_vtx; ++i )
443 for(
size_t i = 0; i < num_elems; ++i )
446 for(
int j = 0; j < 4; j++ )
447 c[j] = verts[conn[4 * i + j]];
453 else if( type ==
MBHEX )
455 const double coords[] = { 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 1, 0, 1, 1, 0, 2, 1, 0, 0, 2, 0, 1, 2, 0, 2, 2, 0,
456 0, 0, 1, 1, 0, 1, 2, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 1, 0, 2, 1, 1, 2, 1, 2, 2, 1 };
457 const size_t num_vtx =
sizeof( coords ) /
sizeof(
double ) / 3;
459 const int conn[] = { 0, 1, 4, 3, 9, 10, 13, 12, 1, 2, 5, 4, 10, 11, 14, 13,
460 3, 4, 7, 6, 12, 13, 16, 15, 4, 5, 8, 7, 13, 14, 17, 16 };
461 const size_t num_elems =
sizeof( conn ) /
sizeof(
int ) / 8;
464 for(
size_t i = 0; i < num_vtx; ++i )
470 for(
size_t i = 0; i < num_elems; ++i )
473 for(
int j = 0; j < 8; j++ )
474 c[j] = verts[conn[8 * i + j]];
501 std::cout << std::endl;
502 std::cout <<
"EntityType = MBEDGE" << std::endl;
504 std::cout <<
"Deg = 2" << std::endl;
505 int deg[7] = { 5, 5, 2, 2, 2, 2, 2 };
506 int len =
sizeof( deg ) /
sizeof(
int );
510 std::cout << std::endl;
511 std::cout <<
"Deg = 3" << std::endl;
518 std::cout << std::endl;
519 std::cout <<
"Deg = 5" << std::endl;
532 EntityType type =
MBTRI;
533 std::cout << std::endl;
534 std::cout <<
"EntityType = MBTRI" << std::endl;
536 std::cout <<
"Deg = 2" << std::endl;
537 int deg[5] = { 5, 2, 2, 2, 2 };
538 int len =
sizeof( deg ) /
sizeof(
int );
542 std::cout << std::endl;
543 std::cout <<
"Deg = 3" << std::endl;
550 std::cout << std::endl;
551 std::cout <<
"Deg = 5" << std::endl;
559 std::cout << std::endl;
560 std::cout <<
"EntityType = MBQUAD" << std::endl;
562 std::cout <<
"Deg = 2" << std::endl;
569 std::cout << std::endl;
570 std::cout <<
"Deg = 3" << std::endl;
577 std::cout << std::endl;
578 std::cout <<
"Deg = 5" << std::endl;
591 EntityType type =
MBTET;
592 std::cout << std::endl;
593 std::cout <<
"EntityType = MBTET" << std::endl;
595 std::cout <<
"Deg = 2" << std::endl;
596 int deg[6] = { 2, 2, 2, 2, 2, 2 };
597 int len =
sizeof( deg ) /
sizeof(
int );
601 std::cout << std::endl;
602 std::cout <<
"Deg = 3" << std::endl;
610 std::cout << std::endl;
611 std::cout <<
"EntityType = MBHEX" << std::endl;
613 std::cout <<
"Deg = 2" << std::endl;
620 std::cout << std::endl;
621 std::cout <<
"Deg = 3" << std::endl;
643 read_options =
"PARALLEL=READ_PART;PARTITION=PARALLEL_PARTITION;PARALLEL_RESOLVE_SHARED_ENTS;";
647 else if( procs == 1 )
661 int main(
int argc,
char* argv[] )
665 MPI_Init( &argc, &argv );
673 if(
rank == 0 ) std::cout <<
" para_umr_perf: ";
675 std::cout <<
"umr_perf:";
704 int deg[3] = { 2, 2, 2 };
705 int len =
sizeof( deg ) /
sizeof(
int );
724 for(
int L = 0; L < 3; L++ )
726 int* level_degrees =
new int[L + 1];
727 for(
int i = 0; i < L + 1; i++ )
729 level_degrees[i] = 3;
736 delete[] level_degrees;
742 std::cerr <<
"Usage: " << argv[0] <<
" [filename]" << std::endl;