Feel++ 0.111.0-preview.14
Finite Element Embedded Library in C++
Feel::MeshSupport< MeshType > Class Template Reference

Description of a mesh support. More...

+ Inheritance diagram for Feel::MeshSupport< MeshType >:
+ Collaboration diagram for Feel::MeshSupport< MeshType >:

Public Types

using edges_interprocess_map_type = std::unordered_map< index_type, std::set< rank_type > >
 
using element_type = typename mesh_type::element_type
 
using face_type = typename mesh_type::face_type
 
using mesh_ptrtype = std::shared_ptr< mesh_type >
 
using mesh_type = typename MeshTraits< MeshType >::mesh_type
 
using point_interprocess_map_type = typename mesh_type::point_interprocess_map_type
 
using range_elements_type = Range< mesh_type, MESH_ELEMENTS >
 
using range_faces_type = Range< mesh_type, MESH_FACES >
 
using super_type = MeshSupportBase
 

Public Member Functions

template<entity_filter_t FF, typename ... Ts>
range_elements_type elementsFilter (entity_process_t ept, Ts &&... ts) const
 
template<entity_filter_t FF, entity_process_t EPT, typename ... Ts>
range_elements_type elementsFilterImpl (Ts &&... ts) const
 
template<entity_filter_t FF, typename ... Ts>
range_faces_type facesFilter (entity_process_t ept, Ts &&... ts) const
 
template<entity_filter_t FF, entity_process_t EPT, typename ... Ts>
range_faces_type facesFilterImpl (Ts &&... ts) const
 
std::pair< bool, typename edges_interprocess_map_type::const_iterator > findInterprocessEdges (index_type edgeId) const
 try to find data of interprocess of current partition edge id and return pair(bool,iterator)
 
std::pair< bool, typename point_interprocess_map_type::const_iterator > findInterprocessPoints (index_type pointId) const
 try to find data of interprocess of current partition point id and return pair(bool,iterator)
 
bool hasAnyMarker (std::initializer_list< std::string > l)
 
bool hasElement (size_type eltId) const override
 
bool hasGhostElement (size_type eltId) const
 
bool isFullSupport () const override
 
template<typename FaceType >
bool isGhostFace (FaceType const &face) const
 
bool isInterprocessEdges (index_type edgeId) const
 return true if the edge id is on interprocess of current partition
 
bool isInterprocessPoints (index_type pointId) const
 return true if the point id on interprocess of current partition
 
bool isPartialSupport () const override
 
mesh_ptrtype const & mesh () const
 
 MeshSupport (mesh_ptrtype const &mesh)
 
 MeshSupport (mesh_ptrtype const &mesh, range_elements_type const &rangeElements, bool fullsupport=false)
 
size_type numElements () const override
 
template<entity_process_t EPT = entity_process_t::LOCAL_ONLY>
range_faces_type rangeBoundaryFaces (rank_type part) const
 
template<entity_process_t EPT = entity_process_t::LOCAL_ONLY>
range_elements_type rangeElementsMarkerByType (uint16_type markerType, std::set< flag_type > const &markerFlags, rank_type part) const
 
template<entity_process_t EPT = entity_process_t::LOCAL_ONLY>
range_elements_type rangeElementsProcessId (rank_type part) const
 
template<entity_process_t EPT = entity_process_t::LOCAL_ONLY>
range_faces_type rangeFacesMarkerByType (uint16_type markerType, std::set< flag_type > const &markerFlags, rank_type part) const
 
template<entity_process_t EPT = entity_process_t::LOCAL_ONLY>
range_faces_type rangeFacesProcessId (rank_type part) const
 
template<entity_process_t EPT = entity_process_t::LOCAL_ONLY>
range_faces_type rangeInternalFaces (rank_type part) const
 
range_faces_type rangeInterProcessFaces (rank_type part, rank_type neighbor_pid) const
 
std::shared_ptr< Localization< mesh_type > > tool_localization () const
 
worldcomm_ptr_t const & worldCommPtr () const
 
virtual bool hasElement (size_type eltId) const =0
 
virtual bool isFullSupport () const =0
 
virtual bool isPartialSupport () const =0
 
virtual size_type numElements () const =0
 
virtual void resetLocalizationTool ()=0
 

Static Public Attributes

static constexpr int nDim = mesh_type::nDim
 

Detailed Description

template<typename MeshType>
class Feel::MeshSupport< MeshType >

Description of a mesh support.

allows to build a function space on a range of elements

Member Function Documentation

◆ hasAnyMarker()

template<typename MeshType >
bool Feel::MeshSupport< MeshType >::hasAnyMarker ( std::initializer_list< std::string >  l)
Returns
true if some markers in l are present in the mesh data structure, false otherwise WARNING, we use the full mesh, maybe only on this support (but required collective mpi operation)

◆ hasElement()

template<typename MeshType >
bool Feel::MeshSupport< MeshType >::hasElement ( size_type  eltId) const
overridevirtual

Implements Feel::MeshSupportBase.

◆ isFullSupport()

template<typename MeshType >
bool Feel::MeshSupport< MeshType >::isFullSupport ( ) const
overridevirtual

Implements Feel::MeshSupportBase.

◆ isPartialSupport()

template<typename MeshType >
bool Feel::MeshSupport< MeshType >::isPartialSupport ( ) const
overridevirtual

Implements Feel::MeshSupportBase.

◆ numElements()

template<typename MeshType >
size_type Feel::MeshSupport< MeshType >::numElements ( ) const
overridevirtual

Implements Feel::MeshSupportBase.