You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
981 B
35 lines
981 B
#pragma once
|
|
|
|
#include <utility>
|
|
#include <vector>
|
|
#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<Eigen::MatrixXd> polyhedron_edges;
|
|
Eigen::AlignedBox3d cell_box;
|
|
};
|
|
|
|
class NestedBackgroundMesh {
|
|
public:
|
|
explicit NestedBackgroundMesh(const std::vector<NestedCell> &nested_cells);
|
|
|
|
auto GetPointLocation(const Eigen::Vector3d &p) -> std::pair<int, int> const;
|
|
|
|
auto GetPointLocationAlternative(const Eigen::Vector3d &p, const double tol_macro,
|
|
const double tol_micro)-> std::pair<int, int>;
|
|
|
|
double ComputeAverageMicroTetEdgeLength() const;
|
|
|
|
double ComputeMinMicroTetEdgeLength() const;
|
|
|
|
public:
|
|
std::vector<NestedCell> nested_cells_;
|
|
// std::vector<TetrahedralMatMesh> micro_cells_;
|
|
// std::vector<MatMesh3> macro_triangle_cells_;
|
|
// std::vector<Eigen::AlignedBox3d> macro_cell_boxes_;
|
|
};
|
|
} // namespace da:
|
|
|