51 std::cout <<
"PROGRAM: START" << std::endl;
52 std::chrono::time_point<std::chrono::system_clock> program_start_time = std::chrono::system_clock::now();
56 aPoly.create_dataset_to_point_mapping({0, 1, 2});
57 aPoly.create_named_datasets({
"x",
"y",
"z",
"za",
"xyMag",
"xyzMag",
"dir"});
59 const int num_tri = 20000;
60 const double tri_siz = 0.07;
61 const double x_min = -2.1;
62 const double x_max = 2.1;
63 const double y_min = -2.1;
64 const double y_max = 2.1;
66 std::random_device rd;
67 std::mt19937 rEng(rd());
68 std::uniform_real_distribution<double> x_uniform_dist_float(x_min, x_max);
69 std::uniform_real_distribution<double> y_uniform_dist_float(y_min, y_max);
70 std::uniform_real_distribution<double> siz_uniform_dist_float(-tri_siz, tri_siz);
72 std::cout <<
"SAMPLE: START" << std::endl;
73 std::chrono::time_point<std::chrono::system_clock> sample_start_time = std::chrono::system_clock::now();
74 for(
int i=0; i<num_tri; i++) {
75 double xc = x_uniform_dist_float(rEng);
76 double yc = y_uniform_dist_float(rEng);
78 double x1 = xc + siz_uniform_dist_float(rEng);
79 double y1 = yc + siz_uniform_dist_float(rEng);
80 double z1 =
f(x1, y1);
81 double x2 = xc + siz_uniform_dist_float(rEng);
82 double y2 = yc + siz_uniform_dist_float(rEng);
83 double z2 =
f(x2, y2);
84 double x3 = xc + siz_uniform_dist_float(rEng);
85 double y3 = yc + siz_uniform_dist_float(rEng);
86 double z3 =
f(x3, y3);
88 double xa = (x1+x2+x3)/3;
89 double ya = (y1+y2+y3)/3;
90 double za = (z1+z2+z3)/3;
92 double xy_mag = std::sqrt(xa*xa+ya*ya);
93 double xyz_mag = std::sqrt(xa*xa+ya*ya+za*za);
95 mjr::MRccT5::node_idx_t p1i = aPoly.add_node({x1, y1, z1, za, xy_mag, xyz_mag});
96 mjr::MRccT5::node_idx_t p2i = aPoly.add_node({x2, y2, z2, za, xy_mag, xyz_mag});
97 mjr::MRccT5::node_idx_t p3i = aPoly.add_node({x3, y3, z3, za, xy_mag, xyz_mag});
99 aPoly.add_cell(mjr::MRccT5::cell_kind_t::TRIANGLE, {p1i, p2i, p3i});
102 std::cout <<
"SAMPLE: Total Points: " << aPoly.node_count() << std::endl;
103 std::cout <<
"SAMPLE: Total Cells: " << aPoly.num_cells() << std::endl;
105 std::chrono::duration<double> sample_run_time = std::chrono::system_clock::now() - sample_start_time;
106 std::cout <<
"SAMPLE: Total Runtime " << sample_run_time.count() <<
" sec" << std::endl;
107 std::cout <<
"SAMPLE: END" << std::endl;
109 std::cout <<
"XML WRITE: START" << std::endl;
110 std::chrono::time_point<std::chrono::system_clock> xwrite_start_time = std::chrono::system_clock::now();
111 int xwrite_result = aPoly.write_xml_vtk(
"holy_wave_surf.vtu",
"holy_wave_surf");
112 std::chrono::duration<double> xwrite_run_time = std::chrono::system_clock::now() - xwrite_start_time;
113 std::cout <<
"XML WRITE: Total Runtime " << xwrite_run_time.count() <<
" sec" << std::endl;
114 std::cout <<
"XML WRITE: END -- " << (xwrite_result != 0 ?
"BAD" :
"GOOD") << std::endl;
116 std::chrono::duration<double> program_run_time = std::chrono::system_clock::now() - program_start_time;
117 std::cout <<
"PROGRAM: Total Runtime " << program_run_time.count() <<
" sec" << std::endl;
118 std::cout <<
"PROGRAM: END" << std::endl;