Reference documentation for deal.II version 9.2.0
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
time_dependent.h
Go to the documentation of this file.
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 1999 - 2019 by the deal.II authors
4 //
5 // This file is part of the deal.II library.
6 //
7 // The deal.II library is free software; you can use it, redistribute
8 // it, and/or modify it under the terms of the GNU Lesser General
9 // Public License as published by the Free Software Foundation; either
10 // version 2.1 of the License, or (at your option) any later version.
11 // The full text of the license can be found in the file LICENSE.md at
12 // the top level directory of deal.II.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef dealii_time_dependent_h
17 # define dealii_time_dependent_h
18 
19 
20 /*---------------------------- time-dependent.h ---------------------------*/
21 
22 
23 # include <deal.II/base/config.h>
24 
25 # include <deal.II/base/exceptions.h>
28 
29 # include <utility>
30 # include <vector>
31 
33 
34 // forward declarations
35 # ifndef DOXYGEN
36 class TimeStepBase;
37 template <typename number>
38 class Vector;
39 template <int dim, int spacedim>
40 class Triangulation;
41 # endif
42 
365 {
366 public:
374  {
379  TimeSteppingData(const unsigned int look_ahead,
380  const unsigned int look_back);
381 
400  const unsigned int look_ahead;
401 
414  const unsigned int look_back;
415  };
416 
422  {
431  };
432 
436  TimeDependent(const TimeSteppingData &data_primal,
437  const TimeSteppingData &data_dual,
438  const TimeSteppingData &data_postprocess);
439 
440 
446  virtual ~TimeDependent();
447 
468  void
469  insert_timestep(const TimeStepBase *position, TimeStepBase *new_timestep);
470 
480  void
481  add_timestep(TimeStepBase *new_timestep);
482 
495  void
496  delete_timestep(const unsigned int position);
497 
506  void
508 
517  void
519 
528  void
529  postprocess();
530 
561  template <typename InitFunctionObject, typename LoopFunctionObject>
562  void
563  do_loop(InitFunctionObject init_function,
564  LoopFunctionObject loop_function,
565  const TimeSteppingData &timestepping_data,
566  const Direction direction);
567 
568 
586  virtual void
587  start_sweep(const unsigned int sweep_no);
588 
602  virtual void
603  end_sweep();
604 
609  std::size_t
610  memory_consumption() const;
611 
616  "You cannot insert a time step at the specified position.");
617 
618 protected:
624  std::vector<SmartPointer<TimeStepBase, TimeDependent>> timesteps;
625 
630  unsigned int sweep_no;
631 
637 
643 
649 
650 private:
655  void
656  end_sweep(const unsigned int begin_timestep, const unsigned int end_timestep);
657 };
658 
659 
660 
670 class TimeStepBase : public Subscriptor
671 {
672 public:
677  {
690  };
691 
695  TimeStepBase(const double time);
696 
700  virtual ~TimeStepBase() override = default;
701 
706  TimeStepBase(const TimeStepBase &) = delete;
707 
712  TimeStepBase &
713  operator=(const TimeStepBase &) = delete;
714 
730  virtual void
731  wake_up(const unsigned int);
732 
742  virtual void
743  sleep(const unsigned int);
744 
760  virtual void
761  start_sweep();
762 
768  virtual void
769  end_sweep();
770 
778  virtual void
780 
784  virtual void
786 
790  virtual void
792 
800  virtual void
801  solve_primal_problem() = 0;
802 
812  virtual void
814 
824  virtual void
826 
830  double
831  get_time() const;
832 
837  unsigned int
838  get_timestep_no() const;
839 
853  double
854  get_backward_timestep() const;
855 
861  double
862  get_forward_timestep() const;
863 
872  virtual std::size_t
873  memory_consumption() const;
874 
875 protected:
880 
885 
890  unsigned int sweep_no;
891 
897  unsigned int timestep_no;
898 
902  const double time;
903 
909  unsigned int next_action;
910 
911 private:
919  void
920  set_previous_timestep(const TimeStepBase *previous);
921 
929  void
930  set_next_timestep(const TimeStepBase *next);
931 
938  void
939  set_timestep_no(const unsigned int step_no);
940 
945  void
946  set_sweep_no(const unsigned int sweep_no);
947 
948  // make the manager object a friend
949  friend class TimeDependent;
950 };
951 
952 
953 
963 {
971  template <int dim>
972  struct Flags
973  {
977  Flags();
978 
983  Flags(const bool delete_and_rebuild_tria,
984  const unsigned int wakeup_level_to_build_grid,
985  const unsigned int sleep_level_to_delete_grid);
986 
998 
1007  const unsigned int wakeup_level_to_build_grid;
1008 
1013  const unsigned int sleep_level_to_delete_grid;
1014  };
1015 
1016 
1017 
1137  template <int dim>
1139  {
1145  using CorrectionRelaxations =
1146  std::vector<std::vector<std::pair<unsigned int, double>>>;
1147 
1152 
1157  RefinementFlags(const unsigned int max_refinement_level = 0,
1158  const unsigned int first_sweep_with_correction = 0,
1159  const unsigned int min_cells_for_correction = 0,
1160  const double cell_number_corridor_top = (1 << dim),
1161  const double cell_number_corridor_bottom = 1,
1164  const unsigned int cell_number_correction_steps = 0,
1165  const bool mirror_flags_to_previous_grid = false,
1166  const bool adapt_grids = false);
1167 
1176  const unsigned int max_refinement_level;
1177 
1183  const unsigned int first_sweep_with_correction;
1184 
1185 
1190  const unsigned int min_cells_for_correction;
1191 
1198 
1203 
1207  const std::vector<std::vector<std::pair<unsigned int, double>>>
1209 
1215  const unsigned int cell_number_correction_steps;
1216 
1234 
1238  const bool adapt_grids;
1239 
1244  double,
1245  << "The value " << arg1
1246  << " for the cell number corridor does not fulfill "
1247  "its natural requirements.");
1248  };
1249 
1250 
1251 
1258  template <int dim>
1260  {
1264  RefinementData(const double refinement_threshold,
1265  const double coarsening_threshold = 0);
1266 
1273  const double refinement_threshold;
1274 
1279  const double coarsening_threshold;
1280 
1285  double,
1286  << "The value " << arg1
1287  << " for the cell refinement thresholds does not fulfill "
1288  "its natural requirements.");
1289  };
1290 } // namespace TimeStepBase_Tria_Flags
1291 
1292 
1293 
1313 template <int dim>
1315 {
1316 public:
1322  using RefinementFlags =
1325 
1326 
1332  {
1337  };
1338 
1339 
1349 
1363  const double time,
1365  const Flags & flags,
1367 
1372  virtual ~TimeStepBase_Tria() override;
1373 
1394  virtual void
1395  wake_up(const unsigned int wakeup_level) override;
1396 
1410  virtual void
1411  sleep(const unsigned int) override;
1412 
1427  void
1428  refine_grid(const RefinementData data);
1429 
1435  virtual void
1437 
1445  virtual void
1446  get_tria_refinement_criteria(Vector<float> &criteria) const = 0;
1447 
1452  void
1454 
1463  virtual std::size_t
1464  memory_consumption() const override;
1465 
1470  "When calling restore_grid(), you must have previously "
1471  "deleted the triangulation.");
1472 
1473 protected:
1482 
1490 
1495  const Flags flags;
1496 
1502 
1503 private:
1509  std::vector<std::vector<bool>> refine_flags;
1510 
1514  std::vector<std::vector<bool>> coarsen_flags;
1515 
1520  void
1521  restore_grid();
1522 };
1523 
1524 
1525 
1526 /*--------------------------- template functions ----------------------------*/
1527 
1528 template <typename InitFunctionObject, typename LoopFunctionObject>
1529 void
1530 TimeDependent::do_loop(InitFunctionObject init_function,
1531  LoopFunctionObject loop_function,
1532  const TimeSteppingData &timestepping_data,
1533  const Direction direction)
1534 {
1535  // the following functions looks quite
1536  // disrupted due to the recurring switches
1537  // for forward and backward running loops.
1538  //
1539  // I chose to switch at every place where
1540  // it is needed, since it is so easy
1541  // to overlook something when you change
1542  // some code at one place when it needs
1543  // to be changed at a second place, here
1544  // for the other direction, also.
1545 
1546  const unsigned int n_timesteps = timesteps.size();
1547 
1548  // initialize the time steps for
1549  // a round of this loop
1550  for (unsigned int step = 0; step < n_timesteps; ++step)
1551  switch (direction)
1552  {
1553  case forward:
1554  init_function((&*timesteps[step]));
1555  break;
1556  case backward:
1557  init_function((&*timesteps[n_timesteps - step - 1]));
1558  break;
1559  };
1560 
1561 
1562  // wake up the first few time levels
1563  for (int step = -static_cast<int>(timestepping_data.look_ahead); step < 0;
1564  ++step)
1565  for (int look_ahead = 0;
1566  look_ahead <= static_cast<int>(timestepping_data.look_ahead);
1567  ++look_ahead)
1568  switch (direction)
1569  {
1570  case forward:
1571  if (step + look_ahead >= 0)
1572  timesteps[step + look_ahead]->wake_up(look_ahead);
1573  break;
1574  case backward:
1575  if (n_timesteps - (step + look_ahead) < n_timesteps)
1576  timesteps[n_timesteps - (step + look_ahead)]->wake_up(look_ahead);
1577  break;
1578  };
1579 
1580 
1581  for (unsigned int step = 0; step < n_timesteps; ++step)
1582  {
1583  // first thing: wake up the
1584  // timesteps ahead as necessary
1585  for (unsigned int look_ahead = 0;
1586  look_ahead <= timestepping_data.look_ahead;
1587  ++look_ahead)
1588  switch (direction)
1589  {
1590  case forward:
1591  if (step + look_ahead < n_timesteps)
1592  timesteps[step + look_ahead]->wake_up(look_ahead);
1593  break;
1594  case backward:
1595  if (n_timesteps > (step + look_ahead))
1596  timesteps[n_timesteps - (step + look_ahead) - 1]->wake_up(
1597  look_ahead);
1598  break;
1599  };
1600 
1601 
1602  // actually do the work
1603  switch (direction)
1604  {
1605  case forward:
1606  loop_function((&*timesteps[step]));
1607  break;
1608  case backward:
1609  loop_function((&*timesteps[n_timesteps - step - 1]));
1610  break;
1611  };
1612 
1613  // let the timesteps behind sleep
1614  for (unsigned int look_back = 0; look_back <= timestepping_data.look_back;
1615  ++look_back)
1616  switch (direction)
1617  {
1618  case forward:
1619  if (step >= look_back)
1620  timesteps[step - look_back]->sleep(look_back);
1621  break;
1622  case backward:
1623  if (n_timesteps - (step - look_back) <= n_timesteps)
1624  timesteps[n_timesteps - (step - look_back) - 1]->sleep(
1625  look_back);
1626  break;
1627  }
1628  }
1629 
1630  // make the last few timesteps sleep
1631  for (int step = n_timesteps;
1632  step < static_cast<int>(n_timesteps + timestepping_data.look_back);
1633  ++step)
1634  for (int look_back = 0;
1635  look_back <= static_cast<int>(timestepping_data.look_back);
1636  ++look_back)
1637  switch (direction)
1638  {
1639  case forward:
1640  if ((step - look_back >= 0) &&
1641  (step - look_back < static_cast<int>(n_timesteps)))
1642  timesteps[step - look_back]->sleep(look_back);
1643  break;
1644  case backward:
1645  if ((step - look_back >= 0) &&
1646  (step - look_back < static_cast<int>(n_timesteps)))
1647  timesteps[n_timesteps - (step - look_back) - 1]->sleep(look_back);
1648  break;
1649  };
1650 }
1651 
1653 
1654 /*---------------------------- time-dependent.h ---------------------------*/
1655 #endif
1656 /*---------------------------- time-dependent.h ---------------------------*/
TimeStepBase_Tria_Flags::Flags::wakeup_level_to_build_grid
const unsigned int wakeup_level_to_build_grid
Definition: time_dependent.h:1007
TimeDependent::forward
@ forward
Definition: time_dependent.h:426
DeclExceptionMsg
#define DeclExceptionMsg(Exception, defaulttext)
Definition: exceptions.h:496
TimeDependent::Direction
Direction
Definition: time_dependent.h:421
TimeStepBase_Tria::RefinementFlags
typename TimeStepBase_Tria_Flags::RefinementFlags< dim > RefinementFlags
Definition: time_dependent.h:1323
TimeStepBase_Tria_Flags::RefinementData::coarsening_threshold
const double coarsening_threshold
Definition: time_dependent.h:1279
TimeDependent::TimeSteppingData::TimeSteppingData
TimeSteppingData(const unsigned int look_ahead, const unsigned int look_back)
Definition: time_dependent.cc:35
LinearAlgebraDealII::Vector
Vector< double > Vector
Definition: generic_linear_algebra.h:43
TimeStepBase_Tria_Flags::RefinementData
Definition: time_dependent.h:1259
TimeStepBase::end_sweep
virtual void end_sweep()
Definition: time_dependent.cc:298
TimeDependent::add_timestep
void add_timestep(TimeStepBase *new_timestep)
Definition: time_dependent.cc:127
TimeDependent::TimeSteppingData::look_back
const unsigned int look_back
Definition: time_dependent.h:414
TimeStepBase_Tria::tria
SmartPointer< Triangulation< dim, dim >, TimeStepBase_Tria< dim > > tria
Definition: time_dependent.h:1481
TimeStepBase_Tria::restore_grid
void restore_grid()
Definition: time_dependent.cc:519
TimeStepBase_Tria_Flags::RefinementFlags::RefinementFlags
RefinementFlags(const unsigned int max_refinement_level=0, const unsigned int first_sweep_with_correction=0, const unsigned int min_cells_for_correction=0, const double cell_number_corridor_top=(1<< dim), const double cell_number_corridor_bottom=1, const CorrectionRelaxations &correction_relaxations=CorrectionRelaxations(), const unsigned int cell_number_correction_steps=0, const bool mirror_flags_to_previous_grid=false, const bool adapt_grids=false)
Definition: time_dependent.cc:1199
TimeStepBase_Tria_Flags::RefinementFlags::ExcInvalidValue
static ::ExceptionBase & ExcInvalidValue(double arg1)
TimeStepBase_Tria::coarse_grid
SmartPointer< const Triangulation< dim, dim >, TimeStepBase_Tria< dim > > coarse_grid
Definition: time_dependent.h:1489
TimeStepBase_Tria_Flags::Flags::delete_and_rebuild_tria
const bool delete_and_rebuild_tria
Definition: time_dependent.h:997
TimeStepBase_Tria::coarsen_flags
std::vector< std::vector< bool > > coarsen_flags
Definition: time_dependent.h:1514
TimeStepBase_Tria_Flags::RefinementFlags::cell_number_correction_steps
const unsigned int cell_number_correction_steps
Definition: time_dependent.h:1215
Triangulation
Definition: tria.h:1109
TimeStepBase::set_previous_timestep
void set_previous_timestep(const TimeStepBase *previous)
Definition: time_dependent.cc:382
TimeStepBase_Tria_Flags::Flags
Definition: time_dependent.h:972
TimeStepBase_Tria_Flags::RefinementFlags::cell_number_corridor_bottom
const double cell_number_corridor_bottom
Definition: time_dependent.h:1202
TimeDependent::sweep_no
unsigned int sweep_no
Definition: time_dependent.h:630
TimeStepBase::wake_up
virtual void wake_up(const unsigned int)
Definition: time_dependent.cc:280
TimeDependent::end_sweep
virtual void end_sweep()
Definition: time_dependent.cc:227
TimeDependent::timestepping_data_postprocess
const TimeSteppingData timestepping_data_postprocess
Definition: time_dependent.h:648
TimeStepBase::memory_consumption
virtual std::size_t memory_consumption() const
Definition: time_dependent.cc:414
TimeStepBase_Tria_Flags::RefinementFlags::mirror_flags_to_previous_grid
const bool mirror_flags_to_previous_grid
Definition: time_dependent.h:1233
TimeStepBase::operator=
TimeStepBase & operator=(const TimeStepBase &)=delete
TimeStepBase_Tria_Flags::RefinementFlags
Definition: time_dependent.h:1138
TimeDependent::solve_dual_problem
void solve_dual_problem()
Definition: time_dependent.cc:180
TimeStepBase_Tria_Flags::RefinementFlags::CorrectionRelaxations
std::vector< std::vector< std::pair< unsigned int, double > >> CorrectionRelaxations
Definition: time_dependent.h:1146
TimeStepBase::next_timestep
const TimeStepBase * next_timestep
Definition: time_dependent.h:884
TimeStepBase_Tria::flags
const Flags flags
Definition: time_dependent.h:1495
TimeStepBase_Tria_Flags::Flags::Flags
Flags()
Definition: time_dependent.cc:1162
TimeStepBase
Definition: time_dependent.h:670
TimeStepBase::SolutionState
SolutionState
Definition: time_dependent.h:676
TimeDependent::delete_timestep
void delete_timestep(const unsigned int position)
Definition: time_dependent.cc:134
Subscriptor
Definition: subscriptor.h:62
TimeStepBase_Tria::memory_consumption
virtual std::size_t memory_consumption() const override
Definition: time_dependent.cc:1150
TimeStepBase::sweep_no
unsigned int sweep_no
Definition: time_dependent.h:890
TimeDependent::ExcInvalidPosition
static ::ExceptionBase & ExcInvalidPosition()
TimeDependent
Definition: time_dependent.h:364
TimeStepBase::init_for_postprocessing
virtual void init_for_postprocessing()
Definition: time_dependent.cc:320
TimeStepBase_Tria::sleep
virtual void sleep(const unsigned int) override
Definition: time_dependent.cc:484
TimeDependent::postprocess
void postprocess()
Definition: time_dependent.cc:191
TimeStepBase::get_time
double get_time() const
Definition: time_dependent.cc:344
TimeStepBase_Tria_Flags::RefinementFlags::min_cells_for_correction
const unsigned int min_cells_for_correction
Definition: time_dependent.h:1190
TimeStepBase::postprocess_timestep
virtual void postprocess_timestep()
Definition: time_dependent.cc:336
TimeDependent::solve_primal_problem
void solve_primal_problem()
Definition: time_dependent.cc:169
TimeStepBase_Tria_Flags::Flags::sleep_level_to_delete_grid
const unsigned int sleep_level_to_delete_grid
Definition: time_dependent.h:1013
TimeStepBase_Tria_Flags::RefinementData::ExcInvalidValue
static ::ExceptionBase & ExcInvalidValue(double arg1)
TimeDependent::~TimeDependent
virtual ~TimeDependent()
Definition: time_dependent.cc:52
TimeStepBase_Tria::RefinementData
typename TimeStepBase_Tria_Flags::RefinementData< dim > RefinementData
Definition: time_dependent.h:1324
subscriptor.h
TimeStepBase_Tria_Flags::RefinementData::refinement_threshold
const double refinement_threshold
Definition: time_dependent.h:1273
TimeDependent::memory_consumption
std::size_t memory_consumption() const
Definition: time_dependent.cc:250
DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_OPEN
Definition: config.h:358
TimeStepBase_Tria::init_for_refinement
virtual void init_for_refinement()
Definition: time_dependent.cc:1141
TimeStepBase::start_sweep
virtual void start_sweep()
Definition: time_dependent.cc:292
TimeStepBase_Tria_Flags::RefinementFlags::adapt_grids
const bool adapt_grids
Definition: time_dependent.h:1238
TimeStepBase_Tria::TimeStepBase_Tria
TimeStepBase_Tria()
Definition: time_dependent.cc:423
TimeStepBase::TimeStepBase
TimeStepBase(const double time)
Definition: time_dependent.cc:268
DeclException1
#define DeclException1(Exception1, type1, outsequence)
Definition: exceptions.h:518
TimeStepBase::set_sweep_no
void set_sweep_no(const unsigned int sweep_no)
Definition: time_dependent.cc:406
TimeDependent::timestepping_data_dual
const TimeSteppingData timestepping_data_dual
Definition: time_dependent.h:642
smartpointer.h
TimeStepBase::set_timestep_no
void set_timestep_no(const unsigned int step_no)
Definition: time_dependent.cc:398
TimeStepBase_Tria_Flags::RefinementFlags::default_correction_relaxations
static CorrectionRelaxations default_correction_relaxations
Definition: time_dependent.h:1151
exceptions.h
TimeStepBase_Tria_Flags
Definition: time_dependent.h:962
SmartPointer
Definition: smartpointer.h:68
TimeStepBase_Tria::refine_flags
std::vector< std::vector< bool > > refine_flags
Definition: time_dependent.h:1509
TimeStepBase::postprocess
@ postprocess
Definition: time_dependent.h:689
TimeStepBase_Tria
Definition: time_dependent.h:1314
TimeStepBase_Tria_Flags::RefinementFlags::max_refinement_level
const unsigned int max_refinement_level
Definition: time_dependent.h:1176
TimeStepBase::primal_problem
@ primal_problem
Definition: time_dependent.h:681
TimeStepBase::set_next_timestep
void set_next_timestep(const TimeStepBase *next)
Definition: time_dependent.cc:390
TimeStepBase_Tria::ExcGridNotDeleted
static ::ExceptionBase & ExcGridNotDeleted()
TimeStepBase_Tria::save_refine_flags
void save_refine_flags()
Definition: time_dependent.cc:505
TimeStepBase::previous_timestep
const TimeStepBase * previous_timestep
Definition: time_dependent.h:879
TimeDependent::TimeSteppingData
Definition: time_dependent.h:373
TimeStepBase_Tria::refine_grid
void refine_grid(const RefinementData data)
Definition: time_dependent.cc:737
TimeStepBase_Tria_Flags::RefinementFlags::cell_number_corridor_top
const double cell_number_corridor_top
Definition: time_dependent.h:1197
TimeStepBase::~TimeStepBase
virtual ~TimeStepBase() override=default
TimeStepBase_Tria_Flags::RefinementFlags::first_sweep_with_correction
const unsigned int first_sweep_with_correction
Definition: time_dependent.h:1183
TimeDependent::insert_timestep
void insert_timestep(const TimeStepBase *position, TimeStepBase *new_timestep)
Definition: time_dependent.cc:65
TimeDependent::backward
@ backward
Definition: time_dependent.h:430
TimeStepBase::get_backward_timestep
double get_backward_timestep() const
Definition: time_dependent.cc:360
TimeStepBase_Tria::grid_refinement
@ grid_refinement
Definition: time_dependent.h:1336
TimeStepBase_Tria::Flags
typename TimeStepBase_Tria_Flags::Flags< dim > Flags
Definition: time_dependent.h:1321
TimeStepBase::timestep_no
unsigned int timestep_no
Definition: time_dependent.h:897
TimeStepBase::get_timestep_no
unsigned int get_timestep_no() const
Definition: time_dependent.cc:352
config.h
TimeDependent::timestepping_data_primal
const TimeSteppingData timestepping_data_primal
Definition: time_dependent.h:636
TimeStepBase::solve_primal_problem
virtual void solve_primal_problem()=0
TimeDependent::start_sweep
virtual void start_sweep(const unsigned int sweep_no)
Definition: time_dependent.cc:203
TimeStepBase::sleep
virtual void sleep(const unsigned int)
Definition: time_dependent.cc:286
TimeStepBase_Tria::wake_up
virtual void wake_up(const unsigned int wakeup_level) override
Definition: time_dependent.cc:471
TimeStepBase::dual_problem
@ dual_problem
Definition: time_dependent.h:685
TimeStepBase::next_action
unsigned int next_action
Definition: time_dependent.h:909
TimeStepBase_Tria::~TimeStepBase_Tria
virtual ~TimeStepBase_Tria() override
Definition: time_dependent.cc:453
DEAL_II_NAMESPACE_CLOSE
#define DEAL_II_NAMESPACE_CLOSE
Definition: config.h:359
TimeDependent::do_loop
void do_loop(InitFunctionObject init_function, LoopFunctionObject loop_function, const TimeSteppingData &timestepping_data, const Direction direction)
Definition: time_dependent.h:1530
TimeStepBase_Tria_Flags::RefinementFlags::correction_relaxations
const std::vector< std::vector< std::pair< unsigned int, double > > > correction_relaxations
Definition: time_dependent.h:1208
TimeStepBase::solve_dual_problem
virtual void solve_dual_problem()
Definition: time_dependent.cc:328
TimeStepBase_Tria::get_tria_refinement_criteria
virtual void get_tria_refinement_criteria(Vector< float > &criteria) const =0
TimeStepBase::init_for_primal_problem
virtual void init_for_primal_problem()
Definition: time_dependent.cc:304
TimeDependent::TimeSteppingData::look_ahead
const unsigned int look_ahead
Definition: time_dependent.h:400
TimeStepBase_Tria_Flags::RefinementData::RefinementData
RefinementData(const double refinement_threshold, const double coarsening_threshold=0)
Definition: time_dependent.cc:1231
TimeStepBase::get_forward_timestep
double get_forward_timestep() const
Definition: time_dependent.cc:371
TimeDependent::timesteps
std::vector< SmartPointer< TimeStepBase, TimeDependent > > timesteps
Definition: time_dependent.h:624
TimeDependent::TimeDependent
TimeDependent(const TimeSteppingData &data_primal, const TimeSteppingData &data_dual, const TimeSteppingData &data_postprocess)
Definition: time_dependent.cc:42
TimeStepBase::init_for_dual_problem
virtual void init_for_dual_problem()
Definition: time_dependent.cc:312
TimeStepBase_Tria::refinement_flags
const RefinementFlags refinement_flags
Definition: time_dependent.h:1501
TimeStepBase::time
const double time
Definition: time_dependent.h:902