Loading examples/heat-equation/HeatEquationBuildConfigTag.h +32 −25 Original line number Diff line number Diff line Loading @@ -11,50 +11,57 @@ #pragma once #include <TNL/Solvers/BuildConfigTags.h> #include <TNL/Meshes/BuildConfigTags.h> namespace TNL { namespace Solvers { class HeatEquationBuildConfig { public: class HeatEquationBuildConfigTag{}; static void print() { std::cerr << "HeatEquationBuildConfig" << std::endl; } }; namespace Solvers { /**** * Turn off support for float and long double. */ template<> struct ConfigTagReal< HeatEquationBuildConfig, float > { enum { enabled = false }; }; template<> struct ConfigTagReal< HeatEquationBuildConfig, long double > { enum { enabled = false }; }; template<> struct ConfigTagReal< HeatEquationBuildConfigTag, float > { enum { enabled = false }; }; template<> struct ConfigTagReal< HeatEquationBuildConfigTag, long double > { enum { enabled = false }; }; /**** * Turn off support for short int and long int indexing. */ template<> struct ConfigTagIndex< HeatEquationBuildConfig, short int >{ enum { enabled = false }; }; template<> struct ConfigTagIndex< HeatEquationBuildConfig, 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< HeatEquationBuildConfig, Meshes::Grid< Dimension, Real, Device, Index > > { enum { enabled = ConfigTagDimension< HeatEquationBuildConfig, Dimension >::enabled && ConfigTagReal< HeatEquationBuildConfig, Real >::enabled && ConfigTagDevice< HeatEquationBuildConfig, Device >::enabled && ConfigTagIndex< HeatEquationBuildConfig, Index >::enabled }; }; template<> struct ConfigTagIndex< HeatEquationBuildConfigTag, short int >{ enum { enabled = false }; }; template<> struct ConfigTagIndex< HeatEquationBuildConfigTag, long int >{ enum { enabled = false }; }; /**** * Please, chose your preferred time discretization here. */ template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfig, ExplicitTimeDiscretisationTag >{ enum { enabled = true }; }; template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfig, SemiImplicitTimeDiscretisationTag >{ enum { enabled = false }; }; template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfig, ImplicitTimeDiscretisationTag >{ enum { enabled = false }; }; template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfigTag, ExplicitTimeDiscretisationTag >{ enum { enabled = true }; }; template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfigTag, SemiImplicitTimeDiscretisationTag >{ enum { enabled = false }; }; template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfigTag, ImplicitTimeDiscretisationTag >{ enum { enabled = false }; }; /**** * Only the Runge-Kutta-Merson solver is enabled by default. */ template<> struct ConfigTagExplicitSolver< HeatEquationBuildConfig, ExplicitEulerSolverTag >{ enum { enabled = false }; }; template<> struct ConfigTagExplicitSolver< HeatEquationBuildConfigTag, ExplicitEulerSolverTag >{ enum { enabled = false }; }; } // namespace Solvers namespace Meshes { namespace BuildConfigTags { template< int Dimensions > struct GridDimensionTag< HeatEquationBuildConfigTag, Dimensions >{ enum { enabled = true }; }; /**** * Turn off support for float and long double. */ template<> struct GridRealTag< HeatEquationBuildConfigTag, float > { enum { enabled = false }; }; template<> struct GridRealTag< HeatEquationBuildConfigTag, long double > { enum { enabled = false }; }; /**** * Turn off support for short int and long int indexing. */ template<> struct GridIndexTag< HeatEquationBuildConfigTag, short int >{ enum { enabled = false }; }; template<> struct GridIndexTag< HeatEquationBuildConfigTag, long int >{ enum { enabled = false }; }; } // namespace BuildConfigTags } // namespace Meshes } // namespace TNL examples/heat-equation/tnl-heat-equation-eoc.h +2 −2 Original line number Diff line number Diff line Loading @@ -24,8 +24,8 @@ using namespace TNL; using namespace TNL::Problems; //typedef tnlDefaultBuildMeshConfig BuildConfig; typedef Solvers::FastBuildConfig BuildConfig; //typedef Solvers::DefaultBuildConfigTag BuildConfig; typedef Solvers::FastBuildConfigTag BuildConfig; template< typename MeshConfig > class heatEquationEocConfig Loading examples/heat-equation/tnl-heat-equation.h +2 −3 Original line number Diff line number Diff line Loading @@ -26,9 +26,8 @@ using namespace TNL; using namespace TNL::Problems; //typedef tnlDefaultBuildMeshConfig BuildConfig; typedef Solvers::FastBuildConfig BuildConfig; //typedef Solvers::HeatEquationBuildConfig BuildConfig; //typedef Solvers::DefaultBuildConfigTag BuildConfig; typedef Solvers::FastBuildConfigTag BuildConfig; template< typename MeshConfig > class heatEquationConfig Loading examples/inviscid-flow/eulerBuildConfigTag.h +21 −12 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ #define eulerBUILDCONFIGTAG_H_ #include <TNL/Solvers/BuildConfigTags.h> #include <TNL/Meshes/BuildConfigTags.h> namespace TNL { Loading @@ -21,18 +22,6 @@ template<> struct ConfigTagReal< eulerBuildConfigTag, long double > { enum { ena template<> struct ConfigTagIndex< eulerBuildConfigTag, short int >{ enum { enabled = false }; }; template<> struct ConfigTagIndex< eulerBuildConfigTag, long int >{ enum { enabled = false }; }; template< int Dimension > struct ConfigTagDimension< eulerBuildConfigTag, Dimension >{ enum { enabled = ( Dimension == 1 ) }; }; /**** * 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< eulerBuildConfigTag, Meshes::Grid< Dimension, Real, Device, Index > > { enum { enabled = ConfigTagDimension< eulerBuildConfigTag, Dimension >::enabled && ConfigTagReal< eulerBuildConfigTag, Real >::enabled && ConfigTagDevice< eulerBuildConfigTag, Device >::enabled && ConfigTagIndex< eulerBuildConfigTag, Index >::enabled }; }; /**** * Please, chose your preferred time discretisation here. */ Loading @@ -46,6 +35,26 @@ template<> struct ConfigTagTimeDiscretisation< eulerBuildConfigTag, ImplicitTime template<> struct ConfigTagExplicitSolver< eulerBuildConfigTag, ExplicitEulerSolverTag >{ enum { enabled = true }; }; } // namespace Solvers namespace Meshes { namespace BuildConfigTags { template< int Dimensions > struct GridDimensionTag< eulerBuildConfigTag, Dimensions >{ enum { enabled = ( Dimensions == 1 ) }; }; /**** * Turn off support for float and long double. */ template<> struct GridRealTag< eulerBuildConfigTag, float > { enum { enabled = false }; }; template<> struct GridRealTag< eulerBuildConfigTag, long double > { enum { enabled = false }; }; /**** * Turn off support for short int and long int indexing. */ template<> struct GridIndexTag< eulerBuildConfigTag, short int >{ enum { enabled = false }; }; template<> struct GridIndexTag< eulerBuildConfigTag, long int >{ enum { enabled = false }; }; } // namespace BuildConfigTags } // namespace Meshes } // namespace TNL #endif /* eulerBUILDCONFIGTAG_H_ */ examples/transport-equation/transportEquationBuildConfigTag.h +21 −11 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ #pragma once #include <TNL/Solvers/BuildConfigTags.h> #include <TNL/Meshes/BuildConfigTags.h> namespace TNL { Loading @@ -31,17 +32,6 @@ template<> struct ConfigTagReal< transportEquationBuildConfigTag, long double > template<> struct ConfigTagIndex< transportEquationBuildConfigTag, short int >{ enum { enabled = false }; }; template<> struct ConfigTagIndex< transportEquationBuildConfigTag, long int >{ enum { enabled = false }; }; /**** * Use of Grid is enabled for allowed dimensions and Real, Device and Index types. */ template< int Dimensions, typename Real, typename Device, typename Index > struct ConfigTagMesh< transportEquationBuildConfigTag, Meshes::Grid< Dimensions, Real, Device, Index > > { enum { enabled = ConfigTagDimension< transportEquationBuildConfigTag, Dimensions >::enabled && ConfigTagReal< transportEquationBuildConfigTag, Real >::enabled && ConfigTagDevice< transportEquationBuildConfigTag, Device >::enabled && ConfigTagIndex< transportEquationBuildConfigTag, Index >::enabled }; }; /**** * Please, chose your preferred time discretisation here. */ Loading @@ -55,4 +45,24 @@ template<> struct ConfigTagTimeDiscretisation< transportEquationBuildConfigTag, template<> struct ConfigTagExplicitSolver< transportEquationBuildConfigTag, Solvers::ExplicitEulerSolverTag >{ enum { enabled = true }; }; } // namespace Solvers namespace Meshes { namespace BuildConfigTags { template< int Dimensions > struct GridDimensionTag< transportEquationBuildConfigTag, Dimensions >{ enum { enabled = true }; }; /**** * Turn off support for float and long double. */ template<> struct GridRealTag< transportEquationBuildConfigTag, float > { enum { enabled = false }; }; template<> struct GridRealTag< transportEquationBuildConfigTag, long double > { enum { enabled = false }; }; /**** * Turn off support for short int and long int indexing. */ template<> struct GridIndexTag< transportEquationBuildConfigTag, short int >{ enum { enabled = false }; }; template<> struct GridIndexTag< transportEquationBuildConfigTag, long int >{ enum { enabled = false }; }; } // namespace BuildConfigTags } // namespace Meshes } // namespace TNL Loading
examples/heat-equation/HeatEquationBuildConfigTag.h +32 −25 Original line number Diff line number Diff line Loading @@ -11,50 +11,57 @@ #pragma once #include <TNL/Solvers/BuildConfigTags.h> #include <TNL/Meshes/BuildConfigTags.h> namespace TNL { namespace Solvers { class HeatEquationBuildConfig { public: class HeatEquationBuildConfigTag{}; static void print() { std::cerr << "HeatEquationBuildConfig" << std::endl; } }; namespace Solvers { /**** * Turn off support for float and long double. */ template<> struct ConfigTagReal< HeatEquationBuildConfig, float > { enum { enabled = false }; }; template<> struct ConfigTagReal< HeatEquationBuildConfig, long double > { enum { enabled = false }; }; template<> struct ConfigTagReal< HeatEquationBuildConfigTag, float > { enum { enabled = false }; }; template<> struct ConfigTagReal< HeatEquationBuildConfigTag, long double > { enum { enabled = false }; }; /**** * Turn off support for short int and long int indexing. */ template<> struct ConfigTagIndex< HeatEquationBuildConfig, short int >{ enum { enabled = false }; }; template<> struct ConfigTagIndex< HeatEquationBuildConfig, 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< HeatEquationBuildConfig, Meshes::Grid< Dimension, Real, Device, Index > > { enum { enabled = ConfigTagDimension< HeatEquationBuildConfig, Dimension >::enabled && ConfigTagReal< HeatEquationBuildConfig, Real >::enabled && ConfigTagDevice< HeatEquationBuildConfig, Device >::enabled && ConfigTagIndex< HeatEquationBuildConfig, Index >::enabled }; }; template<> struct ConfigTagIndex< HeatEquationBuildConfigTag, short int >{ enum { enabled = false }; }; template<> struct ConfigTagIndex< HeatEquationBuildConfigTag, long int >{ enum { enabled = false }; }; /**** * Please, chose your preferred time discretization here. */ template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfig, ExplicitTimeDiscretisationTag >{ enum { enabled = true }; }; template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfig, SemiImplicitTimeDiscretisationTag >{ enum { enabled = false }; }; template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfig, ImplicitTimeDiscretisationTag >{ enum { enabled = false }; }; template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfigTag, ExplicitTimeDiscretisationTag >{ enum { enabled = true }; }; template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfigTag, SemiImplicitTimeDiscretisationTag >{ enum { enabled = false }; }; template<> struct ConfigTagTimeDiscretisation< HeatEquationBuildConfigTag, ImplicitTimeDiscretisationTag >{ enum { enabled = false }; }; /**** * Only the Runge-Kutta-Merson solver is enabled by default. */ template<> struct ConfigTagExplicitSolver< HeatEquationBuildConfig, ExplicitEulerSolverTag >{ enum { enabled = false }; }; template<> struct ConfigTagExplicitSolver< HeatEquationBuildConfigTag, ExplicitEulerSolverTag >{ enum { enabled = false }; }; } // namespace Solvers namespace Meshes { namespace BuildConfigTags { template< int Dimensions > struct GridDimensionTag< HeatEquationBuildConfigTag, Dimensions >{ enum { enabled = true }; }; /**** * Turn off support for float and long double. */ template<> struct GridRealTag< HeatEquationBuildConfigTag, float > { enum { enabled = false }; }; template<> struct GridRealTag< HeatEquationBuildConfigTag, long double > { enum { enabled = false }; }; /**** * Turn off support for short int and long int indexing. */ template<> struct GridIndexTag< HeatEquationBuildConfigTag, short int >{ enum { enabled = false }; }; template<> struct GridIndexTag< HeatEquationBuildConfigTag, long int >{ enum { enabled = false }; }; } // namespace BuildConfigTags } // namespace Meshes } // namespace TNL
examples/heat-equation/tnl-heat-equation-eoc.h +2 −2 Original line number Diff line number Diff line Loading @@ -24,8 +24,8 @@ using namespace TNL; using namespace TNL::Problems; //typedef tnlDefaultBuildMeshConfig BuildConfig; typedef Solvers::FastBuildConfig BuildConfig; //typedef Solvers::DefaultBuildConfigTag BuildConfig; typedef Solvers::FastBuildConfigTag BuildConfig; template< typename MeshConfig > class heatEquationEocConfig Loading
examples/heat-equation/tnl-heat-equation.h +2 −3 Original line number Diff line number Diff line Loading @@ -26,9 +26,8 @@ using namespace TNL; using namespace TNL::Problems; //typedef tnlDefaultBuildMeshConfig BuildConfig; typedef Solvers::FastBuildConfig BuildConfig; //typedef Solvers::HeatEquationBuildConfig BuildConfig; //typedef Solvers::DefaultBuildConfigTag BuildConfig; typedef Solvers::FastBuildConfigTag BuildConfig; template< typename MeshConfig > class heatEquationConfig Loading
examples/inviscid-flow/eulerBuildConfigTag.h +21 −12 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ #define eulerBUILDCONFIGTAG_H_ #include <TNL/Solvers/BuildConfigTags.h> #include <TNL/Meshes/BuildConfigTags.h> namespace TNL { Loading @@ -21,18 +22,6 @@ template<> struct ConfigTagReal< eulerBuildConfigTag, long double > { enum { ena template<> struct ConfigTagIndex< eulerBuildConfigTag, short int >{ enum { enabled = false }; }; template<> struct ConfigTagIndex< eulerBuildConfigTag, long int >{ enum { enabled = false }; }; template< int Dimension > struct ConfigTagDimension< eulerBuildConfigTag, Dimension >{ enum { enabled = ( Dimension == 1 ) }; }; /**** * 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< eulerBuildConfigTag, Meshes::Grid< Dimension, Real, Device, Index > > { enum { enabled = ConfigTagDimension< eulerBuildConfigTag, Dimension >::enabled && ConfigTagReal< eulerBuildConfigTag, Real >::enabled && ConfigTagDevice< eulerBuildConfigTag, Device >::enabled && ConfigTagIndex< eulerBuildConfigTag, Index >::enabled }; }; /**** * Please, chose your preferred time discretisation here. */ Loading @@ -46,6 +35,26 @@ template<> struct ConfigTagTimeDiscretisation< eulerBuildConfigTag, ImplicitTime template<> struct ConfigTagExplicitSolver< eulerBuildConfigTag, ExplicitEulerSolverTag >{ enum { enabled = true }; }; } // namespace Solvers namespace Meshes { namespace BuildConfigTags { template< int Dimensions > struct GridDimensionTag< eulerBuildConfigTag, Dimensions >{ enum { enabled = ( Dimensions == 1 ) }; }; /**** * Turn off support for float and long double. */ template<> struct GridRealTag< eulerBuildConfigTag, float > { enum { enabled = false }; }; template<> struct GridRealTag< eulerBuildConfigTag, long double > { enum { enabled = false }; }; /**** * Turn off support for short int and long int indexing. */ template<> struct GridIndexTag< eulerBuildConfigTag, short int >{ enum { enabled = false }; }; template<> struct GridIndexTag< eulerBuildConfigTag, long int >{ enum { enabled = false }; }; } // namespace BuildConfigTags } // namespace Meshes } // namespace TNL #endif /* eulerBUILDCONFIGTAG_H_ */
examples/transport-equation/transportEquationBuildConfigTag.h +21 −11 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ #pragma once #include <TNL/Solvers/BuildConfigTags.h> #include <TNL/Meshes/BuildConfigTags.h> namespace TNL { Loading @@ -31,17 +32,6 @@ template<> struct ConfigTagReal< transportEquationBuildConfigTag, long double > template<> struct ConfigTagIndex< transportEquationBuildConfigTag, short int >{ enum { enabled = false }; }; template<> struct ConfigTagIndex< transportEquationBuildConfigTag, long int >{ enum { enabled = false }; }; /**** * Use of Grid is enabled for allowed dimensions and Real, Device and Index types. */ template< int Dimensions, typename Real, typename Device, typename Index > struct ConfigTagMesh< transportEquationBuildConfigTag, Meshes::Grid< Dimensions, Real, Device, Index > > { enum { enabled = ConfigTagDimension< transportEquationBuildConfigTag, Dimensions >::enabled && ConfigTagReal< transportEquationBuildConfigTag, Real >::enabled && ConfigTagDevice< transportEquationBuildConfigTag, Device >::enabled && ConfigTagIndex< transportEquationBuildConfigTag, Index >::enabled }; }; /**** * Please, chose your preferred time discretisation here. */ Loading @@ -55,4 +45,24 @@ template<> struct ConfigTagTimeDiscretisation< transportEquationBuildConfigTag, template<> struct ConfigTagExplicitSolver< transportEquationBuildConfigTag, Solvers::ExplicitEulerSolverTag >{ enum { enabled = true }; }; } // namespace Solvers namespace Meshes { namespace BuildConfigTags { template< int Dimensions > struct GridDimensionTag< transportEquationBuildConfigTag, Dimensions >{ enum { enabled = true }; }; /**** * Turn off support for float and long double. */ template<> struct GridRealTag< transportEquationBuildConfigTag, float > { enum { enabled = false }; }; template<> struct GridRealTag< transportEquationBuildConfigTag, long double > { enum { enabled = false }; }; /**** * Turn off support for short int and long int indexing. */ template<> struct GridIndexTag< transportEquationBuildConfigTag, short int >{ enum { enabled = false }; }; template<> struct GridIndexTag< transportEquationBuildConfigTag, long int >{ enum { enabled = false }; }; } // namespace BuildConfigTags } // namespace Meshes } // namespace TNL