Loading src/implementation/solvers/tnlSolverStarter_impl.h +37 −5 Original line number Diff line number Diff line Loading @@ -87,6 +87,8 @@ bool tnlSolverStarter :: setDiscreteSolver( Problem& problem, solver. setSolverMonitor( odeSolverMonitor ); else solver. setSolverMonitor( * ( tnlODESolverMonitor< typename Problem :: RealType, typename Problem :: IndexType >* ) problem. getSolverMonitor() ); if( ! setIterativeSolver( solver, parameters ) ) return false; return setExplicitTimeDiscretisation( problem, parameters, solver ); } Loading @@ -103,7 +105,8 @@ bool tnlSolverStarter :: setDiscreteSolver( Problem& problem, solver. setSolverMonitor( odeSolverMonitor ); else solver. setSolverMonitor( * ( tnlODESolverMonitor< typename Problem :: RealType, typename Problem :: IndexType >* ) problem. getSolverMonitor() ); if( ! setIterativeSolver( solver, parameters ) ) return false; return setExplicitTimeDiscretisation( problem, parameters, solver ); } Loading Loading @@ -166,6 +169,17 @@ bool tnlSolverStarter :: setDiscreteSolver( Problem& problem, return false; } template< typename IterativeSolver > bool tnlSolverStarter :: setIterativeSolver( IterativeSolver& solver, const tnlParameterContainer& parameters ) const { int maxSolverIterations( 0 ); if( parameters.GetParameter< int >( "max-solver-iterations", maxSolverIterations ) ) solver. setMaxIterationsNumber( maxSolverIterations ); return true; } template< typename Problem, template < typename > class DiscreteSolver > bool tnlSolverStarter :: setExplicitTimeDiscretisation( Problem& problem, Loading Loading @@ -252,7 +266,8 @@ bool tnlSolverStarter :: runPDESolver( Problem& problem, if( verbose ) writeProlog( cout, parameters, problem ); tnlString logFileName; if( parameters. GetParameter< tnlString >( "log-file", logFileName ) ) bool haveLogFile = parameters. GetParameter< tnlString >( "log-file", logFileName ); if( haveLogFile ) { fstream logFile; logFile. open( logFileName. getString(), ios :: out ); Loading Loading @@ -285,8 +300,25 @@ bool tnlSolverStarter :: runPDESolver( Problem& problem, /**** * Start the solver */ bool returnCode( true ); if( ! solver. solve() ) { returnCode = false; if( verbose ) cerr << endl << "The solver did not converge. " << endl; fstream logFile; logFile. open( logFileName. getString(), ios :: out | ios :: app ); if( ! logFile ) { cerr << "Unable to open the log file " << logFileName << "." << endl; return false; } else { logFile << "The solver did not converge. " << endl; logFile. close(); } } /**** * Stop timers Loading @@ -301,7 +333,7 @@ bool tnlSolverStarter :: runPDESolver( Problem& problem, */ if( verbose ) writeEpilog( cout ); if( parameters. GetParameter< tnlString >( "log-file", logFileName ) ) if( haveLogFile ) { fstream logFile; logFile. open( logFileName. getString(), ios :: out | ios :: app ); Loading @@ -316,7 +348,7 @@ bool tnlSolverStarter :: runPDESolver( Problem& problem, logFile. close(); } } return true; return returnCode; } bool tnlSolverStarter :: writeEpilog( ostream& str ) Loading src/solvers/tnlSolverStarter.h +4 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,10 @@ class tnlSolverStarter protected: template< typename IterativeSolver > bool setIterativeSolver( IterativeSolver& solver, const tnlParameterContainer& parameters ) const; int verbose; int logWidth; Loading Loading
src/implementation/solvers/tnlSolverStarter_impl.h +37 −5 Original line number Diff line number Diff line Loading @@ -87,6 +87,8 @@ bool tnlSolverStarter :: setDiscreteSolver( Problem& problem, solver. setSolverMonitor( odeSolverMonitor ); else solver. setSolverMonitor( * ( tnlODESolverMonitor< typename Problem :: RealType, typename Problem :: IndexType >* ) problem. getSolverMonitor() ); if( ! setIterativeSolver( solver, parameters ) ) return false; return setExplicitTimeDiscretisation( problem, parameters, solver ); } Loading @@ -103,7 +105,8 @@ bool tnlSolverStarter :: setDiscreteSolver( Problem& problem, solver. setSolverMonitor( odeSolverMonitor ); else solver. setSolverMonitor( * ( tnlODESolverMonitor< typename Problem :: RealType, typename Problem :: IndexType >* ) problem. getSolverMonitor() ); if( ! setIterativeSolver( solver, parameters ) ) return false; return setExplicitTimeDiscretisation( problem, parameters, solver ); } Loading Loading @@ -166,6 +169,17 @@ bool tnlSolverStarter :: setDiscreteSolver( Problem& problem, return false; } template< typename IterativeSolver > bool tnlSolverStarter :: setIterativeSolver( IterativeSolver& solver, const tnlParameterContainer& parameters ) const { int maxSolverIterations( 0 ); if( parameters.GetParameter< int >( "max-solver-iterations", maxSolverIterations ) ) solver. setMaxIterationsNumber( maxSolverIterations ); return true; } template< typename Problem, template < typename > class DiscreteSolver > bool tnlSolverStarter :: setExplicitTimeDiscretisation( Problem& problem, Loading Loading @@ -252,7 +266,8 @@ bool tnlSolverStarter :: runPDESolver( Problem& problem, if( verbose ) writeProlog( cout, parameters, problem ); tnlString logFileName; if( parameters. GetParameter< tnlString >( "log-file", logFileName ) ) bool haveLogFile = parameters. GetParameter< tnlString >( "log-file", logFileName ); if( haveLogFile ) { fstream logFile; logFile. open( logFileName. getString(), ios :: out ); Loading Loading @@ -285,8 +300,25 @@ bool tnlSolverStarter :: runPDESolver( Problem& problem, /**** * Start the solver */ bool returnCode( true ); if( ! solver. solve() ) { returnCode = false; if( verbose ) cerr << endl << "The solver did not converge. " << endl; fstream logFile; logFile. open( logFileName. getString(), ios :: out | ios :: app ); if( ! logFile ) { cerr << "Unable to open the log file " << logFileName << "." << endl; return false; } else { logFile << "The solver did not converge. " << endl; logFile. close(); } } /**** * Stop timers Loading @@ -301,7 +333,7 @@ bool tnlSolverStarter :: runPDESolver( Problem& problem, */ if( verbose ) writeEpilog( cout ); if( parameters. GetParameter< tnlString >( "log-file", logFileName ) ) if( haveLogFile ) { fstream logFile; logFile. open( logFileName. getString(), ios :: out | ios :: app ); Loading @@ -316,7 +348,7 @@ bool tnlSolverStarter :: runPDESolver( Problem& problem, logFile. close(); } } return true; return returnCode; } bool tnlSolverStarter :: writeEpilog( ostream& str ) Loading
src/solvers/tnlSolverStarter.h +4 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,10 @@ class tnlSolverStarter protected: template< typename IterativeSolver > bool setIterativeSolver( IterativeSolver& solver, const tnlParameterContainer& parameters ) const; int verbose; int logWidth; Loading