Doxygen API reference documentation for ideal.II
time_iterator.hh
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2022 - 2023 by the ideal.II authors
4 //
5 // This file is part of the ideal.II library.
6 //
7 // The ideal.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 3.0 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 ideal.II.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef INCLUDE_IDEAL_II_BASE_TIME_ITERATOR_HH_
17 #define INCLUDE_IDEAL_II_BASE_TIME_ITERATOR_HH_
18 
19 #include <ideal.II/distributed/spacetime_tria.hh>
20 
21 #include <ideal.II/dofs/spacetime_dof_handler.hh>
22 
23 #include <ideal.II/grid/spacetime_tria.hh>
24 
25 #include <ideal.II/lac/spacetime_trilinos_vector.hh>
26 #include <ideal.II/lac/spacetime_vector.hh>
27 
28 #include <list>
29 #include <memory>
30 #include <vector>
31 namespace idealii
32 {
33 
45  template <int dim>
47  {
48  public:
63  void
65  spacetime::Triangulation<dim> *collection);
66 
67 #ifdef DEAL_II_WITH_MPI
75  void
79 #endif
87  void
89  spacetime::DoFHandler<dim> *collection);
90 
98  void
100  spacetime::Vector<double> *collection);
101 
102 #ifdef DEAL_II_WITH_TRILINOS
103 # ifdef DEAL_II_WITH_MPI
111  void
113  spacetime::TrilinosVector *collection);
114 # endif
115 #endif
119  void
124  void
131  bool
138  bool
140 
141  private:
142  struct
143  {
144  std::vector<slab::TriaIterator<dim> *> it_collection;
145  std::vector<spacetime::Triangulation<dim> *> obj_collection;
146  } tria;
147 
148 #ifdef DEAL_II_WITH_MPI
149  struct
150  {
151  std::vector<slab::parallel::distributed::TriaIterator<dim> *>
152  it_collection;
153  std::vector<spacetime::parallel::distributed::Triangulation<dim> *>
154  obj_collection;
155  } par_dist_tria;
156 #endif
157  struct
158  {
159  std::vector<slab::DoFHandlerIterator<dim> *> it_collection;
160  std::vector<spacetime::DoFHandler<dim> *> obj_collection;
161  } dof;
162  struct
163  {
164  std::vector<slab::VectorIterator<double> *> it_collection;
165  std::vector<spacetime::Vector<double> *> obj_collection;
166  } vector_double;
167 
168 #ifdef DEAL_II_WITH_TRILINOS
169 # ifdef DEAL_II_WITH_MPI
170  struct
171  {
172  std::vector<slab::TrilinosVectorIterator *> it_collection;
173  std::vector<spacetime::TrilinosVector *> obj_collection;
174  } trilinos_vector;
175 # endif
176 #endif
177  };
178 
179 } // namespace idealii
180 
181 #endif /* INCLUDE_IDEAL_II_BASE_TIME_ITERATOR_HH_ */
A collection of slab iterators to simplify time marching.
Definition: time_iterator.hh:47
void add_iterator(slab::DoFHandlerIterator< dim > *it, spacetime::DoFHandler< dim > *collection)
Add a slab::DoFHandlerIterator<dim> iterator.
void add_iterator(slab::VectorIterator< double > *it, spacetime::Vector< double > *collection)
Add a slab::VectorIterator<dim> iterator.
void add_iterator(slab::TriaIterator< dim > *it, spacetime::Triangulation< dim > *collection)
Add a slab::TriaIterator<dim> iterator.
void add_iterator(slab::TrilinosVectorIterator *it, spacetime::TrilinosVector *collection)
Add a slab::TrilinosVectorIterator<dim> iterator.
void add_iterator(slab::parallel::distributed::TriaIterator< dim > *it, spacetime::parallel::distributed::Triangulation< dim > *collection)
Add a parallel::distributed::slab::TriaIterator<dim> iterator.
TimeIteratorCollection()
Default constructor.
The spacetime dofhandler object.
Definition: spacetime_dof_handler.hh:35
The spacetime triangulation object.
Definition: spacetime_tria.hh:37
The spacetime Trilinos vector object.
Definition: spacetime_trilinos_vector.hh:45
The spacetime vector object.
Definition: spacetime_vector.hh:42
The spacetime triangulation object with MPI parallel distributed spatial meshes.
Definition: spacetime_tria.hh:39
typename std::list< Triangulation< dim > >::iterator TriaIterator
A shortened type for Iterators over a list of shared pointers to Triangulation<dim> objects.
Definition: slab_tria.hh:134
typename std::list< Triangulation< dim > >::iterator TriaIterator
A shortened type for Iterators over a list of shared pointers to Triangulation<dim> objects.
Definition: slab_tria.hh:125
typename std::list< dealii::TrilinosWrappers::MPI::Vector >::iterator TrilinosVectorIterator
A shortened type for iterators over a list of shared pointers to dealii::TrilinosWrappers::MPI::Vecto...
Definition: spacetime_trilinos_vector.hh:32
typename std::list< dealii::Vector< Number > >::iterator VectorIterator
A shortened type for iterators over a list of shared pointers to dealii::Vectors.
Definition: spacetime_vector.hh:29
typename std::list< DoFHandler< dim > >::iterator DoFHandlerIterator
A shortened type for iterators over a list of shared pointers to DoFHandler objects.
Definition: slab_dof_handler.hh:166
The main namespace of the project.
Definition: idealii.hh:21