MOAB: Mesh Oriented datABase
(version 5.5.0)
|
#include <ctime>
#include <cassert>
#include <iostream>
#include <sstream>
#include "moab/Core.hpp"
#include "moab/ReadUtilIface.hpp"
#include "EntitySequence.hpp"
#include "SequenceManager.hpp"
Go to the source code of this file.
Macros | |
#define | PRINT_SEQUENCE_COUNT |
#define | IS_BUILDING_MB |
#define | ARRSIZE(A) ( sizeof( A ) / sizeof( ( A )[0] ) ) |
Typedefs | |
typedef void(* | naf_t) () |
typedef void(* | iaf_t) (int) |
Functions | |
long * | permutation (long count) |
Generate random permutation of values in [0,count-1]. More... | |
void | init () |
Initialize global variables. More... | |
void | create_vertices_single () |
create vertices one at a time More... | |
void | create_vertices_block () |
create vertices in block using ReadUtilIface More... | |
void | create_elements_single () |
create elements one at a time More... | |
void | create_elements_block () |
create elements in block using ReadUtilIface More... | |
void | forward_order_query_vertices (int percent) |
calculate mean of all vertex coordinates More... | |
void | reverse_order_query_vertices (int percent) |
calculate mean of all vertex coordinates More... | |
void | random_order_query_vertices (int percent) |
calculate mean of all vertex coordinates More... | |
void | forward_order_query_elements (int percent) |
check all element connectivity for valid vertex handles More... | |
void | reverse_order_query_elements (int percent) |
check all element connectivity for valid vertex handles More... | |
void | random_order_query_elements (int percent) |
check all element connectivity for valid vertex handles More... | |
void | forward_order_query_element_verts (int percent) |
calculate centroid More... | |
void | reverse_order_query_element_verts (int percent) |
calculate centroid More... | |
void | random_order_query_element_verts (int percent) |
calculate centroid More... | |
void | forward_order_delete_vertices (int percent) |
delete x% of vertices More... | |
void | reverse_order_delete_vertices (int percent) |
delete x% of vertices More... | |
void | random_order_delete_vertices (int percent) |
delete x% of vertices More... | |
void | forward_order_delete_elements (int percent) |
delete x% of elements More... | |
void | reverse_order_delete_elements (int percent) |
delete x% of elements More... | |
void | random_order_delete_elements (int percent) |
delete x% of elements More... | |
void | create_missing_vertices (int percent) |
re-create deleted vertices More... | |
void | create_missing_elements (int percent) |
re-create deleted elements More... | |
unsigned | get_number_sequences (EntityType type) |
void | vertex_coords (long vert_index, double &x, double &y, double &z) |
Coordinates for ith vertex in structured hex mesh. More... | |
void | element_conn (long elem_index, EntityHandle conn[8]) |
Connectivity for ith hex in structured hex mesh. More... | |
bool | deleted_vert (long index, int percent) |
True if passed index is one of the x% to be deleted. More... | |
bool | deleted_elem (long index, int percent) |
True if passed index is one of the x% to be deleted. More... | |
void | delete_vert (long index, int percent) |
if (deleted_vert(index,percent)) delete vertex More... | |
void | delete_elem (long index, int percent) |
if (deleted_elem(index,percent)) delete element More... | |
void | usage () |
print usage and exit More... | |
std::string | ts (clock_t t) |
convert CPU time to string More... | |
void | TIME (const char *str, void(*func)()) |
run function, printing time spent More... | |
void | TIME_QRY (const char *str, void(*func)(int percent), int percent) |
run function query_repeat times, printing time spent More... | |
void | TIME_DEL (const char *str, void(*func)(int), int percent) |
run function with integer argument, printing time spent More... | |
void | delete_mesh () |
call MB::delete_mesh(). function so can be passed to TIME More... | |
void | do_test (int create_mode, int order, int percent) |
Run a single combination of test parameters. More... | |
void | parse_order (const char *str, std::vector< int > &list) |
void | parse_percent (const char *str, std::vector< int > &list) |
int | parse_positive_int (const char *str) |
void | check_default (std::vector< int > &list, const int *array, size_t array_len) |
int | main (int argc, char *argv[]) |
long | vert_index (long x, long y, long z) |
Variables | |
const bool | dump_mesh = false |
write mesh to vtk file More... | |
const int | default_intervals = 25 |
defaul interval count for cubic structured hex mesh More... | |
const int | default_query_count = 100 |
number of times to do each query set More... | |
const int | default_order [] = { 0, 1, 2 } |
const int | default_create [] = { 0, 1 } |
const int | default_delete [] = { 0, 10, 30, 50, 70, 90 } |
long | numSideInt |
long | numVert |
long | numElem |
total counts; More... | |
int | queryCount |
number of times to do each query set More... | |
Core | mb_core |
moab instance More... | |
Interface & | mb = mb_core |
moab instance More... | |
EntityHandle | vertStart |
EntityHandle | elemStart |
first handle More... | |
ReadUtilIface * | readTool = 0 |
long * | queryVertPermutation = 0 |
pupulated by init(): "random" order for vertices More... | |
long * | queryElemPermutation = 0 |
pupulated by init(): "random" order for elements More... | |
iaf_t | query_verts [3] = { &forward_order_query_vertices, &reverse_order_query_vertices, &random_order_query_vertices } |
iaf_t | query_elems [3] = { &forward_order_query_elements, &reverse_order_query_elements, &random_order_query_elements } |
iaf_t | query_elem_verts [3] |
iaf_t | delete_verts [3] |
iaf_t | delete_elems [3] |
const char * | order_strs [] = { "Forward", "Reverse", "Random" } |
#define ARRSIZE | ( | A | ) | ( sizeof( A ) / sizeof( ( A )[0] ) ) |
Definition at line 31 of file seqperf.cpp.
#define IS_BUILDING_MB |
Definition at line 12 of file seqperf.cpp.
#define PRINT_SEQUENCE_COUNT |
Definition at line 8 of file seqperf.cpp.
typedef void( * iaf_t) (int) |
Definition at line 120 of file seqperf.cpp.
typedef void( * naf_t) () |
Definition at line 119 of file seqperf.cpp.
void check_default | ( | std::vector< int > & | list, |
const int * | array, | ||
size_t | array_len | ||
) |
void create_elements_block | ( | ) |
create elements in block using ReadUtilIface
Definition at line 486 of file seqperf.cpp.
References element_conn(), elemStart, ErrorCode, moab::ReadUtilIface::get_element_connect(), MBHEX, numElem, and readTool.
Referenced by do_test().
void create_elements_single | ( | ) |
create elements one at a time
Definition at line 465 of file seqperf.cpp.
References moab::Interface::create_element(), element_conn(), elemStart, ErrorCode, mb, MBHEX, and numElem.
Referenced by do_test().
void create_missing_elements | ( | int | percent | ) |
re-create deleted elements
Definition at line 804 of file seqperf.cpp.
References moab::Interface::create_element(), deleted_elem(), element_conn(), ErrorCode, mb, MBHEX, and numElem.
Referenced by do_test().
void create_missing_vertices | ( | int | percent | ) |
re-create deleted vertices
Definition at line 787 of file seqperf.cpp.
References moab::Interface::create_vertex(), deleted_vert(), ErrorCode, mb, MB_SUCCESS, numVert, and vertex_coords().
Referenced by do_test().
void create_vertices_block | ( | ) |
create vertices in block using ReadUtilIface
Definition at line 449 of file seqperf.cpp.
References ErrorCode, moab::ReadUtilIface::get_node_coords(), numVert, readTool, vertex_coords(), and vertStart.
Referenced by do_test().
void create_vertices_single | ( | ) |
create vertices one at a time
Definition at line 429 of file seqperf.cpp.
References moab::Interface::create_vertex(), ErrorCode, mb, numVert, vertex_coords(), and vertStart.
Referenced by do_test().
|
inline |
if (deleted_elem(index,percent)) delete element
Definition at line 836 of file seqperf.cpp.
References moab::Interface::delete_entities(), deleted_elem(), elemStart, ErrorCode, and mb.
Referenced by forward_order_delete_elements(), random_order_delete_elements(), and reverse_order_delete_elements().
void delete_mesh | ( | ) |
call MB::delete_mesh(). function so can be passed to TIME
Definition at line 206 of file seqperf.cpp.
References moab::Interface::delete_mesh(), and mb.
Referenced by do_test().
|
inline |
if (deleted_vert(index,percent)) delete vertex
Definition at line 822 of file seqperf.cpp.
References moab::Interface::delete_entities(), deleted_vert(), ErrorCode, mb, and vertStart.
Referenced by forward_order_delete_vertices(), random_order_delete_vertices(), and reverse_order_delete_vertices().
|
inline |
True if passed index is one of the x% to be deleted.
Definition at line 424 of file seqperf.cpp.
References numSideInt.
Referenced by create_missing_elements(), delete_elem(), random_order_query_element_verts(), and random_order_query_elements().
|
inline |
True if passed index is one of the x% to be deleted.
Definition at line 419 of file seqperf.cpp.
References numSideInt.
Referenced by create_missing_vertices(), delete_vert(), and random_order_query_vertices().
void do_test | ( | int | create_mode, |
int | order, | ||
int | percent | ||
) |
Run a single combination of test parameters.
create_mode | 0 == single, 1 == block |
order | 0 == forward, 1 == reverse, 2 == random |
percent | percent of entities to delete |
Definition at line 212 of file seqperf.cpp.
References create_elements_block(), create_elements_single(), create_missing_elements(), create_missing_vertices(), create_vertices_block(), create_vertices_single(), delete_elems, delete_mesh(), delete_verts, dump_mesh, moab::Interface::get_number_entities_by_type(), get_number_sequences(), mb, MB_SUCCESS, MBHEX, MBVERTEX, order_strs, query_elem_verts, query_elems, query_verts, t, TIME(), TIME_DEL(), TIME_QRY(), ts(), and moab::Interface::write_file().
Referenced by main().
|
inline |
Connectivity for ith hex in structured hex mesh.
Definition at line 404 of file seqperf.cpp.
References numSideInt, vert_index(), and vertStart.
Referenced by moab::HigherOrderFactory::add_center_node(), create_elements_block(), create_elements_single(), and create_missing_elements().
void forward_order_delete_elements | ( | int | percent | ) |
delete x% of elements
Definition at line 769 of file seqperf.cpp.
References delete_elem(), and numElem.
void forward_order_delete_vertices | ( | int | percent | ) |
delete x% of vertices
Definition at line 751 of file seqperf.cpp.
References delete_vert(), and numVert.
void forward_order_query_element_verts | ( | int | percent | ) |
calculate centroid
Definition at line 667 of file seqperf.cpp.
References elemStart, ErrorCode, moab::Interface::get_connectivity(), moab::Interface::get_coords(), mb, MB_SUCCESS, and numSideInt.
void forward_order_query_elements | ( | int | percent | ) |
check all element connectivity for valid vertex handles
Definition at line 571 of file seqperf.cpp.
References elemStart, ErrorCode, moab::Interface::get_connectivity(), mb, MB_SUCCESS, and numSideInt.
void forward_order_query_vertices | ( | int | percent | ) |
calculate mean of all vertex coordinates
Definition at line 500 of file seqperf.cpp.
References ErrorCode, moab::Interface::get_coords(), mb, MB_SUCCESS, numSideInt, and vertStart.
unsigned get_number_sequences | ( | EntityType | type | ) |
Definition at line 851 of file seqperf.cpp.
References moab::SequenceManager::entity_map(), moab::TypeSequenceManager::get_sequence_count(), mb_core, and moab::Core::sequence_manager().
Referenced by do_test().
void init | ( | ) |
Initialize global variables.
Definition at line 72 of file seqperf.cpp.
References ErrorCode, mb, numElem, numVert, permutation(), moab::Interface::query_interface(), queryElemPermutation, queryVertPermutation, and readTool.
Referenced by main().
int main | ( | int | argc, |
char * | argv[] | ||
) |
Definition at line 307 of file seqperf.cpp.
References ARRSIZE, check_default(), default_create, default_delete, default_intervals, default_order, default_query_count, do_test(), init(), numElem, numSideInt, numVert, parse_order(), parse_percent(), parse_positive_int(), queryCount, queryElemPermutation, queryVertPermutation, t, ts(), and usage().
void parse_order | ( | const char * | str, |
std::vector< int > & | list | ||
) |
void parse_percent | ( | const char * | str, |
std::vector< int > & | list | ||
) |
int parse_positive_int | ( | const char * | str | ) |
long* permutation | ( | long | count | ) |
Generate random permutation of values in [0,count-1].
Definition at line 46 of file seqperf.cpp.
Referenced by init().
void random_order_delete_elements | ( | int | percent | ) |
delete x% of elements
Definition at line 781 of file seqperf.cpp.
References delete_elem(), numElem, and queryElemPermutation.
void random_order_delete_vertices | ( | int | percent | ) |
delete x% of vertices
Definition at line 763 of file seqperf.cpp.
References delete_vert(), numVert, and queryVertPermutation.
void random_order_query_element_verts | ( | int | percent | ) |
calculate centroid
Definition at line 729 of file seqperf.cpp.
References deleted_elem(), elemStart, ErrorCode, moab::Interface::get_connectivity(), moab::Interface::get_coords(), mb, MB_SUCCESS, numElem, and queryElemPermutation.
void random_order_query_elements | ( | int | percent | ) |
check all element connectivity for valid vertex handles
Definition at line 626 of file seqperf.cpp.
References deleted_elem(), elemStart, ErrorCode, moab::Interface::get_connectivity(), mb, MB_SUCCESS, numElem, and queryElemPermutation.
void random_order_query_vertices | ( | int | percent | ) |
calculate mean of all vertex coordinates
Definition at line 552 of file seqperf.cpp.
References deleted_vert(), ErrorCode, moab::Interface::get_coords(), mb, MB_SUCCESS, numVert, queryVertPermutation, and vertStart.
void reverse_order_delete_elements | ( | int | percent | ) |
delete x% of elements
Definition at line 775 of file seqperf.cpp.
References delete_elem(), and numElem.
void reverse_order_delete_vertices | ( | int | percent | ) |
delete x% of vertices
Definition at line 757 of file seqperf.cpp.
References delete_vert(), and numVert.
void reverse_order_query_element_verts | ( | int | percent | ) |
calculate centroid
Definition at line 697 of file seqperf.cpp.
References elemStart, ErrorCode, moab::Interface::get_connectivity(), moab::Interface::get_coords(), mb, MB_SUCCESS, numElem, and numSideInt.
void reverse_order_query_elements | ( | int | percent | ) |
check all element connectivity for valid vertex handles
Definition at line 598 of file seqperf.cpp.
References elemStart, ErrorCode, moab::Interface::get_connectivity(), mb, MB_SUCCESS, numElem, and numSideInt.
void reverse_order_query_vertices | ( | int | percent | ) |
calculate mean of all vertex coordinates
Definition at line 526 of file seqperf.cpp.
References ErrorCode, moab::Interface::get_coords(), mb, MB_SUCCESS, numSideInt, numVert, and vertStart.
void TIME | ( | const char * | str, |
void(*)() | func | ||
) |
void TIME_DEL | ( | const char * | str, |
void(*)(int) | func, | ||
int | percent | ||
) |
run function with integer argument, printing time spent
Definition at line 197 of file seqperf.cpp.
Referenced by do_test().
void TIME_QRY | ( | const char * | str, |
void(*)(int percent) | func, | ||
int | percent | ||
) |
run function query_repeat times, printing time spent
Definition at line 187 of file seqperf.cpp.
References queryCount, t, and ts().
Referenced by do_test().
std::string ts | ( | clock_t | t | ) |
convert CPU time to string
Definition at line 170 of file seqperf.cpp.
References t.
Referenced by do_test(), moab::HiReconstruction::eval_vander_bivar_cmf(), moab::HiReconstruction::eval_vander_univar_cmf(), main(), obbstat_write(), moab::DGMSolver::rescale_matrix(), TIME(), TIME_DEL(), and TIME_QRY().
void usage | ( | ) |
print usage and exit
Definition at line 151 of file seqperf.cpp.
References ARRSIZE, default_delete, default_intervals, and default_query_count.
Referenced by main(), parse_order(), parse_percent(), and parse_positive_int().
|
inline |
Definition at line 398 of file seqperf.cpp.
References numSideInt.
Referenced by element_conn(), moab::ReadNASTRAN::load_file(), and vertex_coords().
|
inline |
Coordinates for ith vertex in structured hex mesh.
Definition at line 390 of file seqperf.cpp.
References numSideInt, and vert_index().
Referenced by create_missing_vertices(), create_vertices_block(), create_vertices_single(), main(), setup_mesh(), and test_build_from_pts().
const int default_create[] = { 0, 1 } |
Definition at line 29 of file seqperf.cpp.
Referenced by main().
const int default_delete[] = { 0, 10, 30, 50, 70, 90 } |
Definition at line 30 of file seqperf.cpp.
const int default_intervals = 25 |
defaul interval count for cubic structured hex mesh
Definition at line 26 of file seqperf.cpp.
const int default_order[] = { 0, 1, 2 } |
Definition at line 28 of file seqperf.cpp.
Referenced by main().
const int default_query_count = 100 |
number of times to do each query set
Definition at line 27 of file seqperf.cpp.
iaf_t delete_elems[3] |
Definition at line 132 of file seqperf.cpp.
Referenced by do_test().
iaf_t delete_verts[3] |
Definition at line 129 of file seqperf.cpp.
Referenced by do_test().
const bool dump_mesh = false |
EntityHandle elemStart |
first handle
Definition at line 40 of file seqperf.cpp.
Referenced by create_elements_block(), create_elements_single(), delete_elem(), forward_order_query_element_verts(), forward_order_query_elements(), random_order_query_element_verts(), random_order_query_elements(), reverse_order_query_element_verts(), and reverse_order_query_elements().
moab instance
Definition at line 39 of file seqperf.cpp.
Referenced by create_elements_single(), create_missing_elements(), create_missing_vertices(), create_vertices_single(), delete_elem(), delete_mesh(), delete_vert(), do_test(), forward_order_query_element_verts(), forward_order_query_elements(), forward_order_query_vertices(), init(), random_order_query_element_verts(), random_order_query_elements(), random_order_query_vertices(), reverse_order_query_element_verts(), reverse_order_query_elements(), and reverse_order_query_vertices().
Core mb_core |
moab instance
Definition at line 38 of file seqperf.cpp.
Referenced by get_number_sequences(), and main().
long numElem |
total counts;
Definition at line 34 of file seqperf.cpp.
Referenced by create_elements_block(), create_elements_single(), create_missing_elements(), forward_order_delete_elements(), init(), main(), random_order_delete_elements(), random_order_query_element_verts(), random_order_query_elements(), reverse_order_delete_elements(), reverse_order_query_element_verts(), and reverse_order_query_elements().
long numSideInt |
Definition at line 34 of file seqperf.cpp.
Referenced by deleted_elem(), deleted_vert(), element_conn(), forward_order_query_element_verts(), forward_order_query_elements(), forward_order_query_vertices(), main(), reverse_order_query_element_verts(), reverse_order_query_elements(), reverse_order_query_vertices(), vert_index(), and vertex_coords().
long numVert |
Definition at line 34 of file seqperf.cpp.
Referenced by create_missing_vertices(), create_vertices_block(), create_vertices_single(), forward_order_delete_vertices(), init(), main(), random_order_delete_vertices(), random_order_query_vertices(), reverse_order_delete_vertices(), and reverse_order_query_vertices().
const char* order_strs[] = { "Forward", "Reverse", "Random" } |
Definition at line 135 of file seqperf.cpp.
Referenced by do_test().
iaf_t query_elem_verts[3] |
iaf_t query_elems[3] = { &forward_order_query_elements, &reverse_order_query_elements, &random_order_query_elements } |
Definition at line 124 of file seqperf.cpp.
Referenced by do_test().
iaf_t query_verts[3] = { &forward_order_query_vertices, &reverse_order_query_vertices, &random_order_query_vertices } |
Definition at line 122 of file seqperf.cpp.
Referenced by do_test().
int queryCount |
number of times to do each query set
Definition at line 35 of file seqperf.cpp.
Referenced by main(), and TIME_QRY().
long* queryElemPermutation = 0 |
pupulated by init(): "random" order for elements
Definition at line 43 of file seqperf.cpp.
Referenced by init(), main(), random_order_delete_elements(), random_order_query_element_verts(), and random_order_query_elements().
long* queryVertPermutation = 0 |
pupulated by init(): "random" order for vertices
Definition at line 42 of file seqperf.cpp.
Referenced by init(), main(), random_order_delete_vertices(), and random_order_query_vertices().
ReadUtilIface* readTool = 0 |
Definition at line 41 of file seqperf.cpp.
Referenced by create_elements_block(), create_vertices_block(), and init().
EntityHandle vertStart |
Definition at line 40 of file seqperf.cpp.
Referenced by create_vertices_block(), create_vertices_single(), delete_vert(), element_conn(), forward_order_query_vertices(), random_order_query_vertices(), and reverse_order_query_vertices().