base mesh class More...
Inheritance diagram for Feel::MeshBase< IndexT >:
Collaboration diagram for Feel::MeshBase< IndexT >:Typedefs | |
| using | super = CommObject |
| using | index_type = IndexT |
| type of indices : default to uint32_type | |
| using | index_t = index_type |
| using | size_type = index_type |
| typedef boost::tuple< index_type, index_type > | face_processor_type |
| Tuple that contains. More... | |
| typedef SubMeshData< index_type > | smd_type |
| typedef std::shared_ptr< smd_type > | smd_ptrtype |
Methods | |
| class | boost::serialization::access |
| check elements orientation and fix it if needed | |
| std::map< std::string, std::vector< size_type > > | M_markername |
| marker name dictionary ( std::string -> <int,int> ) get<0>() provides the id get<1>() provides the topological dimension | |
| virtual void | clear () |
| Empty all containers of the mesh. More... | |
| virtual void | updateForUse ()=0 |
| update all info for this mesh. | |
| virtual void | updateForUse (size_type components) |
update all info for this mesh according the components More... | |
| virtual void | updateForUseAfterMovingNodes (bool upMeasures=true)=0 |
| update the mesh when nodes have moved | |
| virtual void | partition (const rank_type n_parts)=0 |
Call the default partitioner (currently metis_partition()). | |
| virtual void | meshModified ()=0 |
| void | setSubMeshData (smd_ptrtype smd) |
| set sub mesh data | |
| smd_ptrtype | subMeshData () const |
| return sub mesh data | |
| bool | hasSubMeshData () const |
| smd_type::mesh_ptrtype | subMesh () const |
| smd_type::mesh_ptrtype | parentMesh () const |
| bool | isSubMesh () const |
| true if is a sub mesh | |
| bool | isSubMeshFrom (MeshBase const *m) const |
| bool | isSubMeshFrom (std::shared_ptr< MeshBase > m) const |
| bool | isParentMeshOf (MeshBase const *m) const |
| bool | isParentMeshOf (std::shared_ptr< MeshBase > m) const |
| bool | isSiblingOf (MeshBase const *m) const |
| bool | isSiblingOf (std::shared_ptr< MeshBase > m) const |
| template<typename M > | |
| bool | isSameMesh (M const *m) const |
| template<typename M > | |
| bool | isSameMesh (std::shared_ptr< M > m) const |
| template<typename M > | |
| bool | isRelatedTo (M const *m) const |
| template<typename M > | |
| bool | isRelatedTo (std::shared_ptr< M > m) const |
| size_type | subMeshToMesh (size_type id) const |
| size_type | meshToSubMesh (size_type id) const |
| std::pair< std::vector< size_type >, bool > | meshToSubMesh (std::vector< size_type > const &p, bool add_invalid_indices=false) const |
| size_type | subMeshToMesh (std::shared_ptr< MeshBase > m, size_type id) const |
| size_type | meshToSubMesh (std::shared_ptr< MeshBase > m, size_type id) const |
| template<typename MeshType > | |
| void | addMeshWithNodesShared (std::shared_ptr< MeshType > m) |
| store a mesh which has nodes shared with the current mesh | |
| template<typename MeshType > | |
| void | addMeshWithNodesShared (std::shared_ptr< const MeshType > m) |
| store a mesh which has nodes shared with the current mesh | |
| std::vector< std::shared_ptr< MeshBase< IndexT > > > | meshesWithNodesShared () const |
| get all meshes which share the nodes with the current mesh (current mesh is also include) | |
| void | attachMeshSupport (MeshSupportBase *ms) const |
| attach a mesh support | |
| void | detachMeshSupport (MeshSupportBase *ms) const |
| detach a mesh support | |
| std::vector< MeshSupportBase * > const & | meshSupportsAttached () const |
| return all mesh supports attached | |
| bool | hasAllMarkers (std::initializer_list< std::string > l) |
| bool | hasAnyMarker (std::initializer_list< std::string > l) |
| bool | hasMarker (std::string const &marker) const |
| bool | hasElementMarker (std::string const &marker) const |
| bool | hasFaceMarker (std::string const &marker) const |
| bool | hasEdgeMarker (std::string const &marker) const |
| bool | hasPointMarker (std::string const &marker) const |
| bool | hasMarkers (std::initializer_list< std::string > l) const |
| size_type | markerName (std::string const &marker) const |
| std::string | markerName (size_type marker) const |
| std::string | markerName (size_type marker, size_type dim) const |
| size_type | markerDim (std::string const &marker) const |
| std::map< std::string, std::vector< size_type > > | markerNames () const |
| void | setMarkerNames (std::map< std::string, std::vector< size_type > > const &m) |
| set the marker names | |
| void | addMarkerName (std::pair< std::string, std::vector< size_type > > const &marker) |
| add a new marker name | |
| void | addMarkerName (std::string __name, int __id, int __topoDim) |
| add a new marker name | |
| flag_type | markerId (boost::any const &marker) const |
| std::set< flag_type > | markersId (boost::any const &marker) const |
| void | setUpdatedForUse (bool u) |
| Set whether the mesh is finalized and ready for use. More... | |
| void | markGeometryChanged () |
| Advance the coordinate-only geometry revision. | |
| virtual void | renumber ()=0 |
| After loading/defining a mesh, we want to have as much locality as possible (elements/faces/nodes to be contiguous). More... | |
| virtual void | updateEntitiesCoDimensionOne ()=0 |
| update the entities of co-dimension 1 | |
| virtual void | updateEntitiesCoDimensionTwo ()=0 |
| update the entities of co-dimension 2 More... | |
| virtual void | check () const =0 |
| check mesh connectivity | |
Constructors, destructor | |
| MeshBase () | |
| MeshBase (worldcomm_ptr_t const &w) | |
| MeshBase (MeshBase const &)=default | |
| MeshBase (MeshBase &&)=default | |
| ~MeshBase () override | |
| MeshBase (uint16_type topodim, uint16_type realdim, worldcomm_ptr_t const &worldComm=Environment::worldCommPtr()) | |
| build from a topological dimension, a real dimension and a communicator | |
| MeshBase (std::string const &name, uint16_type topodim, uint16_type realdim, worldcomm_ptr_t const &worldComm=Environment::worldCommPtr()) | |
| build from a name, a topological dimension, a real dimension and a communicator | |
Operator overloads | |
| MeshBase & | operator= (MeshBase const &m)=default |
| MeshBase & | operator= (MeshBase &&m)=default |
Accessors | |
| virtual std::shared_ptr< MeshBase< IndexT > > | shared_from_this_meshbase ()=0 |
| return current shared_ptr of type MeshBase | |
| virtual std::shared_ptr< const MeshBase< IndexT > > | shared_from_this_meshbase () const =0 |
| return current shared_ptr of type MeshBase | |
| bool | isUpdatedForUse () const |
| uint64_type | functionSpaceStructuralRevision () const noexcept |
| Return the revision used to invalidate mesh-based function spaces. More... | |
| uint64_type | geometryRevision () const noexcept |
| Return the coordinate-only geometry revision. More... | |
| void | setTopologicalDimension (int d) |
| set the topological dimension | |
| void | setRealDimension (int d) |
| set the real dimension | |
| virtual size_type | numGlobalElements () const =0 |
| virtual size_type | numGlobalFaces () const =0 |
| virtual size_type | numGlobalEdges () const =0 |
| virtual size_type | numGlobalPoints () const =0 |
| virtual size_type | numGlobalVertices () const =0 |
| virtual size_type | numElements () const =0 |
| virtual size_type | numFaces () const =0 |
| virtual size_type | numPoints () const =0 |
| size_type | numVertices () const |
| rank_type | numberOfPartitions () const |
| Returns the number of partitions. | |
| bool | isPartitioned () const |
| Context const & | components () const |
| Context & | components () |
| bool | isParametric () const |
Mutators | |
| void | setNumberOfPartitions (rank_type n) |
| set the number of partitions | |
| void | setNumVertices (size_type n) |
| set the number of vertices | |
| void | setComponents (size_type components=MESH_ALL_COMPONENTS) |
set the components to be updated by updateForUse() More... | |
| void | setParametric (bool x) |
| set if the mesh is parametric ( e.g. More... | |
Additional Inherited Members | |
Public Types inherited from Feel::JournalWatcher | |
| using | function_update_information_type = std::function< void(nl::json &)> |
| using | notify_type = nl::json |
Public Member Functions inherited from Feel::CommObject | |
| WorldComm const & | comm () const |
| CommObject (CommObject &&)=default | |
| CommObject (CommObject const &)=default | |
| CommObject (worldcomm_ptr_t &w) | |
| CommObject (worldcomm_ptr_t const &w) | |
| bool | hasWorldComm () const |
| returns true if worldcomm is allocated, false othewise | |
| CommObject & | operator= (CommObject &&)=default |
| CommObject & | operator= (CommObject const &)=default |
| virtual void | setWorldComm (worldcomm_ptr_t const &w) |
| virtual void | setWorldComm (worldcomm_t &w) |
| worldcomm_ptr_t & | subWorldCommSeqPtr () |
| worldcomm_ptr_t const & | subWorldCommSeqPtr () const |
| WorldComm & | worldComm () |
| WorldComm const & | worldComm () const |
| worldcomm_ptr_t & | worldCommPtr () |
| worldcomm_ptr_t const & | worldCommPtr () const |
Public Member Functions inherited from Feel::JournalWatcher | |
| JournalWatcher (std::string const &category="", std::string const &name="", bool connect=JournalManager::journalAutoMode()) | |
| Constructors. More... | |
| JournalWatcher (std::string const &category, bool useDefaultName, bool connect=JournalManager::journalAutoMode()) | |
| JournalWatcher (function_update_information_type const &func, std::string const &category="", std::string const &name="", bool useDefaultNameIfEmpty=true, bool connect=JournalManager::journalAutoMode()) | |
| JournalWatcher (JournalWatcher const &jw) | |
| Copy constructor. | |
| virtual | ~JournalWatcher () |
| Default destructor. The (inherited) object is always disconnected from the journal during the destruction. | |
| bool | journalIsConnected () const |
| GettersCheck if the object is connected to the journal. More... | |
| std::string const & | journalWatcherInstanceName () const |
| Return the full instance name for this watched object. The name is composed with the base name and a suffix index corresponding to the nth call. More... | |
| nl::json::json_pointer | journalSection () const |
| Return the section into the journal as json_pointer. | |
| nl::json const & | informationObject () const |
| Return the information into property tree. | |
| void | journalConnect () |
| Setters. More... | |
| void | journalDisconnect () |
| Disconnect the derived object from the simulation info manager. The disconnection is safe. | |
| virtual void | updateInformationObject (nl::json &p) const |
| update information object into p More... | |
| void | setInformationObject (nl::json const &informationObject) |
| set information object | |
| void | putInformationObject (nl::json const &informationObject) |
| put information object | |
| void | addInformationObject (nl::json const &informationObject) |
| add information object | |
| void | journalFinalize () |
| finalize journal publication | |
Protected Member Functions inherited from Feel::JournalWatcher | |
| void | applyUpdateInformationObject () |
| Protected Methods. | |
base mesh class
| typedef boost::tuple<index_type, index_type> Feel::MeshBase< IndexT >::face_processor_type |
Tuple that contains.
|
virtual |
Empty all containers of the mesh.
Must be redefined by derived classes.
Reimplemented in Feel::Mesh0D< Shape, T, IndexT >, Feel::Mesh1D< Shape, T, IndexT >, Feel::Mesh2D< Shape, T, IndexT >, and Feel::Mesh3D< Shape, T, IndexT >.
Referenced by Feel::Mesh0D< Shape, T, IndexT >::renumber().
| Context & Feel::MeshBase< IndexT >::components | ( | ) |
Context) that encodes the components to be updated by the mesh data structure. | Context const & Feel::MeshBase< IndexT >::components | ( | ) | const |
Context) that encodes the components to be updated by the mesh data structure.
|
noexcept |
Return the revision used to invalidate mesh-based function spaces.
The revision advances when an already finalized mesh is marked as no longer updated for use because its topology or DOF-relevant structure may have changed.
|
noexcept |
Return the coordinate-only geometry revision.
| bool Feel::MeshBase< IndexT >::hasAllMarkers | ( | std::initializer_list< std::string > | l | ) |
| bool Feel::MeshBase< IndexT >::hasAnyMarker | ( | std::initializer_list< std::string > | l | ) |
| bool Feel::MeshBase< IndexT >::hasEdgeMarker | ( | std::string const & | marker | ) | const |
marker exists and topological dimension of the entity associated is Dim-2, false otherwise | bool Feel::MeshBase< IndexT >::hasElementMarker | ( | std::string const & | marker | ) | const |
marker exists and topological dimension of the entity associated is Dim, false otherwise | bool Feel::MeshBase< IndexT >::hasFaceMarker | ( | std::string const & | marker | ) | const |
marker exists and topological dimension of the entity associated is Dim-1, false otherwise | bool Feel::MeshBase< IndexT >::hasMarker | ( | std::string const & | marker | ) | const |
marker exists, false otherwise | bool Feel::MeshBase< IndexT >::hasMarkers | ( | std::initializer_list< std::string > | l | ) | const |
| bool Feel::MeshBase< IndexT >::hasPointMarker | ( | std::string const & | marker | ) | const |
marker exists and topological dimension of the entity associated is 0, false otherwise | bool Feel::MeshBase< IndexT >::hasSubMeshData | ( | ) | const |
| bool Feel::MeshBase< IndexT >::isParametric | ( | ) | const |
| bool Feel::MeshBase< IndexT >::isParentMeshOf | ( | std::shared_ptr< MeshBase< IndexT > > | m | ) | const |
m | bool Feel::MeshBase< IndexT >::isPartitioned |
true if mesh is partitioned, false otherwise | bool Feel::MeshBase< IndexT >::isSiblingOf | ( | std::shared_ptr< MeshBase< IndexT > > | m | ) | const |
m | bool Feel::MeshBase< IndexT >::isSubMeshFrom | ( | MeshBase< IndexT > const * | m | ) | const |
m | bool Feel::MeshBase< IndexT >::isSubMeshFrom | ( | std::shared_ptr< MeshBase< IndexT > > | m | ) | const |
m | bool Feel::MeshBase< IndexT >::isUpdatedForUse | ( | ) | const |
true if the mesh is ready for use, false otherwise | size_type Feel::MeshBase< IndexT >::markerDim | ( | std::string const & | marker | ) | const |
marker | flag_type Feel::MeshBase< IndexT >::markerId | ( | boost::any const & | marker | ) | const |
marker | std::string Feel::MeshBase< IndexT >::markerName | ( | size_type | marker | ) | const |
marker id | std::string Feel::MeshBase< IndexT >::markerName | ( | size_type | marker, |
| size_type | dim | ||
| ) | const |
marker id | size_type Feel::MeshBase< IndexT >::markerName | ( | std::string const & | marker | ) | const |
marker | std::map< std::string, std::vector< size_type > > Feel::MeshBase< IndexT >::markerNames | ( | ) | const |
| std::set< flag_type > Feel::MeshBase< IndexT >::markersId | ( | boost::any const & | marker | ) | const |
marker | size_type Feel::MeshBase< IndexT >::meshToSubMesh | ( | size_type | id | ) | const |
| size_type Feel::MeshBase< IndexT >::meshToSubMesh | ( | std::shared_ptr< MeshBase< IndexT > > | m, |
| size_type | id | ||
| ) | const |
| std::pair< std::vector< size_type >, bool > Feel::MeshBase< IndexT >::meshToSubMesh | ( | std::vector< size_type > const & | p, |
| bool | add_invalid_indices = false |
||
| ) | const |
|
pure virtual |
Implemented in Feel::Mesh0D< Shape, T, IndexT >, Feel::Mesh1D< Shape, T, IndexT >, Feel::Mesh2D< Shape, T, IndexT >, and Feel::Mesh3D< Shape, T, IndexT >.
|
pure virtual |
Implemented in Feel::Mesh0D< Shape, T, IndexT >, Feel::Mesh1D< Shape, T, IndexT >, Feel::Mesh2D< Shape, T, IndexT >, and Feel::Mesh3D< Shape, T, IndexT >.
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtual |
Implemented in Feel::Mesh0D< Shape, T, IndexT >, Feel::Mesh1D< Shape, T, IndexT >, Feel::Mesh2D< Shape, T, IndexT >, and Feel::Mesh3D< Shape, T, IndexT >.
| size_type Feel::MeshBase< IndexT >::numVertices | ( | ) | const |
| smd_type::mesh_ptrtype Feel::MeshBase< IndexT >::parentMesh | ( | ) | const |
|
protectedpure virtual |
After loading/defining a mesh, we want to have as much locality as possible (elements/faces/nodes to be contiguous).
In order to do that the mesh elements/faces/nodes are renumbered. That will be then most helpful when generating the Dof table. This procedure should work also with comm().size() == 1
Implemented in Feel::Mesh0D< Shape, T, IndexT >, Feel::Mesh1D< Shape, T, IndexT >, Feel::Mesh2D< Shape, T, IndexT >, and Feel::Mesh3D< Shape, T, IndexT >.
| void Feel::MeshBase< IndexT >::setComponents | ( | size_type | components = MESH_ALL_COMPONENTS | ) |
set the components to be updated by updateForUse()
| void Feel::MeshBase< IndexT >::setParametric | ( | bool | x | ) |
set if the mesh is parametric ( e.g.
has parametric nodes )
|
protected |
Set whether the mesh is finalized and ready for use.
Changing a finalized mesh to the not-updated state advances the function-space structural revision exactly once.
| u | whether the mesh is updated for use |
| smd_type::mesh_ptrtype Feel::MeshBase< IndexT >::subMesh | ( | ) | const |
| size_type Feel::MeshBase< IndexT >::subMeshToMesh | ( | size_type | id | ) | const |
| size_type Feel::MeshBase< IndexT >::subMeshToMesh | ( | std::shared_ptr< MeshBase< IndexT > > | m, |
| size_type | id | ||
| ) | const |
|
protectedpure virtual |
update the entities of co-dimension 2
Implemented in Feel::Mesh0D< Shape, T, IndexT >, Feel::Mesh1D< Shape, T, IndexT >, Feel::Mesh2D< Shape, T, IndexT >, and Feel::Mesh3D< Shape, T, IndexT >.
|
virtual |
update all info for this mesh according the components