Commit f8eb6d9b authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Next iteration of MeshTypeResolver generalization

parent 210ed3ea
Loading
Loading
Loading
Loading
+2 −24
Original line number Diff line number Diff line
@@ -17,34 +17,12 @@
namespace TNL {
namespace Solvers {

template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter,
          typename Real,
          typename Device,
          typename Index,
          typename ConfigTag,
          bool ResolveMesh = ConfigTagMeshResolve< ConfigTag >::enabled >
class MeshTypeResolver
{
};

template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter,
          typename Real,
          typename Device,
          typename Index,
          typename ConfigTag >
class MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, false >
{
   public:

   static bool run( const Config::ParameterContainer& parameters );
};

template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter,
          typename Real,
          typename Device,
          typename Index,
          typename ConfigTag >
class MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >
class MeshTypeResolver
{
   public:

+11 −25
Original line number Diff line number Diff line
@@ -12,7 +12,6 @@

#include <TNL/String.h>
#include <TNL/Meshes/Grid.h>
#include <TNL/Meshes/DummyMesh.h>
#include <TNL/Solvers/MeshTypeResolver.h>
#include <TNL/Solvers/SolverStarter.h>

@@ -34,22 +33,9 @@ template< template< typename Real, typename Device, typename Index, typename Mes
          typename Device,
          typename Index,
          typename ConfigTag >
bool MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, false >::run( const Config::ParameterContainer& parameters )
{
   return ProblemSetter< Real,
                         Device,
                         Index,
                         Meshes::DummyMesh< Real, Device, Index >,
                         ConfigTag,
                         SolverStarter< ConfigTag > >::template run< Real, Device, Index, ConfigTag >( parameters );
};

template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter,
          typename Real,
          typename Device,
          typename Index,
          typename ConfigTag >
bool MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >::run( const Config::ParameterContainer& parameters )
bool
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag >::
run( const Config::ParameterContainer& parameters )
{
   const String& meshFileName = parameters.getParameter< String >( "mesh" );
   Meshes::Readers::TNL reader;
@@ -64,7 +50,7 @@ template< template< typename Real, typename Device, typename Index, typename Mes
          typename Index,
          typename ConfigTag >
bool
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >::
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag >::
resolveMeshDimension( const Config::ParameterContainer& parameters,
                       Meshes::Readers::TNL& reader )
{
@@ -85,7 +71,7 @@ template< template< typename Real, typename Device, typename Index, typename Mes
          typename ConfigTag >
   template< int MeshDimension, typename, typename >
bool
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >::
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag >::
resolveMeshRealType( const Config::ParameterContainer& parameters,
                     Meshes::Readers::TNL& reader )
{
@@ -100,7 +86,7 @@ template< template< typename Real, typename Device, typename Index, typename Mes
          typename ConfigTag >
   template< int MeshDimension, typename >
bool
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >::
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag >::
resolveMeshRealType( const Config::ParameterContainer& parameters,
                     Meshes::Readers::TNL& reader )
{
@@ -123,7 +109,7 @@ template< template< typename Real, typename Device, typename Index, typename Mes
             typename MeshRealType,
             typename, typename >
bool
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >::
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag >::
resolveMeshIndexType( const Config::ParameterContainer& parameters,
                      Meshes::Readers::TNL& reader )
{
@@ -140,7 +126,7 @@ template< template< typename Real, typename Device, typename Index, typename Mes
             typename MeshRealType,
             typename >
bool
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >::
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag >::
resolveMeshIndexType( const Config::ParameterContainer& parameters,
                      Meshes::Readers::TNL& reader )
{
@@ -164,7 +150,7 @@ template< template< typename Real, typename Device, typename Index, typename Mes
             typename MeshIndexType,
             typename, typename >
bool
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >::
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag >::
resolveMeshType( const Config::ParameterContainer& parameters,
                 Meshes::Readers::TNL& reader )
{
@@ -182,7 +168,7 @@ template< template< typename Real, typename Device, typename Index, typename Mes
             typename MeshIndexType,
             typename >
bool
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >::
MeshTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag >::
resolveMeshType( const Config::ParameterContainer& parameters,
                 Meshes::Readers::TNL& reader )
{
+55 −7
Original line number Diff line number Diff line
@@ -8,6 +8,11 @@

/* See Copyright Notice in tnl/Copyright */

#include <TNL/Solvers/SolverInitiator.h>

#include <TNL/Devices/Host.h>
#include <TNL/Devices/Cuda.h>
#include <TNL/Devices/MIC.h>
#include <TNL/Config/ParameterContainer.h>
#include <TNL/Solvers/MeshTypeResolver.h>
#include <TNL/Solvers/BuildConfigTags.h>
@@ -15,9 +20,7 @@
#include <TNL/Solvers/Linear/CG.h>
#include <TNL/Solvers/Linear/BICGStab.h>
#include <TNL/Solvers/Linear/GMRES.h>
#include <TNL/Devices/Host.h>
#include <TNL/Devices/Cuda.h>
#include <TNL/Devices/MIC.h>
#include <TNL/Meshes/DummyMesh.h>

namespace TNL {
namespace Solvers {   
@@ -43,6 +46,15 @@ template< template< typename Real, typename Device, typename Index, typename Mes
          bool enabled = ConfigTagIndex< ConfigTag, Index >::enabled >
class SolverInitiatorIndexResolver {};

template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter,
          typename Real,
          typename Device,
          typename Index,
          typename ConfigTag,
          bool enabled = ConfigTagMeshResolve< ConfigTag >::enabled >
class SolverInitiatorMeshResolver {};


template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter,
          typename ConfigTag  >
bool SolverInitiator< ProblemSetter, ConfigTag > :: run( const Config::ParameterContainer& parameters )
@@ -60,6 +72,7 @@ bool SolverInitiator< ProblemSetter, ConfigTag > :: run( const Config::Parameter
   return false;
};


template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter,
          typename Real,
          typename ConfigTag >
@@ -96,6 +109,7 @@ class SolverInitiatorRealResolver< ProblemSetter, Real, ConfigTag, false >
      }
};


template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter,
          typename Real,
          typename Device,
@@ -133,6 +147,7 @@ class SolverInitiatorDeviceResolver< ProblemSetter, Real, Device, ConfigTag, fal
      }
};


template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter,
          typename Real,
          typename Device,
@@ -154,6 +169,40 @@ template< template< typename Real, typename Device, typename Index, typename Mes
          typename Index,
          typename ConfigTag >
class SolverInitiatorIndexResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >
{
   public:
      static bool run( const Config::ParameterContainer& parameters )
      {
         return SolverInitiatorMeshResolver< ProblemSetter, Real, Device, Index, ConfigTag >::run( parameters );
      }
};


template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter,
          typename Real,
          typename Device,
          typename Index,
          typename ConfigTag >
class SolverInitiatorMeshResolver< ProblemSetter, Real, Device, Index, ConfigTag, false >
{
   public:
      static bool run( const Config::ParameterContainer& parameters )
      {
         return ProblemSetter< Real,
                               Device,
                               Index,
                               Meshes::DummyMesh< Real, Device, Index >,
                               ConfigTag,
                               SolverStarter< ConfigTag > >::template run< Real, Device, Index, ConfigTag >( parameters );
      }
};

template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter,
          typename Real,
          typename Device,
          typename Index,
          typename ConfigTag >
class SolverInitiatorMeshResolver< ProblemSetter, Real, Device, Index, ConfigTag, true >
{
   public:
      static bool run( const Config::ParameterContainer& parameters )
@@ -164,4 +213,3 @@ class SolverInitiatorIndexResolver< ProblemSetter, Real, Device, Index, ConfigTa

} // namespace Solvers
} // namespace TNL