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

Refactoring gradient norm operator.

parent 4cbee95c
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
/* 
 * File:   tnlBackwardFiniteDifference.h
 * Author: oberhuber
 *
 * Created on January 9, 2016, 11:17 AM
 */

#ifndef TNLBACKWARDFINITEDIFFERENCE_H
#define	TNLBACKWARDFINITEDIFFERENCE_H

template< typename Mesh,
          int Xdifference = 0,
          int YDifference = 0,
          int ZDifference = 0,
          typename RealType = typename Mesh::RealType,
          typename IndexType = typename Mesh::IndexType >
class tnlBackwardFiniteDifference
{    
};

#endif	/* TNLBACKWARDFINITEDIFFERENCE_H */
+14 −0
Original line number Diff line number Diff line
/* 
 * File:   tnlCentralFiniteDifference.h
 * Author: oberhuber
 *
 * Created on January 9, 2016, 11:17 AM
 */

#ifndef TNLCENTRALFINITEDIFFERENCE_H
#define	TNLCENTRALFINITEDIFFERENCE_H



#endif	/* TNLCENTRALFINITEDIFFERENCE_H */
+14 −0
Original line number Diff line number Diff line
/* 
 * File:   tnlForwardFiniteDifference.h
 * Author: oberhuber
 *
 * Created on January 9, 2016, 11:16 AM
 */

#ifndef TNLFORWARDFINITEDIFFERENCE_H
#define	TNLFORWARDFINITEDIFFERENCE_H



#endif	/* TNLFORWARDFINITEDIFFERENCE_H */
+36 −213
Original line number Diff line number Diff line
@@ -7,20 +7,17 @@

template< typename Mesh,
          typename Real = typename Mesh::RealType,
          typename Index = typename Mesh::IndexType,
          int Precomputation = 0 > 
          typename Index = typename Mesh::IndexType > 
class tnlOneSideDiffOperatorQ
{

};


template< typename MeshReal,
          typename Device,
          typename MeshIndex,
          typename Real,
          typename Index >
class tnlOneSideDiffOperatorQ< tnlGrid< 1,MeshReal, Device, MeshIndex >, Real, Index, 0 >
class tnlOneSideDiffOperatorQ< tnlGrid< 1,MeshReal, Device, MeshIndex >, Real, Index >
{
   public: 
   
@@ -32,33 +29,23 @@ class tnlOneSideDiffOperatorQ< tnlGrid< 1,MeshReal, Device, MeshIndex >, Real, I

   static tnlString getType();

   template< typename Vector >
   IndexType bind( Vector& u) 
   { return 0; }

   __cuda_callable__
   void update( const MeshType& mesh, const RealType& time ) 
   {}
   
   template< typename MeshEntity, typename Vector >
   template< typename MeshFunction, typename MeshEntity >
   __cuda_callable__
   Real getValue(
   Real operator()( const MeshFunction& u,
                    const MeshEntity& entity,
          const Vector& u,
          const Real& time ) const;
                    const Real& time = 0.0 ) const;
      
   template< typename MeshEntity, typename Vector >
   template< typename MeshFunction, typename MeshEntity >
   __cuda_callable__
   Real getValueStriped(
   Real getValueStriped( const MeshFunction& u,
                         const MeshEntity& entity,   
          const Vector& u,
          const Real& time )const;
                         const Real& time = 0.0 ) const;
          
   bool setEps(const Real& eps);
      
   private:
   
   RealType eps;
   RealType eps, epsSquare;
};


@@ -67,7 +54,7 @@ template< typename MeshReal,
          typename MeshIndex,
          typename Real,
          typename Index >
class tnlOneSideDiffOperatorQ< tnlGrid< 2,MeshReal, Device, MeshIndex >, Real, Index, 0 >
class tnlOneSideDiffOperatorQ< tnlGrid< 2,MeshReal, Device, MeshIndex >, Real, Index >
{
   public: 
   
@@ -79,80 +66,24 @@ class tnlOneSideDiffOperatorQ< tnlGrid< 2,MeshReal, Device, MeshIndex >, Real, I

   static tnlString getType(); 
      
   template< typename Vector >
   IndexType bind( Vector& u)
   { return 0; }

   template< typename MeshFunction, typename MeshEntity >
   __cuda_callable__
   void update( const MeshType& mesh, const RealType& time )
   {}   
   
   template< typename MeshEntity, typename Vector >
   __cuda_callable__
   Real getValue(
   Real operator()( const MeshFunction& u,
                    const MeshEntity& entity,
          const Vector& u,
          const Real& time ) const;
   
   template< typename MeshEntity, typename Vector >
   __cuda_callable__
   Real getValueStriped(
          const MeshEntity& entity,
          const Vector& u,
          const Real& time )const;
        
   bool setEps(const Real& eps);
   
   private:
   
   RealType eps;
};


template< typename MeshReal,
          typename Device,
          typename MeshIndex,
          typename Real,
          typename Index >
class tnlOneSideDiffOperatorQ< tnlGrid< 3,MeshReal, Device, MeshIndex >, Real, Index, 0 >
{
   public: 
                    const Real& time = 0.0 ) const;

   typedef tnlGrid< 3, MeshReal, Device, MeshIndex > MeshType;
   typedef typename MeshType::CoordinatesType CoordinatesType;
   typedef Real RealType;
   typedef Device DeviceType;
   typedef Index IndexType;

   static tnlString getType();

   template< typename Vector >
   IndexType bind( Vector& u)
   { return 0; }
   
   template< typename MeshFunction, typename MeshEntity >
   __cuda_callable__
   void update( const MeshType& mesh, const RealType& time )
   {}
   
   template< typename MeshEntity, typename Vector >
   __cuda_callable__
   Real getValue(
   Real getValueStriped( const MeshFunction& u,
                         const MeshEntity& entity,          
          const Vector& u,
          const Real& time ) const;
   
   template< typename MeshEntity, typename Vector >
   __cuda_callable__
   Real getValueStriped(
          const MeshEntity& entity,
          const Vector& u,
          const Real& time ) const;
                         const Real& time = 0.0 ) const;
        
   bool setEps(const Real& eps);
   void setEps( const Real& eps );
   
   private:
   
   RealType eps;
   RealType eps, epsSquare;
};


@@ -161,104 +92,7 @@ template< typename MeshReal,
          typename MeshIndex,
          typename Real,
          typename Index >
class tnlOneSideDiffOperatorQ< tnlGrid< 1,MeshReal, Device, MeshIndex >, Real, Index, 1 >
{
   public: 
   
   typedef tnlGrid< 1, MeshReal, Device, MeshIndex > MeshType;
   typedef typename MeshType::CoordinatesType CoordinatesType;
   typedef Real RealType;
   typedef Device DeviceType;
   typedef Index IndexType;

   static tnlString getType();

   template< typename Vector >
   Index bind( Vector& u);

   __cuda_callable__
   void update( const MeshType& mesh, const RealType& time );
   
   template< typename MeshEntity, typename Vector >
   __cuda_callable__
   Real getValue(
          const MeshEntity& entity,
          const Vector& u,
          const Real& time ) const;
   
   template< typename MeshEntity, typename Vector >
   __cuda_callable__
   Real getValueStriped( 
          const MeshEntity& entity,
          const Vector& u,
          const Real& time ) const;
          
   bool setEps(const Real& eps);
   
   private:
   
   tnlSharedVector< RealType, DeviceType, IndexType > u;
   tnlVector< RealType, DeviceType, IndexType> q;
   tnlVector< RealType, DeviceType, IndexType> qStriped;
   RealType eps;
};


template< typename MeshReal,
          typename Device,
          typename MeshIndex,
          typename Real,
          typename Index >
class tnlOneSideDiffOperatorQ< tnlGrid< 2,MeshReal, Device, MeshIndex >, Real, Index, 1 >
{
   public: 
   
   typedef tnlGrid< 2, MeshReal, Device, MeshIndex > MeshType;
   typedef typename MeshType::CoordinatesType CoordinatesType;
   typedef Real RealType;
   typedef Device DeviceType;
   typedef Index IndexType;
   typedef tnlSharedVector< RealType, DeviceType, IndexType > DofVectorType;
   
   static tnlString getType(); 

   template< typename Vector >
   Index bind( Vector& u);

   __cuda_callable__
   void update( const MeshType& mesh, const RealType& time ); 
   
   template< typename MeshEntity, typename Vector >
   __cuda_callable__
   Real getValue(
          const MeshEntity& entity,
          const Vector& u,
          const Real& time ) const;
   
   template< typename MeshEntity, typename Vector >
   __cuda_callable__
   Real getValueStriped( const MeshType& mesh,
          const MeshEntity& entity,
          const Vector& u,
          const Real& time )const;
          
   bool setEps(const Real& eps);
   
   private:
   
   tnlSharedVector< RealType, DeviceType, IndexType > u;
   tnlVector< RealType, DeviceType, IndexType> q;
   tnlVector< RealType, DeviceType, IndexType> qStriped;
   RealType eps;
};


template< typename MeshReal,
          typename Device,
          typename MeshIndex,
          typename Real,
          typename Index >
class tnlOneSideDiffOperatorQ< tnlGrid< 3,MeshReal, Device, MeshIndex >, Real, Index, 1 >
class tnlOneSideDiffOperatorQ< tnlGrid< 3, MeshReal, Device, MeshIndex >, Real, Index >
{
   public: 
   
@@ -270,34 +104,23 @@ class tnlOneSideDiffOperatorQ< tnlGrid< 3,MeshReal, Device, MeshIndex >, Real, I

   static tnlString getType();

   template< typename Vector >
   Index bind( Vector& u);

   template< typename MeshFunction, typename MeshEntity >
   __cuda_callable__
   void update( const MeshType& mesh, const RealType& time );
   
   template< typename MeshEntity, typename Vector >
   __cuda_callable__
   Real getValue(
   Real operator()( const MeshFunction& u,
                    const MeshEntity& entity,
          const Vector& u,
          const Real& time ) const;
                    const Real& time = 0.0 ) const;
   
   template< typename MeshEntity, typename Vector >
   template< typename MeshFunction, typename MeshEntity >
   __cuda_callable__
   Real getValueStriped(
   Real getValueStriped( const MeshFunction& u,
                         const MeshEntity& entity,          
          const Vector& u,
                         const Real& time ) const;
        
   bool setEps(const Real& eps);
   void setEps(const Real& eps);
   
   private:
   
   tnlSharedVector< RealType, DeviceType, IndexType > u;
   tnlVector< RealType, DeviceType, IndexType> q;
   tnlVector< RealType, DeviceType, IndexType> qStriped;
   RealType eps;
   RealType eps, epsSquare;
};

#include <operators/operator-Q/tnlOneSideDiffOperatorQ_impl.h>
+105 −343

File changed.

Preview size limit exceeded, changes collapsed.