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

tnl-diff works for general grids.

parent dafe0492
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
ADD_SUBDIRECTORY( Python )
#ADD_SUBDIRECTORY( Python )
ADD_SUBDIRECTORY( TNL )
ADD_SUBDIRECTORY( Tools )
ADD_SUBDIRECTORY( UnitTests )
+4 −13
Original line number Diff line number Diff line
@@ -67,23 +67,14 @@ int main( int argc, char* argv[] )
   {
      int dimensions = atoi( parsedMeshType[ 1 ].getString() );
      if( dimensions == 1 )
      {
         typedef Meshes::Grid< 1, double, Devices::Host, int > MeshType;
         if( ! processFiles< MeshType >( parameters ) )
         if( ! resolveGridRealType< 1 >( parsedMeshType, parameters ) )
            return EXIT_FAILURE;
      }
      if( dimensions == 2 )
      {
         typedef Meshes::Grid< 2, double, Devices::Host, int > MeshType;
         if( ! processFiles< MeshType >( parameters ) )
         if( ! resolveGridRealType< 2 >( parsedMeshType, parameters ) )
            return EXIT_FAILURE;
      }
      if( dimensions == 3 )
      {
         typedef Meshes::Grid< 3, double, Devices::Host, int > MeshType;
         if( ! processFiles< MeshType >( parameters ) )
         if( ! resolveGridRealType< 3 >( parsedMeshType, parameters ) )
            return EXIT_FAILURE;
      }
      return EXIT_SUCCESS;
   }
   return EXIT_FAILURE;
+23 −0
Original line number Diff line number Diff line
@@ -464,4 +464,27 @@ bool processFiles( const Config::ParameterContainer& parameters )
   return true;
}

template< int Dim, typename Real >
bool resolveGridIndexType( const Containers::List< String >& parsedMeshType,
                           const Config::ParameterContainer& parameters )
{
   if( parsedMeshType[ 4 ] == "int" )
      return processFiles< Meshes::Grid< Dim, Real, Devices::Host, int > >( parameters );
   if( parsedMeshType[ 4 ] == "long int" )
      return processFiles< Meshes::Grid< Dim, Real, Devices::Host, long int > >( parameters );   
}

template< int Dim >
bool resolveGridRealType( const Containers::List< String >& parsedMeshType,
                          const Config::ParameterContainer& parameters )
{
   if( parsedMeshType[ 2 ] == "float" )
      return resolveGridIndexType< Dim, float >( parsedMeshType, parameters );
   if( parsedMeshType[ 2 ] == "double" )
      return resolveGridIndexType< Dim, double >( parsedMeshType, parameters );
   if( parsedMeshType[ 2 ] == "long double" )
      return resolveGridIndexType< Dim, long double >( parsedMeshType, parameters );
   
}

#endif /* TNL_DIFF_H_ */