ug4
|
The base class for all geometric objects, such as vertices, edges, faces, volumes, ... More...
#include <grid_base_objects.h>
Public Member Functions | |
virtual int | base_object_id () const =0 |
virtual int | container_section () const =0 |
virtual GridObject * | create_empty_instance () const |
create an instance of the derived type More... | |
uint | grid_data_index () const |
Returns the grid attachment data index of a geometric object. More... | |
virtual bool | is_constrained () const |
returns true if the object is constrained by other objects. More... | |
virtual bool | is_constraining () const |
returns the id of the reference-object. More... | |
virtual ReferenceObjectID | reference_object_id () const =0 |
virtual | ~GridObject () |
virtual void | remove_constraint_link (const Vertex *vrt) |
removes a constraint link to the grid object. More... | |
virtual void | remove_constraint_link (const Edge *e) |
removes a constraint link to the grid object. More... | |
virtual void | remove_constraint_link (const Face *f) |
removes a constraint link to the grid object. More... | |
Protected Member Functions | |
void | set_grid_data_index (uint index) |
ATTENTION: Use this method with extreme care! More... | |
Protected Attributes | |
uint | m_gridDataIndex |
The base class for all geometric objects, such as vertices, edges, faces, volumes, ...
In order to be used by libGrid, all derivatives of GridObject have to specialize geometry_traits<GeomObjectType>.
|
inlinevirtual |
|
pure virtual |
Implemented in ug::Volume, ug::Face, ug::Edge, and ug::Vertex.
Referenced by ug::AdaptionSurfaceGridFunction< TDomain >::ValueAccessor::access_closure(), ug::DoFDistribution::algebra_indices(), ug::StdTransfer< TDomain, TAlgebra >::assemble_prolongation(), ug::StdTransfer< TDomain, TAlgebra >::assemble_restriction(), ug::ISubsetHandler::assign_subset(), ug::MultiGrid::associate_parent(), ug::CalculateGridObjectCenter(), ug::CalculateOuterNormal(), ug::CheckLocalParentTypes(), ug::CollectAssociated(), ug::CollectEdgesSorted(), ug::CollectFacesSorted(), ug::CollectVertices(), ug::StdExplicitGridFunctionData< TImpl, TData, TGridFunction >::compute(), ug::GlobAttachmentElementUserData< WDim, TData >::compute(), ug::StdDataLinker< TImpl, TData, dim >::compute(), ug::StdDependentUserData< TImpl, TData, dim >::compute(), ug::ISelector::deselect(), ug::DeselectFamily(), ug::DeserializeMultiGridElements(), ug::NeuriteProjector::direction_at_grid_object(), ug::DoFDistribution::dof_indices(), ug::DoFPosition(), ug::DelaunayInfo< TAAPos >::edge_created(), ug::MultiGrid::edge_created(), ug::BoolMarker::edge_created(), ug::ISelector::edge_created(), ug::ISubsetHandler::edge_created(), ug::MultiGrid::edge_to_be_erased(), ug::ElementDebugInfo(), ug::ElementDiameterSq(), ug::Grid::erase(), ug::ComPol_CheckDistributedParentStates< TLayout >::extract(), ug::DelaunayInfo< TAAPos >::face_created(), ug::MultiGrid::face_created(), ug::BoolMarker::face_created(), ug::ISelector::face_created(), ug::ISubsetHandler::face_created(), ug::MultiGrid::face_to_be_erased(), ug::DistInfoSupplier::get(), ug::Grid::get_associated(), ug::MultiGrid::get_child(), ug::IRefiner::get_mark(), ug::MultiGrid::get_parent(), ug::ISelector::get_selection_status(), ug::DistributedGridManager::get_status(), ug::ISubsetHandler::get_subset_index(), ug::GetGridObjectCenter(), ug::DistributedGridManager::handle_created_element(), ug::PeriodicBoundaryManager::handle_creation_cast_wrapper(), ug::DoFDistribution::indices(), ug::DoFDistribution::inner_algebra_indices(), ug::DoFDistribution::inner_dof_indices(), ug::InnerDoFPosition(), ug::BoolMarker::is_marked(), ug::Grid::is_marked(), ug::IRefiner::mark(), ug::Grid::mark(), ug::MultiGrid::num_children(), ug::DoFIndexStorage::obj_index(), ug::MultiElementAttachmentAccessor< TAttachment >::operator[](), ug::HangingNodeRefiner_MultiGrid::perform_coarsening(), ug::DistributedGridManager::perform_ordered_element_insertion(), ug::ISelector::select(), ug::AdaptionSurfaceGridFunction< TDomain >::select_parents(), ug::ConstrainedVertex::set_constraining_object(), ug::ConstrainedEdge::set_constraining_object(), ug::ConstrainedFace::set_constraining_object(), ug::ShapesAtGlobalPosition(), ug::Grid::unmark(), ug::DelaunayInfo< TAAPos >::vertex_created(), ug::MultiGrid::vertex_created(), ug::BoolMarker::vertex_created(), ug::ISelector::vertex_created(), ug::ISubsetHandler::vertex_created(), ug::MultiGrid::vertex_to_be_erased(), ug::MultiGrid::volume_created(), ug::BoolMarker::volume_created(), ug::ISelector::volume_created(), ug::ISubsetHandler::volume_created(), ug::MultiGrid::volume_to_be_erased(), and ug::WriteParent().
|
pure virtual |
Implemented in ug::Octahedron, ug::Pyramid, ug::Prism, ug::Hexahedron, ug::Tetrahedron, ug::ConstrainingQuadrilateral, ug::ConstrainingTriangle, ug::ConstrainedQuadrilateral, ug::ConstrainedTriangle, ug::Quadrilateral, ug::Triangle, ug::ConstrainingEdge, ug::ConstrainedEdge, ug::RegularEdge, ug::ConstrainedVertex, ug::RegularVertex, ug::Volume, ug::Face, ug::Edge, and ug::Vertex.
Referenced by ug::Grid::erase(), and ug::HFV1ManifoldGeometry< TElem, TWorldDim >::update().
|
inlinevirtual |
create an instance of the derived type
Make sure to overload this method in derivates of this class!
Reimplemented in ug::Octahedron, ug::Pyramid, ug::Prism, ug::Hexahedron, ug::Tetrahedron, ug::CustomQuadrilateral< ConstrainedQuadrilateral, ConstrainedFace, ConstrainedTriangle, ConstrainedQuadrilateral >, ug::CustomQuadrilateral< Quadrilateral, Face, Triangle, Quadrilateral >, ug::CustomQuadrilateral< ConstrainingQuadrilateral, ConstrainingFace, ConstrainingTriangle, ConstrainingQuadrilateral >, ug::CustomTriangle< ConstrainedTriangle, ConstrainedFace, ConstrainedTriangle, ConstrainedQuadrilateral >, ug::CustomTriangle< ConstrainingTriangle, ConstrainingFace, ConstrainingTriangle, ConstrainingQuadrilateral >, ug::CustomTriangle< Triangle, Face, Triangle, Quadrilateral >, ug::ConstrainingEdge, ug::ConstrainedEdge, ug::RegularEdge, ug::ConstrainedVertex, and ug::RegularVertex.
Referenced by ug::Grid::create_by_cloning(), and ug::Refine().
|
inline |
Returns the grid attachment data index of a geometric object.
Beware that this index is for internal use in the grid management and can be changed by some operations (e.g. by Grid::defragment). But this function can be used for debugging, when one wants to identify an element at several places in the code.
Referenced by ug::attachment_traits< Vertex *, ElementStorage< Vertex > >::get_data_index(), ug::attachment_traits< Edge *, ElementStorage< Edge > >::get_data_index(), ug::attachment_traits< Face *, ElementStorage< Face > >::get_data_index(), and ug::attachment_traits< Volume *, ElementStorage< Volume > >::get_data_index().
|
inlinevirtual |
returns true if the object is constrained by other objects.
This is normally only the case for special constrained objects. The default implementation returns false.
Reimplemented in ug::ConstrainedFace, ug::ConstrainedEdge, and ug::ConstrainedVertex.
Referenced by ug::CheckElementConsistency(), ug::CheckHangingNodeConsistency(), ug::HangingNodeRefiner_MultiGrid::collect_objects_for_coarsen(), ug::CollectConstraining(), ug::DistributedGridManager::handle_created_element(), ug::DegeneratedLayerManager< dim >::mark_vertices(), ug::HangingNodeRefiner_MultiGrid::perform_coarsening(), ug::MGHNodeAdjuster::ref_marks_changed(), and ug::StdHNodeAdjuster::ref_marks_changed().
|
inlinevirtual |
returns the id of the reference-object.
returns true if the object constrains other objects. This is normally only the case for special constraining objects. The default implementation returns false.
Reimplemented in ug::ConstrainingFace, and ug::ConstrainingEdge.
Referenced by ug::CheckElementConsistency(), ug::CheckHangingNodeConsistency(), ug::HangingNodeRefiner_MultiGrid::perform_coarsening(), ug::LocalMarkAdjuster::ref_marks_changed(), and ug::HangingNodeRefiner_MultiGrid::refinement_is_allowed().
|
pure virtual |
A reference object represents a class of geometric objects. Tetrahedrons, Triangles etc are such classes. Reference ids should be defined in the file in which concrete geometric objects are defined.
Implemented in ug::Octahedron, ug::Pyramid, ug::Prism, ug::Hexahedron, ug::Tetrahedron, ug::CustomQuadrilateral< ConstrainedQuadrilateral, ConstrainedFace, ConstrainedTriangle, ConstrainedQuadrilateral >, ug::CustomQuadrilateral< Quadrilateral, Face, Triangle, Quadrilateral >, ug::CustomQuadrilateral< ConstrainingQuadrilateral, ConstrainingFace, ConstrainingTriangle, ConstrainingQuadrilateral >, ug::CustomTriangle< ConstrainedTriangle, ConstrainedFace, ConstrainedTriangle, ConstrainedQuadrilateral >, ug::CustomTriangle< ConstrainingTriangle, ConstrainingFace, ConstrainingTriangle, ConstrainingQuadrilateral >, ug::CustomTriangle< Triangle, Face, Triangle, Quadrilateral >, ug::ConstrainingEdge, ug::ConstrainedEdge, ug::RegularEdge, ug::ConstrainedVertex, ug::RegularVertex, ug::Volume, ug::Face, ug::Edge, and ug::Vertex.
Referenced by ug::IElemAssembleFuncs< TLeaf, TDomain >::add_def_A_elem(), ug::IElemAssembleFuncs< TLeaf, TDomain >::add_def_M_elem(), ug::IElemAssembleFuncs< TLeaf, TDomain >::add_jac_A_elem(), ug::IElemAssembleFuncs< TLeaf, TDomain >::add_jac_M_elem(), ug::IElemAssembleFuncs< TLeaf, TDomain >::add_rhs_elem(), ug::SideAndElemErrEstData< TDomain >::all_side_global_ips(), ug::ApplySmoothManifoldPosToTopLevelButterflyScheme(), ug::ApplySmoothManifoldPosToTopLevelLoopScheme(), ug::StdTransfer< TDomain, TAlgebra >::assemble_prolongation_p1(), ug::NeumannBoundaryFV1< TDomain >::compute_err_est_rhs_elem(), ug::DoFPosition(), ug::SideAndElemErrEstData< TDomain >::elem_global_ips(), ug::GridFunctionVectorData< TGridFunction >::eval_and_deriv(), ug::GridFunctionGradientData< TGridFunction >::eval_and_deriv(), ug::GradientDataExport< dim >::eval_and_deriv(), ug::VectorDataExport< dim >::eval_and_deriv(), ug::ProjectionLinker< dim >::eval_and_deriv(), ug::GridFunctionNumberData< TGridFunction >::eval_and_deriv(), ug::GridFunctionGradientComponentData< TGridFunction >::eval_and_deriv(), ug::ValueDataExport< dim >::eval_and_deriv(), ug::DataExport< TData, dim >::eval_and_deriv(), ug::ExplicitGridFunctionVector< TGridFunction >::evaluate(), ug::ExplicitGridFunctionGradient< TGridFunction >::evaluate(), ug::ProjectionLinker< dim >::evaluate(), ug::ExplicitGridFunctionValue< TGridFunction >::evaluate(), ug::L2DistIntegrand< TGridFunction >::evaluate(), ug::H1SemiDistIntegrand< TGridFunction >::evaluate(), ug::H1EnergyDistIntegrand< TGridFunction >::evaluate(), ug::H1DistIntegrand< TGridFunction >::evaluate(), ug::MaximumDistIntegrand< TGridFunction >::evaluate(), ug::L2ErrorIntegrand< TGridFunction >::evaluate(), ug::H1ErrorIntegrand< TGridFunction >::evaluate(), ug::L2Integrand< TGridFunction >::evaluate(), ug::H1SemiIntegrand< TGridFunction >::evaluate(), ug::H1EnergyIntegrand< TGridFunction >::evaluate(), ug::H1NormIntegrand< TGridFunction >::evaluate(), ug::StdFuncIntegrand< TGridFunction >::evaluate(), ug::UserDataDistIntegrandSq< TData, TGridFunction >::evaluate(), ug::OutNormCmp< TDomain >::evaluate(), ug::SideAndElemErrEstData< TDomain >::get_elem_error_indicator(), ug::DoFDistribution::inner_algebra_indices_for_fct(), ug::InnerDoFPosition(), ug::IElemAssembleFuncs< TLeaf, TDomain >::prep_elem(), ug::FV1InnerBoundaryElemDisc< TImpl, TDomain >::prep_err_est_elem(), ug::NeumannBoundaryFV1< TDomain >::prep_err_est_elem(), ug::ProlongateP1(), ug::ShapesAtGlobalPosition(), ug::SideAndElemErrEstData< TDomain >::side_global_ips(), ug::DimFV1Geometry< TDim, TWorldDim >::update(), ug::DimFV1IBGeometry< TDim, TWorldDim >::update(), ug::DimCRFVGeometry< TDim, TWorldDim >::update(), ug::DimFEGeometry< TWorldDim, TRefDim >::update(), ug::DimFVGeometry< TWorldDim, TDim >::update(), ug::DimFV1IBGeometry< TDim, TWorldDim >::update_boundary_faces(), ug::DimFEGeometry< TWorldDim, TRefDim >::update_boundary_faces(), ug::DimCRFVGeometry< TDim, TWorldDim >::update_geometric_data(), ug::DimCRFVGeometry< TDim, TWorldDim >::update_hanging(), and ug::GridWriterVTU::write_cells().
|
inlinevirtual |
removes a constraint link to the grid object.
This method is e.g. called on the constraining edges of a constrained vertex as soon as the constrained vertex is deleted.
Reimplemented in ug::ConstrainingFace, ug::ConstrainingEdge, ug::ConstrainedEdge, and ug::ConstrainedVertex.
|
inlinevirtual |
removes a constraint link to the grid object.
This method is e.g. called on the constraining edges of a constrained vertex as soon as the constrained vertex is deleted.
Reimplemented in ug::ConstrainingFace, ug::ConstrainedFace, ug::ConstrainedEdge, and ug::ConstrainedVertex.
|
inlinevirtual |
removes a constraint link to the grid object.
This method is e.g. called on the constraining edges of a constrained vertex as soon as the constrained vertex is deleted.
Reimplemented in ug::ConstrainingFace, and ug::ConstrainingEdge.
|
inlineprotected |
ATTENTION: Use this method with extreme care!
This method is for internal use only and should almost never be called by a user of lib_grid. The method sets the attachment data index and is mainly used by attachment-traits classes.
Referenced by ug::attachment_traits< Vertex *, ElementStorage< Vertex > >::set_data_index(), ug::attachment_traits< Edge *, ElementStorage< Edge > >::set_data_index(), ug::attachment_traits< Face *, ElementStorage< Face > >::set_data_index(), and ug::attachment_traits< Volume *, ElementStorage< Volume > >::set_data_index().
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
protected |