DOpE
dofhandler_wrapper.h
Go to the documentation of this file.
1 
24 #ifndef DOPE_DOFHANDLER_H_
25 #define DOPE_DOFHANDLER_H_
26 
27 #include <deal.II/dofs/dof_handler.h>
28 #include <deal.II/hp/dof_handler.h>
29 #include <deal.II/fe/fe_system.h>
30 
31 namespace DOpEWrapper
32 {
33 
49  template<int dim,
50  template<int DIM, int spacedim> class DOFHANDLER = dealii::DoFHandler>
51  class DoFHandler : public DOFHANDLER<dim, dim>
52  {
53  public:
54  DoFHandler(const dealii::Triangulation<dim, dim> &tria) :
55  DOFHANDLER<dim, dim>(tria)
56  {
57  }
58 
68  const DOFHANDLER<dim, dim>&
70  {
71  return *this;
72  }
73 
78  static bool
80 
81  };
82 
83  //Template specialization DOFHANDLER = dealii::DoFHandler<dim>
84  template<int dim>
85  class DoFHandler<dim, dealii::DoFHandler> : public dealii::DoFHandler<dim>
86  {
87  public:
88  DoFHandler(const dealii::Triangulation<dim, dim> &tria) :
89  dealii::DoFHandler<dim>(tria)
90  {
91  }
92  static bool
94  {
95  return false;
96  }
97  const dealii::DoFHandler<dim>&
99  {
100  return *this;
101  }
102 
103  };
104 
105  //Template specialization DOFHANDLER = dealii::hp::DoFHandler<dim>
106  template<int dim>
107  class DoFHandler<dim, dealii::hp::DoFHandler> : public dealii::hp::DoFHandler<
108  dim>
109  {
110  public:
111  DoFHandler(const dealii::Triangulation<dim, dim> &tria) :
112  dealii::hp::DoFHandler<dim>(tria)
113  {
114  }
115  static bool
117  {
118  return true;
119  }
120  const dealii::hp::DoFHandler<dim>&
122  {
123  return *this;
124  }
125  };
126 
127 // //Template specialization DOFHANDLER = dealii::MGDoFHandler<dim>
128 // template<int dim>
129 // class DoFHandler<dim, dealii::MGDoFHandler > : public dealii::MGDoFHandler<
130 // dim>
131 // {
132 // public:
133 // DoFHandler(const dealii::Triangulation<dim, dim> &tria)
134 // : dealii::MGDoFHandler<dim>(tria)
135 // {
136 // }
137 // static bool
138 // NeedIndexSetter()
139 // {
140 // return true;
141 // }
142 // const dealii::MGDoFHandler<dim>&
143 // GetDEALDoFHandler() const
144 // {
145 // return *this;
146 // }
147 // };
148 
152  template<>
153  class DoFHandler<0, dealii::DoFHandler>
154  {
155  private:
156  unsigned int dofs_;
157 
158  public:
163  template<int dim>
164  DoFHandler(const dealii::Triangulation<dim, dim> &/*tria*/)
165  {
166  }
167  template<int dim>
168  void
169  distribute_dofs(const dealii::FESystem<dim> &fe,
170  const unsigned int /*offset*/=0)
171  {
172  dofs_ = fe.element_multiplicity(0);
173  }
174  void
176  {
177  }
178  unsigned int
179  n_dofs() const
180  {
181  return dofs_;
182  }
183  static bool
185  {
186  return false;
187  }
188  };
189 
190  template<>
191  class DoFHandler<0, dealii::hp::DoFHandler>
192  {
193  private:
194  unsigned int dofs_;
195 
196  public:
201  template<int dim>
202  DoFHandler(const dealii::Triangulation<dim, dim> &/*tria*/)
203  {
204  }
205  template<int dim>
206  void
207  distribute_dofs(const dealii::hp::FECollection<dim> &fe_collection,
208  const unsigned int /*offset*/ = 0)
209  {
210  dofs_ = fe_collection[0].element_multiplicity(0);
211  }
212  void
214  {
215  }
216  unsigned int
217  n_dofs() const
218  {
219  return dofs_;
220  }
221  static bool
223  {
224  return false;
225  }
226  };
227 }
228 
229 #endif
static bool NeedIndexSetter()
Definition: dofhandler_wrapper.h:93
static bool NeedIndexSetter()
Definition: dofhandler_wrapper.h:222
const dealii::DoFHandler< dim > & GetDEALDoFHandler() const
Definition: dofhandler_wrapper.h:98
DoFHandler(const dealii::Triangulation< dim, dim > &tria)
Definition: dofhandler_wrapper.h:111
static bool NeedIndexSetter()
static bool NeedIndexSetter()
Definition: dofhandler_wrapper.h:116
void distribute_dofs(const dealii::hp::FECollection< dim > &fe_collection, const unsigned int=0)
Definition: dofhandler_wrapper.h:207
DoFHandler(const dealii::Triangulation< dim, dim > &)
Definition: dofhandler_wrapper.h:202
unsigned int n_dofs() const
Definition: dofhandler_wrapper.h:179
void clear()
Definition: dofhandler_wrapper.h:175
const DOFHANDLER< dim, dim > & GetDEALDoFHandler() const
Definition: dofhandler_wrapper.h:69
Definition: dofhandler_wrapper.h:51
void clear()
Definition: dofhandler_wrapper.h:213
DoFHandler(const dealii::Triangulation< dim, dim > &tria)
Definition: dofhandler_wrapper.h:54
const dealii::hp::DoFHandler< dim > & GetDEALDoFHandler() const
Definition: dofhandler_wrapper.h:121
unsigned int n_dofs() const
Definition: dofhandler_wrapper.h:217
static bool NeedIndexSetter()
Definition: dofhandler_wrapper.h:184
DoFHandler(const dealii::Triangulation< dim, dim > &)
Definition: dofhandler_wrapper.h:164
DoFHandler(const dealii::Triangulation< dim, dim > &tria)
Definition: dofhandler_wrapper.h:88
void distribute_dofs(const dealii::FESystem< dim > &fe, const unsigned int=0)
Definition: dofhandler_wrapper.h:169