Skip to content
Snippets Groups Projects
Commit f8eb6d9b authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Next iteration of MeshTypeResolver generalization

parent 210ed3ea
No related branches found
No related tags found
No related merge requests found
......@@ -15,36 +15,14 @@
#include <TNL/Meshes/Readers/TNL.h>
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
{
};
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 >
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:
......
......@@ -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>
......@@ -26,7 +25,7 @@ template< template< typename Real, typename Device, typename Index, typename Mes
typename MeshType,
typename ConfigTag,
bool MeshTypeSupported = ConfigTagMesh< ConfigTag, MeshType >::enabled >
class MeshResolverTerminator{};
class MeshResolverTerminator {};
template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter,
......@@ -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 )
{
......
......@@ -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 {
......@@ -26,14 +29,14 @@ template< template< typename Real, typename Device, typename Index, typename Mes
typename Real,
typename ConfigTag,
bool enabled = ConfigTagReal< ConfigTag, Real >::enabled >
class SolverInitiatorRealResolver{};
class SolverInitiatorRealResolver {};
template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter,
typename Real,
typename Device,
typename ConfigTag,
bool enabled = ConfigTagDevice< ConfigTag, Device >::enabled >
class SolverInitiatorDeviceResolver{};
class SolverInitiatorDeviceResolver {};
template< template< typename Real, typename Device, typename Index, typename MeshType, typename ConfigTag, typename SolverStarter > class ProblemSetter,
typename Real,
......@@ -41,7 +44,16 @@ template< template< typename Real, typename Device, typename Index, typename Mes
typename Index,
typename ConfigTag,
bool enabled = ConfigTagIndex< ConfigTag, Index >::enabled >
class SolverInitiatorIndexResolver{};
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 >
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment