|
libMesh
|
Utility functions for subdivision surface operations on a Mesh.
More...
Functions | |
| void | find_one_ring (const Tri3Subdivision *elem, std::vector< const Node *> &nodes) |
Determines the 1-ring of element elem, and writes it to the nodes vector. More... | |
| void | all_subdivision (MeshBase &mesh) |
Turns a triangulated mesh into a subdivision mesh. More... | |
| void | prepare_subdivision_mesh (MeshBase &mesh, bool ghosted=false) |
Prepares the mesh for use with subdivision elements. More... | |
| void | add_boundary_ghosts (MeshBase &mesh) |
| Adds a new layer of "ghost" elements along the domain boundaries. More... | |
| void | tag_boundary_ghosts (MeshBase &mesh) |
| Flags the outermost element layer along the domain boundaries as "ghost" elements. More... | |
Variables | |
| static const unsigned int | next [3] = {1,2,0} |
| A lookup table for the increment modulo 3 operation, for iterating through the three nodes per element in positive direction. More... | |
| static const unsigned int | prev [3] = {2,0,1} |
| A lookup table for the decrement modulo 3 operation, for iterating through the three nodes per element in negative direction. More... | |
Utility functions for subdivision surface operations on a Mesh.
| void libMesh::MeshTools::Subdivision::add_boundary_ghosts | ( | MeshBase & | mesh | ) |
Adds a new layer of "ghost" elements along the domain boundaries.
This function normally needn't be called by the user, because it is invoked by prepare_subdivision_mesh.
Definition at line 229 of file mesh_subdivision_support.C.
References libMesh::MeshBase::add_elem(), libMesh::BoundaryInfo::add_node(), libMesh::MeshBase::add_point(), libMesh::Elem::build(), libMesh::MeshBase::elem_ptr(), libMesh::MeshBase::get_boundary_info(), libMesh::DofObject::id(), libMesh::libmesh_assert(), libMesh::Tri3Subdivision::local_node_number(), mesh, libMesh::MeshTools::n_elem(), libMesh::MeshBase::n_elem(), libMesh::Elem::neighbor_ptr(), next, libMesh::Elem::node_ptr(), libMesh::TensorTools::norm(), libMesh::Elem::point(), prev, libMesh::Real, libMesh::Elem::set_neighbor(), libMesh::Elem::side_index_range(), libMesh::TRI3SUBDIVISION, and libMesh::Elem::type().
Referenced by prepare_subdivision_mesh().
| void libMesh::MeshTools::Subdivision::all_subdivision | ( | MeshBase & | mesh | ) |
Turns a triangulated mesh into a subdivision mesh.
This function normally needn't be called by the user, because it is invoked by prepare_subdivision_mesh.
Definition at line 90 of file mesh_subdivision_support.C.
References libMesh::BoundaryInfo::add_side(), libMesh::BoundaryInfo::boundary_ids(), libMesh::Elem::build_with_id(), libMesh::MeshBase::get_boundary_info(), libMesh::index_range(), libMesh::MeshBase::insert_elem(), mesh, libMesh::BoundaryInfo::n_boundary_ids(), libMesh::MeshBase::prepare_for_use(), libMesh::BoundaryInfo::remove(), libMesh::TRI3, and libMesh::TRI3SUBDIVISION.
Referenced by prepare_subdivision_mesh().
| void libMesh::MeshTools::Subdivision::find_one_ring | ( | const Tri3Subdivision * | elem, |
| std::vector< const Node *> & | nodes | ||
| ) |
Determines the 1-ring of element elem, and writes it to the nodes vector.
This is necessary because subdivision elements have a larger local support than conventionally interpolated elements. The 1-ring may, for instance, look like this:
* N+4 - N+1 - N+2 * / \ / \ / \ * / \ / \ / \ * N+5 -- N --- 1 -- N+3 * \ / \ e / \ / * \ / \ / \ / * N-1--- 0 --- 2 * \ /|\ / * \ / | \ / * 5--4--3 *
Definition at line 31 of file mesh_subdivision_support.C.
References libMesh::Tri3Subdivision::get_ordered_node(), libMesh::Tri3Subdivision::get_ordered_valence(), libMesh::Tri3Subdivision::is_subdivision_updated(), libMesh::libmesh_assert(), libMesh::Tri3Subdivision::local_node_number(), libMesh::Elem::neighbor_ptr(), next, and libMesh::Elem::node_ptr().
Referenced by libMesh::FEMap::compute_map(), libMesh::DofMap::dof_indices(), and libMesh::DofMap::old_dof_indices().
| void libMesh::MeshTools::Subdivision::prepare_subdivision_mesh | ( | MeshBase & | mesh, |
| bool | ghosted = false |
||
| ) |
Prepares the mesh for use with subdivision elements.
The ghosted flag determines how boundaries are treated. If false, a new layer of "ghost" elements is appended along the domain boundaries. If true, the outermost element layer is taken as ghosts, i.e. no new elements are added.
Definition at line 156 of file mesh_subdivision_support.C.
References add_boundary_ghosts(), all_subdivision(), libMesh::MeshTools::build_nodes_to_elem_map(), libMesh::MeshTools::find_nodal_neighbors(), libMesh::Tri3Subdivision::is_ghost(), libMesh::libmesh_assert(), mesh, libMesh::MeshBase::prepare_for_use(), libMesh::Tri3Subdivision::prepare_subdivision_properties(), and tag_boundary_ghosts().
Referenced by main().
| void libMesh::MeshTools::Subdivision::tag_boundary_ghosts | ( | MeshBase & | mesh | ) |
Flags the outermost element layer along the domain boundaries as "ghost" elements.
This function normally needn't be called by the user, because it is invoked by prepare_subdivision_mesh.
Definition at line 200 of file mesh_subdivision_support.C.
References mesh, next, prev, libMesh::Tri3Subdivision::set_ghost(), and libMesh::TRI3SUBDIVISION.
Referenced by prepare_subdivision_mesh().
|
static |
A lookup table for the increment modulo 3 operation, for iterating through the three nodes per element in positive direction.
Definition at line 102 of file mesh_subdivision_support.h.
Referenced by add_boundary_ghosts(), assemble_shell(), libMesh::RBConstructionBase< CondensedEigenSystem >::broadcast_parameters(), find_one_ring(), libMesh::Xdr::is_eof(), libMesh::TriangulatorInterface::MeshedHole::MeshedHole(), libMesh::ConstCouplingAccessor::operator bool(), libMesh::CouplingAccessor::operator=(), libMesh::Tri3Subdivision::prepare_subdivision_properties(), libMesh::ExodusII_IO_Helper::read_bex_cv_blocks(), libMesh::StaticCondensationDofMap::reinit(), libMesh::DistributedMesh::renumber_dof_objects(), tag_boundary_ghosts(), SystemsTest::testProjectMatrix1D(), and NonManifoldGhostingFunctorTest::verify_send_list_entries_helper().
|
static |
A lookup table for the decrement modulo 3 operation, for iterating through the three nodes per element in negative direction.
Definition at line 108 of file mesh_subdivision_support.h.
Referenced by add_boundary_ghosts(), assemble_shell(), libMesh::ConstCouplingRow::ConstCouplingRow(), libMesh::SolutionHistory::find_stored_entry(), libMesh::Tri3Subdivision::prepare_subdivision_properties(), libMesh::MemorySolutionHistory::retrieve(), libMesh::FileSolutionHistory::retrieve(), tag_boundary_ghosts(), and SystemsTest::testProjectMatrix1D().
1.8.14