Commit b406555a authored by Tomáš Oberhuber's avatar Tomáš Oberhuber
Browse files

Implementing heat equation benchmark.

parent 2dd7ca43
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@
#include <mesh/grids/tnlGridEntityGetter.h>
#include <mesh/grids/tnlNeighbourGridEntityGetter.h>

#include <../tests/benchmarks/heat-equation-benchmark/TestGridEntity.h>

template< typename Real,
          typename Device,
          typename Index >
@@ -49,6 +51,13 @@ class tnlGrid< 2, Real, Device, Index > : public tnlObject
   typedef MeshEntity< meshDimensions - 1, tnlGridEntityNoStencilStorage > Face;
   typedef MeshEntity< 0 > Vertex;
   
   
   template< int EntityDimensions, 
             typename Config = tnlGridEntityNoStencilStorage >//CrossStencilStorage< 1 > >
   using TestMeshEntity = TestGridEntity< ThisType, EntityDimensions, Config >;
   typedef TestMeshEntity< meshDimensions, tnlGridEntityCrossStencilStorage< 1 > > TestCell;
    
   
   static constexpr int getMeshDimensions() { return meshDimensions; };

   tnlGrid();
+3 −3
Original line number Diff line number Diff line
@@ -363,7 +363,7 @@ heatEquationTemplatedCompact( const GridType grid,
   //GridEntity entity( grid, coordinates, entityOrientation, entityBasis );
   //printf( "size = %d ", sizeof( GridEntity ) );
   //entity.refresh();
   TestGridEntity< GridType, 2, tnlGridEntityCrossStencilStorage< 1 > > entity( grid, coordinates, entityOrientation, entityBasis );
   //typename GridType::TestCell entity( grid, coordinates, entityOrientation, entityBasis );
   
   const IndexType tidX = begin.x() + ( gridXIdx * tnlCuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x;
   const IndexType tidY = begin.y() + ( gridYIdx * tnlCuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y;
@@ -472,7 +472,7 @@ getExplicitRHS( const RealType& time,
      if( this->cudaKernelType == "templated-compact" )
      {
#ifdef HAVE_CUDA         
         typedef typename MeshType::Cell CellType;
         typedef typename MeshType::TestCell CellType;
         typedef typename CellType::CoordinatesType CoordinatesType;         
         MeshFunctionType u( mesh, uDofs );
         MeshFunctionType fu( mesh, fuDofs );
@@ -534,7 +534,7 @@ getExplicitRHS( const RealType& time,
         MeshFunctionType fu( mesh, fuDofs );
         tnlExplicitUpdater< Mesh, MeshFunctionType, DifferentialOperator, BoundaryCondition, RightHandSide > explicitUpdater;
         //explicitUpdater.setGPUTransferTimer( this->gpuTransferTimer ); 
         explicitUpdater.template update< typename Mesh::Cell >( 
         explicitUpdater.template update< typename Mesh::TestCell >( 
            time,
            mesh,
            this->differentialOperator,
+9 −10
Original line number Diff line number Diff line
/***************************************************************************
                          TestGridEntity.h  -  description
                          tnlGridEntity.h  -  description
                             -------------------
    begin                : Nov 13, 2015
    copyright            : (C) 2015 by Tomas Oberhuber
@@ -18,7 +18,6 @@
#pragma once 

#include <mesh/grids/tnlNeighbourGridEntitiesStorage.h>
//#include "TestNeighbourGridEntitiesStorage.h"

template< typename GridEntity,
          int NeighbourEntityDimensions,
@@ -29,7 +28,7 @@ template< typename GridEntityType >
class tnlBoundaryGridEntityChecker;

template< typename GridEntityType >
class TestGridEntityCenterGetter;
class tnlGridEntityCenterGetter;


template< typename Grid,          
@@ -75,7 +74,7 @@ class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensio
      template< int NeighbourEntityDimensions = entityDimensions >
      using NeighbourEntities = 
         tnlNeighbourGridEntityGetter<
            TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >,
            tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >,
                           EntityDimensions,
                           Config >,
            NeighbourEntityDimensions >;
@@ -161,7 +160,7 @@ class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensio
      
      friend class tnlBoundaryGridEntityChecker< ThisType >;
      
      friend class TestGridEntityCenterGetter< ThisType >;
      friend class tnlGridEntityCenterGetter< ThisType >;
};

/****
@@ -201,7 +200,7 @@ class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Co
      template< int NeighbourEntityDimensions = entityDimensions >
      using NeighbourEntities = 
         tnlNeighbourGridEntityGetter<
            TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >,
            tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >,
                           entityDimensions,
                           Config >,
            NeighbourEntityDimensions >;
@@ -288,7 +287,7 @@ class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Co
      
      friend class tnlBoundaryGridEntityChecker< ThisType >;
      
      friend class TestGridEntityCenterGetter< ThisType >;
      friend class tnlGridEntityCenterGetter< ThisType >;
};

/****
@@ -327,7 +326,7 @@ class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >
      template< int NeighbourEntityDimensions = entityDimensions >
      using NeighbourEntities = 
         tnlNeighbourGridEntityGetter<
            TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >,
            tnlGridEntity< tnlGrid< Dimensions, Real, Device, Index >,
                           entityDimensions,
                           Config >,
            NeighbourEntityDimensions >;
@@ -412,7 +411,7 @@ class TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >
            
      friend class tnlBoundaryGridEntityChecker< ThisType >;
      
      friend class TestGridEntityCenterGetter< ThisType >;
      friend class tnlGridEntityCenterGetter< ThisType >;
};

#include "TestGridEntity_impl.h"
+7 −7
Original line number Diff line number Diff line
/***************************************************************************
                          TestGridEntity_impl.h  -  description
                          tnlGridEntity_impl.h  -  description
                             -------------------
    begin                : Nov 20, 2015
    copyright            : (C) 2015 by Tomas Oberhuber
@@ -19,8 +19,8 @@
#pragma once

#include <mesh/grids/tnlBoundaryGridEntityChecker.h>
#include "TestGridEntityCenterGetter.h"
#include "TestGridEntityMeasureGetter.h"
#include <mesh/grids/tnlGridEntityCenterGetter.h>
#include <mesh/grids/tnlGridEntityMeasureGetter.h>
#include "TestGridEntity.h"


@@ -252,7 +252,7 @@ typename tnlGrid< Dimensions, Real, Device, Index >::VertexType
TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
getCenter() const
{
   return TestGridEntityCenterGetter< ThisType >::getEntityCenter( *this );
   return tnlGridEntityCenterGetter< ThisType >::getEntityCenter( *this );
}

template< int Dimensions,
@@ -266,7 +266,7 @@ const typename TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Entit
TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, EntityDimensions, Config >::
getMeasure() const
{
   return TestGridEntityMeasureGetter< GridType, EntityDimensions >::getMeasure( this->getMesh(), *this );
   return tnlGridEntityMeasureGetter< GridType, EntityDimensions >::getMeasure( this->getMesh(), *this );
}

template< int Dimensions,
@@ -469,7 +469,7 @@ typename tnlGrid< Dimensions, Real, Device, Index >::VertexType
TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, Dimensions, Config >::
getCenter() const
{
   return TestGridEntityCenterGetter< ThisType >::getEntityCenter( *this );
   return tnlGridEntityCenterGetter< ThisType >::getEntityCenter( *this );
}

template< int Dimensions,
@@ -689,7 +689,7 @@ typename tnlGrid< Dimensions, Real, Device, Index >::VertexType
TestGridEntity< tnlGrid< Dimensions, Real, Device, Index >, 0, Config >::
getCenter() const
{
   return TestGridEntityCenterGetter< ThisType >::getEntityCenter( *this );
   return tnlGridEntityCenterGetter< ThisType >::getEntityCenter( *this );
}

template< int Dimensions,