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