Commit bb2384b8 authored by Tomáš Oberhuber's avatar Tomáš Oberhuber
Browse files

Refactoring the mesh.

parent 49d43a6e
Loading
Loading
Loading
Loading
+116 −112

File changed.

Preview size limit exceeded, changes collapsed.

+5 −5
Original line number Diff line number Diff line
@@ -21,11 +21,11 @@
#include <mesh/tnlDimensionsTag.h>

template< typename MeshConfig,
          typename EntityTag >
          typename EntityTopology >
class tnlMeshEntitySeed;

template< typename MeshConfig,
          typename EntityTag,
          typename EntityTopology,
          int Dimensions >
class tnlMeshSubentityTraits;

@@ -34,15 +34,15 @@ class tnlMeshSubentityTraits;
 * Uniqueness is preserved for entities of the same type only.
 */
template< typename MeshConfig,
          typename EntityTag >
          typename EntityTopology >
class tnlMeshEntitySeedKey
{
   typedef
      tnlMeshEntitySeed< MeshConfig, EntityTag >                               EntitySeedType;
      tnlMeshEntitySeed< MeshConfig, EntityTopology >                               EntitySeedType;

   typedef typename
      tnlMeshSubentityTraits< MeshConfig,
                                EntityTag,
                                EntityTopology,
                                0 >::ContainerType ContainerType;

   public:
+31 −34
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ class tnlMeshInitializerLayer;


template< typename MeshConfig,
          typename EntityTag>
          typename EntityTopology>
class tnlMeshEntityInitializer;

template< typename MeshConfig >
@@ -90,7 +90,7 @@ class tnlMeshInitializer
   }
   
   template<typename SubDimensionsTag, typename EntityType >
   static typename tnlMeshTraits< MeshConfig >::template SubentityTraits< typename EntityType::Tag, SubDimensionsTag::value >::IdArrayType&
   static typename tnlMeshTraits< MeshConfig >::template SubentityTraits< typename EntityType::EntityTopology, SubDimensionsTag::value >::IdArrayType&
   subentityIdsArray( EntityType& entity )
   {
      return entity.template subentityIdsArray< SubDimensionsTag >();
@@ -104,7 +104,7 @@ class tnlMeshInitializer
   }
   
   template<typename SubDimensionsTag, typename MeshEntity >
	static typename tnlMeshTraits< MeshConfig >::template SubentityTraits< typename MeshEntity::Tag, SubDimensionsTag::value >::OrientationArrayType&
	static typename tnlMeshTraits< MeshConfig >::template SubentityTraits< typename MeshEntity::EntityTopology, SubDimensionsTag::value >::OrientationArrayType&
   subentityOrientationsArray( MeshEntity &entity )
   {
      return entity.template subentityOrientationsArray< SubDimensionsTag >();
@@ -183,9 +183,9 @@ class tnlMeshInitializerLayer< MeshConfig,
   typedef tnlMeshEntityInitializer< MeshConfig, EntityTopology >                  EntityInitializerType;
   typedef tnlMeshEntityInitializer< MeshConfig, EntityTopology >                  CellInitializerType;
   typedef tnlArray< CellInitializerType, tnlHost, GlobalIndexType >               CellInitializerContainerType;
   typedef typename tnlMeshTraits< MeshConfig >::CellSeedArrayType                 CellSeedArrayType;
   typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType                    LocalIndexType;
   typedef typename tnlMeshTraits< MeshConfig >::PointArrayType                    PointArrayType;
   typedef typename MeshTraits::CellSeedArrayType                                  CellSeedArrayType;
   typedef typename MeshTraits::LocalIndexType                                     LocalIndexType;
   typedef typename MeshTraits::PointArrayType                                     PointArrayType;
   typedef tnlMeshEntitySeed< MeshConfig, CellTopology >                           SeedType;
   typedef  tnlMeshSuperentityStorageInitializer< MeshConfig, EntityTopology >     SuperentityInitializerType;

@@ -282,28 +282,25 @@ class tnlMeshInitializerLayer< MeshConfig,
   typedef tnlMeshInitializerLayer< MeshConfig,
                                    typename DimensionsTag::Decrement >  BaseType;
   
   typedef tnlMeshEntityTraits< MeshConfig, DimensionsTag::value >            Tag;
   typedef typename Tag::Tag                                               EntityTag;
   typedef typename Tag::Type                                              EntityType;
   typedef typename Tag::ContainerType                                     ContainerType;
   typedef typename Tag::UniqueContainerType                               UniqueContainerType;
   typedef tnlMesh< MeshConfig >                                                   MeshType;
   typedef typename MeshType::MeshTraits                                           MeshTraits;
   typedef typename MeshType::template EntityTraits< DimensionsTag::value >        EntityTraits;
   typedef typename EntityTraits::EntityTopology                                   EntityTopology;
   typedef typename EntityTraits::StorageArrayType                                 ContainerType;
   typedef typename ContainerType::IndexType                                       GlobalIndexType;
   typedef typename tnlMeshTraits< MeshConfig >::CellTopology          CellTopology;
   typedef typename MeshTraits::CellTopology                                       CellTopology;
   typedef typename EntityTraits::StorageArrayType                                 EntityArrayType;

   typedef tnlMeshInitializer< MeshConfig >                                        InitializerType;
   typedef tnlMeshEntityInitializer< MeshConfig,
                                     typename MeshConfig::CellTopology >         CellInitializerType;
   typedef tnlMeshEntityInitializer< MeshConfig, EntityTag >                EntityInitializerType;
   typedef tnlArray< EntityInitializerType, tnlHost, GlobalIndexType >     EntityInitializerContainerType;
   typedef typename tnlMeshTraits< MeshConfig >::CellSeedArrayType    CellSeedArrayType;
   typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType       LocalIndexType;
   typedef typename tnlMeshTraits< MeshConfig >::PointArrayType          PointArrayType;
   typedef tnlMeshEntityTraits< MeshConfig, DimensionsTag::value >            EntityTraits;
   typedef typename EntityTraits::ContainerType                          EntityArrayType;
   typedef typename EntityTraits::SeedArrayType                          SeedArrayType;
   typedef tnlMeshEntitySeed< MeshConfig, EntityTag >                 SeedType;
   typedef  tnlMeshSuperentityStorageInitializer< MeshConfig, EntityTag >  SuperentityInitializerType;

   typedef tnlMeshEntityInitializer< MeshConfig, EntityTopology >                  EntityInitializerType;
   typedef tnlMeshEntityInitializer< MeshConfig, EntityTopology >                  CellInitializerType;
   typedef tnlArray< CellInitializerType, tnlHost, GlobalIndexType >               CellInitializerContainerType;
   typedef typename EntityTraits::SeedArrayType                                    EntitySeedArrayType;
   typedef typename MeshTraits::CellSeedArrayType                                  CellSeedArrayType;
   typedef typename MeshTraits::LocalIndexType                                     LocalIndexType;
   typedef typename MeshTraits::PointArrayType                                     PointArrayType;
   typedef tnlMeshEntitySeed< MeshConfig, EntityTopology >                         SeedType;
   typedef  tnlMeshSuperentityStorageInitializer< MeshConfig, EntityTopology >     SuperentityInitializerType;

   typedef typename
      tnlMeshSubentityTraits< MeshConfig,
@@ -330,7 +327,7 @@ class tnlMeshInitializerLayer< MeshConfig,
            for( LocalIndexType j = 0; j < subentytiSeeds.getSize(); j++ )
            {
               //cout << "Creating subentity seed no. " << j << " : " << subentytiSeeds[ j ] << endl;
               //tnlMeshEntitySeed< tnlMeshConfigBase< CellTopology >, EntityTag >& entitySeed = subentytiSeeds[ j ];
               //tnlMeshEntitySeed< tnlMeshConfigBase< CellTopology >, EntityTopology >& entitySeed = subentytiSeeds[ j ];
               this->seedsIndexedSet.insert( subentytiSeeds[ j ] );
            }
         }
@@ -356,7 +353,7 @@ class tnlMeshInitializerLayer< MeshConfig,
         EntityArrayType &entityArray = initializer.template meshEntitiesArray< DimensionsTag >();
         //cout << " Initiating entities with " << DimensionsTag::value << " dimensions ... " << endl;
         entityArray.setSize( this->seedsIndexedSet.getSize() );
         SeedArrayType seedsArray;
         EntitySeedArrayType seedsArray;
         seedsArray.setSize( this->seedsIndexedSet.getSize() );
         this->seedsIndexedSet.toArray( seedsArray );
         for( GlobalIndexType i = 0; i < this->seedsIndexedSet.getSize(); i++ )
@@ -446,7 +443,7 @@ class tnlMeshInitializerLayer< MeshConfig,
            for( LocalIndexType j = 0; j < subentytiSeeds.getSize(); j++ )
            {
               //cout << "Creating subentity seed no. " << j << " : " << subentytiSeeds[ j ] << endl;
               //tnlMeshEntitySeed< tnlMeshConfigBase< CellTopology >, EntityTag >& entitySeed = subentytiSeeds[ j ];
               //tnlMeshEntitySeed< tnlMeshConfigBase< CellTopology >, EntityTopology >& entitySeed = subentytiSeeds[ j ];
               this->seedsIndexedSet.insert( subentytiSeeds[ j ] );
            }
         }
+5 −5
Original line number Diff line number Diff line
@@ -27,9 +27,9 @@ class tnlMeshSubentitySeedsCreator
{
	typedef typename tnlMeshTraits< MeshConfig >::LocalIndexType                                                      LocalIndexType;
	typedef typename tnlMeshTraits< MeshConfig >::template SubentityTraits< EntityTopology, SubDimensionsTag::value > SubentityTraits;
	typedef typename SubentityTraits::SubentityTag                                                              Subtopology;
	typedef typename SubentityTraits::SubentityTopology                                                               SubentityTopology;
	typedef typename tnlMeshTraits< MeshConfig >::IdArrayAccessorType                                                 IdArrayAccessorType;
	typedef typename tnlMeshTraits< MeshConfig >::template SubentityTraits< Subtopology, 0 >     SubentityVertexTraits;
	typedef typename tnlMeshTraits< MeshConfig >::template SubentityTraits< SubentityTopology, 0 >                    SubentityVertexTraits;

	static const LocalIndexType SUBENTITIES_COUNT = SubentityTraits::count;
	static const LocalIndexType SUBENTITY_VERTICES_COUNT = SubentityVertexTraits::count;
@@ -50,7 +50,7 @@ class tnlMeshSubentitySeedsCreator
      }

   private:
      typedef tnlMeshEntitySeed< MeshConfig, Subtopology > SubentitySeed;
      typedef tnlMeshEntitySeed< MeshConfig, SubentityTopology > SubentitySeed;

      template< LocalIndexType subentityIndex >
      class CreateSubentitySeeds
+19 −19
Original line number Diff line number Diff line
@@ -25,33 +25,33 @@ template< typename MeshConfig >
class tnlMeshInitializer;

template< typename MeshConfig,
          typename EntityTag,
          typename EntityTopology,
          typename DimensionsTag,
          bool SuperentityStorage = tnlMeshSuperentityTraits< MeshConfig, EntityTag, DimensionsTag::value >::storageEnabled >
          bool SuperentityStorage = tnlMeshSuperentityTraits< MeshConfig, EntityTopology, DimensionsTag::value >::storageEnabled >
class tnlMeshSuperentityStorageInitializerLayer;

template< typename MeshConfig,
          typename EntityTag >
          typename EntityTopology >
class tnlMeshSuperentityStorageInitializer :
   public tnlMeshSuperentityStorageInitializerLayer< MeshConfig, EntityTag, tnlDimensionsTag< tnlMeshTraits< MeshConfig >::meshDimensions > >
   public tnlMeshSuperentityStorageInitializerLayer< MeshConfig, EntityTopology, tnlDimensionsTag< tnlMeshTraits< MeshConfig >::meshDimensions > >
{};

template< typename MeshConfig,
          typename EntityTag,
          typename EntityTopology,
          typename DimensionsTag >
class tnlMeshSuperentityStorageInitializerLayer< MeshConfig,
                                          EntityTag,
                                          EntityTopology,
                                          DimensionsTag,
                                          true >
   : public tnlMeshSuperentityStorageInitializerLayer< MeshConfig,
                                                EntityTag,
                                                EntityTopology,
                                                typename DimensionsTag::Decrement >
{
   typedef tnlMeshSuperentityStorageInitializerLayer< MeshConfig,
                                                      EntityTag,
                                                      EntityTopology,
                                                      typename DimensionsTag::Decrement >      BaseType;

   typedef tnlDimensionsTag< EntityTag::dimensions >                                    EntityDimensions;
   typedef tnlDimensionsTag< EntityTopology::dimensions >                                    EntityDimensions;
	
   typedef typename tnlMeshTraits< MeshConfig >::GlobalIdArrayType                 GlobalIdArrayType;

@@ -110,18 +110,18 @@ class tnlMeshSuperentityStorageInitializerLayer< MeshConfig,
};

template< typename MeshConfig,
          typename EntityTag,
          typename EntityTopology,
          typename DimensionsTag >
class tnlMeshSuperentityStorageInitializerLayer< MeshConfig,
                                          EntityTag,
                                          EntityTopology,
                                          DimensionsTag,
                                          false >
   : public tnlMeshSuperentityStorageInitializerLayer< MeshConfig,
                                                EntityTag,
                                                EntityTopology,
                                                typename DimensionsTag::Decrement >
{
   typedef tnlMeshSuperentityStorageInitializerLayer< MeshConfig,
                                                EntityTag,
                                                EntityTopology,
                                                typename DimensionsTag::Decrement > BaseType;
   typedef tnlMeshInitializer< MeshConfig >                                      MeshInitializerType;
   
@@ -132,10 +132,10 @@ class tnlMeshSuperentityStorageInitializerLayer< MeshConfig,
};

template< typename MeshConfig,
          typename EntityTag >
          typename EntityTopology >
class tnlMeshSuperentityStorageInitializerLayer< MeshConfig,
                                          EntityTag,
                                          tnlDimensionsTag< EntityTag::dimensions >,
                                          EntityTopology,
                                          tnlDimensionsTag< EntityTopology::dimensions >,
                                          true >
{
   typedef tnlMeshInitializer< MeshConfig >                                      MeshInitializerType;
@@ -146,10 +146,10 @@ class tnlMeshSuperentityStorageInitializerLayer< MeshConfig,
};

template< typename MeshConfig,
          typename EntityTag >
          typename EntityTopology >
class tnlMeshSuperentityStorageInitializerLayer< MeshConfig,
                                          EntityTag,
                                          tnlDimensionsTag< EntityTag::dimensions >,
                                          EntityTopology,
                                          tnlDimensionsTag< EntityTopology::dimensions >,
                                          false >
{
   typedef tnlMeshInitializer< MeshConfig >                                      MeshInitializerType;
Loading