Loading src/TNL/Meshes/GridDetails/GridTraverser.h +24 −20 Original line number Diff line number Diff line Loading @@ -50,8 +50,6 @@ class GridTraverser< Meshes::Grid< 1, Real, Devices::Host, Index > > const GridPointer& gridPointer, const CoordinatesType begin, const CoordinatesType end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userData ); }; Loading Loading @@ -81,8 +79,6 @@ class GridTraverser< Meshes::Grid< 1, Real, Devices::Cuda, Index > > const GridPointer& gridPointer, const CoordinatesType& begin, const CoordinatesType& end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userData ); }; Loading @@ -108,15 +104,17 @@ class GridTraverser< Meshes::Grid< 2, Real, Devices::Host, Index > > typename UserData, bool processOnlyBoundaryEntities, int XOrthogonalBoundary = 1, int YOrthogonalBoundary = 1 > int YOrthogonalBoundary = 1, typename... GridEntityParameters > static void processEntities( const GridPointer& gridPointer, const CoordinatesType begin, const CoordinatesType end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userData ); SharedPointer< UserData, DeviceType >& userData, // gridEntityParameters are passed to GridEntity's constructor // (i.e. orientation and basis for faces) const GridEntityParameters&... gridEntityParameters ); }; /**** Loading @@ -141,15 +139,17 @@ class GridTraverser< Meshes::Grid< 2, Real, Devices::Cuda, Index > > typename UserData, bool processOnlyBoundaryEntities, int XOrthogonalBoundary = 1, int YOrthogonalBoundary = 1 > int YOrthogonalBoundary = 1, typename... GridEntityParameters > static void processEntities( const GridPointer& gridPointer, const CoordinatesType& begin, const CoordinatesType& end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userData ); SharedPointer< UserData, DeviceType >& userData, // gridEntityParameters are passed to GridEntity's constructor // (i.e. orientation and basis for faces) const GridEntityParameters&... gridEntityParameters ); }; /**** Loading @@ -175,15 +175,17 @@ class GridTraverser< Meshes::Grid< 3, Real, Devices::Host, Index > > bool processOnlyBoundaryEntities, int XOrthogonalBoundary = 1, int YOrthogonalBoundary = 1, int ZOrthogonalBoundary = 1 > int ZOrthogonalBoundary = 1, typename... GridEntityParameters > static void processEntities( const GridPointer& gridPointer, const CoordinatesType begin, const CoordinatesType end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userData ); SharedPointer< UserData, DeviceType >& userData, // gridEntityParameters are passed to GridEntity's constructor // (i.e. orientation and basis for faces and edges) const GridEntityParameters&... gridEntityParameters ); }; /**** Loading @@ -209,15 +211,17 @@ class GridTraverser< Meshes::Grid< 3, Real, Devices::Cuda, Index > > bool processOnlyBoundaryEntities, int XOrthogonalBoundary = 1, int YOrthogonalBoundary = 1, int ZOrthogonalBoundary = 1 > int ZOrthogonalBoundary = 1, typename... GridEntityParameters > static void processEntities( const GridPointer& gridPointer, const CoordinatesType& begin, const CoordinatesType& end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userData ); SharedPointer< UserData, DeviceType >& userData, // gridEntityParameters are passed to GridEntity's constructor // (i.e. orientation and basis for faces and edges) const GridEntityParameters&... gridEntityParameters ); }; } // namespace Meshes Loading src/TNL/Meshes/GridDetails/GridTraverser_impl.h +62 −113 Original line number Diff line number Diff line Loading @@ -10,32 +10,9 @@ #pragma once #include <TNL/UniquePointer.h> namespace TNL { namespace Meshes { template< typename CoordinatesType > struct TraverserKernelData { CoordinatesType begin; CoordinatesType end; CoordinatesType entityOrientation; CoordinatesType entityBasis; TraverserKernelData( CoordinatesType begin, CoordinatesType end, CoordinatesType entityOrientation, CoordinatesType entityBasis ) : begin( begin ), end( end ), entityOrientation( entityOrientation ), entityBasis( entityBasis ) {} }; /**** * 1D traverser, host */ Loading @@ -52,18 +29,12 @@ processEntities( const GridPointer& gridPointer, const CoordinatesType begin, const CoordinatesType end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userDataPointer ) { GridEntity entity( *gridPointer ); entity.setOrientation( entityOrientation ); entity.setBasis( entityBasis ); if( processOnlyBoundaryEntities ) { GridEntity entity( *gridPointer ); entity.setOrientation( entityOrientation ); entity.setBasis( entityBasis ); entity.getCoordinates() = begin; entity.refresh(); Loading @@ -88,8 +59,6 @@ processEntities( #endif { GridEntity entity( *gridPointer ); entity.setOrientation( entityOrientation ); entity.setBasis( entityBasis ); #ifdef HAVE_OPENMP #pragma omp for #endif Loading Loading @@ -117,7 +86,8 @@ __global__ void GridTraverser1D( const Meshes::Grid< 1, Real, Devices::Cuda, Index >* grid, UserData* userData, const TraverserKernelData< typename GridEntity::CoordinatesType >* kernelData, const typename GridEntity::CoordinatesType begin, const typename GridEntity::CoordinatesType end, const Index gridIdx ) { typedef Real RealType; Loading @@ -125,10 +95,10 @@ GridTraverser1D( typedef Meshes::Grid< 1, Real, Devices::Cuda, Index > GridType; typename GridType::CoordinatesType coordinates; coordinates.x() = kernelData->begin.x() + ( gridIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x; if( coordinates.x() <= kernelData->end.x() ) coordinates.x() = begin.x() + ( gridIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x; if( coordinates <= end ) { GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis ); GridEntity entity( *grid, coordinates ); entity.refresh(); EntitiesProcessor::processEntity( entity.getMesh(), *userData, entity ); } Loading @@ -143,7 +113,8 @@ __global__ void GridBoundaryTraverser1D( const Meshes::Grid< 1, Real, Devices::Cuda, Index >* grid, UserData* userData, const TraverserKernelData< typename GridEntity::CoordinatesType >* kernelData ) const typename GridEntity::CoordinatesType begin, const typename GridEntity::CoordinatesType end ) { typedef Real RealType; typedef Index IndexType; Loading @@ -152,15 +123,15 @@ GridBoundaryTraverser1D( if( threadIdx.x == 0 ) { coordinates.x() = kernelData->begin.x(); GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis ); coordinates.x() = begin.x(); GridEntity entity( *grid, coordinates ); entity.refresh(); EntitiesProcessor::processEntity( entity.getMesh(), *userData, entity ); } if( threadIdx.x == 1 ) { coordinates.x() = kernelData->end.x(); GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis ); coordinates.x() = end.x(); GridEntity entity( *grid, coordinates ); entity.refresh(); EntitiesProcessor::processEntity( entity.getMesh(), *userData, entity ); } Loading @@ -181,14 +152,9 @@ processEntities( const GridPointer& gridPointer, const CoordinatesType& begin, const CoordinatesType& end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userDataPointer ) { #ifdef HAVE_CUDA UniquePointer< TraverserKernelData< CoordinatesType >, Devices::Cuda > kernelData( begin, end, entityOrientation, entityBasis ); Devices::Cuda::synchronizeDevice(); if( processOnlyBoundaryEntities ) { Loading @@ -198,7 +164,8 @@ processEntities( <<< cudaBlocks, cudaBlockSize >>> ( &gridPointer.template getData< Devices::Cuda >(), &userDataPointer.template modifyData< Devices::Cuda >(), &kernelData.template getData< Devices::Cuda >() ); begin, end ); } else { Loading @@ -212,7 +179,8 @@ processEntities( <<< cudaBlocks, cudaBlockSize >>> ( &gridPointer.template getData< Devices::Cuda >(), &userDataPointer.template modifyData< Devices::Cuda >(), &kernelData.template getData< Devices::Cuda >(), begin, end, gridXIdx ); } cudaThreadSynchronize(); Loading @@ -232,22 +200,20 @@ template< typename Real, typename UserData, bool processOnlyBoundaryEntities, int XOrthogonalBoundary, int YOrthogonalBoundary > int YOrthogonalBoundary, typename... GridEntityParameters > void GridTraverser< Meshes::Grid< 2, Real, Devices::Host, Index > >:: processEntities( const GridPointer& gridPointer, const CoordinatesType begin, const CoordinatesType end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userDataPointer ) SharedPointer< UserData, DeviceType >& userDataPointer, const GridEntityParameters&... gridEntityParameters ) { if( processOnlyBoundaryEntities ) { GridEntity entity( *gridPointer ); entity.setOrientation( entityOrientation ); entity.setBasis( entityBasis ); GridEntity entity( *gridPointer, begin, gridEntityParameters... ); if( YOrthogonalBoundary ) for( entity.getCoordinates().x() = begin.x(); Loading Loading @@ -292,9 +258,7 @@ processEntities( #pragma omp parallel firstprivate( begin, end ) if( Devices::Host::isOMPEnabled() ) #endif { GridEntity entity( *gridPointer ); entity.setOrientation( entityOrientation ); entity.setBasis( entityBasis ); GridEntity entity( *gridPointer, begin, gridEntityParameters... ); #ifdef HAVE_OPENMP #pragma omp for #endif Loading @@ -319,33 +283,27 @@ template< typename Real, typename GridEntity, typename UserData, typename EntitiesProcessor, bool processOnlyBoundaryEntities > bool processOnlyBoundaryEntities, typename... GridEntityParameters > __global__ void GridTraverser2D( const Meshes::Grid< 2, Real, Devices::Cuda, Index >* grid, UserData* userData, //const TraverserKernelData< typename GridEntity::CoordinatesType >* kernelData, const typename GridEntity::CoordinatesType begin, const typename GridEntity::CoordinatesType end, const typename GridEntity::CoordinatesType entityOrientation, const typename GridEntity::CoordinatesType entityBasis, const Index gridXIdx, const Index gridYIdx ) const Index gridYIdx, const GridEntityParameters... gridEntityParameters ) { typedef Meshes::Grid< 2, Real, Devices::Cuda, Index > GridType; typename GridType::CoordinatesType coordinates; //coordinates.x() = kernelData->begin.x() + ( gridXIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x; //coordinates.y() = kernelData->begin.y() + ( gridYIdx * Devices::Cuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y; coordinates.x() = begin.x() + ( gridXIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x; coordinates.y() = begin.y() + ( gridYIdx * Devices::Cuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y; if( coordinates.x() <= end.x() && coordinates.y() <= end.y() ) if( coordinates <= end ) { GridEntity entity( *grid, coordinates, entityOrientation, entityBasis ); GridEntity entity( *grid, coordinates, gridEntityParameters... ); entity.refresh(); if( ! processOnlyBoundaryEntities || entity.isBoundaryEntity() ) { Loading @@ -366,21 +324,18 @@ template< typename Real, typename UserData, bool processOnlyBoundaryEntities, int XOrthogonalBoundary, int YOrthogonalBoundary > int YOrthogonalBoundary, typename... GridEntityParameters > void GridTraverser< Meshes::Grid< 2, Real, Devices::Cuda, Index > >:: processEntities( const GridPointer& gridPointer, const CoordinatesType& begin, const CoordinatesType& end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userDataPointer ) SharedPointer< UserData, DeviceType >& userDataPointer, const GridEntityParameters&... gridEntityParameters ) { #ifdef HAVE_CUDA //UniquePointer< TraverserKernelData< CoordinatesType >, Devices::Cuda > // kernelData( begin, end, entityOrientation, entityBasis ); dim3 cudaBlockSize( 16, 16 ); dim3 cudaBlocks; cudaBlocks.x = Devices::Cuda::getNumberOfBlocks( end.x() - begin.x() + 1, cudaBlockSize.x ); Loading @@ -391,14 +346,15 @@ processEntities( Devices::Cuda::synchronizeDevice(); for( IndexType gridYIdx = 0; gridYIdx < cudaYGrids; gridYIdx ++ ) for( IndexType gridXIdx = 0; gridXIdx < cudaXGrids; gridXIdx ++ ) GridTraverser2D< Real, Index, GridEntity, UserData, EntitiesProcessor, processOnlyBoundaryEntities > GridTraverser2D< Real, Index, GridEntity, UserData, EntitiesProcessor, processOnlyBoundaryEntities, GridEntityParameters... > <<< cudaBlocks, cudaBlockSize >>> ( &gridPointer.template getData< Devices::Cuda >(), &userDataPointer.template modifyData< Devices::Cuda >(), //&kernelData.template getData< Devices::Cuda >(), begin, end, entityOrientation, entityBasis, begin, end, gridXIdx, gridYIdx ); gridYIdx, gridEntityParameters... ); cudaThreadSynchronize(); checkCudaDevice; Loading @@ -417,22 +373,20 @@ template< typename Real, bool processOnlyBoundaryEntities, int XOrthogonalBoundary, int YOrthogonalBoundary, int ZOrthogonalBoundary > int ZOrthogonalBoundary, typename... GridEntityParameters > void GridTraverser< Meshes::Grid< 3, Real, Devices::Host, Index > >:: processEntities( const GridPointer& gridPointer, const CoordinatesType begin, const CoordinatesType end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userDataPointer ) SharedPointer< UserData, DeviceType >& userDataPointer, const GridEntityParameters&... gridEntityParameters ) { if( processOnlyBoundaryEntities ) { GridEntity entity( *gridPointer ); entity.setOrientation( entityOrientation ); entity.setBasis( entityBasis ); GridEntity entity( *gridPointer, begin, gridEntityParameters... ); if( ZOrthogonalBoundary ) for( entity.getCoordinates().y() = begin.y(); Loading Loading @@ -501,9 +455,7 @@ processEntities( #pragma omp parallel firstprivate( begin, end ) if( Devices::Host::isOMPEnabled() ) #endif { GridEntity entity( *gridPointer ); entity.setOrientation( entityOrientation ); entity.setBasis( entityBasis ); GridEntity entity( *gridPointer, begin, gridEntityParameters... ); #ifdef HAVE_OPENMP #pragma omp for #endif Loading @@ -530,30 +482,29 @@ template< typename Real, typename GridEntity, typename UserData, typename EntitiesProcessor, bool processOnlyBoundaryEntities > bool processOnlyBoundaryEntities, typename... GridEntityParameters > __global__ void GridTraverser3D( const Meshes::Grid< 3, Real, Devices::Cuda, Index >* grid, UserData* userData, const TraverserKernelData< typename GridEntity::CoordinatesType >* kernelData, const typename GridEntity::CoordinatesType begin, const typename GridEntity::CoordinatesType end, const Index gridXIdx, const Index gridYIdx, const Index gridZIdx ) const Index gridZIdx, const GridEntityParameters... gridEntityParameters ) { typedef Meshes::Grid< 3, Real, Devices::Cuda, Index > GridType; typename GridType::CoordinatesType coordinates; coordinates.x() = kernelData->begin.x() + ( gridXIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x; coordinates.y() = kernelData->begin.y() + ( gridYIdx * Devices::Cuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y; coordinates.z() = kernelData->begin.z() + ( gridZIdx * Devices::Cuda::getMaxGridSize() + blockIdx.z ) * blockDim.z + threadIdx.z; coordinates.x() = begin.x() + ( gridXIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x; coordinates.y() = begin.y() + ( gridYIdx * Devices::Cuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y; coordinates.z() = begin.z() + ( gridZIdx * Devices::Cuda::getMaxGridSize() + blockIdx.z ) * blockDim.z + threadIdx.z; if( coordinates.x() <= kernelData->end.x() && coordinates.y() <= kernelData->end.y() && coordinates.z() <= kernelData->end.z() ) if( coordinates <= end ) { GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis ); GridEntity entity( *grid, coordinates, gridEntityParameters... ); entity.refresh(); if( ! processOnlyBoundaryEntities || entity.isBoundaryEntity() ) { Loading @@ -575,21 +526,18 @@ template< typename Real, bool processOnlyBoundaryEntities, int XOrthogonalBoundary, int YOrthogonalBoundary, int ZOrthogonalBoundary > int ZOrthogonalBoundary, typename... GridEntityParameters > void GridTraverser< Meshes::Grid< 3, Real, Devices::Cuda, Index > >:: processEntities( const GridPointer& gridPointer, const CoordinatesType& begin, const CoordinatesType& end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userDataPointer ) SharedPointer< UserData, DeviceType >& userDataPointer, const GridEntityParameters&... gridEntityParameters ) { #ifdef HAVE_CUDA UniquePointer< TraverserKernelData< CoordinatesType >, Devices::Cuda > kernelData( begin, end, entityOrientation, entityBasis ); dim3 cudaBlockSize( 8, 8, 8 ); dim3 cudaBlocks; cudaBlocks.x = Devices::Cuda::getNumberOfBlocks( end.x() - begin.x() + 1, cudaBlockSize.x ); Loading @@ -603,14 +551,16 @@ processEntities( for( IndexType gridZIdx = 0; gridZIdx < cudaZGrids; gridZIdx ++ ) for( IndexType gridYIdx = 0; gridYIdx < cudaYGrids; gridYIdx ++ ) for( IndexType gridXIdx = 0; gridXIdx < cudaXGrids; gridXIdx ++ ) GridTraverser3D< Real, Index, GridEntity, UserData, EntitiesProcessor, processOnlyBoundaryEntities > GridTraverser3D< Real, Index, GridEntity, UserData, EntitiesProcessor, processOnlyBoundaryEntities, GridEntityParameters... > <<< cudaBlocks, cudaBlockSize >>> ( &gridPointer.template getData< Devices::Cuda >(), &userDataPointer.template modifyData< Devices::Cuda >(), &kernelData.template getData< Devices::Cuda >(), begin, end, gridXIdx, gridYIdx, gridZIdx ); gridZIdx, gridEntityParameters... ); cudaThreadSynchronize(); checkCudaDevice; Loading @@ -619,4 +569,3 @@ processEntities( } // namespace Meshes } // namespace TNL src/TNL/Meshes/GridDetails/Traverser_Grid1D_impl.h +0 −12 Original line number Diff line number Diff line Loading @@ -38,8 +38,6 @@ processBoundaryEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 0 ), gridPointer->getDimensions() - CoordinatesType( 1 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -63,8 +61,6 @@ processInteriorEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 1 ), gridPointer->getDimensions() - CoordinatesType( 2 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -89,8 +85,6 @@ processAllEntities( gridPointer, CoordinatesType( 0 ), gridPointer->getDimensions() - CoordinatesType( 1 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -117,8 +111,6 @@ processBoundaryEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 0 ), gridPointer->getDimensions(), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -142,8 +134,6 @@ processInteriorEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 1 ), gridPointer->getDimensions() - CoordinatesType( 1 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -168,8 +158,6 @@ processAllEntities( gridPointer, CoordinatesType( 0 ), gridPointer->getDimensions(), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading src/TNL/Meshes/GridDetails/Traverser_Grid2D_impl.h +18 −30 Original line number Diff line number Diff line Loading @@ -39,8 +39,6 @@ processBoundaryEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions() - CoordinatesType( 1, 1 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -64,8 +62,6 @@ processInteriorEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 1, 1 ), gridPointer->getDimensions() - CoordinatesType( 2, 2 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -89,8 +85,6 @@ processAllEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions() - CoordinatesType( 1, 1 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -113,21 +107,21 @@ processBoundaryEntities( const GridPointer& gridPointer, */ static_assert( GridEntity::entityDimensions == 1, "The entity has wrong dimensions." ); GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 1, 0 >( GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 1, 0, CoordinatesType, CoordinatesType >( gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions() - CoordinatesType( 0, 1 ), userDataPointer, CoordinatesType( 1, 0 ), CoordinatesType( 0, 1 ), userDataPointer ); CoordinatesType( 0, 1 ) ); GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 0, 1 >( GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 0, 1, CoordinatesType, CoordinatesType >( gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions() - CoordinatesType( 1, 0 ), userDataPointer, CoordinatesType( 0, 1 ), CoordinatesType( 1, 0 ), userDataPointer ); CoordinatesType( 1, 0 ) ); } template< typename Real, Loading @@ -146,21 +140,21 @@ processInteriorEntities( const GridPointer& gridPointer, */ static_assert( GridEntity::entityDimensions == 1, "The entity has wrong dimensions." ); GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >( GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, CoordinatesType, CoordinatesType >( gridPointer, CoordinatesType( 1, 0 ), gridPointer->getDimensions() - CoordinatesType( 1, 1 ), userDataPointer, CoordinatesType( 1, 0 ), CoordinatesType( 0, 1 ), userDataPointer ); CoordinatesType( 0, 1 ) ); GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >( GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, CoordinatesType, CoordinatesType >( gridPointer, CoordinatesType( 0, 1 ), gridPointer->getDimensions() - CoordinatesType( 1, 1 ), userDataPointer, CoordinatesType( 0, 1 ), CoordinatesType( 1, 0 ), userDataPointer ); CoordinatesType( 1, 0 ) ); } template< typename Real, Loading @@ -179,21 +173,21 @@ processAllEntities( const GridPointer& gridPointer, */ static_assert( GridEntity::entityDimensions == 1, "The entity has wrong dimensions." ); GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >( GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, CoordinatesType, CoordinatesType >( gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions() - CoordinatesType( 0, 1 ), userDataPointer, CoordinatesType( 1, 0 ), CoordinatesType( 0, 1 ), userDataPointer ); CoordinatesType( 0, 1 ) ); GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >( GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, CoordinatesType, CoordinatesType >( gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions() - CoordinatesType( 1, 0 ), userDataPointer, CoordinatesType( 0, 1 ), CoordinatesType( 1, 0 ), userDataPointer ); CoordinatesType( 1, 0 ) ); } template< typename Real, Loading @@ -216,8 +210,6 @@ processBoundaryEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions(), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -241,8 +233,6 @@ processInteriorEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 1, 1 ), gridPointer->getDimensions() - CoordinatesType( 1, 1 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -266,8 +256,6 @@ processAllEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions(), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading src/TNL/Meshes/GridDetails/Traverser_Grid3D_impl.h +54 −66 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
src/TNL/Meshes/GridDetails/GridTraverser.h +24 −20 Original line number Diff line number Diff line Loading @@ -50,8 +50,6 @@ class GridTraverser< Meshes::Grid< 1, Real, Devices::Host, Index > > const GridPointer& gridPointer, const CoordinatesType begin, const CoordinatesType end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userData ); }; Loading Loading @@ -81,8 +79,6 @@ class GridTraverser< Meshes::Grid< 1, Real, Devices::Cuda, Index > > const GridPointer& gridPointer, const CoordinatesType& begin, const CoordinatesType& end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userData ); }; Loading @@ -108,15 +104,17 @@ class GridTraverser< Meshes::Grid< 2, Real, Devices::Host, Index > > typename UserData, bool processOnlyBoundaryEntities, int XOrthogonalBoundary = 1, int YOrthogonalBoundary = 1 > int YOrthogonalBoundary = 1, typename... GridEntityParameters > static void processEntities( const GridPointer& gridPointer, const CoordinatesType begin, const CoordinatesType end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userData ); SharedPointer< UserData, DeviceType >& userData, // gridEntityParameters are passed to GridEntity's constructor // (i.e. orientation and basis for faces) const GridEntityParameters&... gridEntityParameters ); }; /**** Loading @@ -141,15 +139,17 @@ class GridTraverser< Meshes::Grid< 2, Real, Devices::Cuda, Index > > typename UserData, bool processOnlyBoundaryEntities, int XOrthogonalBoundary = 1, int YOrthogonalBoundary = 1 > int YOrthogonalBoundary = 1, typename... GridEntityParameters > static void processEntities( const GridPointer& gridPointer, const CoordinatesType& begin, const CoordinatesType& end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userData ); SharedPointer< UserData, DeviceType >& userData, // gridEntityParameters are passed to GridEntity's constructor // (i.e. orientation and basis for faces) const GridEntityParameters&... gridEntityParameters ); }; /**** Loading @@ -175,15 +175,17 @@ class GridTraverser< Meshes::Grid< 3, Real, Devices::Host, Index > > bool processOnlyBoundaryEntities, int XOrthogonalBoundary = 1, int YOrthogonalBoundary = 1, int ZOrthogonalBoundary = 1 > int ZOrthogonalBoundary = 1, typename... GridEntityParameters > static void processEntities( const GridPointer& gridPointer, const CoordinatesType begin, const CoordinatesType end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userData ); SharedPointer< UserData, DeviceType >& userData, // gridEntityParameters are passed to GridEntity's constructor // (i.e. orientation and basis for faces and edges) const GridEntityParameters&... gridEntityParameters ); }; /**** Loading @@ -209,15 +211,17 @@ class GridTraverser< Meshes::Grid< 3, Real, Devices::Cuda, Index > > bool processOnlyBoundaryEntities, int XOrthogonalBoundary = 1, int YOrthogonalBoundary = 1, int ZOrthogonalBoundary = 1 > int ZOrthogonalBoundary = 1, typename... GridEntityParameters > static void processEntities( const GridPointer& gridPointer, const CoordinatesType& begin, const CoordinatesType& end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userData ); SharedPointer< UserData, DeviceType >& userData, // gridEntityParameters are passed to GridEntity's constructor // (i.e. orientation and basis for faces and edges) const GridEntityParameters&... gridEntityParameters ); }; } // namespace Meshes Loading
src/TNL/Meshes/GridDetails/GridTraverser_impl.h +62 −113 Original line number Diff line number Diff line Loading @@ -10,32 +10,9 @@ #pragma once #include <TNL/UniquePointer.h> namespace TNL { namespace Meshes { template< typename CoordinatesType > struct TraverserKernelData { CoordinatesType begin; CoordinatesType end; CoordinatesType entityOrientation; CoordinatesType entityBasis; TraverserKernelData( CoordinatesType begin, CoordinatesType end, CoordinatesType entityOrientation, CoordinatesType entityBasis ) : begin( begin ), end( end ), entityOrientation( entityOrientation ), entityBasis( entityBasis ) {} }; /**** * 1D traverser, host */ Loading @@ -52,18 +29,12 @@ processEntities( const GridPointer& gridPointer, const CoordinatesType begin, const CoordinatesType end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userDataPointer ) { GridEntity entity( *gridPointer ); entity.setOrientation( entityOrientation ); entity.setBasis( entityBasis ); if( processOnlyBoundaryEntities ) { GridEntity entity( *gridPointer ); entity.setOrientation( entityOrientation ); entity.setBasis( entityBasis ); entity.getCoordinates() = begin; entity.refresh(); Loading @@ -88,8 +59,6 @@ processEntities( #endif { GridEntity entity( *gridPointer ); entity.setOrientation( entityOrientation ); entity.setBasis( entityBasis ); #ifdef HAVE_OPENMP #pragma omp for #endif Loading Loading @@ -117,7 +86,8 @@ __global__ void GridTraverser1D( const Meshes::Grid< 1, Real, Devices::Cuda, Index >* grid, UserData* userData, const TraverserKernelData< typename GridEntity::CoordinatesType >* kernelData, const typename GridEntity::CoordinatesType begin, const typename GridEntity::CoordinatesType end, const Index gridIdx ) { typedef Real RealType; Loading @@ -125,10 +95,10 @@ GridTraverser1D( typedef Meshes::Grid< 1, Real, Devices::Cuda, Index > GridType; typename GridType::CoordinatesType coordinates; coordinates.x() = kernelData->begin.x() + ( gridIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x; if( coordinates.x() <= kernelData->end.x() ) coordinates.x() = begin.x() + ( gridIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x; if( coordinates <= end ) { GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis ); GridEntity entity( *grid, coordinates ); entity.refresh(); EntitiesProcessor::processEntity( entity.getMesh(), *userData, entity ); } Loading @@ -143,7 +113,8 @@ __global__ void GridBoundaryTraverser1D( const Meshes::Grid< 1, Real, Devices::Cuda, Index >* grid, UserData* userData, const TraverserKernelData< typename GridEntity::CoordinatesType >* kernelData ) const typename GridEntity::CoordinatesType begin, const typename GridEntity::CoordinatesType end ) { typedef Real RealType; typedef Index IndexType; Loading @@ -152,15 +123,15 @@ GridBoundaryTraverser1D( if( threadIdx.x == 0 ) { coordinates.x() = kernelData->begin.x(); GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis ); coordinates.x() = begin.x(); GridEntity entity( *grid, coordinates ); entity.refresh(); EntitiesProcessor::processEntity( entity.getMesh(), *userData, entity ); } if( threadIdx.x == 1 ) { coordinates.x() = kernelData->end.x(); GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis ); coordinates.x() = end.x(); GridEntity entity( *grid, coordinates ); entity.refresh(); EntitiesProcessor::processEntity( entity.getMesh(), *userData, entity ); } Loading @@ -181,14 +152,9 @@ processEntities( const GridPointer& gridPointer, const CoordinatesType& begin, const CoordinatesType& end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userDataPointer ) { #ifdef HAVE_CUDA UniquePointer< TraverserKernelData< CoordinatesType >, Devices::Cuda > kernelData( begin, end, entityOrientation, entityBasis ); Devices::Cuda::synchronizeDevice(); if( processOnlyBoundaryEntities ) { Loading @@ -198,7 +164,8 @@ processEntities( <<< cudaBlocks, cudaBlockSize >>> ( &gridPointer.template getData< Devices::Cuda >(), &userDataPointer.template modifyData< Devices::Cuda >(), &kernelData.template getData< Devices::Cuda >() ); begin, end ); } else { Loading @@ -212,7 +179,8 @@ processEntities( <<< cudaBlocks, cudaBlockSize >>> ( &gridPointer.template getData< Devices::Cuda >(), &userDataPointer.template modifyData< Devices::Cuda >(), &kernelData.template getData< Devices::Cuda >(), begin, end, gridXIdx ); } cudaThreadSynchronize(); Loading @@ -232,22 +200,20 @@ template< typename Real, typename UserData, bool processOnlyBoundaryEntities, int XOrthogonalBoundary, int YOrthogonalBoundary > int YOrthogonalBoundary, typename... GridEntityParameters > void GridTraverser< Meshes::Grid< 2, Real, Devices::Host, Index > >:: processEntities( const GridPointer& gridPointer, const CoordinatesType begin, const CoordinatesType end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userDataPointer ) SharedPointer< UserData, DeviceType >& userDataPointer, const GridEntityParameters&... gridEntityParameters ) { if( processOnlyBoundaryEntities ) { GridEntity entity( *gridPointer ); entity.setOrientation( entityOrientation ); entity.setBasis( entityBasis ); GridEntity entity( *gridPointer, begin, gridEntityParameters... ); if( YOrthogonalBoundary ) for( entity.getCoordinates().x() = begin.x(); Loading Loading @@ -292,9 +258,7 @@ processEntities( #pragma omp parallel firstprivate( begin, end ) if( Devices::Host::isOMPEnabled() ) #endif { GridEntity entity( *gridPointer ); entity.setOrientation( entityOrientation ); entity.setBasis( entityBasis ); GridEntity entity( *gridPointer, begin, gridEntityParameters... ); #ifdef HAVE_OPENMP #pragma omp for #endif Loading @@ -319,33 +283,27 @@ template< typename Real, typename GridEntity, typename UserData, typename EntitiesProcessor, bool processOnlyBoundaryEntities > bool processOnlyBoundaryEntities, typename... GridEntityParameters > __global__ void GridTraverser2D( const Meshes::Grid< 2, Real, Devices::Cuda, Index >* grid, UserData* userData, //const TraverserKernelData< typename GridEntity::CoordinatesType >* kernelData, const typename GridEntity::CoordinatesType begin, const typename GridEntity::CoordinatesType end, const typename GridEntity::CoordinatesType entityOrientation, const typename GridEntity::CoordinatesType entityBasis, const Index gridXIdx, const Index gridYIdx ) const Index gridYIdx, const GridEntityParameters... gridEntityParameters ) { typedef Meshes::Grid< 2, Real, Devices::Cuda, Index > GridType; typename GridType::CoordinatesType coordinates; //coordinates.x() = kernelData->begin.x() + ( gridXIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x; //coordinates.y() = kernelData->begin.y() + ( gridYIdx * Devices::Cuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y; coordinates.x() = begin.x() + ( gridXIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x; coordinates.y() = begin.y() + ( gridYIdx * Devices::Cuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y; if( coordinates.x() <= end.x() && coordinates.y() <= end.y() ) if( coordinates <= end ) { GridEntity entity( *grid, coordinates, entityOrientation, entityBasis ); GridEntity entity( *grid, coordinates, gridEntityParameters... ); entity.refresh(); if( ! processOnlyBoundaryEntities || entity.isBoundaryEntity() ) { Loading @@ -366,21 +324,18 @@ template< typename Real, typename UserData, bool processOnlyBoundaryEntities, int XOrthogonalBoundary, int YOrthogonalBoundary > int YOrthogonalBoundary, typename... GridEntityParameters > void GridTraverser< Meshes::Grid< 2, Real, Devices::Cuda, Index > >:: processEntities( const GridPointer& gridPointer, const CoordinatesType& begin, const CoordinatesType& end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userDataPointer ) SharedPointer< UserData, DeviceType >& userDataPointer, const GridEntityParameters&... gridEntityParameters ) { #ifdef HAVE_CUDA //UniquePointer< TraverserKernelData< CoordinatesType >, Devices::Cuda > // kernelData( begin, end, entityOrientation, entityBasis ); dim3 cudaBlockSize( 16, 16 ); dim3 cudaBlocks; cudaBlocks.x = Devices::Cuda::getNumberOfBlocks( end.x() - begin.x() + 1, cudaBlockSize.x ); Loading @@ -391,14 +346,15 @@ processEntities( Devices::Cuda::synchronizeDevice(); for( IndexType gridYIdx = 0; gridYIdx < cudaYGrids; gridYIdx ++ ) for( IndexType gridXIdx = 0; gridXIdx < cudaXGrids; gridXIdx ++ ) GridTraverser2D< Real, Index, GridEntity, UserData, EntitiesProcessor, processOnlyBoundaryEntities > GridTraverser2D< Real, Index, GridEntity, UserData, EntitiesProcessor, processOnlyBoundaryEntities, GridEntityParameters... > <<< cudaBlocks, cudaBlockSize >>> ( &gridPointer.template getData< Devices::Cuda >(), &userDataPointer.template modifyData< Devices::Cuda >(), //&kernelData.template getData< Devices::Cuda >(), begin, end, entityOrientation, entityBasis, begin, end, gridXIdx, gridYIdx ); gridYIdx, gridEntityParameters... ); cudaThreadSynchronize(); checkCudaDevice; Loading @@ -417,22 +373,20 @@ template< typename Real, bool processOnlyBoundaryEntities, int XOrthogonalBoundary, int YOrthogonalBoundary, int ZOrthogonalBoundary > int ZOrthogonalBoundary, typename... GridEntityParameters > void GridTraverser< Meshes::Grid< 3, Real, Devices::Host, Index > >:: processEntities( const GridPointer& gridPointer, const CoordinatesType begin, const CoordinatesType end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userDataPointer ) SharedPointer< UserData, DeviceType >& userDataPointer, const GridEntityParameters&... gridEntityParameters ) { if( processOnlyBoundaryEntities ) { GridEntity entity( *gridPointer ); entity.setOrientation( entityOrientation ); entity.setBasis( entityBasis ); GridEntity entity( *gridPointer, begin, gridEntityParameters... ); if( ZOrthogonalBoundary ) for( entity.getCoordinates().y() = begin.y(); Loading Loading @@ -501,9 +455,7 @@ processEntities( #pragma omp parallel firstprivate( begin, end ) if( Devices::Host::isOMPEnabled() ) #endif { GridEntity entity( *gridPointer ); entity.setOrientation( entityOrientation ); entity.setBasis( entityBasis ); GridEntity entity( *gridPointer, begin, gridEntityParameters... ); #ifdef HAVE_OPENMP #pragma omp for #endif Loading @@ -530,30 +482,29 @@ template< typename Real, typename GridEntity, typename UserData, typename EntitiesProcessor, bool processOnlyBoundaryEntities > bool processOnlyBoundaryEntities, typename... GridEntityParameters > __global__ void GridTraverser3D( const Meshes::Grid< 3, Real, Devices::Cuda, Index >* grid, UserData* userData, const TraverserKernelData< typename GridEntity::CoordinatesType >* kernelData, const typename GridEntity::CoordinatesType begin, const typename GridEntity::CoordinatesType end, const Index gridXIdx, const Index gridYIdx, const Index gridZIdx ) const Index gridZIdx, const GridEntityParameters... gridEntityParameters ) { typedef Meshes::Grid< 3, Real, Devices::Cuda, Index > GridType; typename GridType::CoordinatesType coordinates; coordinates.x() = kernelData->begin.x() + ( gridXIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x; coordinates.y() = kernelData->begin.y() + ( gridYIdx * Devices::Cuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y; coordinates.z() = kernelData->begin.z() + ( gridZIdx * Devices::Cuda::getMaxGridSize() + blockIdx.z ) * blockDim.z + threadIdx.z; coordinates.x() = begin.x() + ( gridXIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x; coordinates.y() = begin.y() + ( gridYIdx * Devices::Cuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y; coordinates.z() = begin.z() + ( gridZIdx * Devices::Cuda::getMaxGridSize() + blockIdx.z ) * blockDim.z + threadIdx.z; if( coordinates.x() <= kernelData->end.x() && coordinates.y() <= kernelData->end.y() && coordinates.z() <= kernelData->end.z() ) if( coordinates <= end ) { GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis ); GridEntity entity( *grid, coordinates, gridEntityParameters... ); entity.refresh(); if( ! processOnlyBoundaryEntities || entity.isBoundaryEntity() ) { Loading @@ -575,21 +526,18 @@ template< typename Real, bool processOnlyBoundaryEntities, int XOrthogonalBoundary, int YOrthogonalBoundary, int ZOrthogonalBoundary > int ZOrthogonalBoundary, typename... GridEntityParameters > void GridTraverser< Meshes::Grid< 3, Real, Devices::Cuda, Index > >:: processEntities( const GridPointer& gridPointer, const CoordinatesType& begin, const CoordinatesType& end, const CoordinatesType& entityOrientation, const CoordinatesType& entityBasis, SharedPointer< UserData, DeviceType >& userDataPointer ) SharedPointer< UserData, DeviceType >& userDataPointer, const GridEntityParameters&... gridEntityParameters ) { #ifdef HAVE_CUDA UniquePointer< TraverserKernelData< CoordinatesType >, Devices::Cuda > kernelData( begin, end, entityOrientation, entityBasis ); dim3 cudaBlockSize( 8, 8, 8 ); dim3 cudaBlocks; cudaBlocks.x = Devices::Cuda::getNumberOfBlocks( end.x() - begin.x() + 1, cudaBlockSize.x ); Loading @@ -603,14 +551,16 @@ processEntities( for( IndexType gridZIdx = 0; gridZIdx < cudaZGrids; gridZIdx ++ ) for( IndexType gridYIdx = 0; gridYIdx < cudaYGrids; gridYIdx ++ ) for( IndexType gridXIdx = 0; gridXIdx < cudaXGrids; gridXIdx ++ ) GridTraverser3D< Real, Index, GridEntity, UserData, EntitiesProcessor, processOnlyBoundaryEntities > GridTraverser3D< Real, Index, GridEntity, UserData, EntitiesProcessor, processOnlyBoundaryEntities, GridEntityParameters... > <<< cudaBlocks, cudaBlockSize >>> ( &gridPointer.template getData< Devices::Cuda >(), &userDataPointer.template modifyData< Devices::Cuda >(), &kernelData.template getData< Devices::Cuda >(), begin, end, gridXIdx, gridYIdx, gridZIdx ); gridZIdx, gridEntityParameters... ); cudaThreadSynchronize(); checkCudaDevice; Loading @@ -619,4 +569,3 @@ processEntities( } // namespace Meshes } // namespace TNL
src/TNL/Meshes/GridDetails/Traverser_Grid1D_impl.h +0 −12 Original line number Diff line number Diff line Loading @@ -38,8 +38,6 @@ processBoundaryEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 0 ), gridPointer->getDimensions() - CoordinatesType( 1 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -63,8 +61,6 @@ processInteriorEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 1 ), gridPointer->getDimensions() - CoordinatesType( 2 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -89,8 +85,6 @@ processAllEntities( gridPointer, CoordinatesType( 0 ), gridPointer->getDimensions() - CoordinatesType( 1 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -117,8 +111,6 @@ processBoundaryEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 0 ), gridPointer->getDimensions(), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -142,8 +134,6 @@ processInteriorEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 1 ), gridPointer->getDimensions() - CoordinatesType( 1 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -168,8 +158,6 @@ processAllEntities( gridPointer, CoordinatesType( 0 ), gridPointer->getDimensions(), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading
src/TNL/Meshes/GridDetails/Traverser_Grid2D_impl.h +18 −30 Original line number Diff line number Diff line Loading @@ -39,8 +39,6 @@ processBoundaryEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions() - CoordinatesType( 1, 1 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -64,8 +62,6 @@ processInteriorEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 1, 1 ), gridPointer->getDimensions() - CoordinatesType( 2, 2 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -89,8 +85,6 @@ processAllEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions() - CoordinatesType( 1, 1 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -113,21 +107,21 @@ processBoundaryEntities( const GridPointer& gridPointer, */ static_assert( GridEntity::entityDimensions == 1, "The entity has wrong dimensions." ); GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 1, 0 >( GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 1, 0, CoordinatesType, CoordinatesType >( gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions() - CoordinatesType( 0, 1 ), userDataPointer, CoordinatesType( 1, 0 ), CoordinatesType( 0, 1 ), userDataPointer ); CoordinatesType( 0, 1 ) ); GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 0, 1 >( GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, true, 0, 1, CoordinatesType, CoordinatesType >( gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions() - CoordinatesType( 1, 0 ), userDataPointer, CoordinatesType( 0, 1 ), CoordinatesType( 1, 0 ), userDataPointer ); CoordinatesType( 1, 0 ) ); } template< typename Real, Loading @@ -146,21 +140,21 @@ processInteriorEntities( const GridPointer& gridPointer, */ static_assert( GridEntity::entityDimensions == 1, "The entity has wrong dimensions." ); GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >( GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, CoordinatesType, CoordinatesType >( gridPointer, CoordinatesType( 1, 0 ), gridPointer->getDimensions() - CoordinatesType( 1, 1 ), userDataPointer, CoordinatesType( 1, 0 ), CoordinatesType( 0, 1 ), userDataPointer ); CoordinatesType( 0, 1 ) ); GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >( GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, CoordinatesType, CoordinatesType >( gridPointer, CoordinatesType( 0, 1 ), gridPointer->getDimensions() - CoordinatesType( 1, 1 ), userDataPointer, CoordinatesType( 0, 1 ), CoordinatesType( 1, 0 ), userDataPointer ); CoordinatesType( 1, 0 ) ); } template< typename Real, Loading @@ -179,21 +173,21 @@ processAllEntities( const GridPointer& gridPointer, */ static_assert( GridEntity::entityDimensions == 1, "The entity has wrong dimensions." ); GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >( GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, CoordinatesType, CoordinatesType >( gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions() - CoordinatesType( 0, 1 ), userDataPointer, CoordinatesType( 1, 0 ), CoordinatesType( 0, 1 ), userDataPointer ); CoordinatesType( 0, 1 ) ); GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false >( GridTraverser< GridType >::template processEntities< GridEntity, EntitiesProcessor, UserData, false, CoordinatesType, CoordinatesType >( gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions() - CoordinatesType( 1, 0 ), userDataPointer, CoordinatesType( 0, 1 ), CoordinatesType( 1, 0 ), userDataPointer ); CoordinatesType( 1, 0 ) ); } template< typename Real, Loading @@ -216,8 +210,6 @@ processBoundaryEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions(), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -241,8 +233,6 @@ processInteriorEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 1, 1 ), gridPointer->getDimensions() - CoordinatesType( 1, 1 ), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading @@ -266,8 +256,6 @@ processAllEntities( const GridPointer& gridPointer, gridPointer, CoordinatesType( 0, 0 ), gridPointer->getDimensions(), CoordinatesType(), CoordinatesType(), userDataPointer ); } Loading
src/TNL/Meshes/GridDetails/Traverser_Grid3D_impl.h +54 −66 File changed.Preview size limit exceeded, changes collapsed. Show changes