diff --git a/examples/simple-solver/main.cpp b/examples/simple-solver/main.cpp index ff58abf960acf3a80b86d72aa9a847f47946b03e..9d3e4ce207b3d136a97a7fa21217e55afcb84eb4 100644 --- a/examples/simple-solver/main.cpp +++ b/examples/simple-solver/main.cpp @@ -20,9 +20,17 @@ #include <config/tnlBasicTypesSetter.h> #include <solvers/tnlProblemSolver.h> +#include <core/tnlHost.h> +#include <config/tnlParameterContainer.h> + int main( int argc, char* argv[] ) { typedef simpleProblemTypesSetter ProblemSetter; + + tnlParameterContainer parameters; + ProblemSetter problemSetter; + problemSetter. run< double, tnlHost, int >( parameters ); + typedef tnlBasicTypesSetter< ProblemSetter > BasicTypesSetter; tnlProblemSolver< BasicTypesSetter > problemSolver; if( ! problemSolver. run( CONFIG_FILE, argc, argv ) ) diff --git a/src/implementation/config/tnlBasicTypesSetter_impl.h b/src/implementation/config/tnlBasicTypesSetter_impl.h index 68e79c6a6b2ae64aa2ef0555a639d0b1fd639f1c..d1252aa61fee7e4cb1c1fab99e03fa26ab1b897c 100644 --- a/src/implementation/config/tnlBasicTypesSetter_impl.h +++ b/src/implementation/config/tnlBasicTypesSetter_impl.h @@ -111,11 +111,14 @@ bool tnlBasicTypesSetter< ProblemTypesSetter > :: setDeviceType( const tnlParame return false; } ProblemTypesSetter problemTypesSetter; + /*const tnlString& device2 = parameters. GetParameter< tnlString >( "device" ); + problemTypesSetter. run< double, tnlHost, int >( parameters ); + problemTypesSetter. run< RealType, tnlHost, IndexType >( parameters ); if( device == "host" ) return problemTypesSetter. run< RealType, tnlHost, IndexType >( parameters ); if( device == "cuda" ) return problemTypesSetter. run( parameters ); - cerr << "The device '" << device << "' is not defined. " << endl; + cerr << "The device '" << device << "' is not defined. " << endl;*/ return false; } diff --git a/src/implementation/solvers/linear/krylov/tnlGMRESSolver_impl.h b/src/implementation/solvers/linear/krylov/tnlGMRESSolver_impl.h index ddc12d4359aaba44c0642a554c0ffa8c4dfad717..d3033cd9cb959133206d1b74fa16de2b57852696 100644 --- a/src/implementation/solvers/linear/krylov/tnlGMRESSolver_impl.h +++ b/src/implementation/solvers/linear/krylov/tnlGMRESSolver_impl.h @@ -272,12 +272,13 @@ tnlGMRESSolver< Matrix, Preconditioner > :: ~tnlGMRESSolver() template< typename Matrix, typename Preconditioner > + template< typename Vector > void tnlGMRESSolver< Matrix, Preconditioner > :: update( IndexType k, IndexType m, const tnlVector< RealType, tnlHost, IndexType >& H, const tnlVector< RealType, tnlHost, IndexType >& s, tnlVector< RealType, DeviceType, IndexType >& v, - tnlVector< RealType, DeviceType, IndexType >& x ) + Vector& x ) { //dbgFunctionName( "tnlGMRESSolver", "Update" ); tnlVector< RealType, tnlHost, IndexType > y( "tnlGMRESSolver::update:y" ); diff --git a/src/solvers/linear/krylov/tnlGMRESSolver.h b/src/solvers/linear/krylov/tnlGMRESSolver.h index a9ac9195d6df1d36630626296c0eceb3578a9ff9..1a1b07cc1c3f765eaafc10bbc6656f6ff8f6abc2 100644 --- a/src/solvers/linear/krylov/tnlGMRESSolver.h +++ b/src/solvers/linear/krylov/tnlGMRESSolver.h @@ -59,12 +59,13 @@ class tnlGMRESSolver : public tnlObject, protected: + template< typename Vector > void update( IndexType k, IndexType m, const tnlVector< RealType, tnlHost, IndexType >& H, const tnlVector< RealType, tnlHost, IndexType >& s, tnlVector< RealType, DeviceType, IndexType >& v, - tnlVector< RealType, DeviceType, IndexType >& x ); + Vector& x ); void generatePlaneRotation( RealType &dx, RealType &dy,