Loading src/TNL/Meshes/MeshDetails/MeshEntity_impl.h +1 −86 Original line number Diff line number Diff line Loading @@ -107,33 +107,6 @@ getEntityDimension() const /**** * Subentities */ template< typename MeshConfig, typename EntityTopology > template< int Subdimensions > constexpr typename MeshEntity< MeshConfig, EntityTopology >::LocalIndexType MeshEntity< MeshConfig, EntityTopology >:: getNumberOfSubentities() const { return SubentityTraits< Subdimensions >::count; } template< typename MeshConfig, typename EntityTopology > template< int Subdimensions > typename MeshEntity< MeshConfig, EntityTopology >::GlobalIndexType MeshEntity< MeshConfig, EntityTopology >:: getSubentityIndex( const LocalIndexType localIndex) const { static_assert( SubentityTraits< Subdimensions >::storageEnabled, "You try to get subentity which is not configured for storage." ); Assert( 0 <= localIndex && localIndex < SubentityTraits< Subdimensions >::count, std::cerr << "localIndex = " << localIndex << " subentitiesCount = " << SubentityTraits< Subdimensions >::count ); typedef MeshSubentityStorageLayers< MeshConfig, EntityTopology > SubentityBaseType; return SubentityBaseType::getSubentityIndex( MeshDimensionTag< Subdimensions >(), localIndex ); } template< typename MeshConfig, typename EntityTopology > constexpr typename MeshEntity< MeshConfig, EntityTopology >::LocalIndexType Loading @@ -149,67 +122,9 @@ typename MeshEntity< MeshConfig, EntityTopology >::GlobalIndexType MeshEntity< MeshConfig, EntityTopology >:: getVertexIndex( const LocalIndexType localIndex ) const { return this->getSubentityIndex< 0 >( localIndex ); } template< typename MeshConfig, typename EntityTopology > template< int Dimensions > typename MeshEntity< MeshConfig, EntityTopology >::IdPermutationArrayAccessorType MeshEntity< MeshConfig, EntityTopology >:: subentityOrientation( LocalIndexType index ) const { static const LocalIndexType subentitiesCount = SubentityTraits< Dimension >::count; TNL_ASSERT( 0 <= index && index < subentitiesCount, ); typedef MeshSubentityStorageLayers< MeshConfig, EntityTopology > SubentityStorageLayers; return SubentityStorageLayers::subentityOrientation( MeshDimensionsTag< Dimensions >(), index ); } /**** * Mesh initialization method */ template< typename MeshConfig, typename EntityTopology > template< int Subdimensions > void MeshEntity< MeshConfig, EntityTopology >:: setSubentityIndex( const LocalIndexType& localIndex, const GlobalIndexType& globalIndex ) { static_assert( SubentityTraits< Subdimensions >::storageEnabled, "You try to set subentity which is not configured for storage." ); Assert( 0 <= localIndex && localIndex < SubentityTraits< Subdimensions >::count, std::cerr << "localIndex = " << localIndex << " subentitiesCount = " << SubentityTraits< Subdimensions >::count ); typedef MeshSubentityStorageLayers< MeshConfig, EntityTopology > SubentityBaseType; SubentityBaseType::setSubentityIndex( MeshDimensionTag< Subdimensions >(), localIndex, globalIndex ); return this->template getSubentityIndex< 0 >( localIndex ); } template< typename MeshConfig, typename EntityTopology > template< int Subdimensions > typename MeshEntity< MeshConfig, EntityTopology >::template SubentityTraits< Subdimensions >::IdArrayType& MeshEntity< MeshConfig, EntityTopology >:: subentityIdsArray() { typedef MeshSubentityStorageLayers< MeshConfig, EntityTopology > SubentityStorageLayers; return SubentityStorageLayers::subentityIdsArray( MeshDimensionsTag< Subdimensions >() ); } template< typename MeshConfig, typename EntityTopology > template< int Subdimensions > typename MeshEntity< MeshConfig, EntityTopology >::template SubentityTraits< Subdimensions >::OrientationArrayType& MeshEntity< MeshConfig, EntityTopology >:: subentityOrientationsArray() { typedef MeshSubentityStorageLayers< MeshConfig, EntityTopology > SubentityStorageLayers; return SubentityStorageLayers::subentityOrientationsArray( MeshDimensionsTag< Subdimensions >() ); } /**** * Vertex entity specialization Loading src/TNL/Meshes/MeshDetails/layers/MeshSubentityStorageLayer.h +62 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,68 @@ class MeshSubentityStorageLayers EntityTopology, MeshDimensionsTag< EntityTopology::dimensions - 1 > > { using BaseType = MeshSubentityStorageLayer< MeshConfig, EntityTopology, MeshDimensionsTag< EntityTopology::dimensions - 1 > >; static constexpr int Dimensions = EntityTopology::dimensions; using MeshTraitsType = MeshTraits< MeshConfig >; template< int Subdimensions > using SubentityTraits = typename MeshTraitsType::template SubentityTraits< EntityTopology, Subdimensions >; public: template< int Subdimensions > constexpr typename SubentityTraits< Subdimensions >::LocalIndexType getNumberOfSubentities() const { return SubentityTraits< Subdimensions >::count; } template< int Subdimensions > void setSubentityIndex( const typename SubentityTraits< Subdimensions >::LocalIndexType& localIndex, const typename SubentityTraits< Subdimensions >::GlobalIndexType& globalIndex ) { static_assert( SubentityTraits< Subdimensions >::storageEnabled, "You try to set subentity which is not configured for storage." ); Assert( 0 <= localIndex && localIndex < SubentityTraits< Subdimensions >::count, std::cerr << "localIndex = " << localIndex << " subentitiesCount = " << SubentityTraits< Subdimensions >::count ); BaseType::setSubentityIndex( MeshDimensionsTag< Subdimensions >(), localIndex, globalIndex ); } template< int Subdimensions > typename SubentityTraits< Subdimensions >::GlobalIndexType getSubentityIndex( const typename SubentityTraits< Subdimensions >::LocalIndexType localIndex ) const { static_assert( SubentityTraits< Subdimensions >::storageEnabled, "You try to get subentity which is not configured for storage." ); Assert( 0 <= localIndex && localIndex < SubentityTraits< Subdimensions >::count, std::cerr << "localIndex = " << localIndex << " subentitiesCount = " << SubentityTraits< Subdimensions >::count ); return BaseType::getSubentityIndex( MeshDimensionsTag< Subdimensions >(), localIndex ); } template< int Subdimensions > typename SubentityTraits< Subdimensions >::IdArrayType& subentityIdsArray() { return BaseType::subentityIdsArray( MeshDimensionsTag< Subdimensions >() ); } template< int Subdimensions > typename SubentityTraits< Subdimensions >::OrientationArrayType& subentityOrientationsArray() { return BaseType::subentityOrientationsArray( MeshDimensionsTag< Subdimensions >() ); } template< int Subdimensions > typename MeshTraitsType::IdPermutationArrayAccessorType subentityOrientation( typename SubentityTraits< Subdimensions >::LocalIndexType index ) const { Assert( 0 <= index && index < SubentityTraits< Subdimensions >::count, ); return BaseType::subentityOrientation( MeshDimensionsTag< Subdimensions >(), index ); } }; Loading src/TNL/Meshes/MeshEntity.h +12 −24 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ class MeshInitializer; template< typename MeshConfig, typename EntityTopology_ > class MeshEntity : public MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >, : protected MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >, protected MeshSuperentityAccess< MeshConfig, EntityTopology_ >, public MeshEntityId< typename MeshConfig::IdType, typename MeshConfig::GlobalIndexType > Loading @@ -46,7 +46,6 @@ class MeshEntity using EntityTopology = EntityTopology_; using GlobalIndexType = typename MeshTraitsType::GlobalIndexType; using LocalIndexType = typename MeshTraitsType::LocalIndexType; using IdPermutationArrayAccessorType = typename MeshTraitsType::IdPermutationArrayAccessorType; template< int Subdimensions > using SubentityTraits = typename MeshTraitsType::template SubentityTraits< EntityTopology, Subdimensions >; Loading @@ -73,11 +72,9 @@ class MeshEntity /**** * Subentities */ template< int Subdimensions > constexpr LocalIndexType getNumberOfSubentities() const; template< int Subdimensions > GlobalIndexType getSubentityIndex( const LocalIndexType localIndex) const; using MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >::getNumberOfSubentities; using MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >::getSubentityIndex; using MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >::subentityOrientation; /**** * Superentities Loading @@ -92,27 +89,18 @@ class MeshEntity GlobalIndexType getVertexIndex( const LocalIndexType localIndex ) const; template< int Dimensions > IdPermutationArrayAccessorType subentityOrientation( LocalIndexType index ) const; protected: /**** * Methods for the mesh initialization */ using MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >::setSubentityIndex; using MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >::subentityIdsArray; using MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >::subentityOrientationsArray; using MeshSuperentityAccess< MeshConfig, EntityTopology_ >::bindSuperentitiesStorageNetwork; using MeshSuperentityAccess< MeshConfig, EntityTopology_ >::setNumberOfSuperentities; using MeshSuperentityAccess< MeshConfig, EntityTopology_ >::setSuperentityIndex; template< int Subdimensions > void setSubentityIndex( const LocalIndexType& localIndex, const GlobalIndexType& globalIndex ); template< int Subdimensions > typename SubentityTraits< Subdimensions >::IdArrayType& subentityIdsArray(); template< int Subdimensions > typename SubentityTraits< Subdimensions >::OrientationArrayType& subentityOrientationsArray(); friend MeshInitializer< MeshConfig >; template< typename Mesh, typename DimensionsTag, typename SuperdimensionsTag > Loading Loading
src/TNL/Meshes/MeshDetails/MeshEntity_impl.h +1 −86 Original line number Diff line number Diff line Loading @@ -107,33 +107,6 @@ getEntityDimension() const /**** * Subentities */ template< typename MeshConfig, typename EntityTopology > template< int Subdimensions > constexpr typename MeshEntity< MeshConfig, EntityTopology >::LocalIndexType MeshEntity< MeshConfig, EntityTopology >:: getNumberOfSubentities() const { return SubentityTraits< Subdimensions >::count; } template< typename MeshConfig, typename EntityTopology > template< int Subdimensions > typename MeshEntity< MeshConfig, EntityTopology >::GlobalIndexType MeshEntity< MeshConfig, EntityTopology >:: getSubentityIndex( const LocalIndexType localIndex) const { static_assert( SubentityTraits< Subdimensions >::storageEnabled, "You try to get subentity which is not configured for storage." ); Assert( 0 <= localIndex && localIndex < SubentityTraits< Subdimensions >::count, std::cerr << "localIndex = " << localIndex << " subentitiesCount = " << SubentityTraits< Subdimensions >::count ); typedef MeshSubentityStorageLayers< MeshConfig, EntityTopology > SubentityBaseType; return SubentityBaseType::getSubentityIndex( MeshDimensionTag< Subdimensions >(), localIndex ); } template< typename MeshConfig, typename EntityTopology > constexpr typename MeshEntity< MeshConfig, EntityTopology >::LocalIndexType Loading @@ -149,67 +122,9 @@ typename MeshEntity< MeshConfig, EntityTopology >::GlobalIndexType MeshEntity< MeshConfig, EntityTopology >:: getVertexIndex( const LocalIndexType localIndex ) const { return this->getSubentityIndex< 0 >( localIndex ); } template< typename MeshConfig, typename EntityTopology > template< int Dimensions > typename MeshEntity< MeshConfig, EntityTopology >::IdPermutationArrayAccessorType MeshEntity< MeshConfig, EntityTopology >:: subentityOrientation( LocalIndexType index ) const { static const LocalIndexType subentitiesCount = SubentityTraits< Dimension >::count; TNL_ASSERT( 0 <= index && index < subentitiesCount, ); typedef MeshSubentityStorageLayers< MeshConfig, EntityTopology > SubentityStorageLayers; return SubentityStorageLayers::subentityOrientation( MeshDimensionsTag< Dimensions >(), index ); } /**** * Mesh initialization method */ template< typename MeshConfig, typename EntityTopology > template< int Subdimensions > void MeshEntity< MeshConfig, EntityTopology >:: setSubentityIndex( const LocalIndexType& localIndex, const GlobalIndexType& globalIndex ) { static_assert( SubentityTraits< Subdimensions >::storageEnabled, "You try to set subentity which is not configured for storage." ); Assert( 0 <= localIndex && localIndex < SubentityTraits< Subdimensions >::count, std::cerr << "localIndex = " << localIndex << " subentitiesCount = " << SubentityTraits< Subdimensions >::count ); typedef MeshSubentityStorageLayers< MeshConfig, EntityTopology > SubentityBaseType; SubentityBaseType::setSubentityIndex( MeshDimensionTag< Subdimensions >(), localIndex, globalIndex ); return this->template getSubentityIndex< 0 >( localIndex ); } template< typename MeshConfig, typename EntityTopology > template< int Subdimensions > typename MeshEntity< MeshConfig, EntityTopology >::template SubentityTraits< Subdimensions >::IdArrayType& MeshEntity< MeshConfig, EntityTopology >:: subentityIdsArray() { typedef MeshSubentityStorageLayers< MeshConfig, EntityTopology > SubentityStorageLayers; return SubentityStorageLayers::subentityIdsArray( MeshDimensionsTag< Subdimensions >() ); } template< typename MeshConfig, typename EntityTopology > template< int Subdimensions > typename MeshEntity< MeshConfig, EntityTopology >::template SubentityTraits< Subdimensions >::OrientationArrayType& MeshEntity< MeshConfig, EntityTopology >:: subentityOrientationsArray() { typedef MeshSubentityStorageLayers< MeshConfig, EntityTopology > SubentityStorageLayers; return SubentityStorageLayers::subentityOrientationsArray( MeshDimensionsTag< Subdimensions >() ); } /**** * Vertex entity specialization Loading
src/TNL/Meshes/MeshDetails/layers/MeshSubentityStorageLayer.h +62 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,68 @@ class MeshSubentityStorageLayers EntityTopology, MeshDimensionsTag< EntityTopology::dimensions - 1 > > { using BaseType = MeshSubentityStorageLayer< MeshConfig, EntityTopology, MeshDimensionsTag< EntityTopology::dimensions - 1 > >; static constexpr int Dimensions = EntityTopology::dimensions; using MeshTraitsType = MeshTraits< MeshConfig >; template< int Subdimensions > using SubentityTraits = typename MeshTraitsType::template SubentityTraits< EntityTopology, Subdimensions >; public: template< int Subdimensions > constexpr typename SubentityTraits< Subdimensions >::LocalIndexType getNumberOfSubentities() const { return SubentityTraits< Subdimensions >::count; } template< int Subdimensions > void setSubentityIndex( const typename SubentityTraits< Subdimensions >::LocalIndexType& localIndex, const typename SubentityTraits< Subdimensions >::GlobalIndexType& globalIndex ) { static_assert( SubentityTraits< Subdimensions >::storageEnabled, "You try to set subentity which is not configured for storage." ); Assert( 0 <= localIndex && localIndex < SubentityTraits< Subdimensions >::count, std::cerr << "localIndex = " << localIndex << " subentitiesCount = " << SubentityTraits< Subdimensions >::count ); BaseType::setSubentityIndex( MeshDimensionsTag< Subdimensions >(), localIndex, globalIndex ); } template< int Subdimensions > typename SubentityTraits< Subdimensions >::GlobalIndexType getSubentityIndex( const typename SubentityTraits< Subdimensions >::LocalIndexType localIndex ) const { static_assert( SubentityTraits< Subdimensions >::storageEnabled, "You try to get subentity which is not configured for storage." ); Assert( 0 <= localIndex && localIndex < SubentityTraits< Subdimensions >::count, std::cerr << "localIndex = " << localIndex << " subentitiesCount = " << SubentityTraits< Subdimensions >::count ); return BaseType::getSubentityIndex( MeshDimensionsTag< Subdimensions >(), localIndex ); } template< int Subdimensions > typename SubentityTraits< Subdimensions >::IdArrayType& subentityIdsArray() { return BaseType::subentityIdsArray( MeshDimensionsTag< Subdimensions >() ); } template< int Subdimensions > typename SubentityTraits< Subdimensions >::OrientationArrayType& subentityOrientationsArray() { return BaseType::subentityOrientationsArray( MeshDimensionsTag< Subdimensions >() ); } template< int Subdimensions > typename MeshTraitsType::IdPermutationArrayAccessorType subentityOrientation( typename SubentityTraits< Subdimensions >::LocalIndexType index ) const { Assert( 0 <= index && index < SubentityTraits< Subdimensions >::count, ); return BaseType::subentityOrientation( MeshDimensionsTag< Subdimensions >(), index ); } }; Loading
src/TNL/Meshes/MeshEntity.h +12 −24 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ class MeshInitializer; template< typename MeshConfig, typename EntityTopology_ > class MeshEntity : public MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >, : protected MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >, protected MeshSuperentityAccess< MeshConfig, EntityTopology_ >, public MeshEntityId< typename MeshConfig::IdType, typename MeshConfig::GlobalIndexType > Loading @@ -46,7 +46,6 @@ class MeshEntity using EntityTopology = EntityTopology_; using GlobalIndexType = typename MeshTraitsType::GlobalIndexType; using LocalIndexType = typename MeshTraitsType::LocalIndexType; using IdPermutationArrayAccessorType = typename MeshTraitsType::IdPermutationArrayAccessorType; template< int Subdimensions > using SubentityTraits = typename MeshTraitsType::template SubentityTraits< EntityTopology, Subdimensions >; Loading @@ -73,11 +72,9 @@ class MeshEntity /**** * Subentities */ template< int Subdimensions > constexpr LocalIndexType getNumberOfSubentities() const; template< int Subdimensions > GlobalIndexType getSubentityIndex( const LocalIndexType localIndex) const; using MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >::getNumberOfSubentities; using MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >::getSubentityIndex; using MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >::subentityOrientation; /**** * Superentities Loading @@ -92,27 +89,18 @@ class MeshEntity GlobalIndexType getVertexIndex( const LocalIndexType localIndex ) const; template< int Dimensions > IdPermutationArrayAccessorType subentityOrientation( LocalIndexType index ) const; protected: /**** * Methods for the mesh initialization */ using MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >::setSubentityIndex; using MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >::subentityIdsArray; using MeshSubentityStorageLayers< MeshConfig, EntityTopology_ >::subentityOrientationsArray; using MeshSuperentityAccess< MeshConfig, EntityTopology_ >::bindSuperentitiesStorageNetwork; using MeshSuperentityAccess< MeshConfig, EntityTopology_ >::setNumberOfSuperentities; using MeshSuperentityAccess< MeshConfig, EntityTopology_ >::setSuperentityIndex; template< int Subdimensions > void setSubentityIndex( const LocalIndexType& localIndex, const GlobalIndexType& globalIndex ); template< int Subdimensions > typename SubentityTraits< Subdimensions >::IdArrayType& subentityIdsArray(); template< int Subdimensions > typename SubentityTraits< Subdimensions >::OrientationArrayType& subentityOrientationsArray(); friend MeshInitializer< MeshConfig >; template< typename Mesh, typename DimensionsTag, typename SuperdimensionsTag > Loading