Skip to content
Snippets Groups Projects
Commit fc01af34 authored by Tomáš Oberhuber's avatar Tomáš Oberhuber
Browse files

Refactoring the mesh.

parent 4967324e
No related branches found
No related tags found
No related merge requests found
......@@ -33,60 +33,39 @@ class tnlMesh : public tnlObject,
public:
typedef MeshConfig Config;
typedef tnlMeshTraits< MeshConfig > MeshTraits;
typedef typename tnlMeshTraits< MeshConfig >::CellType CellType;
typedef typename tnlMeshTraits< MeshConfig >::PointType PointType;
static const int dimensions = MeshTraits::meshDimensions;
template< int Dimensions > using EntityTraits = typename MeshTraits::template EntityTraits< Dimensions >;
static tnlString getType();
virtual tnlString getTypeVirtual() const
{
return this->getType();
}
virtual tnlString getTypeVirtual() const;
static constexpr int getDimensions();
using tnlObject::save;
using tnlObject::load;
template< int Dimensions >
bool entitiesAvalable() const;
bool save( tnlFile& file ) const
{
if( ! tnlObject::save( file ) ||
! entitiesStorage.save( file ) )
{
cerr << "Mesh saving failed." << endl;
return false;
}
return true;
}
// TODO: jeden GlobalIndexType a LocalIndexType pro vsechny entity
typename EntityTraits< dimensions >::GlobalIndexType getNumberOfCells() const;
bool load( tnlFile& file )
{
if( ! tnlObject::load( file ) ||
! entitiesStorage.load( file ) )
{
cerr << "Mesh loading failed." << endl;
return false;
}
return true;
}
template< int Dimensions >
typename EntityTraits< Dimensions >::GlobalIndexType getNumberOfEntities() const;
CellType& getCell( const typename MeshTraits::template EntityTraits< dimensions >::GlobalIndexType entityIndex );
const CellType& getCell( const typename MeshTraits::template EntityTraits< dimensions >::GlobalIndexType entityIndex ) const;
static const int getDimensions();
template< int Dimensions >
bool entitiesAvalable() const
{
return MeshTraits::template EntityTraits< Dimensions >::available;
}
template< int Dimensions >
typename MeshTraits::template EntityTraits< Dimensions >::GlobalIndexType getNumberOfEntities() const
{
return entitiesStorage.getNumberOfEntities( tnlDimensionsTag< Dimensions >() );
}
bool save( tnlFile& file ) const;
bool load( tnlFile& file );
typename MeshTraits::template EntityTraits< dimensions >::GlobalIndexType getNumberOfCells() const
{
return entitiesStorage.getNumberOfEntities( tnlDimensionsTag< dimensions >() );
}
template< int Dimensions >
typename MeshTraits::template EntityTraits< Dimensions >::EntityType&
......@@ -116,17 +95,6 @@ class tnlMesh : public tnlObject,
return entitiesStorage.getEntities( tnlDimensionsTag< Dimensions >() );
}
typename MeshTraits::template EntityTraits< dimensions >::EntityType&
getCell( const typename MeshTraits::template EntityTraits< dimensions >::GlobalIndexType entityIndex )
{
return entitiesStorage.getEntity( tnlDimensionsTag< dimensions >(), entityIndex );
}
const typename MeshTraits::template EntityTraits< dimensions >::EntityType&
getCell( const typename MeshTraits::template EntityTraits< dimensions >::GlobalIndexType entityIndex ) const
{
return entitiesStorage.getEntity( tnlDimensionsTag< dimensions >(), entityIndex );
}
void print( ostream& str ) const
{
......@@ -161,6 +129,10 @@ class tnlMesh : public tnlObject,
return meshInitializer.createMesh( points, cellSeeds, *this );
}
using tnlObject::save;
using tnlObject::load;
protected:
tnlMeshStorageLayers< MeshConfig > entitiesStorage;
......
......@@ -30,6 +30,95 @@ getType()
return tnlString( "tnlMesh< ") + MeshConfig::getType() + " >";
}
template< typename MeshConfig >
tnlString
tnlMesh< MeshConfig >::
getTypeVirtual() const
{
return this->getType();
}
template< typename MeshConfig >
constexpr int
tnlMesh< MeshConfig >::
getDimensions()
{
return dimensions;
}
template< typename MeshConfig >
template< int Dimensions >
bool
tnlMesh< MeshConfig >::
entitiesAvalable() const
{
return MeshTraits::template EntityTraits< Dimensions >::available;
}
template< typename MeshConfig >
template< int Dimensions >
typename tnlMesh< MeshConfig >::template EntityTraits< Dimensions >::GlobalIndexType
tnlMesh< MeshConfig >::
getNumberOfEntities() const
{
return entitiesStorage.getNumberOfEntities( tnlDimensionsTag< Dimensions >() );
}
template< typename MeshConfig >
typename tnlMesh< MeshConfig >::template EntityTraits< tnlMesh< MeshConfig >::dimensions >::GlobalIndexType
tnlMesh< MeshConfig >::
getNumberOfCells() const
{
return entitiesStorage.getNumberOfEntities( tnlDimensionsTag< dimensions >() );
}
template< typename MeshConfig >
typename tnlMesh< MeshConfig >::CellType&
tnlMesh< MeshConfig >::
getCell( const typename MeshTraits::template EntityTraits< dimensions >::GlobalIndexType cellIndex )
{
return entitiesStorage.getEntity( tnlDimensionsTag< dimensions >(), cellIndex );
}
template< typename MeshConfig >
const typename tnlMesh< MeshConfig >::CellType&
tnlMesh< MeshConfig >::
getCell( const typename MeshTraits::template EntityTraits< dimensions >::GlobalIndexType cellIndex ) const
{
return entitiesStorage.getEntity( tnlDimensionsTag< dimensions >(), cellIndex );
}
template< typename MeshConfig >
bool
tnlMesh< MeshConfig >::
save( tnlFile& file ) const
{
if( ! tnlObject::save( file ) ||
! entitiesStorage.save( file ) )
{
cerr << "Mesh saving failed." << endl;
return false;
}
return true;
}
template< typename MeshConfig >
bool
tnlMesh< MeshConfig >::
load( tnlFile& file )
{
if( ! tnlObject::load( file ) ||
! entitiesStorage.load( file ) )
{
cerr << "Mesh loading failed." << endl;
return false;
}
return true;
}
#endif /* TNLMESH_IMPL_H */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment