From 83980f235c04505412879caf1871852a8fb93eb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= <klinkjak@fjfi.cvut.cz> Date: Thu, 20 Oct 2016 19:26:33 +0200 Subject: [PATCH] Cosmetic changes in mesh initializer --- .../MeshDetails/initializer/MeshInitializer.h | 73 +++++++++---------- .../MeshSuperentityStorageInitializer.h | 8 +- .../MeshDetails/layers/MeshStorageLayer.h | 3 +- src/UnitTests/Meshes/MeshEntityTest.h | 50 ++++++------- src/UnitTests/Meshes/MeshTest.h | 52 ++++++------- 5 files changed, 91 insertions(+), 95 deletions(-) diff --git a/src/TNL/Meshes/MeshDetails/initializer/MeshInitializer.h b/src/TNL/Meshes/MeshDetails/initializer/MeshInitializer.h index e690d35918..33b6b7700c 100644 --- a/src/TNL/Meshes/MeshDetails/initializer/MeshInitializer.h +++ b/src/TNL/Meshes/MeshDetails/initializer/MeshInitializer.h @@ -49,10 +49,9 @@ class MeshEntityInitializer; template< typename MeshConfig > class MeshInitializer : public MeshInitializerLayer< MeshConfig, - typename MeshTraits< MeshConfig >::DimensionTag > + typename MeshTraits< MeshConfig >::DimensionsTag > { public: - typedef Mesh< MeshConfig > MeshType; typedef MeshTraits< MeshConfig > MeshTraitsType; static const int Dimension = MeshTraitsType::meshDimension; @@ -61,11 +60,11 @@ class MeshInitializer typedef typename MeshTraitsType::PointArrayType PointArrayType; typedef typename MeshTraitsType::CellSeedArrayType CellSeedArrayType; typedef typename MeshTraitsType::GlobalIndexType GlobalIndexType; - - template< typename DimensionTag, typename SuperdimensionsTag > using SuperentityStorageNetwork = - typename MeshTraitsType::template SuperentityTraits< - typename MeshTraitsType::template EntityTraits< DimensionTag::value >::EntityTopology, - SuperdimensionsTag::value >::StorageNetworkType; + + template< typename DimensionsTag, typename SuperdimensionsTag > + using SuperentityStorageNetwork = typename MeshTraitsType::template SuperentityTraits< + typename MeshTraitsType::template EntityTraits< DimensionsTag::value >::EntityTopology, + SuperdimensionsTag::value >::StorageNetworkType; MeshInitializer() @@ -81,16 +80,16 @@ class MeshInitializer const CellSeedArrayType& cellSeeds, MeshType& mesh ) { - std::cout << "======= Starting mesh initiation ========" << std::endl; + if( verbose ) std::cout << "======= Starting mesh initiation ========" << std::endl; this->mesh = &mesh; - std::cout << "========= Creating entity seeds =============" << std::endl; + if( verbose ) std::cout << "========= Creating entity seeds =============" << std::endl; BaseType::createEntitySeedsFromCellSeeds( cellSeeds ); - std::cout << "========= Creating entity reference orientations =============" << std::endl; + if( verbose ) std::cout << "========= Creating entity reference orientations =============" << std::endl; BaseType::createEntityReferenceOrientations(); - std::cout << "====== Initiating entities ==============" << std::endl; + if( verbose ) std::cout << "====== Initiating entities ==============" << std::endl; BaseType::initEntities( *this, points, cellSeeds ); return true; @@ -130,7 +129,7 @@ class MeshInitializer { return mesh->template superentityIdsArray< DimensionTag, SuperDimensionTag >(); } - + template< typename EntityTopology, typename SuperdimensionsTag > typename MeshTraitsType::template SuperentityTraits< EntityTopology, SuperdimensionsTag::value >::StorageNetworkType& meshSuperentityStorageNetwork() @@ -151,9 +150,9 @@ class MeshInitializer return BaseType::getSuperentityInitializer( DimensionTag() ); } - - template< typename DimensionTag > - const MeshEntityReferenceOrientation< MeshConfig, typename MeshTraitsType::template EntityTraits< DimensionTag::value >::EntityTopology >& + + template< typename DimensionsTag > + const MeshEntityReferenceOrientation< MeshConfig, typename MeshTraitsType::template EntityTraits< DimensionsTag::value >::EntityTopology >& getReferenceOrientation( GlobalIndexType index) const { return BaseType::getReferenceOrientation( DimensionTag(), index); @@ -221,7 +220,7 @@ class MeshInitializerLayer< MeshConfig, /*** * There are no superentities in this layer storing mesh cells. */ - + BaseType::initEntities( initializer, points ); } @@ -236,7 +235,7 @@ class MeshInitializerLayer< MeshConfig, { return this->superentityInitializer; } - + bool checkCells() { typedef typename MeshEntity< MeshConfig, EntityTopology >::template SubentitiesTraits< 0 >::LocalIndexType LocalIndexType; @@ -311,8 +310,8 @@ class MeshInitializerLayer< MeshConfig, typedef typename MeshSubentityTraits< MeshConfig, typename MeshConfig::CellTopology, - DimensionTag::value >::SubentityContainerType SubentitiesContainerType; - + DimensionsTag::value >::SubentityContainerType SubentitiesContainerType; + public: using BaseType::getEntityInitializer; @@ -348,7 +347,7 @@ class MeshInitializerLayer< MeshConfig, this->seedsIndexedSet.find( seed, index ); return index; } - + using BaseType::getSuperentityInitializer; SuperentityInitializerType& getSuperentityInitializer( DimensionTag ) { @@ -377,8 +376,8 @@ class MeshInitializerLayer< MeshConfig, void createEntityReferenceOrientations() const {} private: - - typedef typename MeshEntityTraits< MeshConfig, DimensionTag::value >::SeedIndexedSetType SeedIndexedSet; + + typedef typename MeshEntityTraits< MeshConfig, DimensionsTag::value >::SeedIndexedSetType SeedIndexedSet; SeedIndexedSet seedsIndexedSet; SuperentityInitializerType superentityInitializer; }; @@ -431,7 +430,7 @@ class MeshInitializerLayer< MeshConfig, DimensionTag::value >::SubentityContainerType SubentitiesContainerType; public: - + using BaseType::getEntityInitializer; EntityInitializerType& getEntityInitializer( DimensionTag, GlobalIndexType index ) { @@ -464,7 +463,7 @@ class MeshInitializerLayer< MeshConfig, this->seedsIndexedSet.find( seed, index ); return index; } - + using BaseType::getSuperentityInitializer; SuperentityInitializerType& getSuperentityInitializer( DimensionTag ) { @@ -496,7 +495,7 @@ class MeshInitializerLayer< MeshConfig, { return this->referenceOrientations[ index ]; } - + void createEntityReferenceOrientations() { //cout << " Creating entity reference orientations with " << DimensionTag::value << " dimensions ... " << std::endl; @@ -510,11 +509,11 @@ class MeshInitializerLayer< MeshConfig, this->referenceOrientations[ i ] = ReferenceOrientationType( seedsArray[ i ] ); } BaseType::createEntityReferenceOrientations(); - } - + } + private: - - typedef typename MeshEntityTraits< MeshConfig, DimensionTag::value >::SeedIndexedSetType SeedIndexedSet; + + typedef typename MeshEntityTraits< MeshConfig, DimensionsTag::value >::SeedIndexedSetType SeedIndexedSet; SeedIndexedSet seedsIndexedSet; SuperentityInitializerType superentityInitializer; ReferenceOrientationArrayType referenceOrientations; @@ -587,9 +586,9 @@ class MeshInitializerLayer< MeshConfig, << " vertexInitializerContainer.getSize() = " << vertexInitializerContainer.getSize() << std::endl; ); return vertexInitializerContainer[ index ]; } - + void createEntitySeedsFromCellSeeds( const CellSeedArrayType& cellSeeds ){}; - + void initEntities( InitializerType& initializer, const PointArrayType& points ) { EntityArrayType &vertexArray = initializer.template meshEntitiesArray< DimensionTag >(); @@ -599,25 +598,25 @@ class MeshInitializerLayer< MeshConfig, superentityInitializer.initSuperentities( initializer ); } - + void findEntitySeedIndex() const {} // This method is due to 'using BaseType::findEntityIndex;' in the derived class. void createEntityInitializers() { vertexInitializerContainer.setSize( this->getMesh().template getNumberOfEntities< DimensionTag::value >() ); } - - SuperentityInitializerType& getSuperentityInitializer( DimensionTag ) + + SuperentityInitializerType& getSuperentityInitializer( DimensionsTag ) { return this->superentityInitializer; } void createEntityReferenceOrientations() const {} - + void getReferenceOrientation() const {} - + private: - + SuperentityInitializerType superentityInitializer; VertexInitializerContainerType vertexInitializerContainer; diff --git a/src/TNL/Meshes/MeshDetails/initializer/MeshSuperentityStorageInitializer.h b/src/TNL/Meshes/MeshDetails/initializer/MeshSuperentityStorageInitializer.h index 587cb03a30..f3bd3b9bb0 100644 --- a/src/TNL/Meshes/MeshDetails/initializer/MeshSuperentityStorageInitializer.h +++ b/src/TNL/Meshes/MeshDetails/initializer/MeshSuperentityStorageInitializer.h @@ -16,10 +16,12 @@ #pragma once -#include <TNL/Meshes/MeshDimensionTag.h> #include <algorithm> #include <vector> +#include <TNL/Meshes/MeshDimensionsTag.h> +#include <TNL/Meshes/MeshDetails/traits/MeshSuperentityTraits.h> + namespace TNL { namespace Meshes { @@ -34,8 +36,8 @@ class MeshSuperentityStorageInitializerLayer; template< typename MeshConfig, typename EntityTopology > -class MeshSuperentityStorageInitializer : - public MeshSuperentityStorageInitializerLayer< MeshConfig, EntityTopology, MeshDimensionTag< MeshTraits< MeshConfig >::meshDimension > > +class MeshSuperentityStorageInitializer + : public MeshSuperentityStorageInitializerLayer< MeshConfig, EntityTopology, MeshDimensionsTag< MeshTraits< MeshConfig >::meshDimensions > > {}; template< typename MeshConfig, diff --git a/src/TNL/Meshes/MeshDetails/layers/MeshStorageLayer.h b/src/TNL/Meshes/MeshDetails/layers/MeshStorageLayer.h index 31faf5da10..cf197a5983 100644 --- a/src/TNL/Meshes/MeshDetails/layers/MeshStorageLayer.h +++ b/src/TNL/Meshes/MeshDetails/layers/MeshStorageLayer.h @@ -320,7 +320,8 @@ private: } template< typename SuperdimensionsTag > - typename MeshTraitsType::template SuperentityTraits< EntityTopology, SuperdimensionsTag::value >::StorageNetworkType& getSuperentityStorageNetwork( MeshDimensionTag< EntityTopology::dimensions > ) + typename MeshTraitsType::template SuperentityTraits< EntityTopology, SuperdimensionsTag::value >::StorageNetworkType& + getSuperentityStorageNetwork( MeshDimensionsTag< EntityTopology::dimensions > ) { return SuperentityStorageBaseType::getStorageNetwork( SuperdimensionsTag() ); } diff --git a/src/UnitTests/Meshes/MeshEntityTest.h b/src/UnitTests/Meshes/MeshEntityTest.h index 1ab9364465..f1d425590e 100644 --- a/src/UnitTests/Meshes/MeshEntityTest.h +++ b/src/UnitTests/Meshes/MeshEntityTest.h @@ -19,36 +19,34 @@ using TestEdgeMeshConfig = MeshConfigBase< MeshEdgeTopology, 2, RealType, Inde class TestTriangleMeshConfig : public MeshConfigBase< MeshTriangleTopology > { - public: - - template< typename EntityTopology > - static constexpr bool subentityStorage( EntityTopology entity, int subentityDimensions ) - { - return true; - } - - template< typename EntityTopology > - static constexpr bool superentityStorage( EntityTopology entity, int superentityDimensions ) - { - return true; - } +public: + template< typename EntityTopology > + static constexpr bool subentityStorage( EntityTopology entity, int subentityDimensions ) + { + return true; + } + + template< typename EntityTopology > + static constexpr bool superentityStorage( EntityTopology entity, int superentityDimensions ) + { + return true; + } }; class TestTetrahedronMeshConfig : public MeshConfigBase< MeshTetrahedronTopology > { - public: - - template< typename EntityTopology > - static constexpr bool subentityStorage( EntityTopology entity, int subentityDimensions ) - { - return true; - } - - template< typename EntityTopology > - static constexpr bool superentityStorage( EntityTopology entity, int superentityDimensions ) - { - return true; - } +public: + template< typename EntityTopology > + static constexpr bool subentityStorage( EntityTopology entity, int subentityDimensions ) + { + return true; + } + + template< typename EntityTopology > + static constexpr bool superentityStorage( EntityTopology entity, int superentityDimensions ) + { + return true; + } }; template< typename MeshConfig, typename EntityTopology, int Dimensions > diff --git a/src/UnitTests/Meshes/MeshTest.h b/src/UnitTests/Meshes/MeshTest.h index 1575d656e7..9e9e9f95f2 100644 --- a/src/UnitTests/Meshes/MeshTest.h +++ b/src/UnitTests/Meshes/MeshTest.h @@ -16,50 +16,46 @@ using namespace TNL; using namespace TNL::Meshes; +using RealType = double; +using Device = Devices::Host; +using IndexType = int; + class TestTriangleMeshConfig : public MeshConfigBase< MeshTriangleTopology > { - public: - - 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 superentityStorage( MeshEntity, int SuperentityDimensions ) { return true; }; +public: + static constexpr bool entityStorage( int dimensions ) { return true; }; + template< typename EntityTopology > static constexpr bool subentityStorage( EntityTopology, int SubentityDimensions ) { return true; }; + //template< typename EntityTopology > static constexpr bool subentityOrientationStorage( EntityTopology, int SubentityDimensions ) { return true; }; + template< typename EntityTopology > static constexpr bool superentityStorage( EntityTopology, int SuperentityDimensions ) { return true; }; }; class TestQuadrilateralMeshConfig : public MeshConfigBase< MeshQuadrilateralTopology > { - public: - - 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 ( SubentityDimensions % 2 != 0 ); }; - template< typename MeshEntity > static constexpr bool superentityStorage( MeshEntity, int SuperentityDimensions ) { return true; }; +public: + static constexpr bool entityStorage( int dimensions ) { return true; }; + template< typename EntityTopology > static constexpr bool subentityStorage( EntityTopology, int SubentityDimensions ) { return true; }; + template< typename EntityTopology > static constexpr bool subentityOrientationStorage( EntityTopology, int SubentityDimensions ) { return ( SubentityDimensions % 2 != 0 ); }; + template< typename EntityTopology > static constexpr bool superentityStorage( EntityTopology, int SuperentityDimensions ) { return true; }; }; class TestTetrahedronMeshConfig : public MeshConfigBase< MeshTetrahedronTopology > { - public: - - 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 ( SubentityDimensions % 2 != 0 ); }; - template< typename MeshEntity > static constexpr bool superentityStorage( MeshEntity, int SuperentityDimensions ) { return true; }; +public: + static constexpr bool entityStorage( int dimensions ) { return true; }; + template< typename EntityTopology > static constexpr bool subentityStorage( EntityTopology, int SubentityDimensions ) { return true; }; + template< typename EntityTopology > static constexpr bool subentityOrientationStorage( EntityTopology, int SubentityDimensions ) { return ( SubentityDimensions % 2 != 0 ); }; + template< typename EntityTopology > static constexpr bool superentityStorage( EntityTopology, int SuperentityDimensions ) { return true; }; }; class TestHexahedronMeshConfig : public MeshConfigBase< MeshHexahedronTopology > { - public: - - 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 ( SubentityDimensions % 2 != 0 ); }; - template< typename MeshEntity > static constexpr bool superentityStorage( MeshEntity, int SuperentityDimensions ) { return true; }; +public: + static constexpr bool entityStorage( int dimensions ) { return true; }; + template< typename EntityTopology > static constexpr bool subentityStorage( EntityTopology, int SubentityDimensions ) { return true; }; + template< typename EntityTopology > static constexpr bool subentityOrientationStorage( EntityTopology, int SubentityDimensions ) { return ( SubentityDimensions % 2 != 0 ); }; + template< typename EntityTopology > static constexpr bool superentityStorage( EntityTopology, int SuperentityDimensions ) { return true; }; }; -using RealType = double; -using Device = Devices::Host; -using IndexType = int; - TEST( MeshTest, TwoTrianglesTest ) { typedef MeshEntity< TestTriangleMeshConfig, MeshTriangleTopology > TriangleMeshEntityType; -- GitLab