Skip to content
Snippets Groups Projects
tnlGridEntity_impl.h 21.6 KiB
Newer Older
  • Learn to ignore specific revisions
  • Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    /***************************************************************************
                              tnlGridEntity_impl.h  -  description
                                 -------------------
        begin                : Nov 20, 2015
        copyright            : (C) 2015 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 TNLGRIDENTITY_IMPL_H
    #define TNLGRIDENTITY_IMPL_H
    
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    #include <mesh/grids/tnlBoundaryGridEntityChecker.h>
    #include <mesh/grids/tnlGridEntityCenterGetter.h>
    #include <mesh/grids/tnlGridEntity.h>
    
    /*template< int Dimensions,
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
              typename Real,
              typename Device,
    
              typename Index,          typename Config,
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
              int EntityDimensions >
    
    __cuda_callable__ inline
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    tnlGridEntity()
    
    
    template< int Dimensions,
              typename Real,
              typename Device,
              typename Index,
    
              int EntityDimensions,
              typename Config >
    
    __cuda_callable__ inline
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
    
    tnlGridEntity( const tnlGrid< Dimensions, Real, Device, Index >& grid )
    : grid( grid ),
    
      entityIndex( -1 ),
    
      coordinates( 0 ),
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
      orientation( 0 ),
    
      basis( 0 ),
      neighbourEntitiesStorage( *this )
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
              typename Index,
    
              int EntityDimensions,
              typename Config >
    
    __cuda_callable__ inline
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
    
    tnlGridEntity( const tnlGrid< Dimensions, Real, Device, Index >& grid,
                   const CoordinatesType& coordinates,
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
                   const EntityOrientationType& orientation,
                   const EntityBasisType& basis )
    
    : grid( grid ),
    
      entityIndex( -1 ),
    
      coordinates( coordinates ),
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
      orientation( orientation ),
    
      basis( basis ),
      neighbourEntitiesStorage( *this )
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
              typename Index,
    
              int EntityDimensions,
              typename Config >
    
    __cuda_callable__ inline
    
    const typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::CoordinatesType& 
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getCoordinates() const
    {
       return this->coordinates;
    }
    
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
              typename Index,
    
              int EntityDimensions,
              typename Config >
    
    __cuda_callable__ inline
    
    typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::CoordinatesType& 
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getCoordinates()
    {
       return this->coordinates;
    }
    
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
              typename Index,
    
              int EntityDimensions,
              typename Config >
    
    __cuda_callable__ inline
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    void
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    setCoordinates( const CoordinatesType& coordinates )
    {
       this->coordinates = coordinates;
    }
    
    
    template< int Dimensions,
              typename Real,
              typename Device,
              typename Index,
    
              int EntityDimensions,
              typename Config >
    
    __cuda_callable__ inline
    void
    
    tnlGridEntity< 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
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
    
    getIndex() const
    {
       tnlAssert( this->entityIndex >= 0 &&
                  this-> entityIndex < grid.template getEntitiesCount< EntityDimensions >(),
                  cerr << "this->entityIndex = " << this->entityIndex
                       << " grid.template getEntitiesCount< EntityDimensions >() = " << grid.template getEntitiesCount< EntityDimensions >() );
       tnlAssert( this->entityIndex == grid.getEntityIndex( *this ),
                  cerr << "this->entityIndex = " << this->entityIndex
                       << " grid.getEntityIndex( *this ) = " << grid.getEntityIndex( *this ) );
       return this->entityIndex;
    }
    
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
              typename Index,
    
              int EntityDimensions,
              typename Config >
    
    __cuda_callable__ inline
    
    const typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::EntityOrientationType& 
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getOrientation() const
    {
       return this->orientation;
    }
    
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
              typename Index,
    
              int EntityDimensions,
              typename Config >
    
    __cuda_callable__ inline
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    void 
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    setOrientation( const EntityOrientationType& orientation )
    {
       this->orientation = orientation;
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
       this->basis = EntityBasisType( 1 ) - tnlAbs( orientation );
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
              typename Index,
    
              int EntityDimensions,
              typename Config >
    
    __cuda_callable__ inline
    
    const typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::EntityBasisType& 
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getBasis() const
    {
       return this->basis;
    }
    
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
              typename Index,
    
              int EntityDimensions,
              typename Config >
    
    __cuda_callable__ inline
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    void 
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    setBasis( const EntityBasisType& basis )
    {
       this->basis = basis;
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
       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 tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::template NeighbourEntities< NeighbourEntityDimensions >&
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
    
       return neighbourEntitiesStorage.template getNeighbourEntities< NeighbourEntityDimensions >();
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
              typename Index,
    
              int EntityDimensions,
              typename Config >
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    __cuda_callable__ inline
    bool
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    isBoundaryEntity() const
    {
       return tnlBoundaryGridEntityChecker< ThisType >::isBoundaryEntity( *this );
    }
    
    template< int Dimensions,
              typename Real,
              typename Device,
              typename Index,
    
              int EntityDimensions,
              typename Config >
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    __cuda_callable__ inline
    typename tnlGrid< Dimensions, Real, Device, Index >::VertexType
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    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 tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::GridType&
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    /****
     * Specialization for cells
     */
    
    /*template< int Dimensions,
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
              typename Real,
              typename Device,
              typename Index >
    
    __cuda_callable__ inline
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions >::
    tnlGridEntity()
    
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::
    
    tnlGridEntity( const GridType& grid )
    
      entityIndex( -1 ),
      neighbourEntitiesStorage( *this )
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
       this->coordinates = CoordinatesType( ( Index ) 0 );
       this->orientation = EntityOrientationType( ( Index ) 0 );
       this->basis = EntityBasisType( ( Index ) 1 );
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    }
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::
    
    tnlGridEntity( const GridType& grid,
                   const CoordinatesType& coordinates,
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
                   const EntityOrientationType& orientation,
                   const EntityBasisType& basis )
    
    : grid( grid ),
    
      entityIndex( -1 ),
    
      coordinates( coordinates ),
      neighbourEntitiesStorage( *this )
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    {
       this->orientation = EntityOrientationType( ( Index ) 0 );
       this->basis = EntityBasisType( ( Index ) 1 );
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    }
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    
    const typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::CoordinatesType& 
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getCoordinates() const
    {
       return this->coordinates;
    }
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    
    typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::CoordinatesType& 
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getCoordinates()
    {
       return this->coordinates;
    }
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    void
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    setCoordinates( const CoordinatesType& coordinates )
    {
       this->coordinates = coordinates;
    }
    
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    void
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, 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
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::
    
    getIndex() const
    {
       tnlAssert( this->entityIndex >= 0 &&
    
                  this-> entityIndex < grid.template getEntitiesCount< ThisType >(),
    
                  cerr << "this->entityIndex = " << this->entityIndex
    
                       << " grid.template getEntitiesCount< Dimensions >() = " << grid.template getEntitiesCount< ThisType >() );
    
       tnlAssert( this->entityIndex == grid.getEntityIndex( *this ),
                  cerr << "this->index = " << this->entityIndex
                       << " grid.getEntityIndex( *this ) = " << grid.getEntityIndex( *this ) );
       return this->entityIndex;
    }
    
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    
    const typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::EntityOrientationType 
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getOrientation() const
    {
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
       return EntityOrientationType( ( IndexType ) 0 );
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    }
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    
    const typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::EntityBasisType 
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getBasis() const
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
       return EntityBasisType( ( IndexType ) 1 );
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
       template< int NeighbourEntityDimensions >
    
    __cuda_callable__ inline
    
    const typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::template NeighbourEntities< NeighbourEntityDimensions >&
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::
    
    getNeighbourEntities() const
    {
    
       return neighbourEntitiesStorage.template getNeighbourEntities< NeighbourEntityDimensions >();
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    __cuda_callable__ inline
    bool
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    isBoundaryEntity() const
    {
       return tnlBoundaryGridEntityChecker< ThisType >::isBoundaryEntity( *this );
    }
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    __cuda_callable__ inline
    typename tnlGrid< Dimensions, Real, Device, Index >::VertexType
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getCenter() const
    {
       return tnlGridEntityCenterGetter< ThisType >::getEntityCenter( *this );
    }
    
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    __cuda_callable__ inline
    
    const typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::VertexType&
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getEntityProportions() const
    {
       return grid.getSpaceSteps();
    }
    
    
    template< int Dimensions,
              typename Real,
              typename Device,
              typename Index,
              typename Config >
    __cuda_callable__ inline
    const typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::GridType&
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::
    
    {
       return this->grid;
    }
    
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    /****
     * Specialization for vertices
     */
    
    /*template< int Dimensions,
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
              typename Real,
              typename Device,
              typename Index >
    
    __cuda_callable__ inline
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0 >::
    tnlGridEntity()
    
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::
    
    tnlGridEntity( const GridType& grid )
     : grid( grid ),
    
       entityIndex( -1 ),
    
       coordinates( 0 ),
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
       orientation( 1 ),
    
       basis( 0 ),
       neighbourEntitiesStorage( *this )
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::
    
    tnlGridEntity( const GridType& grid,
                   const CoordinatesType& coordinates,
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
                   const EntityOrientationType& orientation,
                   const EntityBasisType& basis )
    
    : grid( grid ),
    
      entityIndex( -1 ),
    
      coordinates( coordinates ),
      neighbourEntitiesStorage( *this )
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    {  
    }
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    
    const typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::CoordinatesType& 
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getCoordinates() const
    {
       return this->coordinates;
    }
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    
    typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::CoordinatesType& 
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getCoordinates()
    {
       return this->coordinates;
    }
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    void
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    setCoordinates( const CoordinatesType& coordinates )
    {
       this->coordinates = coordinates;
    }
    
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    void
    
    tnlGridEntity< 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
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::
    
    getIndex() const
    {
       tnlAssert( this->entityIndex >= 0 &&
                  this-> entityIndex < grid.template getEntitiesCount< 0 >(),
                  cerr << "this->entityIndex = " << this->entityIndex
                       << " grid.template getEntitiesCount< 0 >() = " << grid.template getEntitiesCount< 0 >() );
       tnlAssert( this->entityIndex == grid.getEntityIndex( *this ),
                  cerr << "this->entityIndex = " << this->entityIndex
                       << " grid.getEntityIndex( *this ) = " << grid.getEntityIndex( *this ) );
       return this->entityIndex;
    }
    
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    
    const typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::EntityOrientationType
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getOrientation() const
    {
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
       return EntityOrientationType( ( IndexType ) 0 );
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    }
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    __cuda_callable__ inline
    
    const typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::EntityBasisType
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getBasis() const
    {
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
       return EntityBasisType( ( IndexType ) 0 );
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
       template< int NeighbourEntityDimensions >
    
    __cuda_callable__ inline
    
    const typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::template NeighbourEntities< NeighbourEntityDimensions >&
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::
    
    getNeighbourEntities() const
    {
    
       return neighbourEntitiesStorage.template getNeighbourEntities< NeighbourEntityDimensions >();
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    __cuda_callable__ inline
    bool
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    isBoundaryEntity() const
    {
       return tnlBoundaryGridEntityChecker< ThisType >::isBoundaryEntity( *this );
    }
    
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    __cuda_callable__ inline
    typename tnlGrid< Dimensions, Real, Device, Index >::VertexType
    
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getCenter() const
    {
       return tnlGridEntityCenterGetter< ThisType >::getEntityCenter( *this );
    }
    
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    template< int Dimensions,
              typename Real,
              typename Device,
    
              typename Index,
              typename Config >
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    __cuda_callable__ inline
    
    typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::VertexType
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    getEntityProportions() const
    {
       return VertexType( 0.0 );
    }
    
    
    template< int Dimensions,
              typename Real,
              typename Device,
              typename Index,
              typename Config >
    __cuda_callable__ inline
    const typename tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::GridType&
    tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::
    
    {
       return this->gridType;
    }
    
    Tomáš Oberhuber's avatar
    Tomáš Oberhuber committed
    #endif	/* TNLGRIDENTITY_IMPL_H */