Doxygen API reference documentation for ideal.II
slab_dof_handler.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_DOFS_SLAB_DOF_HANDLER_HH_
17 #define INCLUDE_IDEAL_II_DOFS_SLAB_DOF_HANDLER_HH_
18 
19 #include <ideal.II/distributed/slab_tria.hh>
20 
21 #include <ideal.II/fe/fe_dg.hh>
22 
23 #include <ideal.II/grid/slab_tria.hh>
24 
25 #include <deal.II/dofs/dof_handler.h>
26 
27 #include <list>
28 #include <memory>
29 
30 namespace idealii::slab
31 {
41  template <int dim>
42  class DoFHandler
43  {
44  public:
50 #ifdef DEAL_II_WITH_MPI
56 #endif
69  DoFHandler(const DoFHandler<dim> &other);
74  std::shared_ptr<dealii::DoFHandler<dim>>
76 
81  std::shared_ptr<dealii::DoFHandler<1>>
83 
92  void
94 
100  unsigned int
107  unsigned int
114  unsigned int
116 
122  unsigned int
124 
130  unsigned int
132 
140 
152  const dealii::IndexSet &
154 
155  private:
156  std::shared_ptr<dealii::DoFHandler<dim>> _spatial_dof;
157  std::shared_ptr<dealii::DoFHandler<1>> _temporal_dof;
158  typename spacetime::DG_FiniteElement<dim>::support_type _fe_support_type;
159  dealii::IndexSet _locally_owned_dofs;
160  };
161 
165  template <int dim>
166  using DoFHandlerIterator = typename std::list<DoFHandler<dim>>::iterator;
167 } // namespace idealii::slab
168 
169 #endif /* INCLUDE_IDEAL_II_DOFS_SLAB_DOF_HANDLER_HH_ */
Actual DoFHandler for a specific slab.
Definition: slab_dof_handler.hh:43
unsigned int n_dofs_spacetime()
Total number of space-time degrees of fredom on this slab.
std::shared_ptr< dealii::DoFHandler< 1 > > temporal()
The underlying temporal dof handler.
DoFHandler(const DoFHandler< dim > &other)
(shallow) copy constructor. Only the index set and fe support type are actually copied....
unsigned int n_dofs_time()
Number of temporal degrees of fredom on this slab.
unsigned int dofs_per_cell_space()
Number of spatial dofs in a single element.
spacetime::DG_FiniteElement< dim >::support_type fe_support_type()
The underlying support type used for constructing the temporal finite element.
void distribute_dofs(spacetime::DG_FiniteElement< dim > fe)
Distribute DoFs in space and time.
DoFHandler(Triangulation< dim > &tria)
Constructor linking a slab::Triangulation.
DoFHandler(slab::parallel::distributed::Triangulation< dim > &tria)
Constructor linking a parallel::distributed::slab::Triangulation.
const dealii::IndexSet & locally_owned_dofs()
Return the set of processor local dofs.
std::shared_ptr< dealii::DoFHandler< dim > > spatial()
The underlying spatial dof handler.
unsigned int n_dofs_space()
Number of spatial degrees of fredom on this slab.
unsigned int dofs_per_cell_time()
Number of temporal dofs in a single element/interval.
Actual Triangulation for a specific slab.
Definition: slab_tria.hh:35
Actual Triangulation for a specific slab with an MPI distributed spatial mesh.
Definition: slab_tria.hh:38
A class for dG elements in time and arbitrary elements in space.
Definition: fe_dg.hh:36
support_type
Choice of underlying temporal support points.
Definition: fe_dg.hh:56
Namespace for slab objects.
Definition: idealii.hh:33
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