DOpE
integratordatacontainer.h
Go to the documentation of this file.
1 
24 #ifndef INTEGRATORDATACONTAINER_H_
25 #define INTEGRATORDATACONTAINER_H_
26 
27 #include <deal.II/base/quadrature.h>
28 #include <deal.II/dofs/dof_handler.h>
29 #include <deal.II/hp/q_collection.h>
30 #include <deal.II/hp/dof_handler.h>
31 #include <deal.II/lac/vector.h>
32 
33 #include "dofhandler_wrapper.h"
34 #include "elementdatacontainer.h"
35 #include "facedatacontainer.h"
38 #include "dopeexception.h"
39 
40 namespace DOpE
41 {
46  template<template<int, int> class DH, typename QUADRATURE, typename FACEQUADRATURE,
47  typename VECTOR, int dim>
49  {
50  public:
51  IntegratorDataContainer(const QUADRATURE& quad,
52  const FACEQUADRATURE & face_quad)
53  : quad_(&quad), face_quad_(&face_quad), fdc_(NULL), edc_(NULL), mm_fdc_(
54  NULL), mm_edc_(NULL)
55  {
56  }
57 
59  {
60  if (fdc_ != NULL)
61  {
62  delete fdc_;
63  fdc_ = NULL;
64  }
65  if (edc_ != NULL)
66  {
67  delete edc_;
68  edc_ = NULL;
69  }
70  if (mm_fdc_ != NULL)
71  {
72  delete mm_fdc_;
73  mm_fdc_ = NULL;
74  }
75  if (mm_edc_ != NULL)
76  {
77  delete mm_edc_;
78  mm_edc_ = NULL;
79  }
80  }
81 
85  template<typename STH>
86  void
87  InitializeFDC(const FACEQUADRATURE& fquad, UpdateFlags update_flags,
88  STH& sth,
89  const std::vector<
91  const std::map<std::string, const Vector<double>*> &param_values,
92  const std::map<std::string, const VECTOR*> &domain_values,
93  bool need_interfaces = false)
94  {
95  delete fdc_;
96  fdc_ = new FaceDataContainer<DH, VECTOR, dim>(fquad,
97  update_flags, sth, element, param_values, domain_values,
98  need_interfaces);
99  }
100 
105  template<typename STH>
106  void
107  InitializeFDC(UpdateFlags update_flags, STH& sth,
108  const std::vector<
110  const std::map<std::string, const Vector<double>*> &param_values,
111  const std::map<std::string, const VECTOR*> &domain_values,
112  bool need_interfaces = false)
113  {
114  InitializeFDC(GetFaceQuad(), update_flags, sth, element, param_values,
115  domain_values, need_interfaces);
116  }
117 
121  template<typename STH>
122  void
123  InitializeEDC(const QUADRATURE& quad, UpdateFlags update_flags,
124  STH& sth,
125  const std::vector<
127  const std::map<std::string, const Vector<double>*> &param_values,
128  const std::map<std::string, const VECTOR*> &domain_values)
129  {
130  if (edc_ != NULL)
131  delete edc_;
133  update_flags, sth, element, param_values, domain_values);
134  }
135 
140  template<typename STH>
141  void
142  InitializeEDC(UpdateFlags update_flags, STH& sth,
143  const std::vector<
145  const std::map<std::string, const Vector<double>*> &param_values,
146  const std::map<std::string, const VECTOR*> &domain_values)
147  {
148  InitializeEDC(GetQuad(), update_flags, sth, element, param_values,
149  domain_values);
150  }
151 
155  template<typename STH>
156  void
157  InitializeMMFDC(UpdateFlags update_flags, STH& sth,
158  const typename std::vector<typename DH<dim, dim>::cell_iterator>& element,
159  const typename std::vector<
160  typename dealii::Triangulation<dim>::cell_iterator>& tria_element,
161  const std::map<std::string, const Vector<double>*> &param_values,
162  const std::map<std::string, const VECTOR*> &domain_values,
163  bool need_interfaces = false)
164  {
165  if (mm_fdc_ != NULL)
166  delete mm_fdc_;
168  GetFaceQuad(), update_flags, sth, element, tria_element, param_values,
169  domain_values, need_interfaces);
170  }
171 
175  template<typename STH>
176  void
177  InitializeMMEDC(UpdateFlags update_flags, STH& sth,
178  const typename std::vector<typename DH<dim, dim>::cell_iterator>& element,
179  const typename std::vector<
180  typename dealii::Triangulation<dim>::cell_iterator>& tria_element,
181  const std::map<std::string, const Vector<double>*> &param_values,
182  const std::map<std::string, const VECTOR*> &domain_values)
183  {
184  if (mm_edc_ != NULL)
185  delete mm_edc_;
187  GetQuad(), update_flags, sth, element, tria_element, param_values,
188  domain_values);
189  }
190 
191  const QUADRATURE&
192  GetQuad() const
193  {
194  return *quad_;
195  }
196 
197  const FACEQUADRATURE&
198  GetFaceQuad() const
199  {
200  return *face_quad_;
201  }
202 
205  {
206  if (fdc_ != NULL)
207  return *fdc_;
208  else
209  throw DOpEException("Pointer has to be initialized.",
210  "IntegratorDataContainer::GetFaceDataContainer");
211  }
212 
215  {
216  if (edc_ != NULL)
217  return *edc_;
218  else
219  throw DOpEException("Pointer has to be initialized.",
220  "IntegratorDataContainer::GetElementDataContainer");
221  }
222 
225  {
226  if (mm_fdc_ != NULL)
227  return *mm_fdc_;
228  else
229  throw DOpEException("Pointer has to be initialized.",
230  "IntegratorDataContainer::GetMultimeshFaceDataContainer");
231  }
232 
235  {
236  if (mm_edc_ != NULL)
237  return *mm_edc_;
238  else
239  throw DOpEException("Pointer has to be initialized.",
240  "IntegratorDataContainer::GetMultimeshElementDataContainer");
241  }
242  private:
243  QUADRATURE const* quad_;
244  FACEQUADRATURE const* face_quad_;
249  };
250 
251 } //end of namespace
252 
253 #endif /* INTEGRATORDATACONTAINER_H_ */
void InitializeMMFDC(UpdateFlags update_flags, STH &sth, const typename std::vector< typename DH< dim, dim >::cell_iterator > &element, const typename std::vector< typename dealii::Triangulation< dim >::cell_iterator > &tria_element, const std::map< std::string, const Vector< double > * > &param_values, const std::map< std::string, const VECTOR * > &domain_values, bool need_interfaces=false)
Definition: integratordatacontainer.h:157
~IntegratorDataContainer()
Definition: integratordatacontainer.h:58
Definition: multimesh_elementdatacontainer.h:57
IntegratorDataContainer(const QUADRATURE &quad, const FACEQUADRATURE &face_quad)
Definition: integratordatacontainer.h:51
Definition: elementdatacontainer.h:58
FaceDataContainer< DH, VECTOR, dim > & GetFaceDataContainer() const
Definition: integratordatacontainer.h:204
Definition: facedatacontainer.h:50
void InitializeEDC(UpdateFlags update_flags, STH &sth, const std::vector< typename DOpEWrapper::DoFHandler< dim, DH >::active_cell_iterator > &element, const std::map< std::string, const Vector< double > * > &param_values, const std::map< std::string, const VECTOR * > &domain_values)
Definition: integratordatacontainer.h:142
Definition: dofhandler_wrapper.h:51
void InitializeEDC(const QUADRATURE &quad, UpdateFlags update_flags, STH &sth, const std::vector< typename DOpEWrapper::DoFHandler< dim, DH >::active_cell_iterator > &element, const std::map< std::string, const Vector< double > * > &param_values, const std::map< std::string, const VECTOR * > &domain_values)
Definition: integratordatacontainer.h:123
void InitializeFDC(UpdateFlags update_flags, STH &sth, const std::vector< typename DOpEWrapper::DoFHandler< dim, DH >::active_cell_iterator > &element, const std::map< std::string, const Vector< double > * > &param_values, const std::map< std::string, const VECTOR * > &domain_values, bool need_interfaces=false)
Definition: integratordatacontainer.h:107
void InitializeFDC(const FACEQUADRATURE &fquad, UpdateFlags update_flags, STH &sth, const std::vector< typename DOpEWrapper::DoFHandler< dim, DH >::active_cell_iterator > &element, const std::map< std::string, const Vector< double > * > &param_values, const std::map< std::string, const VECTOR * > &domain_values, bool need_interfaces=false)
Definition: integratordatacontainer.h:87
Definition: integratordatacontainer.h:48
ElementDataContainer< DH, VECTOR, dim > & GetElementDataContainer() const
Definition: integratordatacontainer.h:214
void InitializeMMEDC(UpdateFlags update_flags, STH &sth, const typename std::vector< typename DH< dim, dim >::cell_iterator > &element, const typename std::vector< typename dealii::Triangulation< dim >::cell_iterator > &tria_element, const std::map< std::string, const Vector< double > * > &param_values, const std::map< std::string, const VECTOR * > &domain_values)
Definition: integratordatacontainer.h:177
Definition: multimesh_facedatacontainer.h:53
Multimesh_ElementDataContainer< DH, VECTOR, dim > & GetMultimeshElementDataContainer() const
Definition: integratordatacontainer.h:234
Definition: dopeexception.h:35
Multimesh_FaceDataContainer< DH, VECTOR, dim > & GetMultimeshFaceDataContainer() const
Definition: integratordatacontainer.h:224
const FACEQUADRATURE & GetFaceQuad() const
Definition: integratordatacontainer.h:198
const QUADRATURE & GetQuad() const
Definition: integratordatacontainer.h:192