Loading src/mesh/tnlMeshEntityInitializer.h +139 −10 Original line number Diff line number Diff line Loading @@ -28,10 +28,15 @@ class tnlMeshInitializer; template<typename ConfigTag, typename EntityTag, typename DimensionsTag, typename SubentityStorageTag = typename tnlMeshSubentitiesTraits< ConfigTag, typename SubentityStorageTag = typename tnlMeshSubentitiesTraits< ConfigTag, EntityTag, DimensionsTag >::SubentityStorageTag, typename SuperentityStorageTag = typename tnlMeshSuperentitiesTraits< ConfigTag, typename SubentityOrientationStorage = tnlStorageTraits< tnlMeshConfigTraits< ConfigTag >:: template SubentityTraits< EntityTag, DimensionsTag >::orientationEnabled >, typename SuperentityStorageTag = typename tnlMeshSuperentitiesTraits< ConfigTag, typename tnlMeshSubentitiesTraits< ConfigTag, EntityTag, DimensionsTag >::SubentityTag, Loading Loading @@ -128,9 +133,68 @@ class tnlMeshEntityInitializer< MeshConfig, tnlMeshVertexTag > /**** * Mesh entity initializer layer * Mesh entity initializer layer with specializations * * SUBENTITY STORAGE SUBENTITY ORIENTATION SUPERENTITY STORAGE * TRUE FALSE TRUE */ template< typename ConfigTag, typename EntityTag, typename DimensionsTag > class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< false >, tnlStorageTraits< true > > : public tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, typename DimensionsTag::Decrement > { typedef tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, typename DimensionsTag::Decrement > BaseType; typedef tnlMeshSubentitiesTraits< ConfigTag, EntityTag, DimensionsTag > SubentitiesTraits; typedef typename SubentitiesTraits::SubentityContainerType SubentityContainerType; typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; typedef typename SharedContainerType::ElementType GlobalIndexType; typedef tnlMeshInitializer< ConfigTag > InitializerType; typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; typedef tnlDimensionsTag< EntityTag::dimensions > EntityDimensionsTag; typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; typedef tnlMeshSubentitySeedsCreator< ConfigTag, EntityTag, DimensionsTag > SubentitySeedsCreatorType; typedef typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; typedef typename tnlMeshTraits< ConfigTag >::LocalIndexType LocalIndexType; protected: static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, InitializerType& meshInitializer ) { cout << " Initiating subentities with " << DimensionsTag::value << " dimensions ... " << endl; auto subentitySeeds = SubentitySeedsCreatorType::create( entitySeed ); IdArrayType& subentityIdsArray = InitializerType::template subentityIdsArray< DimensionsTag >( entity ); for( LocalIndexType i = 0; i < subentitySeeds.getSize(); i++ ) { cout << " Adding subentity " << subentityIdsArray[ i ] << endl; subentityIdsArray[ i ] = meshInitializer.findEntitySeedIndex( subentitySeeds[ i ] ); meshInitializer. template getSuperentityInitializer< DimensionsTag >(). addSuperentity( EntityDimensionsTag(), subentityIdsArray[ i ], entityIndex ); } BaseType::initSubentities( entity, entityIndex, entitySeed, meshInitializer ); } }; /**** * Mesh entity initializer layer with specializations * * SUBENTITY STORAGE SUBENTITY ORIENTATION SUPERENTITY STORAGE * TRUE TRUE TRUE */ template< typename ConfigTag, typename EntityTag, typename DimensionsTag > Loading @@ -138,6 +202,7 @@ class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< true >, tnlStorageTraits< true > > : public tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, Loading @@ -160,6 +225,7 @@ class tnlMeshEntityInitializerLayer< ConfigTag, typedef tnlMeshSubentitySeedsCreator< ConfigTag, EntityTag, DimensionsTag > SubentitySeedsCreatorType; typedef typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; typedef typename tnlMeshTraits< ConfigTag >::LocalIndexType LocalIndexType; typedef typename SubentitiesTraits::OrientationArrayType OrientationArrayType; protected: static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, Loading @@ -169,12 +235,12 @@ class tnlMeshEntityInitializerLayer< ConfigTag, auto subentitySeeds = SubentitySeedsCreatorType::create( entitySeed ); IdArrayType& subentityIdsArray = InitializerType::template subentityIdsArray< DimensionsTag >( entity ); //OrientationArray &subentityOrientationsArray = TInitializer::template subentityOrientationsArray<TDim>(entity); OrientationArrayType &subentityOrientationsArray = InitializerType::template subentityOrientationsArray< DimensionsTag >( entity ); for( LocalIndexType i = 0; i < subentitySeeds.getSize(); i++ ) { cout << " Adding subentity " << subentityIdsArray[ i ] << endl; subentityIdsArray[ i ] = meshInitializer.findEntitySeedIndex( subentitySeeds[ i ] ); //subentityOrientationsArray[ i ] = initializer.template getReferenceOrientation< DimensionsTag >( subentityIndex ).createOrientation( subentitySeeds[ i ] ); subentityOrientationsArray[ i ] = meshInitializer.template getReferenceOrientation< DimensionsTag >( subentitySeeds[ i ] ).createOrientation( subentitySeeds[ i ] ); meshInitializer. template getSuperentityInitializer< DimensionsTag >(). addSuperentity( EntityDimensionsTag(), subentityIdsArray[ i ], entityIndex ); Loading @@ -183,6 +249,64 @@ class tnlMeshEntityInitializerLayer< ConfigTag, } }; /**** * Mesh entity initializer layer with specializations * * SUBENTITY STORAGE SUBENTITY ORIENTATION SUPERENTITY STORAGE * TRUE TRUE FALSE */ template< typename ConfigTag, typename EntityTag, typename DimensionsTag > class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< true >, tnlStorageTraits< false > > : public tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, typename DimensionsTag::Decrement > { typedef tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, typename DimensionsTag::Decrement > BaseType; typedef tnlMeshSubentitiesTraits< ConfigTag, EntityTag, DimensionsTag > SubentitiesTraits; typedef typename SubentitiesTraits::SubentityContainerType SubentityContainerType; typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; typedef typename SharedContainerType::ElementType GlobalIndexType; typedef tnlMeshInitializer< ConfigTag > InitializerType; typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; typedef tnlDimensionsTag< EntityTag::dimensions > EntityDimensionsTag; typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; typedef tnlMeshSubentitySeedsCreator< ConfigTag, EntityTag, DimensionsTag > SubentitySeedsCreatorType; typedef typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; typedef typename tnlMeshTraits< ConfigTag >::LocalIndexType LocalIndexType; typedef typename SubentitiesTraits::OrientationArrayType OrientationArrayType; protected: static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, InitializerType& meshInitializer ) { cout << " Initiating subentities with " << DimensionsTag::value << " dimensions ... " << endl; auto subentitySeeds = SubentitySeedsCreatorType::create( entitySeed ); IdArrayType& subentityIdsArray = InitializerType::template subentityIdsArray< DimensionsTag >( entity ); OrientationArrayType &subentityOrientationsArray = InitializerType::template subentityOrientationsArray< DimensionsTag >( entity ); for( LocalIndexType i = 0; i < subentitySeeds.getSize(); i++ ) { cout << " Adding subentity " << subentityIdsArray[ i ] << endl; subentityIdsArray[ i ] = meshInitializer.findEntitySeedIndex( subentitySeeds[ i ] ); subentityOrientationsArray[ i ] = meshInitializer.template getReferenceOrientation< DimensionsTag >( subentitySeeds[ i ] ).createOrientation( subentitySeeds[ i ] ); } BaseType::initSubentities( entity, entityIndex, entitySeed, meshInitializer ); } }; template< typename ConfigTag, typename EntityTag, typename DimensionsTag > Loading @@ -190,6 +314,7 @@ class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< false >, tnlStorageTraits< false > > : public tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, Loading Loading @@ -237,6 +362,7 @@ class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, DimensionsTag, tnlStorageTraits< false >, tnlStorageTraits< false >, tnlStorageTraits< true > > : public tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, Loading Loading @@ -290,6 +416,7 @@ class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, DimensionsTag, tnlStorageTraits< false >, tnlStorageTraits< false >, tnlStorageTraits< false > > : public tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, Loading @@ -302,6 +429,7 @@ class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, tnlDimensionsTag< 0 >, tnlStorageTraits< true >, tnlStorageTraits< false >, tnlStorageTraits< true > > { typedef tnlDimensionsTag< 0 > DimensionsTag; Loading Loading @@ -335,6 +463,7 @@ class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, tnlDimensionsTag< 0 >, tnlStorageTraits< true >, tnlStorageTraits< false >, tnlStorageTraits< false > > { typedef tnlMeshInitializer< ConfigTag > InitializerType; Loading src/mesh/tnlMeshInitializer.h +13 −1 Original line number Diff line number Diff line Loading @@ -121,6 +121,13 @@ class tnlMeshInitializer return BaseType::getSuperentityInitializer( DimensionsTag() ); } typedef typename tnlMeshTraits< ConfigTag >::GlobalIndexType GlobalIndexType; template< typename DimensionsTag > const tnlMeshEntityReferenceOrientation< ConfigTag, typename tnlMeshConfigTraits< ConfigTag >::template EntityTraits< DimensionsTag >::Tag >& getReferenceOrientation( GlobalIndexType index) const { return BaseType::getReferenceOrientation( DimensionsTag(), index); } protected: bool verbose; Loading Loading @@ -469,11 +476,16 @@ class tnlMeshInitializerLayer< ConfigTag, void createEntityReferenceOrientations() { cout << " Creating entity reference orientations with " << DimensionsTag::value << " dimensions ... " << endl; SeedArrayType seedsArray; seedsArray.setSize( this->seedsIndexedSet.getSize() ); this->seedsIndexedSet.toArray( seedsArray ); this->referenceOrientations.setSize( seedsArray.getSize() ); for( GlobalIndexType i = 0; i < seedsArray.getSize(); i++ ) { cout << " Creating reference orientation for entity " << i << endl; this->referenceOrientations[ i ] = ReferenceOrientationType( seedsArray[ i ] ); } BaseType::createEntityReferenceOrientations(); } Loading tests/unit-tests/mesh/tnlMeshTester.h +4 −4 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ class TestTriangleMeshConfig : public tnlMeshConfigBase< tnlMeshTriangleTag > static constexpr bool entityStorage( int dimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; //template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool superentityStorage( MeshEntity, int SuperentityDimensions ) { return true; }; }; Loading @@ -51,7 +51,7 @@ class TestQuadrilateralMeshConfig : public tnlMeshConfigBase< tnlMeshQuadrilater static constexpr bool entityStorage( int dimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; //template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool superentityStorage( MeshEntity, int SuperentityDimensions ) { return true; }; }; Loading @@ -61,7 +61,7 @@ class TestTetrahedronMeshConfig : public tnlMeshConfigBase< tnlMeshTetrahedronTa static constexpr bool entityStorage( int dimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; //template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool superentityStorage( MeshEntity, int SuperentityDimensions ) { return true; }; }; Loading @@ -71,7 +71,7 @@ class TestHexahedronMeshConfig : public tnlMeshConfigBase< tnlMeshHexahedronTag static constexpr bool entityStorage( int dimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; //template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool superentityStorage( MeshEntity, int SuperentityDimensions ) { return true; }; }; Loading Loading
src/mesh/tnlMeshEntityInitializer.h +139 −10 Original line number Diff line number Diff line Loading @@ -28,10 +28,15 @@ class tnlMeshInitializer; template<typename ConfigTag, typename EntityTag, typename DimensionsTag, typename SubentityStorageTag = typename tnlMeshSubentitiesTraits< ConfigTag, typename SubentityStorageTag = typename tnlMeshSubentitiesTraits< ConfigTag, EntityTag, DimensionsTag >::SubentityStorageTag, typename SuperentityStorageTag = typename tnlMeshSuperentitiesTraits< ConfigTag, typename SubentityOrientationStorage = tnlStorageTraits< tnlMeshConfigTraits< ConfigTag >:: template SubentityTraits< EntityTag, DimensionsTag >::orientationEnabled >, typename SuperentityStorageTag = typename tnlMeshSuperentitiesTraits< ConfigTag, typename tnlMeshSubentitiesTraits< ConfigTag, EntityTag, DimensionsTag >::SubentityTag, Loading Loading @@ -128,9 +133,68 @@ class tnlMeshEntityInitializer< MeshConfig, tnlMeshVertexTag > /**** * Mesh entity initializer layer * Mesh entity initializer layer with specializations * * SUBENTITY STORAGE SUBENTITY ORIENTATION SUPERENTITY STORAGE * TRUE FALSE TRUE */ template< typename ConfigTag, typename EntityTag, typename DimensionsTag > class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< false >, tnlStorageTraits< true > > : public tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, typename DimensionsTag::Decrement > { typedef tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, typename DimensionsTag::Decrement > BaseType; typedef tnlMeshSubentitiesTraits< ConfigTag, EntityTag, DimensionsTag > SubentitiesTraits; typedef typename SubentitiesTraits::SubentityContainerType SubentityContainerType; typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; typedef typename SharedContainerType::ElementType GlobalIndexType; typedef tnlMeshInitializer< ConfigTag > InitializerType; typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; typedef tnlDimensionsTag< EntityTag::dimensions > EntityDimensionsTag; typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; typedef tnlMeshSubentitySeedsCreator< ConfigTag, EntityTag, DimensionsTag > SubentitySeedsCreatorType; typedef typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; typedef typename tnlMeshTraits< ConfigTag >::LocalIndexType LocalIndexType; protected: static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, InitializerType& meshInitializer ) { cout << " Initiating subentities with " << DimensionsTag::value << " dimensions ... " << endl; auto subentitySeeds = SubentitySeedsCreatorType::create( entitySeed ); IdArrayType& subentityIdsArray = InitializerType::template subentityIdsArray< DimensionsTag >( entity ); for( LocalIndexType i = 0; i < subentitySeeds.getSize(); i++ ) { cout << " Adding subentity " << subentityIdsArray[ i ] << endl; subentityIdsArray[ i ] = meshInitializer.findEntitySeedIndex( subentitySeeds[ i ] ); meshInitializer. template getSuperentityInitializer< DimensionsTag >(). addSuperentity( EntityDimensionsTag(), subentityIdsArray[ i ], entityIndex ); } BaseType::initSubentities( entity, entityIndex, entitySeed, meshInitializer ); } }; /**** * Mesh entity initializer layer with specializations * * SUBENTITY STORAGE SUBENTITY ORIENTATION SUPERENTITY STORAGE * TRUE TRUE TRUE */ template< typename ConfigTag, typename EntityTag, typename DimensionsTag > Loading @@ -138,6 +202,7 @@ class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< true >, tnlStorageTraits< true > > : public tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, Loading @@ -160,6 +225,7 @@ class tnlMeshEntityInitializerLayer< ConfigTag, typedef tnlMeshSubentitySeedsCreator< ConfigTag, EntityTag, DimensionsTag > SubentitySeedsCreatorType; typedef typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; typedef typename tnlMeshTraits< ConfigTag >::LocalIndexType LocalIndexType; typedef typename SubentitiesTraits::OrientationArrayType OrientationArrayType; protected: static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, Loading @@ -169,12 +235,12 @@ class tnlMeshEntityInitializerLayer< ConfigTag, auto subentitySeeds = SubentitySeedsCreatorType::create( entitySeed ); IdArrayType& subentityIdsArray = InitializerType::template subentityIdsArray< DimensionsTag >( entity ); //OrientationArray &subentityOrientationsArray = TInitializer::template subentityOrientationsArray<TDim>(entity); OrientationArrayType &subentityOrientationsArray = InitializerType::template subentityOrientationsArray< DimensionsTag >( entity ); for( LocalIndexType i = 0; i < subentitySeeds.getSize(); i++ ) { cout << " Adding subentity " << subentityIdsArray[ i ] << endl; subentityIdsArray[ i ] = meshInitializer.findEntitySeedIndex( subentitySeeds[ i ] ); //subentityOrientationsArray[ i ] = initializer.template getReferenceOrientation< DimensionsTag >( subentityIndex ).createOrientation( subentitySeeds[ i ] ); subentityOrientationsArray[ i ] = meshInitializer.template getReferenceOrientation< DimensionsTag >( subentitySeeds[ i ] ).createOrientation( subentitySeeds[ i ] ); meshInitializer. template getSuperentityInitializer< DimensionsTag >(). addSuperentity( EntityDimensionsTag(), subentityIdsArray[ i ], entityIndex ); Loading @@ -183,6 +249,64 @@ class tnlMeshEntityInitializerLayer< ConfigTag, } }; /**** * Mesh entity initializer layer with specializations * * SUBENTITY STORAGE SUBENTITY ORIENTATION SUPERENTITY STORAGE * TRUE TRUE FALSE */ template< typename ConfigTag, typename EntityTag, typename DimensionsTag > class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< true >, tnlStorageTraits< false > > : public tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, typename DimensionsTag::Decrement > { typedef tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, typename DimensionsTag::Decrement > BaseType; typedef tnlMeshSubentitiesTraits< ConfigTag, EntityTag, DimensionsTag > SubentitiesTraits; typedef typename SubentitiesTraits::SubentityContainerType SubentityContainerType; typedef typename SubentitiesTraits::SharedContainerType SharedContainerType; typedef typename SharedContainerType::ElementType GlobalIndexType; typedef tnlMeshInitializer< ConfigTag > InitializerType; typedef tnlMeshEntityInitializer< ConfigTag, EntityTag > EntityInitializerType; typedef tnlDimensionsTag< EntityTag::dimensions > EntityDimensionsTag; typedef tnlMeshEntity< ConfigTag, EntityTag > EntityType; typedef tnlMeshEntitySeed< ConfigTag, EntityTag > SeedType; typedef tnlMeshSubentitySeedsCreator< ConfigTag, EntityTag, DimensionsTag > SubentitySeedsCreatorType; typedef typename tnlMeshConfigTraits< ConfigTag >::template SubentityTraits< EntityTag, DimensionsTag >::IdArrayType IdArrayType; typedef typename tnlMeshTraits< ConfigTag >::LocalIndexType LocalIndexType; typedef typename SubentitiesTraits::OrientationArrayType OrientationArrayType; protected: static void initSubentities( EntityType& entity, GlobalIndexType entityIndex, const SeedType& entitySeed, InitializerType& meshInitializer ) { cout << " Initiating subentities with " << DimensionsTag::value << " dimensions ... " << endl; auto subentitySeeds = SubentitySeedsCreatorType::create( entitySeed ); IdArrayType& subentityIdsArray = InitializerType::template subentityIdsArray< DimensionsTag >( entity ); OrientationArrayType &subentityOrientationsArray = InitializerType::template subentityOrientationsArray< DimensionsTag >( entity ); for( LocalIndexType i = 0; i < subentitySeeds.getSize(); i++ ) { cout << " Adding subentity " << subentityIdsArray[ i ] << endl; subentityIdsArray[ i ] = meshInitializer.findEntitySeedIndex( subentitySeeds[ i ] ); subentityOrientationsArray[ i ] = meshInitializer.template getReferenceOrientation< DimensionsTag >( subentitySeeds[ i ] ).createOrientation( subentitySeeds[ i ] ); } BaseType::initSubentities( entity, entityIndex, entitySeed, meshInitializer ); } }; template< typename ConfigTag, typename EntityTag, typename DimensionsTag > Loading @@ -190,6 +314,7 @@ class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, DimensionsTag, tnlStorageTraits< true >, tnlStorageTraits< false >, tnlStorageTraits< false > > : public tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, Loading Loading @@ -237,6 +362,7 @@ class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, DimensionsTag, tnlStorageTraits< false >, tnlStorageTraits< false >, tnlStorageTraits< true > > : public tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, Loading Loading @@ -290,6 +416,7 @@ class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, DimensionsTag, tnlStorageTraits< false >, tnlStorageTraits< false >, tnlStorageTraits< false > > : public tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, Loading @@ -302,6 +429,7 @@ class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, tnlDimensionsTag< 0 >, tnlStorageTraits< true >, tnlStorageTraits< false >, tnlStorageTraits< true > > { typedef tnlDimensionsTag< 0 > DimensionsTag; Loading Loading @@ -335,6 +463,7 @@ class tnlMeshEntityInitializerLayer< ConfigTag, EntityTag, tnlDimensionsTag< 0 >, tnlStorageTraits< true >, tnlStorageTraits< false >, tnlStorageTraits< false > > { typedef tnlMeshInitializer< ConfigTag > InitializerType; Loading
src/mesh/tnlMeshInitializer.h +13 −1 Original line number Diff line number Diff line Loading @@ -121,6 +121,13 @@ class tnlMeshInitializer return BaseType::getSuperentityInitializer( DimensionsTag() ); } typedef typename tnlMeshTraits< ConfigTag >::GlobalIndexType GlobalIndexType; template< typename DimensionsTag > const tnlMeshEntityReferenceOrientation< ConfigTag, typename tnlMeshConfigTraits< ConfigTag >::template EntityTraits< DimensionsTag >::Tag >& getReferenceOrientation( GlobalIndexType index) const { return BaseType::getReferenceOrientation( DimensionsTag(), index); } protected: bool verbose; Loading Loading @@ -469,11 +476,16 @@ class tnlMeshInitializerLayer< ConfigTag, void createEntityReferenceOrientations() { cout << " Creating entity reference orientations with " << DimensionsTag::value << " dimensions ... " << endl; SeedArrayType seedsArray; seedsArray.setSize( this->seedsIndexedSet.getSize() ); this->seedsIndexedSet.toArray( seedsArray ); this->referenceOrientations.setSize( seedsArray.getSize() ); for( GlobalIndexType i = 0; i < seedsArray.getSize(); i++ ) { cout << " Creating reference orientation for entity " << i << endl; this->referenceOrientations[ i ] = ReferenceOrientationType( seedsArray[ i ] ); } BaseType::createEntityReferenceOrientations(); } Loading
tests/unit-tests/mesh/tnlMeshTester.h +4 −4 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ class TestTriangleMeshConfig : public tnlMeshConfigBase< tnlMeshTriangleTag > static constexpr bool entityStorage( int dimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; //template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool superentityStorage( MeshEntity, int SuperentityDimensions ) { return true; }; }; Loading @@ -51,7 +51,7 @@ class TestQuadrilateralMeshConfig : public tnlMeshConfigBase< tnlMeshQuadrilater static constexpr bool entityStorage( int dimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; //template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool superentityStorage( MeshEntity, int SuperentityDimensions ) { return true; }; }; Loading @@ -61,7 +61,7 @@ class TestTetrahedronMeshConfig : public tnlMeshConfigBase< tnlMeshTetrahedronTa static constexpr bool entityStorage( int dimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; //template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool superentityStorage( MeshEntity, int SuperentityDimensions ) { return true; }; }; Loading @@ -71,7 +71,7 @@ class TestHexahedronMeshConfig : public tnlMeshConfigBase< tnlMeshHexahedronTag static constexpr bool entityStorage( int dimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; //template< typename MeshEntity > static constexpr bool subentityOrientationStorage( MeshEntity, int SubentityDimensions ) { return true; }; template< typename MeshEntity > static constexpr bool superentityStorage( MeshEntity, int SuperentityDimensions ) { return true; }; }; Loading