diff --git a/src/TNL/Experimental/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnl-direct-eikonal-solver.h b/src/TNL/Experimental/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnl-direct-eikonal-solver.h index 225ce04b9851b93dd00d37644a7c042f563a3b9d..c4055d95df7afe453337e592de0f9ef224226b52 100644 --- a/src/TNL/Experimental/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnl-direct-eikonal-solver.h +++ b/src/TNL/Experimental/Hamilton-Jacobi/Solvers/hamilton-jacobi/tnl-direct-eikonal-solver.h @@ -24,7 +24,7 @@ using namespace TNL; //typedef tnlDefaultBuildMeshConfig BuildConfig; -typedef Solvers::FastBuildConfig BuildConfig; +typedef Solvers::FastBuildConfigTag BuildConfig; template< typename MeshConfig > class tnlDirectEikonalSolverConfig diff --git a/src/TNL/Solvers/BuildConfigTags.h b/src/TNL/Solvers/BuildConfigTags.h index e89aa9d925c7bfe748ec8ab1f98bbc8408787d18..080dfb2744371b12db15b4560c5ccd2e6fd3e89a 100644 --- a/src/TNL/Solvers/BuildConfigTags.h +++ b/src/TNL/Solvers/BuildConfigTags.h @@ -26,7 +26,7 @@ namespace TNL { namespace Solvers { -class DefaultBuildConfigTag{}; +class DefaultBuildConfigTag {}; /**** * All devices are enabled by default. Those which are not available diff --git a/src/TNL/Solvers/FastBuildConfigTag.h b/src/TNL/Solvers/FastBuildConfigTag.h index 45ab71b8d84b447a178f3a1c338b1a9f4cf050ca..211e316fccddbbe3d43836e4c5e72a3820724f3e 100644 --- a/src/TNL/Solvers/FastBuildConfigTag.h +++ b/src/TNL/Solvers/FastBuildConfigTag.h @@ -15,46 +15,46 @@ namespace TNL { namespace Solvers { -class FastBuildConfig +class FastBuildConfigTag { public: - static void print() { std::cerr << "FastBuildConfig" << std::endl; } + static void print() { std::cerr << "FastBuildConfigTag" << std::endl; } }; /**** * Turn off support for float and long double. */ -template<> struct ConfigTagReal< FastBuildConfig, float > { enum { enabled = false }; }; -template<> struct ConfigTagReal< FastBuildConfig, long double > { enum { enabled = false }; }; +template<> struct ConfigTagReal< FastBuildConfigTag, float > { enum { enabled = false }; }; +template<> struct ConfigTagReal< FastBuildConfigTag, long double > { enum { enabled = false }; }; /**** * Turn off support for short int and long int indexing. */ -template<> struct ConfigTagIndex< FastBuildConfig, short int >{ enum { enabled = false }; }; -template<> struct ConfigTagIndex< FastBuildConfig, long int >{ enum { enabled = false }; }; +template<> struct ConfigTagIndex< FastBuildConfigTag, short int >{ enum { enabled = false }; }; +template<> struct ConfigTagIndex< FastBuildConfigTag, long int >{ enum { enabled = false }; }; /**** * Use of Grid is enabled for allowed dimensions and Real, Device and Index types. */ -template< int Dimension, typename Real, typename Device, typename Index > - struct ConfigTagMesh< FastBuildConfig, Meshes::Grid< Dimension, Real, Device, Index > > - { enum { enabled = ConfigTagDimension< FastBuildConfig, Dimension >::enabled && - ConfigTagReal< FastBuildConfig, Real >::enabled && - ConfigTagDevice< FastBuildConfig, Device >::enabled && - ConfigTagIndex< FastBuildConfig, Index >::enabled }; }; +template< int Dimensions, typename Real, typename Device, typename Index > + struct ConfigTagMesh< FastBuildConfigTag, Meshes::Grid< Dimensions, Real, Device, Index > > + { enum { enabled = ConfigTagDimensions< FastBuildConfigTag, Dimensions >::enabled && + ConfigTagReal< FastBuildConfigTag, Real >::enabled && + ConfigTagDevice< FastBuildConfigTag, Device >::enabled && + ConfigTagIndex< FastBuildConfigTag, Index >::enabled }; }; /**** * Please, chose your preferred time discretisation here. */ -template<> struct ConfigTagTimeDiscretisation< FastBuildConfig, ExplicitTimeDiscretisationTag >{ enum { enabled = true }; }; -template<> struct ConfigTagTimeDiscretisation< FastBuildConfig, SemiImplicitTimeDiscretisationTag >{ enum { enabled = true }; }; -template<> struct ConfigTagTimeDiscretisation< FastBuildConfig, ImplicitTimeDiscretisationTag >{ enum { enabled = false }; }; +template<> struct ConfigTagTimeDiscretisation< FastBuildConfigTag, ExplicitTimeDiscretisationTag >{ enum { enabled = true }; }; +template<> struct ConfigTagTimeDiscretisation< FastBuildConfigTag, SemiImplicitTimeDiscretisationTag >{ enum { enabled = true }; }; +template<> struct ConfigTagTimeDiscretisation< FastBuildConfigTag, ImplicitTimeDiscretisationTag >{ enum { enabled = false }; }; /**** * Only the Runge-Kutta-Merson solver is enabled by default. */ -//template<> struct ConfigTagExplicitSolver< FastBuildConfig, ExplicitEulerSolverTag >{ enum { enabled = false }; }; +//template<> struct ConfigTagExplicitSolver< FastBuildConfigTag, ExplicitEulerSolverTag >{ enum { enabled = false }; }; } // namespace Solvers } // namespace TNL diff --git a/src/TNL/Solvers/SolverConfig_impl.h b/src/TNL/Solvers/SolverConfig_impl.h index 69b895b50164449e8aa255ea52800d314e3e0da5..9da689521d3b0b5b5c0b752e309f89eab8eca8b6 100644 --- a/src/TNL/Solvers/SolverConfig_impl.h +++ b/src/TNL/Solvers/SolverConfig_impl.h @@ -11,6 +11,7 @@ #pragma once #include <TNL/tnlConfig.h> +#include <TNL/Solvers/SolverConfig.h> #include <TNL/Solvers/BuildConfigTags.h> #include <TNL/Solvers/DummyProblem.h> #include <TNL/Solvers/PDE/ExplicitTimeStepper.h>