Loading install +1 −1 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ TARGET=TNL INSTALL_PREFIX=${HOME}/local WITH_CUDA=yes WITH_CUDA=no TEMPLATE_EXPLICIT_INSTANTIATION=yes #VERBOSE="VERBOSE=1" Loading src/mesh/tnlTraverser_Grid2D_impl.h +6 −6 Original line number Diff line number Diff line Loading @@ -97,16 +97,16 @@ processBoundaryEntities( const GridType& grid, for( coordinates.x() = 0; coordinates.x() < xSize; coordinates.x() ++ ) { coordinates.y() = 0; EntitiesProcessor::processFace< 0, 1 >( grid, userData, grid.getFaceIndex< 0, 1 >( coordinates ), coordinates ); EntitiesProcessor::processFace( grid, userData, grid.getFaceIndex< 0, 1 >( coordinates ), coordinates ); coordinates.y() = ySize; EntitiesProcessor::processFace< 0, 1 >( grid, userData, grid.getFaceIndex< 0, 1 >( coordinates ), coordinates ); EntitiesProcessor::processFace( grid, userData, grid.getFaceIndex< 0, 1 >( coordinates ), coordinates ); } for( coordinates.y() = 0; coordinates.y() < ySize; coordinates.y() ++ ) { coordinates.x() = 0; EntitiesProcessor::processFace< 1, 0 >( grid, userData, grid.getFaceIndex< 1, 0 >( coordinates ), coordinates ); EntitiesProcessor::processFace( grid, userData, grid.getFaceIndex< 1, 0 >( coordinates ), coordinates ); coordinates.x() = ySize; EntitiesProcessor::processFace< 1, 0 >( grid, userData, grid.getFaceIndex< 1, 0 >( coordinates ), coordinates ); EntitiesProcessor::processFace( grid, userData, grid.getFaceIndex< 1, 0 >( coordinates ), coordinates ); } } Loading Loading @@ -134,13 +134,13 @@ processInteriorEntities( const GridType& grid, for( coordinates.x() = 1; coordinates.x() < xSize; coordinates.x() ++ ) { const IndexType index = grid.template getFaceIndex< 1, 0 >( coordinates ); EntitiesProcessor::processFace< 1, 0 >( grid, userData, index, coordinates ); EntitiesProcessor::processFace( grid, userData, index, coordinates ); } for( coordinates.y() = 1; coordinates.y() < ySize; coordinates.y() ++ ) for( coordinates.x() = 1; coordinates.x() < xSize - 1; coordinates.x() ++ ) { const IndexType index = grid.template getFaceIndex< 0, 1 >( coordinates ); EntitiesProcessor::processFace< 0, 1 >( grid, userData, index, coordinates ); EntitiesProcessor::processFace( grid, userData, index, coordinates ); } } Loading src/solvers/pde/tnlExplicitUpdater.h +38 −0 Original line number Diff line number Diff line Loading @@ -190,6 +190,23 @@ class tnlExplicitUpdater< tnlGrid< Dimensions, Real, Device, Index >, *userData.fu ); } #ifdef HAVE_CUDA __host__ __device__ #endif static void processFace( const MeshType& mesh, TraversalUserData& userData, const IndexType index, const CoordinatesType& coordinates ) { userData.boundaryConditions->setBoundaryConditions( *userData.time, mesh, index, coordinates, *userData.u, *userData.fu ); } }; class TraversalInteriorEntitiesProcessor Loading Loading @@ -220,6 +237,27 @@ class tnlExplicitUpdater< tnlGrid< Dimensions, Real, Device, Index >, *userData.time ); } #ifdef HAVE_CUDA __host__ __device__ #endif static void processFace( const MeshType& mesh, TraversalUserData& userData, const IndexType index, const CoordinatesType& coordinates ) { ( *userData.fu)[ index ] = userData.differentialOperator->getValue( mesh, index, coordinates, *userData.u, *userData.time ); typedef tnlFunctionAdapter< MeshType, RightHandSide > FunctionAdapter; ( * userData.fu )[ index ] += FunctionAdapter::getValue( mesh, *userData.rightHandSide, index, coordinates, *userData.time ); } }; }; Loading src/solvers/pde/tnlLinearSystemAssembler.h +48 −0 Original line number Diff line number Diff line Loading @@ -227,6 +227,26 @@ class tnlLinearSystemAssembler< tnlGrid< Dimensions, Real, Device, Index >, matrixRow ); } #ifdef HAVE_CUDA __host__ __device__ #endif static void processFace( const MeshType& mesh, TraversalUserData& userData, const IndexType index, const CoordinatesType& coordinates ) { //printf( "index = %d \n", index ); typename MatrixType::MatrixRow matrixRow = userData.matrix->getRow( index ); userData.boundaryConditions->updateLinearSystem( *userData.time, mesh, index, coordinates, *userData.u, *userData.b, matrixRow ); } }; class TraversalInteriorEntitiesProcessor Loading Loading @@ -262,6 +282,34 @@ class tnlLinearSystemAssembler< tnlGrid< Dimensions, Real, Device, Index >, userData.matrix->addElementFast( index, index, 1.0, 1.0 ); } #ifdef HAVE_CUDA __host__ __device__ #endif static void processFace( const MeshType& mesh, TraversalUserData& userData, const IndexType index, const CoordinatesType& coordinates ) { //printf( "index = %d \n", index ); typedef tnlFunctionAdapter< MeshType, RightHandSide > FunctionAdapter; ( *userData.b )[ index ] = ( *userData.u )[ index ] + ( *userData.tau ) * FunctionAdapter::getValue( mesh, *userData.rightHandSide, index, coordinates, *userData.time ); typename MatrixType::MatrixRow matrixRow = userData.matrix->getRow( index ); userData.differentialOperator->updateLinearSystem( *userData.time, *userData.tau, mesh, index, coordinates, *userData.u, *userData.b, matrixRow ); userData.matrix->addElementFast( index, index, 1.0, 1.0 ); } }; }; Loading Loading
install +1 −1 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ TARGET=TNL INSTALL_PREFIX=${HOME}/local WITH_CUDA=yes WITH_CUDA=no TEMPLATE_EXPLICIT_INSTANTIATION=yes #VERBOSE="VERBOSE=1" Loading
src/mesh/tnlTraverser_Grid2D_impl.h +6 −6 Original line number Diff line number Diff line Loading @@ -97,16 +97,16 @@ processBoundaryEntities( const GridType& grid, for( coordinates.x() = 0; coordinates.x() < xSize; coordinates.x() ++ ) { coordinates.y() = 0; EntitiesProcessor::processFace< 0, 1 >( grid, userData, grid.getFaceIndex< 0, 1 >( coordinates ), coordinates ); EntitiesProcessor::processFace( grid, userData, grid.getFaceIndex< 0, 1 >( coordinates ), coordinates ); coordinates.y() = ySize; EntitiesProcessor::processFace< 0, 1 >( grid, userData, grid.getFaceIndex< 0, 1 >( coordinates ), coordinates ); EntitiesProcessor::processFace( grid, userData, grid.getFaceIndex< 0, 1 >( coordinates ), coordinates ); } for( coordinates.y() = 0; coordinates.y() < ySize; coordinates.y() ++ ) { coordinates.x() = 0; EntitiesProcessor::processFace< 1, 0 >( grid, userData, grid.getFaceIndex< 1, 0 >( coordinates ), coordinates ); EntitiesProcessor::processFace( grid, userData, grid.getFaceIndex< 1, 0 >( coordinates ), coordinates ); coordinates.x() = ySize; EntitiesProcessor::processFace< 1, 0 >( grid, userData, grid.getFaceIndex< 1, 0 >( coordinates ), coordinates ); EntitiesProcessor::processFace( grid, userData, grid.getFaceIndex< 1, 0 >( coordinates ), coordinates ); } } Loading Loading @@ -134,13 +134,13 @@ processInteriorEntities( const GridType& grid, for( coordinates.x() = 1; coordinates.x() < xSize; coordinates.x() ++ ) { const IndexType index = grid.template getFaceIndex< 1, 0 >( coordinates ); EntitiesProcessor::processFace< 1, 0 >( grid, userData, index, coordinates ); EntitiesProcessor::processFace( grid, userData, index, coordinates ); } for( coordinates.y() = 1; coordinates.y() < ySize; coordinates.y() ++ ) for( coordinates.x() = 1; coordinates.x() < xSize - 1; coordinates.x() ++ ) { const IndexType index = grid.template getFaceIndex< 0, 1 >( coordinates ); EntitiesProcessor::processFace< 0, 1 >( grid, userData, index, coordinates ); EntitiesProcessor::processFace( grid, userData, index, coordinates ); } } Loading
src/solvers/pde/tnlExplicitUpdater.h +38 −0 Original line number Diff line number Diff line Loading @@ -190,6 +190,23 @@ class tnlExplicitUpdater< tnlGrid< Dimensions, Real, Device, Index >, *userData.fu ); } #ifdef HAVE_CUDA __host__ __device__ #endif static void processFace( const MeshType& mesh, TraversalUserData& userData, const IndexType index, const CoordinatesType& coordinates ) { userData.boundaryConditions->setBoundaryConditions( *userData.time, mesh, index, coordinates, *userData.u, *userData.fu ); } }; class TraversalInteriorEntitiesProcessor Loading Loading @@ -220,6 +237,27 @@ class tnlExplicitUpdater< tnlGrid< Dimensions, Real, Device, Index >, *userData.time ); } #ifdef HAVE_CUDA __host__ __device__ #endif static void processFace( const MeshType& mesh, TraversalUserData& userData, const IndexType index, const CoordinatesType& coordinates ) { ( *userData.fu)[ index ] = userData.differentialOperator->getValue( mesh, index, coordinates, *userData.u, *userData.time ); typedef tnlFunctionAdapter< MeshType, RightHandSide > FunctionAdapter; ( * userData.fu )[ index ] += FunctionAdapter::getValue( mesh, *userData.rightHandSide, index, coordinates, *userData.time ); } }; }; Loading
src/solvers/pde/tnlLinearSystemAssembler.h +48 −0 Original line number Diff line number Diff line Loading @@ -227,6 +227,26 @@ class tnlLinearSystemAssembler< tnlGrid< Dimensions, Real, Device, Index >, matrixRow ); } #ifdef HAVE_CUDA __host__ __device__ #endif static void processFace( const MeshType& mesh, TraversalUserData& userData, const IndexType index, const CoordinatesType& coordinates ) { //printf( "index = %d \n", index ); typename MatrixType::MatrixRow matrixRow = userData.matrix->getRow( index ); userData.boundaryConditions->updateLinearSystem( *userData.time, mesh, index, coordinates, *userData.u, *userData.b, matrixRow ); } }; class TraversalInteriorEntitiesProcessor Loading Loading @@ -262,6 +282,34 @@ class tnlLinearSystemAssembler< tnlGrid< Dimensions, Real, Device, Index >, userData.matrix->addElementFast( index, index, 1.0, 1.0 ); } #ifdef HAVE_CUDA __host__ __device__ #endif static void processFace( const MeshType& mesh, TraversalUserData& userData, const IndexType index, const CoordinatesType& coordinates ) { //printf( "index = %d \n", index ); typedef tnlFunctionAdapter< MeshType, RightHandSide > FunctionAdapter; ( *userData.b )[ index ] = ( *userData.u )[ index ] + ( *userData.tau ) * FunctionAdapter::getValue( mesh, *userData.rightHandSide, index, coordinates, *userData.time ); typename MatrixType::MatrixRow matrixRow = userData.matrix->getRow( index ); userData.differentialOperator->updateLinearSystem( *userData.time, *userData.tau, mesh, index, coordinates, *userData.u, *userData.b, matrixRow ); userData.matrix->addElementFast( index, index, 1.0, 1.0 ); } }; }; Loading