RINGMesh  Version 5.0.0
A programming library for geological model meshes
RINGMesh::Line< DIMENSION > Class Template Referencefinal

A GeoModelEntity of type LINE. More...

#include <geomodel_mesh_entity.h>

Inheritance diagram for RINGMesh::Line< DIMENSION >:
RINGMesh::GeoModelMeshEntity< DIMENSION > RINGMesh::GeoModelEntity< DIMENSION >

Public Member Functions

virtual ~Line ()
 
MeshEntityType type_name () const final
 
bool is_on_voi () const final
 
const Corner< DIMENSION > & boundary (index_t x) const
 
const Surface< DIMENSION > & incident_entity (index_t x) const
 
bool is_connectivity_valid () const final
 
const LineAABBTree< DIMENSION > & edge_aabb () const
 
const NNSearch< DIMENSION > & edge_nn_search () const
 Return the NNSearch for the edges of the line. More...
 
index_t nb_mesh_elements () const final
 
index_t nb_mesh_element_vertices (index_t mesh_element=0) const final
 
index_t mesh_element_vertex_index (const ElementLocalVertex &element_local_vertex) const final
 Get the index of a vertex in the Line from the. More...
 
bool is_closed () const
 A Line is closed if its two extremities are identitical. More...
 
double mesh_element_size (index_t edge_index) const final
 Gets the length of an edge. More...
 
vecn< DIMENSION > mesh_element_barycenter (index_t edge_index) const final
 Gets the barycenter of an edge. More...
 
bool is_first_corner_first_vertex () const
 
const LineMesh< DIMENSION > & mesh () const
 Get the low level mesh data structure. More...
 
template<>
bool is_on_voi () const
 
template<>
bool is_on_voi () const
 
- Public Member Functions inherited from RINGMesh::GeoModelMeshEntity< DIMENSION >
virtual ~GeoModelMeshEntity ()
 
gmme_id gmme () const
 
MeshEntityType mesh_entity_type () const
 
bool is_valid () const final
 Global validity of the entity. More...
 
bool is_parent_connectivity_valid () const
 
void save (const std::string &filename) const
 
const NNSearch< DIMENSION > & vertex_nn_search () const
 Return the NNSearch for the Entity vertices. More...
 
GEO::AttributesManager & vertex_attribute_manager () const
 
index_t nb_boundaries () const
 
const gmme_idboundary_gmme (index_t x) const
 
const GeoModelMeshEntity< DIMENSION > & boundary (index_t x) const
 
index_t nb_incident_entities () const
 
const gmme_idincident_entity_gmme (index_t x) const
 
const GeoModelMeshEntity< DIMENSION > & incident_entity (index_t x) const
 
bool has_inside_border () const
 Check if one entity is twice in the boundary. More...
 
bool is_inside_border (const GeoModelMeshEntity &rhs) const
 Check if this entity is an inside border of rhs. More...
 
bool has_parent () const
 
bool has_parent (const GeologicalEntityType &parent_type) const
 Check if the entity has a parent of the given type. More...
 
index_t nb_parents () const
 
const gmge_idparent_gmge (index_t id) const
 
const gmge_id parent_gmge (const GeologicalEntityType &parent_type) const
 Returns the gmge_id of the parent of the given type. More...
 
const GeoModelGeologicalEntity< DIMENSION > & parent (index_t parent_index) const
 
const GeoModelGeologicalEntity< DIMENSION > & parent (const GeologicalEntityType &parent_type) const
 
index_t nb_vertices () const
 
const vecn< DIMENSION > & vertex (index_t vertex_index) const
 Coordinates of the vertex_index. More...
 
const vecn< DIMENSION > & mesh_element_vertex (const ElementLocalVertex &element_local_vertex) const
 Coordinates of a vertex of a mesh element. More...
 
vecn< DIMENSION > entity_barycenter () const
 
virtual double size () const
 
- Public Member Functions inherited from RINGMesh::GeoModelEntity< DIMENSION >
virtual ~GeoModelEntity ()=default
 
const GeoModel< DIMENSION > & geomodel () const
 
const std::string & name () const
 
index_t index () const
 

Static Public Member Functions

static MeshEntityType type_name_static ()
 

Protected Member Functions

 Line (const GeoModel< DIMENSION > &geomodel, index_t id, const MeshType &type)
 
bool is_mesh_valid () const final
 Check that the mesh of the Line is valid. More...
 
- Protected Member Functions inherited from RINGMesh::GeoModelMeshEntity< DIMENSION >
 GeoModelMeshEntity (const GeoModel< DIMENSION > &geomodel, index_t id)
 
virtual void copy_mesh_entity (const GeoModelMeshEntity< DIMENSION > &from)
 
virtual bool is_index_valid () const final
 
void set_mesh (std::shared_ptr< MeshBase< DIMENSION > > mesh)
 
bool is_boundary_connectivity_valid () const
 
bool is_incident_entity_connectivity_valid () const
 
bool are_geomodel_vertex_indices_valid () const
 Check that geomodel vertex indices are consistent with what is stored at the GeoModel level. More...
 
void unbind_vertex_mapping_attribute () const
 
void bind_vertex_mapping_attribute () const
 
- Protected Member Functions inherited from RINGMesh::GeoModelEntity< DIMENSION >
 GeoModelEntity (const GeoModel< DIMENSION > &geomodel, index_t id)
 
void copy_name (const GeoModelEntity< DIMENSION > &from)
 

Private Member Functions

 ringmesh_disable_copy_and_move (Line)
 
 ringmesh_template_assert_2d_or_3d (DIMENSION)
 
void update_mesh_storage_type (std::unique_ptr< LineMesh< DIMENSION > > mesh)
 
void change_mesh_data_structure (const MeshType &type) final
 

Private Attributes

std::shared_ptr< LineMesh< DIMENSION > > line_mesh_ {}
 

Friends

class GeoModelMeshEntityAccess< DIMENSION >
 

Additional Inherited Members

- Protected Attributes inherited from RINGMesh::GeoModelMeshEntity< DIMENSION >
std::vector< index_t > boundaries_ {}
 Boundary relations of this entity. More...
 
std::vector< index_t > incident_entities_ {}
 Incident-entity relations of this entity. More...
 
std::vector< index_t > parents_ {}
 Parents relations of this entity. More...
 
- Protected Attributes inherited from RINGMesh::GeoModelEntity< DIMENSION >
const GeoModel< DIMENSION > & geomodel_
 Reference to the GeoModel owning this entity. More...
 
std::string name_ = std::string{ "Unnamed" }
 Name of the entity - default is "Unnamed". More...
 
index_t id_ { NO_ID }
 Index of the entity. More...
 

Detailed Description

template<index_t DIMENSION>
class RINGMesh::Line< DIMENSION >

A GeoModelEntity of type LINE.

This must be one connected component (one part) of a 1-manifold (Line with no T intersections).

Definition at line 515 of file geomodel_mesh_entity.h.

Constructor & Destructor Documentation

◆ ~Line()

template<index_t DIMENSION>
virtual RINGMesh::Line< DIMENSION >::~Line ( )
inlinevirtual

Definition at line 523 of file geomodel_mesh_entity.h.

◆ Line()

template<index_t DIMENSION>
RINGMesh::Line< DIMENSION >::Line ( const GeoModel< DIMENSION > &  geomodel,
index_t  id,
const MeshType type 
)
inlineprotected

Definition at line 634 of file geomodel_mesh_entity.h.

Member Function Documentation

◆ boundary()

template<index_t DIMENSION>
const Corner< DIMENSION > & RINGMesh::Line< DIMENSION >::boundary ( index_t  x) const

Definition at line 732 of file geomodel_mesh_entity.cpp.

◆ change_mesh_data_structure()

template<index_t DIMENSION>
void RINGMesh::Line< DIMENSION >::change_mesh_data_structure ( const MeshType type)
finalprivatevirtual

◆ edge_aabb()

template<index_t DIMENSION>
const LineAABBTree< DIMENSION >& RINGMesh::Line< DIMENSION >::edge_aabb ( ) const
inline

Definition at line 550 of file geomodel_mesh_entity.h.

◆ edge_nn_search()

template<index_t DIMENSION>
const NNSearch< DIMENSION >& RINGMesh::Line< DIMENSION >::edge_nn_search ( ) const
inline

Return the NNSearch for the edges of the line.

The barycenter of the edges is used.

Definition at line 559 of file geomodel_mesh_entity.h.

◆ incident_entity()

template<index_t DIMENSION>
const Surface< DIMENSION >& RINGMesh::Line< DIMENSION >::incident_entity ( index_t  x) const
inline

Definition at line 542 of file geomodel_mesh_entity.h.

◆ is_closed()

template<index_t DIMENSION>
bool RINGMesh::Line< DIMENSION >::is_closed ( ) const
inline

A Line is closed if its two extremities are identitical.

Definition at line 597 of file geomodel_mesh_entity.h.

◆ is_connectivity_valid()

template<index_t DIMENSION>
bool RINGMesh::Line< DIMENSION >::is_connectivity_valid ( ) const
finalvirtual

Check that required information for the TYPE is defined and that reverse information is stored by the corresponding entities

Reimplemented from RINGMesh::GeoModelMeshEntity< DIMENSION >.

Definition at line 702 of file geomodel_mesh_entity.cpp.

◆ is_first_corner_first_vertex()

template<index_t DIMENSION>
bool RINGMesh::Line< DIMENSION >::is_first_corner_first_vertex ( ) const

Definition at line 719 of file geomodel_mesh_entity.cpp.

◆ is_mesh_valid()

template<index_t DIMENSION>
bool RINGMesh::Line< DIMENSION >::is_mesh_valid ( ) const
finalprotectedvirtual

Check that the mesh of the Line is valid.

Check that

  • the GEO::Mesh has more than 1 vertex - more than 1 edge - no polygon - no cell.
  • global indices of vertices in the geomodel are in a valid range
  • each vertex is in 2 edges except extremities that are in 1 edge

Does not check:

  • Self-intersection - I suppose there are no segment - segment intersection (JP)
  • Duplicated edge - most probably ruled out with the duplicated vertex test (JP)
  • Duplicated vertex (verified at GeoModel level)

Reimplemented from RINGMesh::GeoModelMeshEntity< DIMENSION >.

Definition at line 605 of file geomodel_mesh_entity.cpp.

◆ is_on_voi() [1/3]

template<index_t DIMENSION>
bool RINGMesh::Line< DIMENSION >::is_on_voi ( ) const
finalvirtual

◆ is_on_voi() [2/3]

template<>
bool RINGMesh::Line< 2 >::is_on_voi ( ) const
virtual

Implements RINGMesh::GeoModelEntity< DIMENSION >.

Definition at line 739 of file geomodel_mesh_entity.cpp.

◆ is_on_voi() [3/3]

template<>
bool RINGMesh::Line< 3 >::is_on_voi ( ) const
virtual

Implements RINGMesh::GeoModelEntity< DIMENSION >.

Definition at line 747 of file geomodel_mesh_entity.cpp.

◆ mesh()

template<index_t DIMENSION>
const LineMesh< DIMENSION >& RINGMesh::Line< DIMENSION >::mesh ( ) const
inline

Get the low level mesh data structure.

Definition at line 628 of file geomodel_mesh_entity.h.

◆ mesh_element_barycenter()

template<index_t DIMENSION>
vecn< DIMENSION > RINGMesh::Line< DIMENSION >::mesh_element_barycenter ( index_t  edge_index) const
inlinefinalvirtual

Gets the barycenter of an edge.

Implements RINGMesh::GeoModelMeshEntity< DIMENSION >.

Definition at line 616 of file geomodel_mesh_entity.h.

◆ mesh_element_size()

template<index_t DIMENSION>
double RINGMesh::Line< DIMENSION >::mesh_element_size ( index_t  edge_index) const
inlinefinalvirtual

Gets the length of an edge.

Implements RINGMesh::GeoModelMeshEntity< DIMENSION >.

Definition at line 607 of file geomodel_mesh_entity.h.

◆ mesh_element_vertex_index()

template<index_t DIMENSION>
index_t RINGMesh::Line< DIMENSION >::mesh_element_vertex_index ( const ElementLocalVertex element_local_vertex) const
inlinefinalvirtual

Get the index of a vertex in the Line from the.

Parameters
vertex_indexin a given edge
edge_index.

Implements RINGMesh::GeoModelMeshEntity< DIMENSION >.

Definition at line 585 of file geomodel_mesh_entity.h.

◆ nb_mesh_element_vertices()

template<index_t DIMENSION>
index_t RINGMesh::Line< DIMENSION >::nb_mesh_element_vertices ( index_t  mesh_element = 0) const
inlinefinalvirtual
Returns
The number of vertices per edge: 2.

Implements RINGMesh::GeoModelMeshEntity< DIMENSION >.

Definition at line 575 of file geomodel_mesh_entity.h.

◆ nb_mesh_elements()

template<index_t DIMENSION>
index_t RINGMesh::Line< DIMENSION >::nb_mesh_elements ( ) const
inlinefinalvirtual

Get the number of edges of the Line

Implements RINGMesh::GeoModelMeshEntity< DIMENSION >.

Definition at line 567 of file geomodel_mesh_entity.h.

◆ ringmesh_disable_copy_and_move()

template<index_t DIMENSION>
RINGMesh::Line< DIMENSION >::ringmesh_disable_copy_and_move ( Line< DIMENSION >  )
private

◆ ringmesh_template_assert_2d_or_3d()

template<index_t DIMENSION>
RINGMesh::Line< DIMENSION >::ringmesh_template_assert_2d_or_3d ( DIMENSION  )
private

◆ type_name()

template<index_t DIMENSION>
MeshEntityType RINGMesh::Line< DIMENSION >::type_name ( ) const
inlinefinalvirtual

Implements RINGMesh::GeoModelMeshEntity< DIMENSION >.

Definition at line 533 of file geomodel_mesh_entity.h.

◆ type_name_static()

template<index_t DIMENSION>
static MeshEntityType RINGMesh::Line< DIMENSION >::type_name_static ( )
inlinestatic

Definition at line 528 of file geomodel_mesh_entity.h.

◆ update_mesh_storage_type()

template<index_t DIMENSION>
void RINGMesh::Line< DIMENSION >::update_mesh_storage_type ( std::unique_ptr< LineMesh< DIMENSION > >  mesh)
inlineprivate

Definition at line 661 of file geomodel_mesh_entity.h.

Friends And Related Function Documentation

◆ GeoModelMeshEntityAccess< DIMENSION >

template<index_t DIMENSION>
friend class GeoModelMeshEntityAccess< DIMENSION >
friend

Definition at line 521 of file geomodel_mesh_entity.h.

Member Data Documentation

◆ line_mesh_

template<index_t DIMENSION>
std::shared_ptr< LineMesh< DIMENSION > > RINGMesh::Line< DIMENSION >::line_mesh_ {}
private

Definition at line 671 of file geomodel_mesh_entity.h.


The documentation for this class was generated from the following files: