Commit f485a2a7 authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Clened up interface between Mesh and MeshInitializer

parent 5ce0ae64
Loading
Loading
Loading
Loading
+6 −11
Original line number Diff line number Diff line
@@ -85,22 +85,17 @@ class Mesh

      bool operator==( const Mesh& mesh ) const;

      // TODO: this is only for mesh intializer - remove it if possible
      template< typename DimensionsTag >
      typename EntityTraits< DimensionsTag::value >::StorageArrayType& entitiesArray();

      template< typename EntityTopology, typename SuperdimensionsTag >
      typename MeshTraitsType::template SuperentityTraits< EntityTopology, SuperdimensionsTag::value >::StorageNetworkType&
      getSuperentityStorageNetwork()
      {
         return StorageBaseType::template getSuperentityStorageNetwork< SuperdimensionsTag >( MeshDimensionsTag< EntityTopology::dimensions >() );
      }
 
      bool init( const typename MeshTraitsType::PointArrayType& points,
                 const typename MeshTraitsType::CellSeedArrayType& cellSeeds );
 
   protected:
      // Methods for the mesh initializer
      using StorageBaseType::getEntitiesArray;
      using StorageBaseType::getSuperentityStorageNetwork;

      MeshConfigValidator< MeshConfig > configValidator;

      friend MeshInitializer< MeshConfig >;
};

template< typename MeshConfig >
+0 −9
Original line number Diff line number Diff line
@@ -149,15 +149,6 @@ operator==( const Mesh& mesh ) const
   return StorageBaseType::operator==( mesh );
}

template< typename MeshConfig >
   template< typename DimensionTag >
typename Mesh< MeshConfig >::template EntityTraits< DimensionTag::value >::StorageArrayType&
Mesh< MeshConfig >::
entitiesArray()
{
   return StorageBaseType::entitiesArray( DimensionsTag() );
}

template< typename MeshConfig >
bool
Mesh< MeshConfig >::
+10 −10
Original line number Diff line number Diff line
@@ -116,11 +116,11 @@ class MeshInitializer
         return entity.template subentityOrientationsArray< SubDimensionTag::value >();
      }

      template< typename DimensionTag >
      typename MeshTraitsType::template EntityTraits< DimensionTag::value >::StorageArrayType&
      template< int Dimensions >
      typename MeshTraitsType::template EntityTraits< Dimensions >::StorageArrayType&
      meshEntitiesArray()
      {
         return mesh->template entitiesArray< DimensionTag >();
         return mesh->template getEntitiesArray< Dimensions >();
      }

      template< typename EntityTopology, typename SuperdimensionsTag >
@@ -209,8 +209,8 @@ class MeshInitializerLayer< MeshConfig,

      void initEntities( InitializerType &initializer, const PointArrayType &points, const CellSeedArrayType &cellSeeds)
      {
         StorageArrayType &entityArray = initializer.template meshEntitiesArray< DimensionTag >();
         //cout << " Initiating entities with " << DimensionTag::value << " dimensions ... " << std::endl;
         StorageArrayType &entityArray = initializer.template meshEntitiesArray< Dimensions >();
         //cout << " Initiating entities with " << DimensionsTag::value << " dimensions ... " << std::endl;
         entityArray.setSize( cellSeeds.getSize() );
         for( GlobalIndexType i = 0; i < entityArray.getSize(); i++ )
         {
@@ -356,8 +356,8 @@ class MeshInitializerLayer< MeshConfig,

      void initEntities( InitializerType& initializer, const PointArrayType& points )
      {
         StorageArrayType &entityArray = initializer.template meshEntitiesArray< DimensionTag >();
         //cout << " Initiating entities with " << DimensionTag::value << " dimensions ... " << std::endl;
         StorageArrayType &entityArray = initializer.template meshEntitiesArray< Dimensions >();
         //cout << " Initiating entities with " << DimensionsTag::value << " dimensions ... " << std::endl;
         entityArray.setSize( this->seedsIndexedSet.getSize() );
         EntitySeedArrayType seedsArray;
         seedsArray.setSize( this->seedsIndexedSet.getSize() );
@@ -475,8 +475,8 @@ class MeshInitializerLayer< MeshConfig,

      void initEntities( InitializerType& initializer, const PointArrayType& points )
      {
         EntityArrayType &entityArray = initializer.template meshEntitiesArray< DimensionTag >();
         //cout << " Initiating entities with " << DimensionTag::value << " dimensions ... " << std::endl;
         EntityArrayType &entityArray = initializer.template meshEntitiesArray< DimensionsTag::value >();
         //cout << " Initiating entities with " << DimensionsTag::value << " dimensions ... " << std::endl;
         entityArray.setSize( this->seedsIndexedSet.getSize() );
         SeedArrayType seedsArray;
         seedsArray.setSize( this->seedsIndexedSet.getSize() );
@@ -594,7 +594,7 @@ class MeshInitializerLayer< MeshConfig,

      void initEntities( InitializerType& initializer, const PointArrayType& points )
      {
         EntityArrayType &vertexArray = initializer.template meshEntitiesArray< DimensionTag >();
         EntityArrayType &vertexArray = initializer.template meshEntitiesArray< DimensionsTag::value >();
         vertexArray.setSize( points.getSize() );
         for( GlobalIndexType i = 0; i < vertexArray.getSize(); i++ )
            EntityInitializerType::setVertexPoint( vertexArray[i], points[i], initializer );
+1 −1
Original line number Diff line number Diff line
@@ -113,7 +113,7 @@ class MeshSuperentityStorageInitializerLayer< MeshConfig,
               for( auto v_it = it->second.cbegin(); v_it != it->second.cend(); v_it++ )
                  superentitiesIndices[ i++ ] = *v_it;

               EntityType& entity = meshInitializer.template meshEntitiesArray< EntityDimensions >()[ entityIndex ];
               EntityType& entity = meshInitializer.template meshEntitiesArray< EntityDimensions::value >()[ entityIndex ];
               meshInitializer.template bindSuperentitiesStorageNetwork< DimensionsTag::value >( entity, superentityStorageNetwork.getValues( entityIndex++ ) );
            }

+24 −9
Original line number Diff line number Diff line
@@ -36,6 +36,24 @@ template< typename MeshConfig >
class MeshStorageLayers
   : public MeshStorageLayer< MeshConfig, typename MeshTraits< MeshConfig >::DimensionTag >
{
   using MeshTraitsType   = MeshTraits< MeshConfig >;
   using BaseType         = MeshStorageLayer< MeshConfig, typename MeshTraitsType::DimensionsTag >;
   template< int Dimensions >
   using EntityTraits = typename MeshTraitsType::template EntityTraits< Dimensions >;

protected:
   template< int Dimensions >
   typename EntityTraits< Dimensions >::StorageArrayType& getEntitiesArray()
   {
      return BaseType::getEntitiesArray( MeshDimensionsTag< Dimensions >() );
   }

   template< typename EntityTopology, typename SuperdimensionsTag >
   typename MeshTraitsType::template SuperentityTraits< EntityTopology, SuperdimensionsTag::value >::StorageNetworkType&
   getSuperentityStorageNetwork()
   {
      return BaseType::template getSuperentityStorageNetwork< SuperdimensionsTag >( MeshDimensionsTag< EntityTopology::dimensions >() );
   }
};


@@ -142,11 +160,9 @@ protected:

   AccessArrayType entitiesAccess;

// TODO: this is only for the mesh initializer - fix it
public:
   using BaseType::entitiesArray;

   typename EntityTraitsType::StorageArrayType& entitiesArray( DimensionsTag )
   // Methods for the mesh initializer
   using BaseType::getEntitiesArray;
   typename EntityTraitsType::StorageArrayType& getEntitiesArray( DimensionsTag )
   {
      return entities;
   }
@@ -285,14 +301,13 @@ public:
      return ( SuperentityStorageBaseType::operator==( meshLayer ) && vertices == meshLayer.vertices );
   }

private:
protected:
   StorageArrayType vertices;

   AccessArrayType verticesAccess;

// TODO: this is only for the mesh initializer - fix it
public:
   typename EntityTraitsType::StorageArrayType& entitiesArray( DimensionsTag )
   // Methods for the mesh initializer
   typename EntityTraitsType::StorageArrayType& getEntitiesArray( DimensionsTag )
   {
      return vertices;
   }