55#include "MR_rect_tree.hpp"
56#include "MR_cell_cplx.hpp"
57#include "MR_rt_to_cc.hpp"
60typedef mjr::tree15b2d15rT tt_t;
61typedef mjr::MRccT5 cc_t;
62typedef mjr::MR_rt_to_cc<tt_t, cc_t> tc_t;
65tt_t::rrpt_t stripy_shell(tt_t::drpt_t xvec) {
66 double u = std::numbers::pi * xvec[0] + std::numbers::pi + 0.1;
67 double v = std::numbers::pi/2 * xvec[1] + std::numbers::pi/2;
68 double x = u*std::sin(u)*std::cos(v);
69 double y = u*std::cos(u)*std::cos(v);
70 double z = u*std::sin(v);
71 double c = std::fmod(u*sin(v), 2);
72 double dxdu = std::sin(u)*std::cos(v)+u*std::cos(u)*std::cos(v);
73 double dxdv = -u*std::sin(u)*std::sin(v);
74 double dydu = std::cos(u)*std::cos(v)-u*std::sin(u)*std::cos(v);
75 double dydv = -u*std::cos(u)*std::sin(v);
76 double dzdu = std::sin(v);
77 double dzdv = u*std::cos(v);
78 double nx = dydu*dzdv-dydv*dzdu;
79 double ny = dxdv*dzdu-dxdu*dzdv;
80 double nz = dxdu*dydv-dxdv*dydu;
81 return {x, y, z, c, dxdu, dxdv, dydu, dydv, dzdu, dzdv, nx, ny, nz};
86 std::chrono::time_point<std::chrono::system_clock> start_time = std::chrono::system_clock::now();
89 std::chrono::time_point<std::chrono::system_clock> construct_time = std::chrono::system_clock::now();
91 tree.refine_grid(7, stripy_shell);
92 std::chrono::time_point<std::chrono::system_clock> sample_time = std::chrono::system_clock::now();
95 std::chrono::time_point<std::chrono::system_clock> tdump_time = std::chrono::system_clock::now();
97 tc_t::construct_geometry_fans(ccplx,
100 {{tc_t::val_src_spc_t::FRANGE, 0},
101 {tc_t::val_src_spc_t::FRANGE, 1},
102 {tc_t::val_src_spc_t::FRANGE, 2}});
103 std::chrono::time_point<std::chrono::system_clock> fan_time = std::chrono::system_clock::now();
105 ccplx.create_named_datasets({
"u",
"v",
106 "x(u,v)",
"y(u,v)",
"z(u,v)",
108 "dx(u,v)/du",
"dx(u,v)/dv",
"dy(u,v)/du",
"dy(u,v)/dv",
"dz(u,v)/du",
"dz(u,v)/dv",
110 {{
"NORMALS", {12, 13, 14}}});
111 std::chrono::time_point<std::chrono::system_clock> dat_anno_time = std::chrono::system_clock::now();
114 std::chrono::time_point<std::chrono::system_clock> cdump_time = std::chrono::system_clock::now();
116 ccplx.write_xml_vtk(
"performance_with_large_surface.vtu",
"performance_with_large_surface");
117 std::chrono::time_point<std::chrono::system_clock> write_time = std::chrono::system_clock::now();
119 std::cout <<
"construct_time time .. " <<
static_cast<std::chrono::duration<double>
>(construct_time-start_time) <<
" sec" << std::endl;
120 std::cout <<
"sample_time time ..... " <<
static_cast<std::chrono::duration<double>
>(sample_time-construct_time) <<
" sec" << std::endl;
121 std::cout <<
"tree dump time ....... " <<
static_cast<std::chrono::duration<double>
>(tdump_time-sample_time) <<
" sec" << std::endl;
122 std::cout <<
"bridge time .......... " <<
static_cast<std::chrono::duration<double>
>(fan_time-tdump_time) <<
" sec" << std::endl;
123 std::cout <<
"dataset anno time .... " <<
static_cast<std::chrono::duration<double>
>(dat_anno_time-fan_time) <<
" sec" << std::endl;
124 std::cout <<
"complex dump time .... " <<
static_cast<std::chrono::duration<double>
>(cdump_time-dat_anno_time) <<
" sec" << std::endl;
125 std::cout <<
"write_vtk time ....... " <<
static_cast<std::chrono::duration<double>
>(write_time-cdump_time) <<
" sec" << std::endl;
126 std::cout <<
"Total Run _time ...... " <<
static_cast<std::chrono::duration<double>
>(write_time-start_time) <<
" sec" << std::endl;