Newer
Older
/***************************************************************************
-------------------
begin : Nov 20, 2015
copyright : (C) 2015 by Tomas Oberhuber
email : tomas.oberhuber@fjfi.cvut.cz
***************************************************************************/
/* See Copyright Notice in tnl/Copyright */
#include <TNL/Meshes/GridDetails/BoundaryGridEntityChecker.h>
#include <TNL/Meshes/GridDetails/GridEntityCenterGetter.h>
#include <TNL/Meshes/GridDetails/GridEntityMeasureGetter.h>
#include <TNL/Meshes/GridEntity.h>
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions >::
GridEntity()
template< int Dimensions,
typename Real,
typename Device,
typename Index,
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
GridEntity( const Meshes::Grid< Dimensions, Real, Device, Index >& grid )
basis( 0 ),
neighbourEntitiesStorage( *this )
template< int Dimensions,
typename Real,
typename Device,
typename Index,
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
GridEntity( const Meshes::Grid< Dimensions, Real, Device, Index >& grid,
const CoordinatesType& coordinates,
const EntityOrientationType& orientation,
const EntityBasisType& basis )
basis( basis ),
neighbourEntitiesStorage( *this )
template< int Dimensions,
typename Real,
typename Device,
typename Index,
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::CoordinatesType&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
getCoordinates() const
{
return this->coordinates;
}
template< int Dimensions,
typename Real,
typename Device,
typename Index,
typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::CoordinatesType&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
getCoordinates()
{
return this->coordinates;
}
template< int Dimensions,
typename Real,
typename Device,
typename Index,
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
setCoordinates( const CoordinatesType& coordinates )
{
this->coordinates = coordinates;
}
template< int Dimensions,
typename Real,
typename Device,
typename Index,
__cuda_callable__ inline
void
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
this->entityIndex = this->grid.getEntityIndex( *this );
this->neighbourEntitiesStorage.refresh( this->grid, this->entityIndex );
}
template< int Dimensions,
typename Real,
typename Device,
typename Index,
__cuda_callable__ inline
Index
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
typedef Meshes::Grid< Dimensions, Real, Device, Index > GridType;
typedef typename GridType::template MeshEntity< EntityDimensions > EntityType;
Assert( this->entityIndex >= 0 &&
this-> entityIndex < grid.template getEntitiesCount< EntityType >(),
std::cerr << "this->entityIndex = " << this->entityIndex
<< " grid.template getEntitiesCount< EntityDimensions >() = " << grid.template getEntitiesCount< EntityType >() );
Assert( this->entityIndex == grid.getEntityIndex( *this ),
std::cerr << "this->entityIndex = " << this->entityIndex
<< " grid.getEntityIndex( *this ) = " << grid.getEntityIndex( *this ) );
return this->entityIndex;
}
template< int Dimensions,
typename Real,
typename Device,
typename Index,
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::EntityOrientationType&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
getOrientation() const
{
return this->orientation;
}
template< int Dimensions,
typename Real,
typename Device,
typename Index,
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
setOrientation( const EntityOrientationType& orientation )
{
this->orientation = orientation;
this->basis = EntityBasisType( 1 ) - abs( orientation );
template< int Dimensions,
typename Real,
typename Device,
typename Index,
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::EntityBasisType&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
getBasis() const
{
return this->basis;
}
template< int Dimensions,
typename Real,
typename Device,
typename Index,
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
setBasis( const EntityBasisType& basis )
{
this->basis = basis;
this->orientation = EntityOrientationType( 1 ) - abs( basis );
template< int Dimensions,
typename Real,
typename Device,
typename Index,
template< int NeighbourEntityDimensions >
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::template NeighbourEntities< NeighbourEntityDimensions >&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
return neighbourEntitiesStorage.template getNeighbourEntities< NeighbourEntityDimensions >();
template< int Dimensions,
typename Real,
typename Device,
typename Index,
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
return BoundaryGridEntityChecker< ThisType >::isBoundaryEntity( *this );
}
template< int Dimensions,
typename Real,
typename Device,
typename Index,
typename Meshes::Grid< Dimensions, Real, Device, Index >::VertexType
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
return GridEntityCenterGetter< ThisType >::getEntityCenter( *this );
template< int Dimensions,
typename Real,
typename Device,
typename Index,
int EntityDimensions,
typename Config >
__cuda_callable__ inline
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::RealType&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
getMeasure() const
{
return GridEntityMeasureGetter< GridType, EntityDimensions >::getMeasure( this->getMesh(), *this );
template< int Dimensions,
typename Real,
typename Device,
typename Index,
int EntityDimensions,
typename Config >
__cuda_callable__ inline
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::GridType&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
typename Real,
typename Device,
typename Index >
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions >::
GridEntity()
template< int Dimensions,
typename Real,
typename Device,
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
GridEntity( const GridType& grid )
entityIndex( -1 ),
neighbourEntitiesStorage( *this )
this->coordinates = CoordinatesType( ( Index ) 0 );
this->orientation = EntityOrientationType( ( Index ) 0 );
this->basis = EntityBasisType( ( Index ) 1 );
}
template< int Dimensions,
typename Real,
typename Device,
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
GridEntity( const GridType& grid,
const CoordinatesType& coordinates,
const EntityOrientationType& orientation,
const EntityBasisType& basis )
coordinates( coordinates ),
neighbourEntitiesStorage( *this )
{
this->orientation = EntityOrientationType( ( Index ) 0 );
this->basis = EntityBasisType( ( Index ) 1 );
}
template< int Dimensions,
typename Real,
typename Device,
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::CoordinatesType&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
getCoordinates() const
{
return this->coordinates;
}
template< int Dimensions,
typename Real,
typename Device,
typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::CoordinatesType&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
getCoordinates()
{
return this->coordinates;
}
template< int Dimensions,
typename Real,
typename Device,
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
setCoordinates( const CoordinatesType& coordinates )
{
this->coordinates = coordinates;
}
template< int Dimensions,
typename Real,
typename Device,
__cuda_callable__ inline
void
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
this->entityIndex = this->grid.getEntityIndex( *this );
this->neighbourEntitiesStorage.refresh( this->grid, this->entityIndex );
}
template< int Dimensions,
typename Real,
typename Device,
__cuda_callable__ inline
Index
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
Assert( this->entityIndex >= 0 &&
this-> entityIndex < grid.template getEntitiesCount< ThisType >(),
std::cerr << "this->entityIndex = " << this->entityIndex
<< " grid.template getEntitiesCount< Dimensions >() = " << grid.template getEntitiesCount< ThisType >() );
Assert( this->entityIndex == grid.getEntityIndex( *this ),
std::cerr << "this->index = " << this->entityIndex
<< " grid.getEntityIndex( *this ) = " << grid.getEntityIndex( *this ) );
return this->entityIndex;
}
template< int Dimensions,
typename Real,
typename Device,
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::EntityOrientationType
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
}
template< int Dimensions,
typename Real,
typename Device,
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::EntityBasisType
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
template< int Dimensions,
typename Real,
typename Device,
template< int NeighbourEntityDimensions >
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::template NeighbourEntities< NeighbourEntityDimensions >&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
getNeighbourEntities() const
{
return neighbourEntitiesStorage.template getNeighbourEntities< NeighbourEntityDimensions >();
template< int Dimensions,
typename Real,
typename Device,
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
return BoundaryGridEntityChecker< ThisType >::isBoundaryEntity( *this );
}
template< int Dimensions,
typename Real,
typename Device,
typename Meshes::Grid< Dimensions, Real, Device, Index >::VertexType
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
return GridEntityCenterGetter< ThisType >::getEntityCenter( *this );
template< int Dimensions,
typename Real,
typename Device,
typename Index,
typename Config >
__cuda_callable__ inline
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::RealType&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
getMeasure() const
{
return this->getMesh().getCellMeasure();
}
template< int Dimensions,
typename Real,
typename Device,
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::VertexType&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
getEntityProportions() const
{
return grid.getSpaceSteps();
}
template< int Dimensions,
typename Real,
typename Device,
typename Index,
typename Config >
__cuda_callable__ inline
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::GridType&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, Dimensions, Config >::
template< int Dimensions,
typename Real,
typename Device,
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::
GridEntity( const GridType& grid )
basis( 0 ),
neighbourEntitiesStorage( *this )
template< int Dimensions,
typename Real,
typename Device,
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::
GridEntity( const GridType& grid,
const CoordinatesType& coordinates,
const EntityOrientationType& orientation,
const EntityBasisType& basis )
coordinates( coordinates ),
orientation( orientation ),
basis( basis ),
neighbourEntitiesStorage( *this )
}
template< int Dimensions,
typename Real,
typename Device,
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::CoordinatesType&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::
getCoordinates() const
{
return this->coordinates;
}
template< int Dimensions,
typename Real,
typename Device,
typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::CoordinatesType&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::
getCoordinates()
{
return this->coordinates;
}
template< int Dimensions,
typename Real,
typename Device,
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::
setCoordinates( const CoordinatesType& coordinates )
{
this->coordinates = coordinates;
}
template< int Dimensions,
typename Real,
typename Device,
__cuda_callable__ inline
void
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::
this->entityIndex = this->grid.getEntityIndex( *this );
this->neighbourEntitiesStorage.refresh( this->grid, this->entityIndex );
}
template< int Dimensions,
typename Real,
typename Device,
__cuda_callable__ inline
Index
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::
typedef Meshes::Grid< Dimensions, Real, Device, Index > GridType;
typedef typename GridType::Vertex Vertex;
Assert( this->entityIndex >= 0 &&
this-> entityIndex < grid.template getEntitiesCount< Vertex >(),
std::cerr << "this->entityIndex = " << this->entityIndex
<< " grid.template getEntitiesCount< 0 >() = " << grid.template getEntitiesCount< Vertex >() );
Assert( this->entityIndex == grid.getEntityIndex( *this ),
std::cerr << "this->entityIndex = " << this->entityIndex
<< " grid.getEntityIndex( *this ) = " << grid.getEntityIndex( *this ) );
return this->entityIndex;
}
template< int Dimensions,
typename Real,
typename Device,
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::EntityOrientationType
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::
}
template< int Dimensions,
typename Real,
typename Device,
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::EntityBasisType
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::
template< int Dimensions,
typename Real,
typename Device,
template< int NeighbourEntityDimensions >
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::template NeighbourEntities< NeighbourEntityDimensions >&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::
getNeighbourEntities() const
{
return neighbourEntitiesStorage.template getNeighbourEntities< NeighbourEntityDimensions >();
template< int Dimensions,
typename Real,
typename Device,
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::
return BoundaryGridEntityChecker< ThisType >::isBoundaryEntity( *this );
}
template< int Dimensions,
typename Real,
typename Device,
typename Meshes::Grid< Dimensions, Real, Device, Index >::VertexType
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::
return GridEntityCenterGetter< ThisType >::getEntityCenter( *this );
template< int Dimensions,
typename Real,
typename Device,
typename Index,
typename Config >
__cuda_callable__ inline
const typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::RealType
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::
getMeasure() const
{
return 0.0;
}
template< int Dimensions,
typename Real,
typename Device,
typename GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::VertexType
GridEntity< Meshes::Grid< 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 GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::GridType&
GridEntity< Meshes::Grid< Dimensions, Real, Device, Index >, 0, Config >::
return this->grid;