35#ifndef __H__LIMEX__TIME_INTEGRATOR_HPP__
36#define __H__LIMEX__TIME_INTEGRATOR_HPP__
38#if __cplusplus >= 201103L
39#define OVERRIDE override
69#include "../limex_tools.h"
74template<
class TDomain,
class TAlgebra>
76 :
public IOperator< GridFunction<TDomain, TAlgebra> >,
134 {
UG_THROW(
"Please init with grid function!"); }
168template<
class TDomain,
class TAlgebra>
197template<
class TAlgebra>
214template<
class TDomain,
class TAlgebra>
242template<
class TDomain,
class TAlgebra>
277template<
class TDomain,
class TAlgebra>
348template<
class TDomain,
class TAlgebra>
390template<
class TDomain,
class TAlgebra>
406 double tcurr = (tpoint ==
m_timePoints.end()) ? t1 : (*tpoint);
412 this->notify_finalize_step(u1, dstep++, tcurr, tcurr-t0);
418 double tnext = (tpoint ==
m_timePoints.end()) ? t1 : (*tpoint);
423 this->notify_finalize_step(u1, dstep++, tnext, tnext-tcurr);
427 this->notify_end(u1, dstep, t1, 0.0);
Integrate over a given time interval (for a linear problem)
Definition time_integrator.hpp:246
ConstStepLinearTimeIntegrator(SmartPtr< time_disc_type > tDisc)
Definition time_integrator.hpp:264
base_type::linear_solver_type linear_solver_type
Definition time_integrator.hpp:252
base_type::grid_function_type grid_function_type
Definition time_integrator.hpp:253
void set_num_steps(int steps)
Definition time_integrator.hpp:270
VectorTimeSeries< typename base_type::vector_type > vector_time_series_type
Definition time_integrator.hpp:254
bool apply(SmartPtr< grid_function_type > u1, number t1, ConstSmartPtr< grid_function_type > u0, number t0)
Definition time_integrator_impl.hpp:135
int m_numSteps
Definition time_integrator.hpp:260
ConstStepLinearTimeIntegrator(SmartPtr< time_disc_type > tDisc, SmartPtr< typename base_type::linear_solver_type > lSolver)
Definition time_integrator.hpp:267
ILinearTimeIntegrator< TDomain, TAlgebra > base_type
Definition time_integrator.hpp:250
ITimeDiscDependentObject< TAlgebra > tdisc_dep_type
Definition time_integrator.hpp:248
ITimeDiscretization< TAlgebra > time_disc_type
Definition time_integrator.hpp:251
This class integrates (t0, t1] with stops at intermediate points tk.
Definition time_integrator.hpp:393
DiscontinuityIntegrator(SmartPtr< base_type > baseIntegrator)
Definition time_integrator.hpp:399
void insert_points(std::vector< double > points)
Definition time_integrator.hpp:431
SmartPtr< base_type > m_wrappedIntegrator
Definition time_integrator.hpp:436
base_type::grid_function_type grid_function_type
Definition time_integrator.hpp:397
INonlinearTimeIntegrator< TDomain, TAlgebra > base_type
Definition time_integrator.hpp:396
bool apply(SmartPtr< grid_function_type > u1, number t1, ConstSmartPtr< grid_function_type > u0, number t0)
Definition time_integrator.hpp:402
std::vector< double > m_timePoints
Definition time_integrator.hpp:437
Integration of linear systems.
Definition time_integrator.hpp:170
ILinearOperatorInverse< vector_type > linear_solver_type
Definition time_integrator.hpp:175
void set_linear_solver(SmartPtr< linear_solver_type > lSolver)
Definition time_integrator.hpp:187
AssembledLinearOperator< TAlgebra > assembled_operator_type
Definition time_integrator.hpp:176
ILinearTimeIntegrator()
Definition time_integrator.hpp:179
SmartPtr< linear_solver_type > m_spLinearSolver
Definition time_integrator.hpp:191
ITimeIntegrator< TDomain, TAlgebra > base_type
Definition time_integrator.hpp:173
ILinearTimeIntegrator(SmartPtr< linear_solver_type > lSolver)
Definition time_integrator.hpp:182
base_type::vector_type vector_type
Definition time_integrator.hpp:174
Integration of non-linear systems (with bounds on dt)
Definition time_integrator.hpp:351
double get_reduction_factor()
Definition time_integrator.hpp:377
AssembledOperator< TAlgebra > assembled_operator_type
Definition time_integrator.hpp:356
double get_dt_max()
Definition time_integrator.hpp:374
void set_dt_min(double min)
Definition time_integrator.hpp:370
base_type::vector_type vector_type
Definition time_integrator.hpp:354
INonlinearTimeIntegrator()
Definition time_integrator.hpp:358
ITimeIntegrator< TDomain, TAlgebra > base_type
Definition time_integrator.hpp:353
ConstSmartPtr< solver_type > get_solver() const
Definition time_integrator.hpp:364
TimeStepBounds m_dtBounds
Definition time_integrator.hpp:384
IOperatorInverse< vector_type > solver_type
Definition time_integrator.hpp:355
SmartPtr< solver_type > m_spSolver
Definition time_integrator.hpp:383
double get_increase_factor()
Definition time_integrator.hpp:380
void set_increase_factor(double inc)
Definition time_integrator.hpp:379
void set_solver(SmartPtr< solver_type > solver)
Definition time_integrator.hpp:361
void set_reduction_factor(double dec)
Definition time_integrator.hpp:376
SmartPtr< solver_type > get_solver()
Definition time_integrator.hpp:367
double get_dt_min()
Definition time_integrator.hpp:371
void set_dt_max(double max)
Definition time_integrator.hpp:373
ITimeDiscDependentObject.
Definition time_integrator.hpp:199
SmartPtr< time_disc_type > m_spTimeDisc
Definition time_integrator.hpp:209
SmartPtr< time_disc_type > get_time_disc()
Definition time_integrator.hpp:207
ITimeDiscretization< TAlgebra > time_disc_type
Definition time_integrator.hpp:201
ITimeDiscDependentObject(SmartPtr< time_disc_type > spTimeDisc)
Definition time_integrator.hpp:203
Integrates over a given time interval [a,b] with step size dt.
Definition time_integrator.hpp:78
TDomain domain_type
Definition time_integrator.hpp:86
void set_precision_bound(double precisionBound)
Definition time_integrator.hpp:158
void prepare(grid_function_type &u)
prepares functions for application
Definition time_integrator.hpp:142
void init()
init operator
Definition time_integrator.hpp:133
double m_lower_tim
Definition time_integrator.hpp:91
virtual void init(grid_function_type const &u)
init operator depending on a function u
Definition time_integrator.hpp:120
GridFunction< TDomain, TAlgebra > grid_function_type
Definition time_integrator.hpp:87
void set_no_log_out(bool bNoLogOut)
Definition time_integrator.hpp:161
TAlgebra::matrix_type matrix_type
Definition time_integrator.hpp:83
double m_dt
Definition time_integrator.hpp:90
virtual ~ITimeIntegrator()
virtual destructor
Definition time_integrator.hpp:106
bool m_bNoLogOut
Definition time_integrator.hpp:96
void set_time_step(double dt)
Set initial time step.
Definition time_integrator.hpp:152
double m_upper_tim
Definition time_integrator.hpp:92
virtual bool apply(SmartPtr< grid_function_type > u1, number t1, ConstSmartPtr< grid_function_type > u0, number t0)=0
TAlgebra::vector_type vector_type
Definition time_integrator.hpp:82
double get_time_step()
Definition time_integrator.hpp:155
TAlgebra algebra_type
Definition time_integrator.hpp:81
void apply(grid_function_type &u1, const grid_function_type &u0)
Apply operator.
Definition time_integrator.hpp:146
double m_precisionBound
Definition time_integrator.hpp:94
ITimeIntegrator()
Definition time_integrator.hpp:101
Integrate over a given time interval (for a linear problem)
Definition time_integrator.hpp:219
bool apply(SmartPtr< grid_function_type > u1, number t1, ConstSmartPtr< grid_function_type > u0, number t0)
Definition time_integrator_impl.hpp:42
ITimeDiscretization< TAlgebra > time_disc_type
Definition time_integrator.hpp:226
ITimeDiscDependentObject< TAlgebra > tdisc_dep_type
Definition time_integrator.hpp:223
base_type::grid_function_type grid_function_type
Definition time_integrator.hpp:227
LinearTimeIntegrator(SmartPtr< time_disc_type > tDisc, SmartPtr< typename base_type::linear_solver_type > lSolver)
Definition time_integrator.hpp:234
VectorTimeSeries< typename base_type::vector_type > vector_time_series_type
Definition time_integrator.hpp:228
ILinearTimeIntegrator< TDomain, TAlgebra > base_type
Definition time_integrator.hpp:225
LinearTimeIntegrator(SmartPtr< time_disc_type > tDisc)
Definition time_integrator.hpp:231
Integrate over a given time interval (for a linear problem)
Definition time_integrator.hpp:281
ITimeDiscDependentObject< TAlgebra > tdisc_dep_type
Definition time_integrator.hpp:283
VectorTimeSeries< typename base_type::vector_type > vector_time_series_type
Definition time_integrator.hpp:289
TimeIntegratorLinearAdaptive(SmartPtr< time_disc_type > tDisc1, SmartPtr< time_disc_type > tDisc2)
Definition time_integrator.hpp:299
double m_tol
Definition time_integrator.hpp:295
void set_time_step_max(number dt)
Definition time_integrator.hpp:316
ITimeDiscretization< TAlgebra > time_disc_type
Definition time_integrator.hpp:287
double m_dtmax
Definition time_integrator.hpp:295
bool apply(SmartPtr< grid_function_type > u1, number t1, ConstSmartPtr< grid_function_type > u0, number t0)
Definition time_integrator_impl.hpp:229
void set_tol(double tol)
Definition time_integrator.hpp:314
void set_time_step_min(number dt)
Definition time_integrator.hpp:315
void init(grid_function_type const &u)
init operator depending on a function u
Definition time_integrator.hpp:305
double m_dtmin
Definition time_integrator.hpp:295
SmartPtr< time_disc_type > m_spTimeDisc2
Definition time_integrator.hpp:293
ILinearTimeIntegrator< TDomain, TAlgebra > base_type
Definition time_integrator.hpp:286
base_type::grid_function_type grid_function_type
Definition time_integrator.hpp:288
Definition time_integrator.hpp:321
void set_increase_factor(double inc)
Definition time_integrator.hpp:336
double get_reduction_factor()
Definition time_integrator.hpp:334
TimeStepBounds()
Definition time_integrator.hpp:323
void set_dt_min(double min)
Definition time_integrator.hpp:327
void set_dt_max(double max)
Definition time_integrator.hpp:330
double m_incFac
Definition time_integrator.hpp:344
double m_redFac
Definition time_integrator.hpp:344
double m_dtMin
Definition time_integrator.hpp:343
double get_dt_max()
Definition time_integrator.hpp:331
void rescale(double alpha)
Definition time_integrator.hpp:339
void set_reduction_factor(double dec)
Definition time_integrator.hpp:333
double m_dtMax
Definition time_integrator.hpp:343
double get_increase_factor()
Definition time_integrator.hpp:337
double get_dt_min()
Definition time_integrator.hpp:328