8 template<
typename time>
18 template<
typename time>
29 template<
typename time>
32 this->tend = config::get_value<double>(
"tend", this->tend);
33 this->
dt = config::get_value<double>(
"dt", this->
dt);
34 this->max_iterations = config::get_value<size_t>(
"num_iters", this->max_iterations);
39 for (
auto l = coarsest(); l <= finest(); ++l) {
40 l.current()->set_options();
51 template<
typename time>
54 for (
auto l = coarsest(); l <= finest(); ++l) {
55 l.current()->set_controller(
this);
60 template<
typename time>
68 this->max_iterations = niters;
71 template<
typename time>
77 this->levels.push_front(sweeper);
78 this->transfer.push_front(transfer);
80 this->levels.push_back(sweeper);
81 this->transfer.push_back(transfer);
85 template<
typename time>
91 template<
typename time>
97 template<
typename time>
100 t += ((int)n - (
int)step) *
dt;
104 template<
typename time>
110 template<
typename time>
116 template<
typename time>
123 template<
typename time>
129 template<
typename time>
135 template<
typename time>
138 this->iteration = iter;
146 template<
typename time>
152 template<
typename time>
155 return max_iterations;
158 template<
typename time>
164 template<
typename time>
171 template<
typename time>
177 template<
typename time>
184 template<
typename time>
187 return level == i.
level;
190 template<
typename time>
193 return level != i.
level;
196 template<
typename time>
203 template<
typename time>
209 template<
typename time>
215 template<
typename time>
218 return level <= i.
level;
221 template<
typename time>
224 return level >= i.
level;
227 template<
typename time>
230 return level < i.
level;
233 template<
typename time>
236 return level > i.
level;
virtual LevelIter operator+(difference_type i)
virtual time get_time()
Get start time point of current time step.
virtual time get_step_size()
Get width of current time step.
virtual bool operator<(LevelIter i)
virtual void set_options(bool all_sweepers=true)
Set options from command line etc.
Base SDC/MLSDC/PFASST controller.
LevelIter(int level, Controller *ts)
virtual void advance_time(size_t nsteps=1)
Advance to a following time step.
virtual void set_step(size_t n)
Set current time step index.
virtual void add_level(shared_ptr< ISweeper< time >> sweeper, shared_ptr< ITransfer< time >> transfer=shared_ptr< ITransfer< time >>(nullptr), bool coarse=true)
Adding a level to the controller.
virtual size_t get_step()
Get current time step index.
virtual LevelIter operator--()
virtual bool operator!=(LevelIter i)
Level (MLSDC/PFASST) iterator.
virtual bool operator>(LevelIter i)
virtual bool operator>=(LevelIter i)
virtual bool operator<=(LevelIter i)
virtual LevelIter finest()
Convenience accessor to the finest level.
virtual time get_end_time()
Get end time point of last time step.
virtual void set_duration(time t0, time tend, time dt, size_t niters)
Set basic time scope of the Controller.
virtual LevelIter operator-(difference_type i)
virtual void advance_iteration()
Advance to the next iteration.
virtual size_t get_max_iterations()
Get maximum number of allowed iterations per time step.
Abstract time/space transfer (restrict/interpolate) class.
virtual size_t get_iteration()
Get current iteration index of current time step.
virtual size_t nlevels()
Total number of levels controlled by this Controller.
virtual LevelIter operator++()
virtual bool operator==(LevelIter i)
virtual void setup()
Basic setup routine for this controller.
virtual LevelIter coarsest()
Convenience accessor to the coarsest level.
virtual void set_iteration(size_t iter)
Set current iteration of current time step.