diff --git a/src/TNL/Meshes/MeshDetails/initializer/MeshEntityInitializer.h b/src/TNL/Meshes/MeshDetails/initializer/MeshEntityInitializer.h index 85d19ba6fe124fe9f8225292ed28cf752973512d..d04969604a7941e2b02319c546126ddd842a32a2 100644 --- a/src/TNL/Meshes/MeshDetails/initializer/MeshEntityInitializer.h +++ b/src/TNL/Meshes/MeshDetails/initializer/MeshEntityInitializer.h @@ -34,52 +34,43 @@ template< typename MeshConfig, bool SubentityStorage = MeshSubentityTraits< MeshConfig, EntityTopology, DimensionTag::value >::storageEnabled, bool SubentityOrientationStorage = MeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, DimensionTag::value >::orientationEnabled, bool SuperentityStorage = MeshSuperentityTraits< MeshConfig, - typename MeshSubentityTraits< MeshConfig, EntityTopology, DimensionTag::value >::SubentityTopology, - EntityTopology::dimensions >::storageEnabled > + typename MeshSubentityTraits< MeshConfig, EntityTopology, DimensionsTag::value >::SubentityTopology, + EntityTopology::dimensions >::storageEnabled > class MeshEntityInitializerLayer; template< typename MeshConfig, typename EntityTopology > class MeshEntityInitializer : public MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - MeshDimensionTag< EntityTopology::dimensions - 1 > > + EntityTopology, + MeshDimensionsTag< EntityTopology::dimensions - 1 > > { - typedef MeshDimensionTag< EntityTopology::dimensions > DimensionTag; - private: - - typedef MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - MeshDimensionTag< EntityTopology::dimensions - 1 > > BaseType; - - typedef - MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - MeshDimensionTag< EntityTopology::dimensions - 1 > > SubentityBaseType; - typedef - MeshSuperentityStorageInitializerLayer< MeshConfig, - EntityTopology, - typename - MeshTraits< MeshConfig >::DimensionTag > SuperentityBaseType; - - static const int Dimension = DimensionTag::value; - typedef MeshTraits< MeshConfig > MeshTraitsType; - typedef typename MeshTraitsType::GlobalIndexType GlobalIndexType; - typedef typename MeshTraitsType::LocalIndexType LocalIndexType; - typedef typename MeshTraitsType::template EntityTraits< Dimension > EntityTraitsType; - - typedef typename EntityTraitsType::EntityType EntityType; - typedef typename MeshTraitsType::template SubentityTraits< EntityTopology, 0 > SubvertexTraits; - - typedef MeshInitializer< MeshConfig > InitializerType; - typedef MeshEntitySeed< MeshConfig, EntityTopology > SeedType; + using DimensionsTag = MeshDimensionsTag< EntityTopology::dimensions >; + using BaseType = MeshEntityInitializerLayer< MeshConfig, + EntityTopology, + MeshDimensionsTag< EntityTopology::dimensions - 1 > >; + using SubentityBaseType = MeshEntityInitializerLayer< MeshConfig, + EntityTopology, + MeshDimensionsTag< EntityTopology::dimensions - 1 > >; + using SuperentityBaseType = MeshSuperentityStorageInitializerLayer< MeshConfig, + EntityTopology, + typename MeshTraits< MeshConfig >::DimensionsTag >; + + static constexpr int Dimensions = DimensionsTag::value; + using MeshTraitsType = MeshTraits< MeshConfig >; + using GlobalIndexType = typename MeshTraitsType::GlobalIndexType; + using LocalIndexType = typename MeshTraitsType::LocalIndexType; + using EntityTraitsType = typename MeshTraitsType::template EntityTraits< Dimensions >; + + using EntityType = typename EntityTraitsType::EntityType; + using SubvertexTraits = typename MeshTraitsType::template SubentityTraits< EntityTopology, 0 >; + + using InitializerType = MeshInitializer< MeshConfig >; + using SeedType = MeshEntitySeed< MeshConfig, EntityTopology >; template< typename > class SubentitiesCreator; - public: - - //using SuperentityBaseType::setNumberOfSuperentities; - +public: static String getType() { return "MeshEntityInitializer"; }; MeshEntityInitializer() : entity(0), entityIndex( -1 ) {} @@ -89,7 +80,7 @@ class MeshEntityInitializer entity = EntityType( entitySeed ); BaseType::initSubentities( entity, entityIndex, entitySeed, initializer ); } - + template< typename SuperentityDimensionTag > typename MeshSuperentityTraits< MeshConfig, EntityTopology, SuperentityDimensionTag::value >::SharedContainerType& getSuperentityContainer( SuperentityDimensionTag ) { @@ -103,28 +94,27 @@ class MeshEntityInitializer entity.setVertexIndex( localIndex, globalIndex ); } - private: +private: EntityType *entity; GlobalIndexType entityIndex; - }; template< typename MeshConfig > class MeshEntityInitializer< MeshConfig, MeshVertexTopology > { - public: - typedef typename MeshTraits< MeshConfig >::VertexType VertexType; - typedef typename MeshTraits< MeshConfig >::PointType PointType; - typedef MeshInitializer< MeshConfig > InitializerType; - - static String getType() { return "MeshEntityInitializer"; }; - - static void setVertexPoint( VertexType& vertex, - const PointType& point, - InitializerType& initializer ) - { - initializer.setVertexPoint( vertex, point ); - } +public: + using VertexType = typename MeshTraits< MeshConfig >::VertexType; + using PointType = typename MeshTraits< MeshConfig >::PointType; + using InitializerType = MeshInitializer< MeshConfig >; + + static String getType() { return "MeshEntityInitializer"; }; + + static void setVertexPoint( VertexType& vertex, + const PointType& point, + InitializerType& initializer ) + { + initializer.setVertexPoint( vertex, point ); + } }; @@ -138,36 +128,36 @@ template< typename MeshConfig, typename EntityTopology, typename DimensionTag > class MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - DimensionTag, - true, - false, - true > + EntityTopology, + DimensionsTag, + true, + false, + true > : public MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - typename DimensionTag::Decrement > + EntityTopology, + typename DimensionsTag::Decrement > { - typedef MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - typename DimensionTag::Decrement > BaseType; - - static const int Dimension = DimensionTag::value; - typedef MeshTraits< MeshConfig > MeshTraitsType; - typedef typename MeshTraitsType::template SubentityTraits< EntityTopology, Dimension > SubentityTraitsType; - typedef typename SubentityTraitsType::SubentityContainerType SubentityContainerType; - typedef typename SubentityTraitsType::AccessArrayType SharedContainerType; - typedef typename SharedContainerType::ElementType GlobalIndexType; - - typedef MeshInitializer< MeshConfig > InitializerType; - typedef MeshEntityInitializer< MeshConfig, EntityTopology > EntityInitializerType; - typedef MeshDimensionTag< EntityTopology::dimensions > EntityDimensionTag; - typedef MeshEntity< MeshConfig, EntityTopology > EntityType; - typedef MeshEntitySeed< MeshConfig, EntityTopology > SeedType; - typedef MeshSubentitySeedsCreator< MeshConfig, EntityTopology, DimensionTag > SubentitySeedsCreatorType; - typedef typename SubentityTraitsType::IdArrayType IdArrayType; - typedef typename MeshTraitsType::LocalIndexType LocalIndexType; - - protected: + using BaseType = MeshEntityInitializerLayer< MeshConfig, + EntityTopology, + typename DimensionsTag::Decrement >; + + static constexpr int Dimensions = DimensionsTag::value; + using MeshTraitsType = MeshTraits< MeshConfig >; + using SubentityTraitsType = typename MeshTraitsType::template SubentityTraits< EntityTopology, Dimensions >; + using SubentityContainerType = typename SubentityTraitsType::SubentityContainerType; + using SharedContainerType = typename SubentityTraitsType::AccessArrayType; + using GlobalIndexType = typename SharedContainerType::ElementType; + + using InitializerType = MeshInitializer< MeshConfig >; + using EntityInitializerType = MeshEntityInitializer< MeshConfig, EntityTopology >; + using EntityDimensionsTag = MeshDimensionsTag< EntityTopology::dimensions >; + using EntityType = MeshEntity< MeshConfig, EntityTopology >; + using SeedType = MeshEntitySeed< MeshConfig, EntityTopology >; + using SubentitySeedsCreatorType = MeshSubentitySeedsCreator< MeshConfig, EntityTopology, DimensionsTag >; + using IdArrayType = typename SubentityTraitsType::IdArrayType; + using LocalIndexType = typename MeshTraitsType::LocalIndexType; + +protected: static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, InitializerType& meshInitializer ) { @@ -183,6 +173,7 @@ class MeshEntityInitializerLayer< MeshConfig, template getSuperentityInitializer< DimensionTag >(). addSuperentity( EntityDimensionTag(), subentityIdsArray[ i ], entityIndex ); } + BaseType::initSubentities( entity, entityIndex, entitySeed, meshInitializer ); } }; @@ -197,35 +188,35 @@ template< typename MeshConfig, typename EntityTopology, typename DimensionTag > class MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - DimensionTag, - true, - true, - true > + EntityTopology, + DimensionsTag, + true, + true, + true > : public MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - typename DimensionTag::Decrement > + EntityTopology, + typename DimensionsTag::Decrement > { - typedef MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - typename DimensionTag::Decrement > BaseType; - - typedef MeshSubentityTraits< MeshConfig, EntityTopology, DimensionTag::value > SubentitiesTraits; - typedef typename SubentitiesTraits::SubentityContainerType SubentityContainerType; - typedef typename SubentitiesTraits::AccessArrayType SharedContainerType; - typedef typename SharedContainerType::ElementType GlobalIndexType; - - typedef MeshInitializer< MeshConfig > InitializerType; - typedef MeshEntityInitializer< MeshConfig, EntityTopology > EntityInitializerType; - typedef MeshDimensionTag< EntityTopology::dimensions > EntityDimensionTag; - typedef MeshEntity< MeshConfig, EntityTopology > EntityType; - typedef MeshEntitySeed< MeshConfig, EntityTopology > SeedType; - typedef MeshSubentitySeedsCreator< MeshConfig, EntityTopology, DimensionTag > SubentitySeedsCreatorType; - typedef typename MeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, DimensionTag::value >::IdArrayType IdArrayType; - typedef typename MeshTraits< MeshConfig >::LocalIndexType LocalIndexType; - typedef typename SubentitiesTraits::OrientationArrayType OrientationArrayType; - - protected: + using BaseType = MeshEntityInitializerLayer< MeshConfig, + EntityTopology, + typename DimensionsTag::Decrement >; + + using SubentitiesTraits = MeshSubentityTraits< MeshConfig, EntityTopology, DimensionsTag::value >; + using SubentityContainerType = typename SubentitiesTraits::SubentityContainerType; + using SharedContainerType = typename SubentitiesTraits::AccessArrayType; + using GlobalIndexType = typename SharedContainerType::ElementType; + + using InitializerType = MeshInitializer< MeshConfig >; + using EntityInitializerType = MeshEntityInitializer< MeshConfig, EntityTopology >; + using EntityDimensionsTag = MeshDimensionsTag< EntityTopology::dimensions >; + using EntityType = MeshEntity< MeshConfig, EntityTopology >; + using SeedType = MeshEntitySeed< MeshConfig, EntityTopology >; + using SubentitySeedsCreatorType = MeshSubentitySeedsCreator< MeshConfig, EntityTopology, DimensionsTag >; + using IdArrayType = typename MeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, DimensionsTag::value >::IdArrayType; + using LocalIndexType = typename MeshTraits< MeshConfig >::LocalIndexType; + using OrientationArrayType = typename SubentitiesTraits::OrientationArrayType; + +protected: static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, InitializerType& meshInitializer ) { @@ -245,7 +236,7 @@ class MeshEntityInitializerLayer< MeshConfig, template getSuperentityInitializer< DimensionTag >(). addSuperentity( EntityDimensionTag(), subentityIdsArray[ i ], entityIndex ); } - + BaseType::initSubentities( entity, entityIndex, entitySeed, meshInitializer ); } }; @@ -260,35 +251,35 @@ template< typename MeshConfig, typename EntityTopology, typename DimensionTag > class MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - DimensionTag, - true, - true, - false > + EntityTopology, + DimensionsTag, + true, + true, + false > : public MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - typename DimensionTag::Decrement > + EntityTopology, + typename DimensionsTag::Decrement > { - typedef MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - typename DimensionTag::Decrement > BaseType; - - typedef MeshSubentityTraits< MeshConfig, EntityTopology, DimensionTag::value > SubentitiesTraits; - typedef typename SubentitiesTraits::SubentityContainerType SubentityContainerType; - typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; - typedef typename SharedContainerType::ElementType GlobalIndexType; - - typedef MeshInitializer< MeshConfig > InitializerType; - typedef MeshEntityInitializer< MeshConfig, EntityTopology > EntityInitializerType; - typedef MeshDimensionTag< EntityTopology::dimensions > EntityDimensionTag; - typedef MeshEntity< MeshConfig, EntityTopology > EntityType; - typedef MeshEntitySeed< MeshConfig, EntityTopology > SeedType; - typedef MeshSubentitySeedsCreator< MeshConfig, EntityTopology, DimensionTag > SubentitySeedsCreatorType; - typedef typename MeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, DimensionTag >::IdArrayType IdArrayType; - typedef typename MeshTraits< MeshConfig >::LocalIndexType LocalIndexType; - typedef typename SubentitiesTraits::OrientationArrayType OrientationArrayType; - - protected: + using BaseType = MeshEntityInitializerLayer< MeshConfig, + EntityTopology, + typename DimensionsTag::Decrement >; + + using SubentitiesTraits = MeshSubentityTraits< MeshConfig, EntityTopology, DimensionsTag::value >; + using SubentityContainerType = typename SubentitiesTraits::SubentityContainerType; + using SharedContainerType = typename SubentitiesTraits::SharedContainerType; + using GlobalIndexType = typename SharedContainerType::ElementType; + + using InitializerType = MeshInitializer< MeshConfig >; + using EntityInitializerType = MeshEntityInitializer< MeshConfig, EntityTopology >; + using EntityDimensionsTag = MeshDimensionsTag< EntityTopology::dimensions >; + using EntityType = MeshEntity< MeshConfig, EntityTopology >; + using SeedType = MeshEntitySeed< MeshConfig, EntityTopology >; + using SubentitySeedsCreatorType = MeshSubentitySeedsCreator< MeshConfig, EntityTopology, DimensionsTag >; + using IdArrayType = typename MeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, DimensionsTag >::IdArrayType; + using LocalIndexType = typename MeshTraits< MeshConfig >::LocalIndexType; + using OrientationArrayType = typename SubentitiesTraits::OrientationArrayType; + +protected: static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, InitializerType& meshInitializer ) { @@ -303,6 +294,7 @@ class MeshEntityInitializerLayer< MeshConfig, subentityIdsArray[ i ] = meshInitializer.findEntitySeedIndex( subentitySeeds[ i ] ); subentityOrientationsArray[ i ] = meshInitializer.template getReferenceOrientation< DimensionTag >( subentitySeeds[ i ] ).createOrientation( subentitySeeds[ i ] ); } + BaseType::initSubentities( entity, entityIndex, entitySeed, meshInitializer ); } }; @@ -312,36 +304,35 @@ template< typename MeshConfig, typename EntityTopology, typename DimensionTag > class MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - DimensionTag, - true, - false, - false > + EntityTopology, + DimensionsTag, + true, + false, + false > : public MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - typename DimensionTag::Decrement > + EntityTopology, + typename DimensionsTag::Decrement > { - typedef MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - typename DimensionTag::Decrement > BaseType; - - typedef typename MeshSubentityTraits< MeshConfig, - EntityTopology, - DimensionTag::value >::SubentityContainerType SubentityContainerType; - typedef typename MeshSubentityTraits< MeshConfig, - EntityTopology, - DimensionTag::value >::SharedContainerType SharedContainerType; - typedef typename SharedContainerType::ElementType GlobalIndexType; - - typedef MeshInitializer< MeshConfig > InitializerType; - typedef MeshEntityInitializer< MeshConfig, EntityTopology > EntityInitializerType; - typedef MeshEntity< MeshConfig, EntityTopology > EntityType; - typedef MeshEntitySeed< MeshConfig, EntityTopology > SeedType; - typedef MeshSubentitySeedsCreator< MeshConfig, EntityTopology, DimensionTag > SubentitySeedsCreatorType; - typedef typename MeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, DimensionTag >::IdArrayType IdArrayType; - typedef typename MeshTraits< MeshConfig >::LocalIndexType LocalIndexType; - - protected: + using BaseType = MeshEntityInitializerLayer< MeshConfig, + EntityTopology, + typename DimensionsTag::Decrement >; + using SubentityContainerType = typename MeshSubentityTraits< MeshConfig, + EntityTopology, + DimensionsTag::value >::SubentityContainerType; + using SharedContainerType = typename MeshSubentityTraits< MeshConfig, + EntityTopology, + DimensionsTag::value >::SharedContainerType; + + using GlobalIndexType = typename SharedContainerType::ElementType; + using LocalIndexType = typename MeshTraits< MeshConfig >::LocalIndexType; + using InitializerType = MeshInitializer< MeshConfig >; + using EntityInitializerType = MeshEntityInitializer< MeshConfig, EntityTopology >; + using EntityType = MeshEntity< MeshConfig, EntityTopology >; + using SeedType = MeshEntitySeed< MeshConfig, EntityTopology >; + using SubentitySeedsCreatorType = MeshSubentitySeedsCreator< MeshConfig, EntityTopology, DimensionsTag >; + using IdArrayType = typename MeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, DimensionsTag >::IdArrayType; + +protected: static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, InitializerType& meshInitializer ) { @@ -360,163 +351,145 @@ template< typename MeshConfig, typename EntityTopology, typename DimensionTag > class MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - DimensionTag, - false, - false, - true > + EntityTopology, + DimensionsTag, + false, + false, + true > : public MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - typename DimensionTag::Decrement > + EntityTopology, + typename DimensionsTag::Decrement > { - typedef MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - typename DimensionTag::Decrement > BaseType; - - typedef typename MeshSubentityTraits< MeshConfig, - EntityTopology, - DimensionTag::value >::SubentityContainerType SubentityContainerType; - typedef typename MeshSubentityTraits< MeshConfig, - EntityTopology, - DimensionTag::value >::SharedContainerType SharedContainerType; - typedef typename SharedContainerType::DataType GlobalIndexType; - - typedef MeshInitializer< MeshConfig > InitializerType; - typedef MeshEntityInitializer< MeshConfig, EntityTopology > EntityInitializerType; - typedef MeshDimensionTag< EntityTopology::dimensions > EntityDimensionTag; - typedef MeshEntity< MeshConfig, EntityTopology > EntityType; - typedef MeshEntitySeed< MeshConfig, EntityTopology > SeedType; - typedef MeshSubentitySeedsCreator< MeshConfig, EntityTopology, DimensionTag > SubentitySeedsCreatorType; - typedef typename MeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, DimensionTag >::IdArrayType IdArrayType; - typedef typename MeshTraits< MeshConfig >::LocalIndexType LocalIndexType; - - - protected: - - static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, - InitializerType& meshInitializer ) + using BaseType = MeshEntityInitializerLayer< MeshConfig, + EntityTopology, + typename DimensionsTag::Decrement >; + using SubentityContainerType = typename MeshSubentityTraits< MeshConfig, + EntityTopology, + DimensionsTag::value >::SubentityContainerType; + using SharedContainerType = typename MeshSubentityTraits< MeshConfig, + EntityTopology, + DimensionsTag::value >::SharedContainerType; + + using GlobalIndexType = typename SharedContainerType::DataType; + using LocalIndexType = typename MeshTraits< MeshConfig >::LocalIndexType; + using InitializerType = MeshInitializer< MeshConfig >; + using EntityInitializerType = MeshEntityInitializer< MeshConfig, EntityTopology >; + using EntityDimensionsTag = MeshDimensionsTag< EntityTopology::dimensions >; + using EntityType = MeshEntity< MeshConfig, EntityTopology >; + using SeedType = MeshEntitySeed< MeshConfig, EntityTopology >; + using SubentitySeedsCreatorType = MeshSubentitySeedsCreator< MeshConfig, EntityTopology, DimensionsTag >; + using IdArrayType = typename MeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, DimensionsTag >::IdArrayType; + +protected: + static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, + InitializerType& meshInitializer ) + { + //cout << " Initiating subentities with " << DimensionsTag::value << " dimensions ... " << std::endl; + auto subentitySeeds = SubentitySeedsCreatorType::create( entitySeed ); + IdArrayType& subentityIdsArray = InitializerType::template subentityIdsArray< DimensionsTag >( entity ); + for( LocalIndexType i = 0; i < subentitySeeds.getSize(); i++) { - //cout << " Initiating subentities with " << DimensionTag::value << " dimensions ... " << std::endl; - auto subentitySeeds = SubentitySeedsCreatorType::create( entitySeed ); - IdArrayType& subentityIdsArray = InitializerType::template subentityIdsArray< DimensionTag >( entity ); - for( LocalIndexType i = 0; i < subentitySeeds.getSize(); i++) - { - GlobalIndexType subentityIndex = meshInitializer.findEntitySeedIndex( subentitySeeds[ i ] ); - meshInitializer. - template getSuperentityInitializer< DimensionTag >(). - addSuperentity( EntityDimensionTag(), subentityIndex, entityIndex ); - } - BaseType::initSubentities( entity, entityIndex, entitySeed, meshInitializer ); + GlobalIndexType subentityIndex = meshInitializer.findEntitySeedIndex( subentitySeeds[ i ] ); + meshInitializer. + template getSuperentityInitializer< DimensionsTag >(). + addSuperentity( EntityDimensionsTag(), subentityIndex, entityIndex ); } + + BaseType::initSubentities( entity, entityIndex, entitySeed, meshInitializer ); + } }; template< typename MeshConfig, typename EntityTopology, typename DimensionTag > class MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - DimensionTag, - false, - false, - false > + EntityTopology, + DimensionsTag, + false, + false, + false > : public MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - typename DimensionTag::Decrement > + EntityTopology, + typename DimensionsTag::Decrement > {}; template< typename MeshConfig, typename EntityTopology > class MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - MeshDimensionTag< 0 >, - true, - false, - true > + EntityTopology, + MeshDimensionsTag< 0 >, + true, + false, + true > { - typedef MeshDimensionTag< 0 > DimensionTag; - typedef MeshSubentityTraits< MeshConfig, - EntityTopology, - DimensionTag::value > SubentitiesTraits; - - typedef typename SubentitiesTraits::AccessArrayType SharedContainerType; - typedef typename SharedContainerType::ElementType GlobalIndexType; - - typedef MeshInitializer< MeshConfig > InitializerType; - typedef MeshEntityInitializer< MeshConfig, EntityTopology > EntityInitializerType; - typedef MeshDimensionTag< EntityTopology::dimensions > EntityDimensionTag; - typedef MeshEntity< MeshConfig, EntityTopology > EntityType; - typedef MeshEntitySeed< MeshConfig, EntityTopology > SeedType; - typedef MeshSubentitySeedsCreator< MeshConfig, EntityTopology, DimensionTag > SubentitySeedsCreatorType; - typedef typename MeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, DimensionTag::value >::IdArrayType IdArrayType; - typedef typename MeshTraits< MeshConfig >::LocalIndexType LocalIndexType; - - - protected: - - static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, - InitializerType& meshInitializer ) - { - //cout << " Initiating subentities with " << DimensionTag::value << " dimensions ... " << std::endl; - const IdArrayType &subentityIdsArray = InitializerType::template subentityIdsArray< DimensionTag >(entity); - for( LocalIndexType i = 0; i < subentityIdsArray.getSize(); i++ ) - meshInitializer.template getSuperentityInitializer< DimensionTag >().addSuperentity( EntityDimensionTag(), subentityIdsArray[ i ], entityIndex); + using DimensionsTag = MeshDimensionsTag< 0 >; + using SubentitiesTraits = MeshSubentityTraits< MeshConfig, + EntityTopology, + DimensionsTag::value >; + + using SharedContainerType = typename SubentitiesTraits::AccessArrayType; + using GlobalIndexType = typename SharedContainerType::ElementType; + using LocalIndexType = typename MeshTraits< MeshConfig >::LocalIndexType; + using InitializerType = MeshInitializer< MeshConfig >; + using EntityInitializerType = MeshEntityInitializer< MeshConfig, EntityTopology >; + using EntityDimensionsTag = MeshDimensionsTag< EntityTopology::dimensions >; + using EntityType = MeshEntity< MeshConfig, EntityTopology >; + using SeedType = MeshEntitySeed< MeshConfig, EntityTopology >; + using SubentitySeedsCreatorType = MeshSubentitySeedsCreator< MeshConfig, EntityTopology, DimensionsTag >; + using IdArrayType = typename MeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, DimensionsTag::value >::IdArrayType; + +protected: + static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, + InitializerType& meshInitializer ) + { + //cout << " Initiating subentities with " << DimensionsTag::value << " dimensions ... " << std::endl; + const IdArrayType &subentityIdsArray = InitializerType::template subentityIdsArray< DimensionsTag >(entity); + for( LocalIndexType i = 0; i < subentityIdsArray.getSize(); i++ ) + meshInitializer.template getSuperentityInitializer< DimensionsTag >().addSuperentity( EntityDimensionsTag(), subentityIdsArray[ i ], entityIndex); } - }; template< typename MeshConfig, typename EntityTopology > class MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - MeshDimensionTag< 0 >, - true, - false, - false > + EntityTopology, + MeshDimensionsTag< 0 >, + true, + false, + false > { - typedef MeshInitializer< MeshConfig > InitializerType; - typedef MeshEntityInitializer< MeshConfig, - EntityTopology > EntityInitializerType; - typedef MeshDimensionTag< 0 > DimensionTag; - typedef MeshSubentityTraits< MeshConfig, - EntityTopology, - DimensionTag::value > SubentitiesTraits; - typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; - typedef typename SharedContainerType::ElementType GlobalIndexType; - typedef MeshEntity< MeshConfig, EntityTopology > EntityType; - typedef MeshEntitySeed< MeshConfig, EntityTopology > SeedType; - typedef MeshSubentitySeedsCreator< MeshConfig, EntityTopology, DimensionTag > SubentitySeedsCreatorType; - typedef typename MeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, DimensionTag >::IdArrayType IdArrayType; - typedef typename MeshTraits< MeshConfig >::LocalIndexType LocalIndexType; - - - protected: - - static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, - InitializerType& meshInitializer ) {}; - + using InitializerType = MeshInitializer< MeshConfig >; + using DimensionsTag = MeshDimensionsTag< 0 >; + using SubentitiesTraits = MeshSubentityTraits< MeshConfig, EntityTopology, DimensionsTag::value >; + using SharedContainerType = typename SubentitiesTraits::SharedContainerType; + using GlobalIndexType = typename SharedContainerType::ElementType; + using EntityType = MeshEntity< MeshConfig, EntityTopology >; + using SeedType = MeshEntitySeed< MeshConfig, EntityTopology >; + +protected: + static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, + InitializerType& meshInitializer ) {} }; template< typename MeshConfig, typename EntityTopology, bool SuperEntityStorage > class MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - MeshDimensionTag< 0 >, - false, - true, - SuperEntityStorage > // Forces termination of recursive inheritance (prevents compiler from generating huge error logs) + EntityTopology, + MeshDimensionsTag< 0 >, + false, + true, + SuperEntityStorage > // Forces termination of recursive inheritance (prevents compiler from generating huge error logs) { - typedef MeshInitializer< MeshConfig > InitializerType; - typedef MeshEntityInitializer< MeshConfig, EntityTopology > EntityInitializerType; - typedef MeshDimensionTag< 0 > DimensionTag; - typedef MeshSubentityTraits< MeshConfig, - EntityTopology, - DimensionTag::value > SubentitiesTraits; - typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; - typedef typename SharedContainerType::ElementType GlobalIndexType; - typedef MeshEntity< MeshConfig, EntityTopology > EntityType; - - protected: + using InitializerType = MeshInitializer< MeshConfig >; + using EntityInitializerType = MeshEntityInitializer< MeshConfig, EntityTopology >; + using DimensionsTag = MeshDimensionsTag< 0 >; + using SubentitiesTraits = MeshSubentityTraits< MeshConfig, EntityTopology, DimensionsTag::value >; + using SharedContainerType = typename SubentitiesTraits::SharedContainerType; + using GlobalIndexType = typename SharedContainerType::ElementType; + using EntityType = MeshEntity< MeshConfig, EntityTopology >; + +protected: static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, EntityInitializerType&, InitializerType& ) {} }; @@ -524,23 +497,21 @@ template< typename MeshConfig, typename EntityTopology, bool SuperEntityStorage > class MeshEntityInitializerLayer< MeshConfig, - EntityTopology, - MeshDimensionTag< 0 >, - false, - false, - SuperEntityStorage > // Forces termination of recursive inheritance (prevents compiler from generating huge error logs) + EntityTopology, + MeshDimensionsTag< 0 >, + false, + false, + SuperEntityStorage > // Forces termination of recursive inheritance (prevents compiler from generating huge error logs) { - typedef MeshInitializer< MeshConfig > InitializerType; - typedef MeshEntityInitializer< MeshConfig, EntityTopology > EntityInitializerType; - typedef MeshDimensionTag< 0 > DimensionTag; - typedef MeshSubentityTraits< MeshConfig, - EntityTopology, - DimensionTag::value > SubentitiesTraits; - typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; - typedef typename SharedContainerType::ElementType GlobalIndexType; - typedef MeshEntity< MeshConfig, EntityTopology > EntityType; - - protected: + using InitializerType = MeshInitializer< MeshConfig >; + using EntityInitializerType = MeshEntityInitializer< MeshConfig, EntityTopology >; + using DimensionsTag = MeshDimensionsTag< 0 >; + using SubentitiesTraits = MeshSubentityTraits< MeshConfig, EntityTopology, DimensionsTag::value >; + using SharedContainerType = typename SubentitiesTraits::SharedContainerType; + using GlobalIndexType = typename SharedContainerType::ElementType; + using EntityType = MeshEntity< MeshConfig, EntityTopology >; + +protected: void initSubentities( EntityType& entity, GlobalIndexType entityIndex, EntityInitializerType&, InitializerType& ) {} };