Newer
Older
/***************************************************************************
tnlTraversal_Grid2D_impl.h - description
-------------------
begin : Jul 29, 2014
copyright : (C) 2014 by Tomas Oberhuber
email : tomas.oberhuber@fjfi.cvut.cz
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef TNLTRAVERSAL_GRID2D_IMPL_H_
#define TNLTRAVERSAL_GRID2D_IMPL_H_
template< typename Real,
typename Index >
template< typename UserData,
typename BoundaryEntitiesProcessor,
typename InteriorEntitiesProcessor >
void
tnlTraversal< tnlGrid< 2, Real, tnlHost, Index >, 2 >::
processEntities( const GridType& grid,
{
/****
* Traversing cells
*/
CoordinatesType coordinates;
const IndexType& xSize = grid.getDimensions().x();
const IndexType& ySize = grid.getDimensions().y();
/****
* Boundary conditions
*/
for( coordinates.x() = 0; coordinates.x() < xSize; coordinates.x() ++ )
{
coordinates.y() = 0;
BoundaryEntitiesProcessor::processCell( grid, userData, grid.getCellIndex( coordinates ), coordinates );
BoundaryEntitiesProcessor::processCell( grid, userData, grid.getCellIndex( coordinates ), coordinates );
}
for( coordinates.y() = 1; coordinates.y() < ySize - 1; coordinates.y() ++ )
{
coordinates.x() = 0;
BoundaryEntitiesProcessor::processCell( grid, userData, grid.getCellIndex( coordinates ), coordinates );
BoundaryEntitiesProcessor::processCell( grid, userData, grid.getCellIndex( coordinates ), coordinates );
}
/****
* Interior cells
*/
#ifdef HAVE_OPENMP
//#pragma omp parallel for
#endif
for( coordinates.y() = 1; coordinates.y() < ySize - 1; coordinates.y() ++ )
for( coordinates.x() = 1; coordinates.x() < xSize - 1; coordinates.x() ++ )
{
const IndexType index = grid.getCellIndex( coordinates );
InteriorEntitiesProcessor::processCell( grid, userData, index, coordinates );
}
template< typename Real,
typename Index >
template< typename UserData,
typename BoundaryEntitiesProcessor,
typename InteriorEntitiesProcessor >
void
tnlTraversal< tnlGrid< 2, Real, tnlHost, Index >, 1 >::
processEntities( const GridType& grid,
{
/****
* Traversing faces
*/
}
template< typename Real,
typename Index >
template< typename UserData,
typename BoundaryEntitiesProcessor,
typename InteriorEntitiesProcessor >
void
tnlTraversal< tnlGrid< 2, Real, tnlHost, Index >, 0 >::
processEntities( const GridType& grid,
{
/****
* Traversing vertices
*/
}
template< typename Real,
typename Index >
template< typename UserData,
typename BoundaryEntitiesProcessor,
typename InteriorEntitiesProcessor >
void
tnlTraversal< tnlGrid< 2, Real, tnlCuda, Index >, 2 >::
processEntities( const GridType& grid,
UserData& userData ) const
{
/****
* Traversing cells
*/
}
template< typename Real,
typename Index >
template< typename UserData,
typename BoundaryEntitiesProcessor,
typename InteriorEntitiesProcessor >
void
tnlTraversal< tnlGrid< 2, Real, tnlCuda, Index >, 1 >::
processEntities( const GridType& grid,
UserData& userData ) const
{
/****
* Traversing faces
*/
}
template< typename Real,
typename Index >
template< typename UserData,
typename BoundaryEntitiesProcessor,
typename InteriorEntitiesProcessor >
void
tnlTraversal< tnlGrid< 2, Real, tnlCuda, Index >, 0 >::
processEntities( const GridType& grid,
UserData& userData ) const
*/
}
#endif /* TNLTRAVERSAL_GRID2D_IMPL_H_ */