Loading src/TNL/Solvers/PDE/PDESolver.h +3 −2 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ class PDESolver : public Object using IndexType = Index; using SolverMonitorType = IterativeSolverMonitor< RealType, IndexType >; PDESolver(); static void configSetup( Config::ConfigDescription& config, Loading @@ -47,6 +48,8 @@ class PDESolver : public Object void setTotalTimer( Timer& totalTimer ); void setSolverMonitor( SolverMonitorType& solverMonitor ); SolverMonitorType& getSolverMonitor(); bool writeEpilog( Logger& logger ) const; Loading @@ -55,8 +58,6 @@ class PDESolver : public Object Timer *ioTimer, *computeTimer, *totalTimer; SolverMonitorType solverMonitor; SolverMonitorType *solverMonitorPointer; }; Loading src/TNL/Solvers/PDE/PDESolver_impl.h +11 −6 Original line number Diff line number Diff line Loading @@ -21,7 +21,8 @@ template< typename Real, PDESolver< Real, Index >::PDESolver() : ioTimer( 0 ), computeTimer( 0 ), solverMonitorPointer( &this->solverMonitor ) totalTimer( 0 ), solverMonitorPointer( 0 ) { } Loading @@ -41,14 +42,18 @@ PDESolver< Real, Index >:: setup( const Config::ParameterContainer& parameters, const String& prefix ) { /**** * Set-up solver monitor and launch the main loop. */ this->solverMonitorPointer->setVerbose( parameters.getParameter< int >( "verbose" ) ); this->solverMonitorPointer->setTimer( *this->totalTimer ); return true; } template< typename Real, typename Index > void PDESolver< Real, Index >:: setSolverMonitor( typename PDESolver< Real, Index >::SolverMonitorType& solverMonitor ) { this->solverMonitorPointer = &solverMonitor; } template< typename Real, typename Index > typename PDESolver< Real, Index >::SolverMonitorType& Loading src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h +0 −2 Original line number Diff line number Diff line Loading @@ -55,8 +55,6 @@ TimeDependentPDESolver< Problem, DiscreteSolver, TimeStepper >:: setup( const Config::ParameterContainer& parameters, const String& prefix ) { if( this->problem->getSolverMonitor() ) this->solverMonitorPointer = ( SolverMonitorType* ) this->problem->getSolverMonitor(); BaseType::setup( parameters, prefix ); Loading src/TNL/Solvers/SolverStarter_impl.h +14 −3 Original line number Diff line number Diff line Loading @@ -383,6 +383,10 @@ bool SolverStarter< ConfigTag > :: runPDESolver( Problem& problem, this->totalTimer.reset(); this->totalTimer.start(); using SolverMonitorType = IterativeSolverMonitor< typename Problem::RealType, typename Problem::IndexType >; SolverMonitorType solverMonitor, *solverMonitorPointer( &solverMonitor ); /**** * Open the log file */ Loading @@ -398,6 +402,16 @@ bool SolverStarter< ConfigTag > :: runPDESolver( Problem& problem, */ //PDE::TimeDependentPDESolver< Problem, TimeStepper > solver; typename PDE::PDESolverTypeResolver< Problem, DiscreteSolver, TimeStepper >::SolverType solver; solver.setComputeTimer( this->computeTimer ); solver.setIoTimer( this->ioTimer ); solver.setTotalTimer( this->totalTimer ); if( problem.getSolverMonitor() ) solverMonitorPointer = ( SolverMonitorType* ) problem.getSolverMonitor(); solverMonitorPointer->setVerbose( parameters.getParameter< int >( "verbose" ) ); solverMonitorPointer->setTimer( this->totalTimer ); solver.setSolverMonitor( *solverMonitorPointer ); // catching exceptions ala gtest: // https://github.com/google/googletest/blob/59c795ce08be0c8b225bc894f8da6c7954ea5c14/googletest/src/gtest.cc#L2409-L2431 const int catch_exceptions = parameters.getParameter< bool >( "catch-exceptions" ); Loading Loading @@ -443,9 +457,6 @@ bool SolverStarter< ConfigTag > :: runPDESolver( Problem& problem, */ this->computeTimer.reset(); this->ioTimer.reset(); solver.setComputeTimer( this->computeTimer ); solver.setIoTimer( this->ioTimer ); solver.setTotalTimer( this->totalTimer ); /**** * Create solver monitor thread Loading Loading
src/TNL/Solvers/PDE/PDESolver.h +3 −2 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ class PDESolver : public Object using IndexType = Index; using SolverMonitorType = IterativeSolverMonitor< RealType, IndexType >; PDESolver(); static void configSetup( Config::ConfigDescription& config, Loading @@ -47,6 +48,8 @@ class PDESolver : public Object void setTotalTimer( Timer& totalTimer ); void setSolverMonitor( SolverMonitorType& solverMonitor ); SolverMonitorType& getSolverMonitor(); bool writeEpilog( Logger& logger ) const; Loading @@ -55,8 +58,6 @@ class PDESolver : public Object Timer *ioTimer, *computeTimer, *totalTimer; SolverMonitorType solverMonitor; SolverMonitorType *solverMonitorPointer; }; Loading
src/TNL/Solvers/PDE/PDESolver_impl.h +11 −6 Original line number Diff line number Diff line Loading @@ -21,7 +21,8 @@ template< typename Real, PDESolver< Real, Index >::PDESolver() : ioTimer( 0 ), computeTimer( 0 ), solverMonitorPointer( &this->solverMonitor ) totalTimer( 0 ), solverMonitorPointer( 0 ) { } Loading @@ -41,14 +42,18 @@ PDESolver< Real, Index >:: setup( const Config::ParameterContainer& parameters, const String& prefix ) { /**** * Set-up solver monitor and launch the main loop. */ this->solverMonitorPointer->setVerbose( parameters.getParameter< int >( "verbose" ) ); this->solverMonitorPointer->setTimer( *this->totalTimer ); return true; } template< typename Real, typename Index > void PDESolver< Real, Index >:: setSolverMonitor( typename PDESolver< Real, Index >::SolverMonitorType& solverMonitor ) { this->solverMonitorPointer = &solverMonitor; } template< typename Real, typename Index > typename PDESolver< Real, Index >::SolverMonitorType& Loading
src/TNL/Solvers/PDE/TimeDependentPDESolver_impl.h +0 −2 Original line number Diff line number Diff line Loading @@ -55,8 +55,6 @@ TimeDependentPDESolver< Problem, DiscreteSolver, TimeStepper >:: setup( const Config::ParameterContainer& parameters, const String& prefix ) { if( this->problem->getSolverMonitor() ) this->solverMonitorPointer = ( SolverMonitorType* ) this->problem->getSolverMonitor(); BaseType::setup( parameters, prefix ); Loading
src/TNL/Solvers/SolverStarter_impl.h +14 −3 Original line number Diff line number Diff line Loading @@ -383,6 +383,10 @@ bool SolverStarter< ConfigTag > :: runPDESolver( Problem& problem, this->totalTimer.reset(); this->totalTimer.start(); using SolverMonitorType = IterativeSolverMonitor< typename Problem::RealType, typename Problem::IndexType >; SolverMonitorType solverMonitor, *solverMonitorPointer( &solverMonitor ); /**** * Open the log file */ Loading @@ -398,6 +402,16 @@ bool SolverStarter< ConfigTag > :: runPDESolver( Problem& problem, */ //PDE::TimeDependentPDESolver< Problem, TimeStepper > solver; typename PDE::PDESolverTypeResolver< Problem, DiscreteSolver, TimeStepper >::SolverType solver; solver.setComputeTimer( this->computeTimer ); solver.setIoTimer( this->ioTimer ); solver.setTotalTimer( this->totalTimer ); if( problem.getSolverMonitor() ) solverMonitorPointer = ( SolverMonitorType* ) problem.getSolverMonitor(); solverMonitorPointer->setVerbose( parameters.getParameter< int >( "verbose" ) ); solverMonitorPointer->setTimer( this->totalTimer ); solver.setSolverMonitor( *solverMonitorPointer ); // catching exceptions ala gtest: // https://github.com/google/googletest/blob/59c795ce08be0c8b225bc894f8da6c7954ea5c14/googletest/src/gtest.cc#L2409-L2431 const int catch_exceptions = parameters.getParameter< bool >( "catch-exceptions" ); Loading Loading @@ -443,9 +457,6 @@ bool SolverStarter< ConfigTag > :: runPDESolver( Problem& problem, */ this->computeTimer.reset(); this->ioTimer.reset(); solver.setComputeTimer( this->computeTimer ); solver.setIoTimer( this->ioTimer ); solver.setTotalTimer( this->totalTimer ); /**** * Create solver monitor thread Loading