#pragma once #include #include #include "sha-surface-mesh/matmesh.h" #include "sha-volume-mesh/matmesh.h" namespace da::sha { struct NestedCell { sha::MatMesh3 macro_mesh; TetrahedralMatMesh tetrahedrons; std::vector polyhedron_edges; Eigen::AlignedBox3d cell_box; }; class NestedBackgroundMesh { public: explicit NestedBackgroundMesh(const std::vector &nested_cells); auto GetPointLocation(const Eigen::Vector3d &p) -> std::pair const; auto GetPointLocationAlternative(const Eigen::Vector3d &p, const double tol_macro, const double tol_micro)-> std::pair; double ComputeAverageMicroTetEdgeLength() const; double ComputeMinMicroTetEdgeLength() const; public: std::vector nested_cells_; // std::vector micro_cells_; // std::vector macro_triangle_cells_; // std::vector macro_cell_boxes_; }; } // namespace da: