From 2bb71149677259580706628a3e38169c79935b16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Klinkovsk=C3=BD?= <klinkjak@fjfi.cvut.cz> Date: Wed, 1 Nov 2017 10:48:02 +0100 Subject: [PATCH] Moved EntityTopologyGetter to MeshEntityTraits.h --- .../MeshDetails/traits/MeshEntityTraits.h | 17 +++++++++- src/TNL/Meshes/MeshEntity.h | 2 +- .../Meshes/Topologies/MeshEntityTopology.h | 32 ------------------- 3 files changed, 17 insertions(+), 34 deletions(-) diff --git a/src/TNL/Meshes/MeshDetails/traits/MeshEntityTraits.h b/src/TNL/Meshes/MeshDetails/traits/MeshEntityTraits.h index 524c892915..64cf27b3de 100644 --- a/src/TNL/Meshes/MeshDetails/traits/MeshEntityTraits.h +++ b/src/TNL/Meshes/MeshDetails/traits/MeshEntityTraits.h @@ -50,6 +50,21 @@ public: }; +template< typename MeshConfig, + typename DimensionTag > +struct EntityTopologyGetter +{ + static_assert( DimensionTag::value <= MeshConfig::meshDimension, "There are no entities with dimension higher than the mesh dimension." ); + using Topology = typename Topologies::Subtopology< typename MeshConfig::CellTopology, DimensionTag::value >::Topology; +}; + +template< typename MeshConfig > +struct EntityTopologyGetter< MeshConfig, DimensionTag< MeshConfig::CellTopology::dimension > > +{ + using Topology = typename MeshConfig::CellTopology; +}; + + template< typename MeshConfig, typename Device, int Dimension > @@ -60,7 +75,7 @@ public: using GlobalIndexType = typename MeshConfig::GlobalIndexType; using LocalIndexType = typename MeshConfig::LocalIndexType; - using EntityTopology = typename Topologies::EntityTopologyGetter< MeshConfig, DimensionTag< Dimension > >::Topology; + using EntityTopology = typename EntityTopologyGetter< MeshConfig, DimensionTag< Dimension > >::Topology; using EntityType = MeshEntity< MeshConfig, Device, EntityTopology >; using SeedType = MeshEntitySeed< MeshConfig, EntityTopology >; diff --git a/src/TNL/Meshes/MeshEntity.h b/src/TNL/Meshes/MeshEntity.h index 2f46296f8a..b68225bc19 100644 --- a/src/TNL/Meshes/MeshEntity.h +++ b/src/TNL/Meshes/MeshEntity.h @@ -39,7 +39,7 @@ class MeshEntity protected MeshSuperentityAccess< MeshConfig, Device, EntityTopology_ >, public MeshEntityIndex< typename MeshConfig::IdType > { - static_assert( Topologies::is_compatible_topology< typename MeshConfig::CellTopology, EntityTopology_ >::value, + static_assert( std::is_same< EntityTopology_, typename MeshTraits< MeshConfig, Device >::template EntityTraits< EntityTopology_::dimension >::EntityTopology >::value, "Specified entity topology is not compatible with the MeshConfig." ); public: diff --git a/src/TNL/Meshes/Topologies/MeshEntityTopology.h b/src/TNL/Meshes/Topologies/MeshEntityTopology.h index f0c84b9d0c..b506f4f5da 100644 --- a/src/TNL/Meshes/Topologies/MeshEntityTopology.h +++ b/src/TNL/Meshes/Topologies/MeshEntityTopology.h @@ -38,38 +38,6 @@ struct SubentityVertexMap { }; - -template< typename MeshConfig, - typename DimensionTag > -struct EntityTopologyGetter -{ - static_assert( DimensionTag::value <= MeshConfig::meshDimension, "There are no entities with dimension higher than the mesh dimension." ); - using Topology = typename Subtopology< typename MeshConfig::CellTopology, DimensionTag::value >::Topology; -}; - -template< typename MeshConfig > -struct EntityTopologyGetter< MeshConfig, DimensionTag< MeshConfig::CellTopology::dimension > > -{ - using Topology = typename MeshConfig::CellTopology; -}; - - -// Helper struct to determine if one topology is compatible with another one. -template< typename Supertopology, typename Subtopology > -struct is_compatible_topology -{ - static_assert( Supertopology::dimension >= Subtopology::dimension, - "wrong order of topologies in template parameters" ); - static constexpr bool value = std::is_same< typename Topologies::Subtopology< Supertopology, Subtopology::dimension >::Topology, - Subtopology >::value; -}; - -template< typename Supertopology > -struct is_compatible_topology< Supertopology, Supertopology > -{ - static constexpr bool value = true; -}; - } // namespace Topologies } // namespace Meshes } // namespace TNL -- GitLab