PolyFEM
Loading...
Searching...
No Matches
polyfem::mesh::MeshProcessing3D Namespace Reference

Functions

void build_connectivity (Mesh3DStorage &hmi)
 
void reorder_hex_mesh_propogation (Mesh3DStorage &hmi)
 
bool scaled_jacobian (Mesh3DStorage &hmi, Mesh_Quality &mq)
 
double a_jacobian (Eigen::Vector3d &v0, Eigen::Vector3d &v1, Eigen::Vector3d &v2, Eigen::Vector3d &v3)
 
void global_orientation_hexes (Mesh3DStorage &hmi)
 
void refine_catmul_clark_polar (Mesh3DStorage &M, int iter, bool reverse, std::vector< int > &Parents)
 
void refine_red_refinement_tet (Mesh3DStorage &M, int iter)
 
void straight_sweeping (const Mesh3DStorage &Mi, int sweep_coord, double height, int nlayer, Mesh3DStorage &Mo)
 
void orient_surface_mesh (Mesh3DStorage &hmi)
 
void orient_volume_mesh (Mesh3DStorage &hmi)
 
void ele_subdivison_levels (const Mesh3DStorage &hmi, std::vector< int > &Ls)
 
void set_intersection_own (const std::vector< uint32_t > &A, const std::vector< uint32_t > &B, std::array< uint32_t, 2 > &C, int &num)
 

Variables

const int hex_face_table [6][4]
 
const int hex_tetra_table [8][4]
 
const int tet_faces [4][3]
 
const int tet_edges [6][2]
 

Function Documentation

◆ a_jacobian()

double polyfem::mesh::MeshProcessing3D::a_jacobian ( Eigen::Vector3d &  v0,
Eigen::Vector3d &  v1,
Eigen::Vector3d &  v2,
Eigen::Vector3d &  v3 
)

Referenced by refine_red_refinement_tet(), and scaled_jacobian().

Here is the caller graph for this function:

◆ build_connectivity()

◆ ele_subdivison_levels()

void polyfem::mesh::MeshProcessing3D::ele_subdivison_levels ( const Mesh3DStorage hmi,
std::vector< int > &  Ls 
)

Definition at line 1691 of file MeshProcessing3D.cpp.

References polyfem::mesh::Mesh3DStorage::elements, polyfem::mesh::Mesh3DStorage::faces, polyfem::mesh::Mesh3DStorage::points, x, y, and z.

Referenced by refine_catmul_clark_polar().

Here is the caller graph for this function:

◆ global_orientation_hexes()

void polyfem::mesh::MeshProcessing3D::global_orientation_hexes ( Mesh3DStorage hmi)

Definition at line 679 of file MeshProcessing3D.cpp.

References build_connectivity(), polyfem::mesh::Mesh3DStorage::elements, polyfem::mesh::Vertex::id, polyfem::mesh::Element::id, polyfem::mesh::Mesh3DStorage::points, reorder_hex_mesh_propogation(), polyfem::mesh::Mesh3DStorage::type, polyfem::mesh::Vertex::v, polyfem::mesh::Mesh3DStorage::vertices, and polyfem::mesh::Element::vs.

Referenced by polyfem::mesh::Navigation3D::prepare_mesh().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ orient_surface_mesh()

void polyfem::mesh::MeshProcessing3D::orient_surface_mesh ( Mesh3DStorage hmi)

Definition at line 1495 of file MeshProcessing3D.cpp.

References polyfem::mesh::Mesh3DStorage::edges, polyfem::mesh::Mesh3DStorage::faces, polyfem::mesh::Mesh3DStorage::points, x, y, and z.

Referenced by orient_volume_mesh().

Here is the caller graph for this function:

◆ orient_volume_mesh()

void polyfem::mesh::MeshProcessing3D::orient_volume_mesh ( Mesh3DStorage hmi)

Definition at line 1553 of file MeshProcessing3D.cpp.

References build_connectivity(), polyfem::mesh::Mesh3DStorage::edges, polyfem::mesh::Mesh3DStorage::elements, polyfem::mesh::Mesh3DStorage::faces, polyfem::mesh::Vertex::id, polyfem::logger(), orient_surface_mesh(), polyfem::mesh::Mesh3DStorage::points, polyfem::mesh::Mesh3DStorage::type, and polyfem::mesh::Mesh3DStorage::vertices.

Referenced by refine_catmul_clark_polar(), refine_red_refinement_tet(), and straight_sweeping().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ refine_catmul_clark_polar()

void polyfem::mesh::MeshProcessing3D::refine_catmul_clark_polar ( Mesh3DStorage M,
int  iter,
bool  reverse,
std::vector< int > &  Parents 
)

Definition at line 714 of file MeshProcessing3D.cpp.

References build_connectivity(), ele_subdivison_levels(), polyfem::mesh::Mesh3DStorage::elements, polyfem::mesh::Mesh3DStorage::faces, polyfem::mesh::find(), polyfem::mesh::Element::fs, polyfem::mesh::Element::fs_flag, polyfem::mesh::Element::hex, hex_face_table, polyfem::mesh::Vertex::id, polyfem::mesh::Element::id, orient_volume_mesh(), polyfem::mesh::Mesh3DStorage::points, polyfem::mesh::Mesh3DStorage::type, polyfem::mesh::Vertex::v, polyfem::mesh::Element::v_in_Kernel, and polyfem::mesh::Mesh3DStorage::vertices.

Referenced by polyfem::mesh::CMesh3D::refine().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ refine_red_refinement_tet()

void polyfem::mesh::MeshProcessing3D::refine_red_refinement_tet ( Mesh3DStorage M,
int  iter 
)

Definition at line 1122 of file MeshProcessing3D.cpp.

References a_jacobian(), build_connectivity(), polyfem::mesh::Mesh3DStorage::elements, polyfem::mesh::Mesh3DStorage::faces, polyfem::mesh::Element::fs, polyfem::mesh::Element::fs_flag, polyfem::mesh::Element::hex, polyfem::mesh::Vertex::id, polyfem::mesh::Element::id, orient_volume_mesh(), polyfem::mesh::Mesh3DStorage::points, polyfem::mesh::signed_volume(), tet_edges, tet_faces, polyfem::mesh::Mesh3DStorage::type, polyfem::mesh::Vertex::v, polyfem::mesh::Element::v_in_Kernel, polyfem::mesh::Mesh3DStorage::vertices, and polyfem::mesh::Element::vs.

Referenced by polyfem::mesh::CMesh3D::refine().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reorder_hex_mesh_propogation()

void polyfem::mesh::MeshProcessing3D::reorder_hex_mesh_propogation ( Mesh3DStorage hmi)

Definition at line 492 of file MeshProcessing3D.cpp.

References polyfem::mesh::Mesh_Quality::ave_Jacobian, polyfem::mesh::Mesh3DStorage::elements, polyfem::mesh::Mesh3DStorage::faces, hex_face_table, polyfem::mesh::Mesh_Quality::min_Jacobian, polyfem::mesh::Mesh3DStorage::points, scaled_jacobian(), polyfem::mesh::Mesh3DStorage::type, and polyfem::mesh::Mesh3DStorage::vertices.

Referenced by global_orientation_hexes().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ scaled_jacobian()

bool polyfem::mesh::MeshProcessing3D::scaled_jacobian ( Mesh3DStorage hmi,
Mesh_Quality mq 
)

Definition at line 608 of file MeshProcessing3D.cpp.

References a_jacobian(), polyfem::mesh::Mesh_Quality::ave_Jacobian, polyfem::mesh::Mesh_Quality::deviation_Jacobian, polyfem::mesh::Mesh3DStorage::elements, polyfem::mesh::Mesh_Quality::H_Js, hex_tetra_table, polyfem::mesh::Mesh_Quality::min_Jacobian, polyfem::mesh::Mesh3DStorage::points, polyfem::mesh::Mesh3DStorage::type, and polyfem::mesh::Mesh_Quality::V_Js.

Referenced by reorder_hex_mesh_propogation().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_intersection_own()

void polyfem::mesh::MeshProcessing3D::set_intersection_own ( const std::vector< uint32_t > &  A,
const std::vector< uint32_t > &  B,
std::array< uint32_t, 2 > &  C,
int &  num 
)

Definition at line 1737 of file MeshProcessing3D.cpp.

Referenced by polyfem::mesh::Navigation3D::get_index_from_element_face(), and polyfem::mesh::Navigation3D::switch_face().

Here is the caller graph for this function:

◆ straight_sweeping()

Variable Documentation

◆ hex_face_table

const int polyfem::mesh::MeshProcessing3D::hex_face_table[6][4]
Initial value:
=
{
{0, 1, 2, 3},
{4, 7, 6, 5},
{0, 4, 5, 1},
{3, 2, 6, 7},
{0, 3, 7, 4},
{1, 5, 6, 2},
}

Definition at line 15 of file MeshProcessing3D.hpp.

Referenced by build_connectivity(), refine_catmul_clark_polar(), and reorder_hex_mesh_propogation().

◆ hex_tetra_table

const int polyfem::mesh::MeshProcessing3D::hex_tetra_table[8][4]
Initial value:
=
{
{0, 3, 4, 1},
{1, 0, 5, 2},
{2, 1, 6, 3},
{3, 2, 7, 0},
{4, 7, 5, 0},
{5, 4, 6, 1},
{6, 5, 7, 2},
{7, 6, 4, 3},
}

Definition at line 24 of file MeshProcessing3D.hpp.

Referenced by scaled_jacobian().

◆ tet_edges

const int polyfem::mesh::MeshProcessing3D::tet_edges[6][2]
Initial value:
= {
{0, 1},
{0, 2},
{0, 3},
{1, 2},
{1, 3},
{2, 3}}

Definition at line 40 of file MeshProcessing3D.hpp.

Referenced by refine_red_refinement_tet().

◆ tet_faces

const int polyfem::mesh::MeshProcessing3D::tet_faces[4][3]
Initial value:
= {
{1, 0, 2},
{3, 2, 0},
{1, 2, 3},
{0, 1, 3}}

Definition at line 35 of file MeshProcessing3D.hpp.

Referenced by refine_red_refinement_tet().