DOpE
integratordatacontainer.h
Go to the documentation of this file.
1 
24 #ifndef _INTEGRATORDATACONTAINER_H_
25 #define _INTEGRATORDATACONTAINER_H_
26 
27 #include <base/quadrature.h>
28 #include <dofs/dof_handler.h>
29 #include <hp/q_collection.h>
30 #include <hp/dof_handler.h>
31 #include <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:55
IntegratorDataContainer(const QUADRATURE &quad, const FACEQUADRATURE &face_quad)
Definition: integratordatacontainer.h:51
Definition: elementdatacontainer.h:56
FaceDataContainer< DH, VECTOR, dim > & GetFaceDataContainer() const
Definition: integratordatacontainer.h:204
Definition: facedatacontainer.h:48
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