Loading src/TNL/Solvers/MeshTypeResolver.h +2 −24 Original line number Diff line number Diff line Loading @@ -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: Loading src/TNL/Solvers/MeshTypeResolver_impl.h +11 −25 Original line number Diff line number Diff line Loading @@ -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> Loading @@ -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; Loading @@ -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 ) { Loading @@ -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 ) { Loading @@ -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 ) { Loading @@ -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 ) { Loading @@ -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 ) { Loading @@ -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 ) { Loading @@ -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 ) { Loading src/TNL/Solvers/SolverInitiator_impl.h +55 −7 Original line number Diff line number Diff line Loading @@ -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> Loading @@ -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 { Loading @@ -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 ) Loading @@ -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 > Loading Loading @@ -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, Loading Loading @@ -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, Loading @@ -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 ) Loading @@ -164,4 +213,3 @@ class SolverInitiatorIndexResolver< ProblemSetter, Real, Device, Index, ConfigTa } // namespace Solvers } // namespace TNL Loading
src/TNL/Solvers/MeshTypeResolver.h +2 −24 Original line number Diff line number Diff line Loading @@ -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: Loading
src/TNL/Solvers/MeshTypeResolver_impl.h +11 −25 Original line number Diff line number Diff line Loading @@ -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> Loading @@ -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; Loading @@ -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 ) { Loading @@ -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 ) { Loading @@ -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 ) { Loading @@ -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 ) { Loading @@ -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 ) { Loading @@ -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 ) { Loading @@ -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 ) { Loading
src/TNL/Solvers/SolverInitiator_impl.h +55 −7 Original line number Diff line number Diff line Loading @@ -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> Loading @@ -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 { Loading @@ -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 ) Loading @@ -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 > Loading Loading @@ -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, Loading Loading @@ -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, Loading @@ -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 ) Loading @@ -164,4 +213,3 @@ class SolverInitiatorIndexResolver< ProblemSetter, Real, Device, Index, ConfigTa } // namespace Solvers } // namespace TNL