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

Adding MeshPointer.

parent b20de4a9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -279,7 +279,7 @@ class tnlSharedPointer< Object, tnlCuda > : public tnlSmartPointer
               if( this->cuda_pointer )
                  cudaFree( this->cuda_pointer );
#endif         
               std:cerr << "Deleting data..." << std::endl;
               std::cerr << "Deleting data..." << std::endl;
            }
         }
         
+15 −16
Original line number Diff line number Diff line
@@ -15,8 +15,7 @@
 *                                                                         *
 ***************************************************************************/

#ifndef TNLMATRIXSETTER_H_
#define TNLMATRIXSETTER_H_
#pragma once

template< typename DifferentialOperator,
          typename BoundaryConditions,
@@ -49,6 +48,7 @@ class tnlMatrixSetter
{
   public:
   typedef Mesh MeshType;
   typedef tnlSharedPointer< MeshType > MeshPointer;
   typedef typename MeshType::DeviceType DeviceType;
   typedef typename CompressedRowsLengthsVector::RealType IndexType;
   typedef tnlMatrixSetterTraversalUserData< DifferentialOperator,
@@ -56,24 +56,23 @@ class tnlMatrixSetter
                                             CompressedRowsLengthsVector > TraversalUserData;

   template< typename EntityType >
   void getCompressedRowsLengths( const MeshType& mesh,
   void getCompressedRowsLengths( const MeshPointer& meshPointer,
                       DifferentialOperator& differentialOperator,
                       BoundaryConditions& boundaryConditions,
                       CompressedRowsLengthsVector& rowLengths ) const;


   class TraversalBoundaryEntitiesProcessor
   {
      public:

         template< int EntityDimension >
         template< typename EntityType >
         __cuda_callable__
         static void processEntity( const MeshType& mesh,
                                    TraversalUserData& userData,                                    
                                    const IndexType index )
                                    const EntityType& entity )
         {
            ( *userData.rowLengths )[ index ] =
                     userData.boundaryConditions->getLinearSystemRowLength( mesh, index );
            ( *userData.rowLengths )[ entity.getIndex() ] =
                     userData.boundaryConditions->getLinearSystemRowLength( mesh, entity.getIndex(), entity );
         }

   };
@@ -86,16 +85,17 @@ class tnlMatrixSetter
         __cuda_callable__
         static void processEntity( const MeshType& mesh,
                                    TraversalUserData& userData,
                                    const IndexType index )
                                    const EntityType& entity )
         {
            ( *userData.rowLengths )[ index ] =
                     userData.differentialOperator->getLinearSystemRowLength( mesh, index );
            ( *userData.rowLengths )[ entity.getIndex() ] =
                     userData.differentialOperator->getLinearSystemRowLength( mesh, entity.getIndex(), entity );
         }

   };


};

/*
template< int Dimensions,
          typename Real,
          typename Device,
@@ -155,7 +155,6 @@ class tnlMatrixSetter< tnlGrid< Dimensions, Real, Device, Index >,
   };

};
*/

#include <matrices/tnlMatrixSetter_impl.h>

#endif /* TNLMATRIXSETTER_H_ */
+23 −24
Original line number Diff line number Diff line
@@ -15,8 +15,7 @@
 *                                                                         *
 ***************************************************************************/

#ifndef TNLMATRIXSETTER_IMPL_H_
#define TNLMATRIXSETTER_IMPL_H_
#pragma once

#include <mesh/tnlTraverser.h>

@@ -27,25 +26,25 @@ template< typename Mesh,
   template< typename EntityType >
void
tnlMatrixSetter< Mesh, DifferentialOperator, BoundaryConditions, CompressedRowsLengthsVector >::
getCompressedRowsLengths( const Mesh& mesh,
getCompressedRowsLengths( const MeshPointer& meshPointer,
                          DifferentialOperator& differentialOperator,
                          BoundaryConditions& boundaryConditions,
                          CompressedRowsLengthsVector& rowLengths ) const
{
   if( DeviceType::DeviceType == tnlHostDevice )
   if( std::is_same< DeviceType, tnlHost >::value )
   {
      TraversalUserData userData( differentialOperator, boundaryConditions, rowLengths );
      tnlTraverser< MeshType, EntityType > meshTraversal;
      meshTraversal.template processBoundaryEntities< TraversalUserData,
                                                      TraversalBoundaryEntitiesProcessor >
                                                    ( mesh,
                                                    ( meshPointer,
                                                      userData );
      meshTraversal.template processInteriorEntities< TraversalUserData,
                                                      TraversalInteriorEntitiesProcessor >
                                                    ( mesh,
                                                    ( meshPointer,
                                                      userData );
   }
   if( DeviceType::DeviceType == tnlCudaDevice )
   if( std::is_same< DeviceType, tnlCuda >::value )
   {
      DifferentialOperator* kernelDifferentialOperator = tnlCuda::passToDevice( differentialOperator );
      BoundaryConditions* kernelBoundaryConditions = tnlCuda::passToDevice( boundaryConditions );
@@ -55,11 +54,11 @@ getCompressedRowsLengths( const Mesh& mesh,
      tnlTraverser< MeshType, EntityType > meshTraversal;
      meshTraversal.template processBoundaryEntities< TraversalUserData,
                                                      TraversalBoundaryEntitiesProcessor >
                                                    ( mesh,
                                                    ( meshPointer,
                                                      userData );
      meshTraversal.template processInteriorEntities< TraversalUserData,
                                                      TraversalInteriorEntitiesProcessor >
                                                    ( mesh,
                                                    ( meshPointer,
                                                      userData );

      checkCudaDevice;
@@ -70,6 +69,7 @@ getCompressedRowsLengths( const Mesh& mesh,
   }
}

/*
template< int Dimensions,
          typename Real,
          typename Device,
@@ -80,7 +80,7 @@ template< int Dimensions,
   template< typename EntityType >
void
tnlMatrixSetter< tnlGrid< Dimensions, Real, Device, Index >, DifferentialOperator, BoundaryConditions, CompressedRowsLengthsVector >::
getCompressedRowsLengths( const MeshType& mesh,
getCompressedRowsLengths( const MeshPointer& meshPointer,
                          const DifferentialOperator& differentialOperator,
                          const BoundaryConditions& boundaryConditions,
                          CompressedRowsLengthsVector& rowLengths ) const
@@ -88,14 +88,14 @@ getCompressedRowsLengths( const MeshType& mesh,
   if( DeviceType::DeviceType == ( int ) tnlHostDevice )
   {
      TraversalUserData userData( differentialOperator, boundaryConditions, rowLengths );
      tnlTraverser< MeshType, EntityType > meshTraversal;
      tnlTraverser< MeshPointer, EntityType > meshTraversal;
      meshTraversal.template processBoundaryEntities< TraversalUserData,
                                                      TraversalBoundaryEntitiesProcessor >
                                                    ( mesh,
                                                    ( meshPointer,
                                                      userData );
      meshTraversal.template processInteriorEntities< TraversalUserData,
                                                      TraversalInteriorEntitiesProcessor >
                                                    ( mesh,
                                                    ( meshPointer,
                                                      userData );
   }
   if( DeviceType::DeviceType == ( int ) tnlCudaDevice )
@@ -105,14 +105,14 @@ getCompressedRowsLengths( const MeshType& mesh,
      CompressedRowsLengthsVector* kernelCompressedRowsLengths = tnlCuda::passToDevice( rowLengths );
      TraversalUserData userData( *kernelDifferentialOperator, *kernelBoundaryConditions, *kernelCompressedRowsLengths );
      checkCudaDevice;
      tnlTraverser< MeshType, EntityType > meshTraversal;
      tnlTraverser< MeshPointer, EntityType > meshTraversal;
      meshTraversal.template processBoundaryEntities< TraversalUserData,
                                                      TraversalBoundaryEntitiesProcessor >
                                                    ( mesh,
                                                    ( meshPointer,
                                                      userData );
      meshTraversal.template processInteriorEntities< TraversalUserData,
                                                      TraversalInteriorEntitiesProcessor >
                                                    ( mesh,
                                                    ( meshPointer,
                                                      userData );

      checkCudaDevice;
@@ -122,6 +122,5 @@ getCompressedRowsLengths( const MeshType& mesh,
      checkCudaDevice;
   }
}
*/

#endif /* TNLMATRIXSETTER_IMPL_H_ */
+2 −2
Original line number Diff line number Diff line
@@ -161,7 +161,7 @@ setupLinearSystem( const MeshPointer& meshPointer,
      return false;
   tnlMatrixSetter< MeshType, DifferentialOperator, BoundaryCondition, CompressedRowsLengthsVectorType > matrixSetter;
   matrixSetter.template getCompressedRowsLengths< typename Mesh::Cell >(
      *meshPointer,
      meshPointer,
      differentialOperator,
      boundaryCondition,
      rowLengths );
@@ -273,7 +273,7 @@ assemblyLinearSystem( const RealType& time,
   systemAssembler.template assembly< typename Mesh::Cell >(
      time,
      tau,
      *meshPointer,
      meshPointer,
      this->differentialOperator,
      this->boundaryCondition,
      this->rightHandSide,
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ class tnlExplicitTimeStepper
   bool setup( const tnlParameterContainer& parameters,
              const tnlString& prefix = "" );

   bool init( const MeshType& mesh );
   bool init( const MeshPointer& meshPointer );

   void setSolver( OdeSolverType& odeSolver );

Loading