Doxygen API reference documentation for ideal.II
spacetime_tria.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_DISTRIBUTED_SPACETIME_TRIA_HH_
17 #define INCLUDE_IDEAL_II_DISTRIBUTED_SPACETIME_TRIA_HH_
18 
19 #include <ideal.II/distributed/slab_tria.hh>
20 
21 #ifdef DEAL_II_WITH_MPI
22 # include <deal.II/grid/tria.h>
23 
24 # include <list>
25 # include <memory>
26 
28 {
37  template <int dim>
39  {
40  public:
46  dealii::types::global_cell_index max_N_intervals_per_slab = 0);
47 
56  virtual void
57  generate(std::shared_ptr<dealii::parallel::distributed::Triangulation<dim>>
58  space_tria,
59  unsigned int M,
60  double t0 = 0.,
61  double T = 1.) = 0;
62 
66  unsigned int
67  M();
73  begin();
78  end();
79 
85  virtual void
86  refine_global(const unsigned int times_space = 1,
87  const unsigned int times_time = 1) = 0;
88 
89  protected:
90  dealii::types::global_cell_index max_N_intervals_per_slab;
91  std::list<slab::parallel::distributed::Triangulation<dim>> trias;
92  };
93 } // namespace idealii::spacetime::parallel::distributed
94 
95 #endif
96 #endif /* INCLUDE_IDEAL_II_DISTRIBUTED_SPACETIME_TRIA_HH_ */
The spacetime triangulation object with MPI parallel distributed spatial meshes.
Definition: spacetime_tria.hh:39
slab::parallel::distributed::TriaIterator< dim > begin()
slab::parallel::distributed::TriaIterator< dim > end()
An iterator pointing behind the slab slab::parallel::distributed::Triangulation.
unsigned int M()
Return the number of slabs in the triangulation.
Triangulation(dealii::types::global_cell_index max_N_intervals_per_slab=0)
Constructor that initializes the underlying list object.
virtual void generate(std::shared_ptr< dealii::parallel::distributed::Triangulation< dim >> space_tria, unsigned int M, double t0=0., double T=1.)=0
Generate a list of M slab triangulations with matching temporal meshes and space_tria.
virtual void refine_global(const unsigned int times_space=1, const unsigned int times_time=1)=0
Do uniform mesh refinement in time and space.
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
Namespace where the processor local triangulations share a common coarse object.
Definition: idealii.hh:104