Loading CMakeLists.txt +0 −17 Original line number Diff line number Diff line Loading @@ -182,23 +182,6 @@ if( WITH_CUDA STREQUAL "yes" ) # TODO: this is necessary only due to a bug in cmake set( CUDA_ADD_LIBRARY_OPTIONS -shared ) #### # Check for cuBLAS # if( NOT WITH_CUBLAS STREQUAL "no" ) find_path( CUBLAS_INCLUDE_DIR cublas_v2.h /usr/local/cuda/include ${CUDA_INCLUDE_DIRS} DOC "CUBLAS headers." ) if( ${CUBLAS_INCLUDE_DIR} STREQUAL "CUBLAS_INCLUDE_DIR-NOTFOUND" ) message( "CUBLAS not found." ) set( HAVE_CUBLAS "//#define HAVE_CUBLAS 1" ) else() message( "CUBLAS found. -- ${CUBLAS_INCLUDE_DIR}" ) set( HAVE_CUBLAS "#define HAVE_CUBLAS 1" ) endif() endif( NOT WITH_CUBLAS STREQUAL "no" ) #### # Check for CUSP # Loading doc/pde-solvers.rst +6 −0 Original line number Diff line number Diff line =========== PDE Solvers =========== Finite difference method Elliptic problems Parabolic problems No newline at end of file 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 Loading
CMakeLists.txt +0 −17 Original line number Diff line number Diff line Loading @@ -182,23 +182,6 @@ if( WITH_CUDA STREQUAL "yes" ) # TODO: this is necessary only due to a bug in cmake set( CUDA_ADD_LIBRARY_OPTIONS -shared ) #### # Check for cuBLAS # if( NOT WITH_CUBLAS STREQUAL "no" ) find_path( CUBLAS_INCLUDE_DIR cublas_v2.h /usr/local/cuda/include ${CUDA_INCLUDE_DIRS} DOC "CUBLAS headers." ) if( ${CUBLAS_INCLUDE_DIR} STREQUAL "CUBLAS_INCLUDE_DIR-NOTFOUND" ) message( "CUBLAS not found." ) set( HAVE_CUBLAS "//#define HAVE_CUBLAS 1" ) else() message( "CUBLAS found. -- ${CUBLAS_INCLUDE_DIR}" ) set( HAVE_CUBLAS "#define HAVE_CUBLAS 1" ) endif() endif( NOT WITH_CUBLAS STREQUAL "no" ) #### # Check for CUSP # Loading
doc/pde-solvers.rst +6 −0 Original line number Diff line number Diff line =========== PDE Solvers =========== Finite difference method Elliptic problems Parabolic problems No newline at end of file
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