Commit 5da8785d authored by Vít Hanousek's avatar Vít Hanousek
Browse files

Merge branch 'mpi' into mpi-explosive

Conflicts:
	src/TNL/Solvers/MeshTypeResolver.h
	src/TNL/Solvers/MeshTypeResolver_impl.h
	src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h
	src/TNL/Solvers/SolverInitiator.h
	src/TNL/Solvers/SolverInitiator_impl.h
parents e4474270 acf5333f
Loading
Loading
Loading
Loading
+0 −17
Original line number Diff line number Diff line
@@ -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
        #
+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
+32 −25
Original line number Diff line number Diff line
@@ -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
+2 −2
Original line number Diff line number Diff line
@@ -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
+2 −3
Original line number Diff line number Diff line
@@ -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