diff --git a/dune/fem-dg/stepper/baseevolution.hh b/dune/fem-dg/stepper/baseevolution.hh index 8e9c1cbb26a12e2f1a013f74dec3e94432960895..7e88ba00b399bc793419744ac521f9f35f457d26 100644 --- a/dune/fem-dg/stepper/baseevolution.hh +++ b/dune/fem-dg/stepper/baseevolution.hh @@ -223,11 +223,27 @@ public: virtual void writeData( TimeProviderType& tp, const bool reallyWrite = false ) {} - //! default time loop implementation, overload for changes in derived classes !!! + //! default time loop implementation, overload for changes in derived classes !!! virtual SolverMonitorType solve ( const int loop ) + { + // get start and end time from parameter file + const double startTime = ParameterType::getValue<double>("femhowto.startTime", 0.0); + const double endTime = ParameterType::getValue<double>("femhowto.endTime"); + + // Initialize TimeProvider + TimeProviderType tp( startTime, this->grid() ); + + // call solve implementation taking start and end time + return solve( loop, tp, endTime ); + } + + //! time loop implementation taking TimeProvider and endTime + virtual SolverMonitorType solve ( const int loop, + TimeProviderType& tp, + const double endTime ) { // get grid reference - GridType& grid = this->grid(); + GridType& grid = this->grid(); // verbosity const bool verbose = ParameterType :: verbose (); @@ -236,25 +252,17 @@ public: double maxTimeStep = ParameterType::getValue("femhowto.maxTimeStep", std::numeric_limits<double>::max()); - const double startTime = ParameterType::getValue<double>("femhowto.startTime", 0.0); #ifdef BASEFUNCTIONSET_CODEGEN_GENERATE // in codegen modus make endTime large and only compute one timestep - const double endTime = startTime + 1e8; + // const double endTime = startTime + 1e8; const int maximalTimeSteps = 1; #else - - // get end time from parameter file - const double endTime = ParameterType::getValue<double>("femhowto.endTime"); - // if this variable is set then only maximalTimeSteps timesteps will be computed const int maximalTimeSteps = ParameterType::getValue("femhowto.maximaltimesteps", std::numeric_limits<int>::max()); #endif - // Initialize TimeProvider - TimeProviderType tp( startTime, grid ); - // create monitor object (initialize all varialbes) SolverMonitorType monitor;