Commit 9cda013b authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Cleaned up communicators in tnl-init

parent 569ccc9a
Loading
Loading
Loading
Loading
+47 −61
Original line number Diff line number Diff line
@@ -11,7 +11,6 @@
#pragma once

#include <TNL/Config/ParameterContainer.h>
#include <TNL/Containers/Vector.h>
#include <TNL/Meshes/Grid.h>
#include <TNL/Functions/TestFunction.h>
#include <TNL/Operators/FiniteDifferences.h>
@@ -136,28 +135,19 @@ template< typename MeshType,
          int xDiff,
          int yDiff,
          int zDiff >
bool resolvCommunicator( const Config::ParameterContainer& parameters )
bool resolveCommunicator( const Config::ParameterContainer& parameters )
{
#ifdef HAVE_MPI
   if( Communicators::MpiCommunicator::isDistributed() )
    {
        Communicators::NoDistrCommunicator::Finalize();
        bool ret=renderFunction<MeshType,RealType, Communicators::MpiCommunicator,xDiff,yDiff,zDiff>(parameters);
        return ret;
    }
      return renderFunction<MeshType,RealType, Communicators::MpiCommunicator,xDiff,yDiff,zDiff>(parameters);
#endif
    
    bool ret=renderFunction<MeshType,RealType, Communicators::NoDistrCommunicator,xDiff,yDiff,zDiff>(parameters);
    Communicators::NoDistrCommunicator::Finalize();
    return ret;

   return renderFunction<MeshType,RealType, Communicators::NoDistrCommunicator,xDiff,yDiff,zDiff>(parameters);
}

template< typename MeshType,
          typename RealType >
bool resolveDerivatives( const Config::ParameterContainer& parameters )
{

   int xDiff = parameters.getParameter< int >( "x-derivative" );
   int yDiff = parameters.getParameter< int >( "y-derivative" );
   int zDiff = parameters.getParameter< int >( "z-derivative" );
@@ -170,75 +160,75 @@ bool resolveDerivatives( const Config::ParameterContainer& parameters )
      return false;
   }
   if( xDiff == 0 && yDiff == 0 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 0, 0, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 0, 0 >( parameters );
   if( xDiff == 0 && yDiff == 0 && zDiff == 1 )
      return resolvCommunicator< MeshType, RealType, 0, 0, 1 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 0, 1 >( parameters );
   if( xDiff == 0 && yDiff == 0 && zDiff == 2 )
      return resolvCommunicator< MeshType, RealType, 0, 0, 2 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 0, 2 >( parameters );
   if( xDiff == 0 && yDiff == 0 && zDiff == 3 )
      return resolvCommunicator< MeshType, RealType, 0, 0, 3 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 0, 3 >( parameters );
   if( xDiff == 0 && yDiff == 0 && zDiff == 4 )
      return resolvCommunicator< MeshType, RealType, 0, 0, 4 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 0, 4 >( parameters );
   if( xDiff == 0 && yDiff == 1 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 0, 1, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 1, 0 >( parameters );
   if( xDiff == 0 && yDiff == 1 && zDiff == 1 )
      return resolvCommunicator< MeshType, RealType, 0, 1, 1 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 1, 1 >( parameters );
   if( xDiff == 0 && yDiff == 1 && zDiff == 2 )
      return resolvCommunicator< MeshType, RealType, 0, 1, 2 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 1, 2 >( parameters );
   if( xDiff == 0 && yDiff == 1 && zDiff == 3 )
      return resolvCommunicator< MeshType, RealType, 0, 1, 3 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 1, 3 >( parameters );
   if( xDiff == 0 && yDiff == 2 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 0, 2, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 2, 0 >( parameters );
   if( xDiff == 0 && yDiff == 2 && zDiff == 1 )
      return resolvCommunicator< MeshType, RealType, 0, 2, 1 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 2, 1 >( parameters );
   if( xDiff == 0 && yDiff == 2 && zDiff == 2 )
      return resolvCommunicator< MeshType, RealType, 0, 2, 2 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 2, 2 >( parameters );
   if( xDiff == 0 && yDiff == 3 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 0, 3, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 3, 0 >( parameters );
   if( xDiff == 0 && yDiff == 3 && zDiff == 1 )
      return resolvCommunicator< MeshType, RealType, 0, 3, 1 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 3, 1 >( parameters );
   if( xDiff == 0 && yDiff == 4 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 0, 4, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 0, 4, 0 >( parameters );
   if( xDiff == 1 && yDiff == 0 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 1, 0, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 1, 0, 0 >( parameters );
   if( xDiff == 1 && yDiff == 0 && zDiff == 1 )
      return resolvCommunicator< MeshType, RealType, 1, 0, 1 >( parameters );
      return resolveCommunicator< MeshType, RealType, 1, 0, 1 >( parameters );
   if( xDiff == 1 && yDiff == 0 && zDiff == 2 )
      return resolvCommunicator< MeshType, RealType, 1, 0, 2 >( parameters );
      return resolveCommunicator< MeshType, RealType, 1, 0, 2 >( parameters );
   if( xDiff == 1 && yDiff == 0 && zDiff == 3 )
      return resolvCommunicator< MeshType, RealType, 1, 0, 3 >( parameters );
      return resolveCommunicator< MeshType, RealType, 1, 0, 3 >( parameters );
   if( xDiff == 1 && yDiff == 1 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 1, 1, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 1, 1, 0 >( parameters );
   if( xDiff == 1 && yDiff == 1 && zDiff == 1 )
      return resolvCommunicator< MeshType, RealType, 1, 1, 1 >( parameters );
      return resolveCommunicator< MeshType, RealType, 1, 1, 1 >( parameters );
   if( xDiff == 1 && yDiff == 1 && zDiff == 2 )
      return resolvCommunicator< MeshType, RealType, 1, 1, 2 >( parameters );
      return resolveCommunicator< MeshType, RealType, 1, 1, 2 >( parameters );
   if( xDiff == 1 && yDiff == 2 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 1, 2, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 1, 2, 0 >( parameters );
   if( xDiff == 1 && yDiff == 2 && zDiff == 1 )
      return resolvCommunicator< MeshType, RealType, 1, 2, 1 >( parameters );
      return resolveCommunicator< MeshType, RealType, 1, 2, 1 >( parameters );
   if( xDiff == 1 && yDiff == 3 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 1, 3, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 1, 3, 0 >( parameters );
   if( xDiff == 2 && yDiff == 0 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 2, 0, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 2, 0, 0 >( parameters );
   if( xDiff == 2 && yDiff == 0 && zDiff == 1 )
      return resolvCommunicator< MeshType, RealType, 2, 0, 1 >( parameters );
      return resolveCommunicator< MeshType, RealType, 2, 0, 1 >( parameters );
   if( xDiff == 2 && yDiff == 0 && zDiff == 2 )
      return resolvCommunicator< MeshType, RealType, 2, 0, 2 >( parameters );
      return resolveCommunicator< MeshType, RealType, 2, 0, 2 >( parameters );
   if( xDiff == 2 && yDiff == 1 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 2, 1, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 2, 1, 0 >( parameters );
   if( xDiff == 2 && yDiff == 1 && zDiff == 1 )
      return resolvCommunicator< MeshType, RealType, 2, 1, 1 >( parameters );
      return resolveCommunicator< MeshType, RealType, 2, 1, 1 >( parameters );
   if( xDiff == 2 && yDiff == 2 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 2, 2, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 2, 2, 0 >( parameters );
   if( xDiff == 3 && yDiff == 0 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 3, 0, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 3, 0, 0 >( parameters );
   if( xDiff == 3 && yDiff == 0 && zDiff == 1 )
      return resolvCommunicator< MeshType, RealType, 3, 0, 1 >( parameters );
      return resolveCommunicator< MeshType, RealType, 3, 0, 1 >( parameters );
   if( xDiff == 3 && yDiff == 1 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 3, 1, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 3, 1, 0 >( parameters );
   if( xDiff == 4 && yDiff == 0 && zDiff == 0 )
      return resolvCommunicator< MeshType, RealType, 4, 0, 0 >( parameters );
      return resolveCommunicator< MeshType, RealType, 4, 0, 0 >( parameters );
   return false;
}

@@ -277,9 +267,9 @@ bool resolveIndexType( const std::vector< String >& parsedMeshType,
                       const Config::ParameterContainer& parameters )
{
   std::cout << "+ -> Setting index type to " << parsedMeshType[ 4 ] << " ... " << std::endl;

   if( parsedMeshType[ 4 ] == "int" )
      return resolveMesh< Dimension, RealType, int >( parsedMeshType, parameters );

   if( parsedMeshType[ 4 ] == "long int" )
      return resolveMesh< Dimension, RealType, long int >( parsedMeshType, parameters );

@@ -291,12 +281,11 @@ bool resolveRealType( const std::vector< String >& parsedMeshType,
                      const Config::ParameterContainer& parameters )
{
   std::cout << "+ -> Setting real type to " << parsedMeshType[ 2 ] << " ... " << std::endl;

   if( parsedMeshType[ 2 ] == "float" )
      return resolveIndexType< Dimension, float >( parsedMeshType, parameters );

   if( parsedMeshType[ 2 ] == "double" )
      return resolveIndexType< Dimension, double >( parsedMeshType, parameters );

   if( parsedMeshType[ 2 ] == "long-double" )
      return resolveIndexType< Dimension, long double >( parsedMeshType, parameters );

@@ -311,11 +300,8 @@ bool resolveMeshType( const std::vector< String >& parsedMeshType,

   if( dimensions == 1 )
      return resolveRealType< 1 >( parsedMeshType, parameters );

   if( dimensions == 2 )
      return resolveRealType< 2 >( parsedMeshType, parameters );


   if( dimensions == 3 )
      return resolveRealType< 3 >( parsedMeshType, parameters );

+1 −1

File changed.

Contains only whitespace changes.