Loading tests/benchmarks/heat-equation-benchmark/TestGridEntity.h +0 −235 Original line number Diff line number Diff line Loading @@ -48,119 +48,7 @@ template< int Dimensions, class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config > { public: typedef tnlGrid< Dimensions, Real, Device, Index > GridType; typedef GridType MeshType; typedef typename GridType::RealType RealType; typedef typename GridType::IndexType IndexType; typedef typename GridType::CoordinatesType CoordinatesType; typedef Config ConfigType; static const int meshDimensions = GridType::meshDimensions; static const int entityDimensions = EntityDimensions; constexpr static int getDimensions() { return EntityDimensions; }; constexpr static int getMeshDimensions() { return meshDimensions; }; typedef tnlStaticVector< meshDimensions, IndexType > EntityOrientationType; typedef tnlStaticVector< meshDimensions, IndexType > EntityBasisType; typedef TestGridEntity< GridType, entityDimensions, Config > ThisType; typedef typename GridType::VertexType VertexType; typedef TestNeighbourGridEntitiesStorage< ThisType > NeighbourGridEntitiesStorageType; template< int NeighbourEntityDimensions = entityDimensions > using NeighbourEntities = TestNeighbourGridEntityGetter< TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >, NeighbourEntityDimensions >; __cuda_callable__ inline TestGridEntity( const GridType& grid ); __cuda_callable__ inline TestGridEntity( const GridType& grid, const CoordinatesType& coordinates, const EntityOrientationType& orientation, const EntityBasisType& basis ); __cuda_callable__ inline const CoordinatesType& getCoordinates() const; __cuda_callable__ inline CoordinatesType& getCoordinates(); __cuda_callable__ inline void setCoordinates( const CoordinatesType& coordinates ); /*** * Call this method every time the coordinates are changed * to recompute the mesh entity index. The reason for this strange * mechanism is a performance. */ __cuda_callable__ inline //void setIndex( IndexType entityIndex ); void refresh(); __cuda_callable__ inline Index getIndex() const; __cuda_callable__ inline const EntityOrientationType& getOrientation() const; __cuda_callable__ inline void setOrientation( const EntityOrientationType& orientation ); __cuda_callable__ inline const EntityBasisType& getBasis() const; __cuda_callable__ inline EntityBasisType& getBasis(); __cuda_callable__ inline void setBasis( const EntityBasisType& basis ); template< int NeighbourEntityDimensions = entityDimensions > __cuda_callable__ inline const NeighbourEntities< NeighbourEntityDimensions >& getNeighbourEntities() const; __cuda_callable__ inline bool isBoundaryEntity() const; __cuda_callable__ inline VertexType getCenter() const; __cuda_callable__ inline const RealType& getMeasure() const; __cuda_callable__ inline const GridType& getMesh() const; protected: const GridType& grid; IndexType entityIndex; CoordinatesType coordinates; EntityOrientationType orientation; EntityBasisType basis; NeighbourGridEntitiesStorageType neighbourEntitiesStorage; //__cuda_callable__ inline //TestGridEntity(); friend class tnlBoundaryGridEntityChecker< ThisType >; friend class tnlGridEntityCenterGetter< ThisType >; }; /**** Loading Loading @@ -290,129 +178,6 @@ class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Co friend class tnlGridEntityCenterGetter< ThisType >; }; /**** * Specialization for vertices */ template< int Dimensions, typename Real, typename Device, typename Index, typename Config > class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config > { public: typedef tnlGrid< Dimensions, Real, Device, Index > GridType; typedef GridType MeshType; typedef typename GridType::RealType RealType; typedef typename GridType::IndexType IndexType; typedef typename GridType::CoordinatesType CoordinatesType; typedef typename GridType::VertexType VertexType; typedef Config ConfigType; static const int meshDimensions = GridType::meshDimensions; static const int entityDimensions = 0; constexpr static int getDimensions() { return entityDimensions; }; constexpr static int getMeshDimensions() { return meshDimensions; }; typedef tnlStaticVector< meshDimensions, IndexType > EntityOrientationType; typedef tnlStaticVector< meshDimensions, IndexType > EntityBasisType; typedef TestGridEntity< GridType, entityDimensions, Config > ThisType; typedef tnlNeighbourGridEntitiesStorage< ThisType > NeighbourGridEntitiesStorageType; template< int NeighbourEntityDimensions = entityDimensions > using NeighbourEntities = tnlNeighbourGridEntityGetter< tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, entityDimensions, Config >, NeighbourEntityDimensions >; __cuda_callable__ inline TestGridEntity( const GridType& grid ); __cuda_callable__ inline TestGridEntity( const GridType& grid, const CoordinatesType& coordinates, const EntityOrientationType& orientation, const EntityBasisType& basis ); __cuda_callable__ inline const CoordinatesType& getCoordinates() const; __cuda_callable__ inline CoordinatesType& getCoordinates(); __cuda_callable__ inline void setCoordinates( const CoordinatesType& coordinates ); /*** * Call this method every time the coordinates are changed * to recompute the mesh entity index. The reason for this strange * mechanism is a performance. */ __cuda_callable__ inline //void setIndex( IndexType entityIndex ); void refresh(); __cuda_callable__ inline Index getIndex() const; __cuda_callable__ inline const EntityOrientationType getOrientation() const; __cuda_callable__ inline void setOrientation( const EntityOrientationType& orientation ){}; __cuda_callable__ inline const EntityBasisType getBasis() const; __cuda_callable__ inline void setBasis( const EntityBasisType& basis ){}; template< int NeighbourEntityDimensions = entityDimensions > __cuda_callable__ inline const NeighbourEntities< NeighbourEntityDimensions >& getNeighbourEntities() const; __cuda_callable__ inline bool isBoundaryEntity() const; __cuda_callable__ inline VertexType getCenter() const; __cuda_callable__ inline const RealType getMeasure() const; __cuda_callable__ inline VertexType getEntityProportions() const; __cuda_callable__ inline const GridType& getMesh() const; protected: const GridType& grid; IndexType entityIndex; CoordinatesType coordinates; EntityOrientationType orientation; EntityBasisType basis; NeighbourGridEntitiesStorageType neighbourEntitiesStorage; friend class tnlBoundaryGridEntityChecker< ThisType >; friend class tnlGridEntityCenterGetter< ThisType >; }; #include "TestGridEntity_impl.h" Loading tests/benchmarks/heat-equation-benchmark/TestGridEntity_impl.h +0 −481 Original line number Diff line number Diff line Loading @@ -23,266 +23,6 @@ #include <mesh/grids/tnlGridEntityMeasureGetter.h> #include "TestGridEntity.h" /*template< int Dimensions, typename Real, typename Device, typename Index, typename Config, int EntityDimensions > __cuda_callable__ inline TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions >:: TestGridEntity() { }*/ template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: TestGridEntity( const tnlGrid< Dimensions, Real, Device, Index >& grid ) : grid( grid ), entityIndex( -1 ), coordinates( 0 ), orientation( 0 ), basis( 0 ), neighbourEntitiesStorage( *this ) { } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: TestGridEntity( const tnlGrid< Dimensions, Real, Device, Index >& grid, const CoordinatesType& coordinates, const EntityOrientationType& orientation, const EntityBasisType& basis ) : grid( grid ), entityIndex( -1 ), coordinates( coordinates ), orientation( orientation ), basis( basis ), neighbourEntitiesStorage( *this ) { } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::CoordinatesType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getCoordinates() const { return this->coordinates; } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::CoordinatesType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getCoordinates() { return this->coordinates; } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline void TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: setCoordinates( const CoordinatesType& coordinates ) { this->coordinates = coordinates; } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline void TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: refresh() { this->entityIndex = this->grid.getEntityIndex( *this ); this->neighbourEntitiesStorage.refresh( this->grid, this->entityIndex ); } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline Index TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getIndex() const { typedef tnlGrid< Dimensions, Real, Device, Index > GridType; typedef typename GridType::template MeshEntity< EntityDimensions > EntityType; tnlAssert( this->entityIndex >= 0 && this-> entityIndex < grid.template getEntitiesCount< EntityType >(), cerr << "this->entityIndex = " << this->entityIndex << " grid.template getEntitiesCount< EntityDimensions >() = " << grid.template getEntitiesCount< EntityType >() ); tnlAssert( this->entityIndex == grid.getEntityIndex( *this ), cerr << "this->entityIndex = " << this->entityIndex << " grid.getEntityIndex( *this ) = " << grid.getEntityIndex( *this ) ); return this->entityIndex; } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::EntityOrientationType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getOrientation() const { return this->orientation; } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline void TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: setOrientation( const EntityOrientationType& orientation ) { this->orientation = orientation; this->basis = EntityBasisType( 1 ) - tnlAbs( orientation ); } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::EntityBasisType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getBasis() const { return this->basis; } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline void TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: setBasis( const EntityBasisType& basis ) { this->basis = basis; this->orientation = EntityOrientationType( 1 ) - tnlAbs( basis ); } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > template< int NeighbourEntityDimensions > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::template NeighbourEntities< NeighbourEntityDimensions >& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getNeighbourEntities() const { return neighbourEntitiesStorage.template getNeighbourEntities< NeighbourEntityDimensions >(); } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline bool TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: isBoundaryEntity() const { return tnlBoundaryGridEntityChecker< ThisType >::isBoundaryEntity( *this ); } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline typename tnlGrid< Dimensions, Real, Device, Index >::VertexType TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getCenter() const { return tnlGridEntityCenterGetter< ThisType >::getEntityCenter( *this ); } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::RealType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getMeasure() const { return tnlGridEntityMeasureGetter< GridType, EntityDimensions >::getMeasure( this->getMesh(), *this ); } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::GridType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getMesh() const { return this->grid; } /**** * Specialization for cells */ Loading Loading @@ -512,224 +252,3 @@ getMesh() const return this->grid; } /**** * Specialization for vertices */ template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: TestGridEntity( const GridType& grid ) : grid( grid ), entityIndex( -1 ), coordinates( 0 ), orientation( 1 ), basis( 0 ), neighbourEntitiesStorage( *this ) { } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: TestGridEntity( const GridType& grid, const CoordinatesType& coordinates, const EntityOrientationType& orientation, const EntityBasisType& basis ) : grid( grid ), entityIndex( -1 ), coordinates( coordinates ), neighbourEntitiesStorage( *this ) { } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::CoordinatesType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getCoordinates() const { return this->coordinates; } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::CoordinatesType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getCoordinates() { return this->coordinates; } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline void TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: setCoordinates( const CoordinatesType& coordinates ) { this->coordinates = coordinates; } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline void TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: refresh() { this->entityIndex = this->grid.getEntityIndex( *this ); this->neighbourEntitiesStorage.refresh( this->grid, this->entityIndex ); } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline Index TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getIndex() const { typedef tnlGrid< Dimensions, Real, Device, Index > GridType; typedef typename GridType::Vertex Vertex; tnlAssert( this->entityIndex >= 0 && this-> entityIndex < grid.template getEntitiesCount< Vertex >(), cerr << "this->entityIndex = " << this->entityIndex << " grid.template getEntitiesCount< 0 >() = " << grid.template getEntitiesCount< Vertex >() ); tnlAssert( this->entityIndex == grid.getEntityIndex( *this ), cerr << "this->entityIndex = " << this->entityIndex << " grid.getEntityIndex( *this ) = " << grid.getEntityIndex( *this ) ); return this->entityIndex; } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::EntityOrientationType TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getOrientation() const { return EntityOrientationType( ( IndexType ) 0 ); } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::EntityBasisType TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getBasis() const { return EntityBasisType( ( IndexType ) 0 ); } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > template< int NeighbourEntityDimensions > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::template NeighbourEntities< NeighbourEntityDimensions >& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getNeighbourEntities() const { return neighbourEntitiesStorage.template getNeighbourEntities< NeighbourEntityDimensions >(); } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline bool TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: isBoundaryEntity() const { return tnlBoundaryGridEntityChecker< ThisType >::isBoundaryEntity( *this ); } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline typename tnlGrid< Dimensions, Real, Device, Index >::VertexType TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getCenter() const { return tnlGridEntityCenterGetter< ThisType >::getEntityCenter( *this ); } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::RealType TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getMeasure() const { return 0.0; } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::VertexType TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getEntityProportions() const { return VertexType( 0.0 ); } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::GridType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getMesh() const { return this->grid; } Loading
tests/benchmarks/heat-equation-benchmark/TestGridEntity.h +0 −235 Original line number Diff line number Diff line Loading @@ -48,119 +48,7 @@ template< int Dimensions, class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config > { public: typedef tnlGrid< Dimensions, Real, Device, Index > GridType; typedef GridType MeshType; typedef typename GridType::RealType RealType; typedef typename GridType::IndexType IndexType; typedef typename GridType::CoordinatesType CoordinatesType; typedef Config ConfigType; static const int meshDimensions = GridType::meshDimensions; static const int entityDimensions = EntityDimensions; constexpr static int getDimensions() { return EntityDimensions; }; constexpr static int getMeshDimensions() { return meshDimensions; }; typedef tnlStaticVector< meshDimensions, IndexType > EntityOrientationType; typedef tnlStaticVector< meshDimensions, IndexType > EntityBasisType; typedef TestGridEntity< GridType, entityDimensions, Config > ThisType; typedef typename GridType::VertexType VertexType; typedef TestNeighbourGridEntitiesStorage< ThisType > NeighbourGridEntitiesStorageType; template< int NeighbourEntityDimensions = entityDimensions > using NeighbourEntities = TestNeighbourGridEntityGetter< TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >, NeighbourEntityDimensions >; __cuda_callable__ inline TestGridEntity( const GridType& grid ); __cuda_callable__ inline TestGridEntity( const GridType& grid, const CoordinatesType& coordinates, const EntityOrientationType& orientation, const EntityBasisType& basis ); __cuda_callable__ inline const CoordinatesType& getCoordinates() const; __cuda_callable__ inline CoordinatesType& getCoordinates(); __cuda_callable__ inline void setCoordinates( const CoordinatesType& coordinates ); /*** * Call this method every time the coordinates are changed * to recompute the mesh entity index. The reason for this strange * mechanism is a performance. */ __cuda_callable__ inline //void setIndex( IndexType entityIndex ); void refresh(); __cuda_callable__ inline Index getIndex() const; __cuda_callable__ inline const EntityOrientationType& getOrientation() const; __cuda_callable__ inline void setOrientation( const EntityOrientationType& orientation ); __cuda_callable__ inline const EntityBasisType& getBasis() const; __cuda_callable__ inline EntityBasisType& getBasis(); __cuda_callable__ inline void setBasis( const EntityBasisType& basis ); template< int NeighbourEntityDimensions = entityDimensions > __cuda_callable__ inline const NeighbourEntities< NeighbourEntityDimensions >& getNeighbourEntities() const; __cuda_callable__ inline bool isBoundaryEntity() const; __cuda_callable__ inline VertexType getCenter() const; __cuda_callable__ inline const RealType& getMeasure() const; __cuda_callable__ inline const GridType& getMesh() const; protected: const GridType& grid; IndexType entityIndex; CoordinatesType coordinates; EntityOrientationType orientation; EntityBasisType basis; NeighbourGridEntitiesStorageType neighbourEntitiesStorage; //__cuda_callable__ inline //TestGridEntity(); friend class tnlBoundaryGridEntityChecker< ThisType >; friend class tnlGridEntityCenterGetter< ThisType >; }; /**** Loading Loading @@ -290,129 +178,6 @@ class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Co friend class tnlGridEntityCenterGetter< ThisType >; }; /**** * Specialization for vertices */ template< int Dimensions, typename Real, typename Device, typename Index, typename Config > class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config > { public: typedef tnlGrid< Dimensions, Real, Device, Index > GridType; typedef GridType MeshType; typedef typename GridType::RealType RealType; typedef typename GridType::IndexType IndexType; typedef typename GridType::CoordinatesType CoordinatesType; typedef typename GridType::VertexType VertexType; typedef Config ConfigType; static const int meshDimensions = GridType::meshDimensions; static const int entityDimensions = 0; constexpr static int getDimensions() { return entityDimensions; }; constexpr static int getMeshDimensions() { return meshDimensions; }; typedef tnlStaticVector< meshDimensions, IndexType > EntityOrientationType; typedef tnlStaticVector< meshDimensions, IndexType > EntityBasisType; typedef TestGridEntity< GridType, entityDimensions, Config > ThisType; typedef tnlNeighbourGridEntitiesStorage< ThisType > NeighbourGridEntitiesStorageType; template< int NeighbourEntityDimensions = entityDimensions > using NeighbourEntities = tnlNeighbourGridEntityGetter< tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, entityDimensions, Config >, NeighbourEntityDimensions >; __cuda_callable__ inline TestGridEntity( const GridType& grid ); __cuda_callable__ inline TestGridEntity( const GridType& grid, const CoordinatesType& coordinates, const EntityOrientationType& orientation, const EntityBasisType& basis ); __cuda_callable__ inline const CoordinatesType& getCoordinates() const; __cuda_callable__ inline CoordinatesType& getCoordinates(); __cuda_callable__ inline void setCoordinates( const CoordinatesType& coordinates ); /*** * Call this method every time the coordinates are changed * to recompute the mesh entity index. The reason for this strange * mechanism is a performance. */ __cuda_callable__ inline //void setIndex( IndexType entityIndex ); void refresh(); __cuda_callable__ inline Index getIndex() const; __cuda_callable__ inline const EntityOrientationType getOrientation() const; __cuda_callable__ inline void setOrientation( const EntityOrientationType& orientation ){}; __cuda_callable__ inline const EntityBasisType getBasis() const; __cuda_callable__ inline void setBasis( const EntityBasisType& basis ){}; template< int NeighbourEntityDimensions = entityDimensions > __cuda_callable__ inline const NeighbourEntities< NeighbourEntityDimensions >& getNeighbourEntities() const; __cuda_callable__ inline bool isBoundaryEntity() const; __cuda_callable__ inline VertexType getCenter() const; __cuda_callable__ inline const RealType getMeasure() const; __cuda_callable__ inline VertexType getEntityProportions() const; __cuda_callable__ inline const GridType& getMesh() const; protected: const GridType& grid; IndexType entityIndex; CoordinatesType coordinates; EntityOrientationType orientation; EntityBasisType basis; NeighbourGridEntitiesStorageType neighbourEntitiesStorage; friend class tnlBoundaryGridEntityChecker< ThisType >; friend class tnlGridEntityCenterGetter< ThisType >; }; #include "TestGridEntity_impl.h" Loading
tests/benchmarks/heat-equation-benchmark/TestGridEntity_impl.h +0 −481 Original line number Diff line number Diff line Loading @@ -23,266 +23,6 @@ #include <mesh/grids/tnlGridEntityMeasureGetter.h> #include "TestGridEntity.h" /*template< int Dimensions, typename Real, typename Device, typename Index, typename Config, int EntityDimensions > __cuda_callable__ inline TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions >:: TestGridEntity() { }*/ template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: TestGridEntity( const tnlGrid< Dimensions, Real, Device, Index >& grid ) : grid( grid ), entityIndex( -1 ), coordinates( 0 ), orientation( 0 ), basis( 0 ), neighbourEntitiesStorage( *this ) { } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: TestGridEntity( const tnlGrid< Dimensions, Real, Device, Index >& grid, const CoordinatesType& coordinates, const EntityOrientationType& orientation, const EntityBasisType& basis ) : grid( grid ), entityIndex( -1 ), coordinates( coordinates ), orientation( orientation ), basis( basis ), neighbourEntitiesStorage( *this ) { } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::CoordinatesType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getCoordinates() const { return this->coordinates; } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::CoordinatesType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getCoordinates() { return this->coordinates; } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline void TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: setCoordinates( const CoordinatesType& coordinates ) { this->coordinates = coordinates; } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline void TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: refresh() { this->entityIndex = this->grid.getEntityIndex( *this ); this->neighbourEntitiesStorage.refresh( this->grid, this->entityIndex ); } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline Index TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getIndex() const { typedef tnlGrid< Dimensions, Real, Device, Index > GridType; typedef typename GridType::template MeshEntity< EntityDimensions > EntityType; tnlAssert( this->entityIndex >= 0 && this-> entityIndex < grid.template getEntitiesCount< EntityType >(), cerr << "this->entityIndex = " << this->entityIndex << " grid.template getEntitiesCount< EntityDimensions >() = " << grid.template getEntitiesCount< EntityType >() ); tnlAssert( this->entityIndex == grid.getEntityIndex( *this ), cerr << "this->entityIndex = " << this->entityIndex << " grid.getEntityIndex( *this ) = " << grid.getEntityIndex( *this ) ); return this->entityIndex; } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::EntityOrientationType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getOrientation() const { return this->orientation; } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline void TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: setOrientation( const EntityOrientationType& orientation ) { this->orientation = orientation; this->basis = EntityBasisType( 1 ) - tnlAbs( orientation ); } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::EntityBasisType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getBasis() const { return this->basis; } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline void TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: setBasis( const EntityBasisType& basis ) { this->basis = basis; this->orientation = EntityOrientationType( 1 ) - tnlAbs( basis ); } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > template< int NeighbourEntityDimensions > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::template NeighbourEntities< NeighbourEntityDimensions >& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getNeighbourEntities() const { return neighbourEntitiesStorage.template getNeighbourEntities< NeighbourEntityDimensions >(); } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline bool TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: isBoundaryEntity() const { return tnlBoundaryGridEntityChecker< ThisType >::isBoundaryEntity( *this ); } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline typename tnlGrid< Dimensions, Real, Device, Index >::VertexType TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getCenter() const { return tnlGridEntityCenterGetter< ThisType >::getEntityCenter( *this ); } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::RealType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getMeasure() const { return tnlGridEntityMeasureGetter< GridType, EntityDimensions >::getMeasure( this->getMesh(), *this ); } template< int Dimensions, typename Real, typename Device, typename Index, int EntityDimensions, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::GridType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >:: getMesh() const { return this->grid; } /**** * Specialization for cells */ Loading Loading @@ -512,224 +252,3 @@ getMesh() const return this->grid; } /**** * Specialization for vertices */ template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: TestGridEntity( const GridType& grid ) : grid( grid ), entityIndex( -1 ), coordinates( 0 ), orientation( 1 ), basis( 0 ), neighbourEntitiesStorage( *this ) { } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: TestGridEntity( const GridType& grid, const CoordinatesType& coordinates, const EntityOrientationType& orientation, const EntityBasisType& basis ) : grid( grid ), entityIndex( -1 ), coordinates( coordinates ), neighbourEntitiesStorage( *this ) { } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::CoordinatesType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getCoordinates() const { return this->coordinates; } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::CoordinatesType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getCoordinates() { return this->coordinates; } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline void TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: setCoordinates( const CoordinatesType& coordinates ) { this->coordinates = coordinates; } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline void TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: refresh() { this->entityIndex = this->grid.getEntityIndex( *this ); this->neighbourEntitiesStorage.refresh( this->grid, this->entityIndex ); } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline Index TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getIndex() const { typedef tnlGrid< Dimensions, Real, Device, Index > GridType; typedef typename GridType::Vertex Vertex; tnlAssert( this->entityIndex >= 0 && this-> entityIndex < grid.template getEntitiesCount< Vertex >(), cerr << "this->entityIndex = " << this->entityIndex << " grid.template getEntitiesCount< 0 >() = " << grid.template getEntitiesCount< Vertex >() ); tnlAssert( this->entityIndex == grid.getEntityIndex( *this ), cerr << "this->entityIndex = " << this->entityIndex << " grid.getEntityIndex( *this ) = " << grid.getEntityIndex( *this ) ); return this->entityIndex; } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::EntityOrientationType TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getOrientation() const { return EntityOrientationType( ( IndexType ) 0 ); } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::EntityBasisType TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getBasis() const { return EntityBasisType( ( IndexType ) 0 ); } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > template< int NeighbourEntityDimensions > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::template NeighbourEntities< NeighbourEntityDimensions >& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getNeighbourEntities() const { return neighbourEntitiesStorage.template getNeighbourEntities< NeighbourEntityDimensions >(); } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline bool TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: isBoundaryEntity() const { return tnlBoundaryGridEntityChecker< ThisType >::isBoundaryEntity( *this ); } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline typename tnlGrid< Dimensions, Real, Device, Index >::VertexType TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getCenter() const { return tnlGridEntityCenterGetter< ThisType >::getEntityCenter( *this ); } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::RealType TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getMeasure() const { return 0.0; } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::VertexType TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getEntityProportions() const { return VertexType( 0.0 ); } template< int Dimensions, typename Real, typename Device, typename Index, typename Config > __cuda_callable__ inline const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::GridType& TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >:: getMesh() const { return this->grid; }