47#include "MR_rect_tree.hpp"
48#include "MR_cell_cplx.hpp"
49#include "MR_rt_to_cc.hpp"
52typedef mjr::tree15b3d1rT tt_t;
53typedef mjr::MRccT9 cc_t;
54typedef mjr::MR_rt_to_cc<tt_t, cc_t> tc_t;
57tt_t::rrpt_t isf(tt_t::drpt_t xvec) {
61 return x*x-y*y*z*z+z*z*z;
66tt_t::rrpt_t besdf(tt_t::drpt_t xvec) {
80 tree.refine_grid(3, isf);
83 tree.refine_leaves_recursive_cell_pred(6, isf, [&tree](tt_t::diti_t i) {
return (tree.cell_cross_sdf(i, isf)); });
86 tree.refine_leaves_recursive_cell_pred(8, isf, [&tree](tt_t::diti_t i) {
auto x = tree.diti_to_drpt(i);
return (std::abs(x[1])<0.5) && (tree.cell_cross_sdf(i, besdf)); });
89 tree.refine_leaves_recursive_cell_pred(7, isf, [&tree](tt_t::diti_t i) {
return (tree.cell_near_domain_level(i, 2, 0.0, 1.0e-6)); });
92 tree.balance_tree(1, isf);
97 tc_t::construct_geometry_fans(ccplx,
99 tree.get_leaf_cells_pred(tree.ccc_get_top_cell(), [&tree](tt_t::diti_t i) { return (tree.cell_cross_sdf(i, isf)); }),
101 {{tc_t::val_src_spc_t::FDOMAIN, 0},
102 {tc_t::val_src_spc_t::FDOMAIN, 1},
103 {tc_t::val_src_spc_t::FDOMAIN, 2}});
106 ccplx.create_named_datasets({
"x",
"y",
"z",
"f(x,y,z)"});
112 ccplx.write_xml_vtk(
"ear_surface.vtu",
"ear_surface");