LifeV
EvaluationInterpolateLaplacian.hpp
Go to the documentation of this file.
1 //@HEADER
2 /*
3 *******************************************************************************
4 
5  Copyright (C) 2004, 2005, 2007 EPFL, Politecnico di Milano, INRIA
6  Copyright (C) 2010 EPFL, Politecnico di Milano, Emory UNiversity
7 
8  This file is part of the LifeV library
9 
10  LifeV is free software; you can redistribute it and/or modify
11  it under the terms of the GNU Lesser General Public License as published by
12  the Free Software Foundation; either version 3 of the License, or
13  (at your option) any later version.
14 
15  LifeV is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  Lesser General Public License for more details.
19 
20  You should have received a copy of the GNU Lesser General Public
21  License along with this library; if not, see <http://www.gnu.org/licenses/>
22 
23 
24 *******************************************************************************
25 */
26 //@HEADER
27 
28 /*!
29  * @file
30  @brief This file contains the definition of the EvaluationInterpolateLaplacian class.
31 
32  @date 06/2011
33  @author Davide Forti <davide.forti@epfl.ch>
34  */
35 
36 #ifndef EVALUATION_INTERPOLATE_LAPLACIAN_HPP
37 #define EVALUATION_INTERPOLATE_LAPLACIAN_HPP
38 
39 #include <lifev/core/LifeV.hpp>
40 
41 #include <lifev/core/array/VectorEpetra.hpp>
42 #include <lifev/core/array/VectorSmall.hpp>
43 #include <lifev/core/array/MatrixSmall.hpp>
44 
45 #include <lifev/eta/fem/ETCurrentFE.hpp>
46 #include <lifev/eta/fem/ETCurrentFlag.hpp>
47 #include <lifev/eta/fem/ETFESpace.hpp>
48 #include <lifev/core/fem/QuadratureRule.hpp>
49 
50 #include <lifev/eta/expression/ExpressionInterpolateLaplacian.hpp>
51 
52 
53 namespace LifeV
54 {
55 
56 namespace ExpressionAssembly
57 {
58 
59 //! Evaluation for the interpolation of a FE function
60 /*!
61  @author Davide Forti <davide.forti@epfl.ch>
62 
63  This class aims at representing an interpolated FE value.
64 
65  This is the generic implementation, so representing a vectorial FE
66 
67  This class is an Evaluation class, and therefore, has all the methods
68  required to work within the Evaluation trees.
69 
70  !! NOT DEFINED YET !! (Reason: miss SimpleTensor)
71  */
72 template<typename MeshType, typename MapType, UInt SpaceDim, UInt FieldDim>
73 class EvaluationInterpolateLaplacian
74 {
75 public:
76 
77  //! @name Public Types
78  //@{
79 
80  //! Type of the value returned by this class
81  typedef VectorSmall<FieldDim> return_Type;
82 
83  //! Type of the FESpace to be used in this class
84  typedef ETFESpace<MeshType, MapType, SpaceDim, FieldDim> fespace_Type;
85 
86  //! Type of the pointer on the FESpace
87  typedef std::shared_ptr<fespace_Type> fespacePtr_Type;
88 
89  //! Type of the vector to be used
90  typedef VectorEpetra vector_Type;
91 
92  //@}
93 
94 
95  //! @name Static constants
96  //@{
97 
98  //! Flag for the global current FE
99  const static flag_Type S_globalUpdateFlag;
100 
101  //! Flag for the test current FE
102  const static flag_Type S_testUpdateFlag;
103 
104  //! Flag for the solution current FE
105  const static flag_Type S_solutionUpdateFlag;
106 
107  //@}
108 
109 
110  //! @name Constructors, destructor
111  //@{
112 
113  //! Copy constructor
114  EvaluationInterpolateLaplacian (const EvaluationInterpolateLaplacian<MeshType, MapType, SpaceDim, FieldDim>& evaluation)
115  :
116  M_fespace ( evaluation.M_fespace),
117  M_vector ( evaluation.M_vector, Repeated),
118  M_quadrature (0),
119  M_currentFE (evaluation.M_currentFE),
120  M_interpolatedLaplacians (evaluation.M_interpolatedLaplacians)
121  {
122  if (evaluation.M_quadrature != 0)
123  {
124  M_quadrature = new QuadratureRule (* (evaluation.M_quadrature) );
125  }
126  }
127 
128  //! Expression-based constructor
129  explicit EvaluationInterpolateLaplacian (const ExpressionInterpolateLaplacian<MeshType, MapType, SpaceDim, FieldDim>& expression)
130  :
131  M_fespace ( expression.fespace() ),
132  M_vector ( expression.vector(), Repeated ),
133  M_quadrature (0),
134  M_currentFE (M_fespace->refFE(), M_fespace->geoMap() ),
135  M_interpolatedLaplacians (0)
136  {}
137 
138  //! Destructor
139  ~EvaluationInterpolateLaplacian()
140  {
141  if (M_quadrature != 0)
142  {
143  delete M_quadrature;
144  }
145  }
146 
147  //@}
148 
149 
150  //! @name Methods
151  //@{
152  //! Internal update: computes the interpolated gradients
153  void update (const UInt& iElement)
154  {
155  zero();
156 
157  M_currentFE.update (M_fespace->mesh()->element (iElement), ET_UPDATE_LAPLACIAN);
158 
159  for (UInt i (0); i < M_fespace->refFE().nbDof(); ++i)
160  {
161  for (UInt q (0); q < M_quadrature->nbQuadPt(); ++q)
162  {
163  for (UInt jDim (0); jDim < FieldDim; ++jDim)
164  {
165  UInt globalID (M_fespace->dof().localToGlobalMap (iElement, i)
166  + jDim * M_fespace->dof().numTotalDof() );
167 
168  M_interpolatedLaplacians[q][jDim] +=
169  M_currentFE.laplacian (i + jDim * M_currentFE.nbFEDof(), q)[jDim]
170  * M_vector[globalID];
171  }
172  }
173  }
174 
175  }
176 
177  //! Erase the interpolated laplacians stored internally
178  void zero()
179  {
180  for (UInt q (0); q < M_quadrature->nbQuadPt(); ++q)
181  {
182  for (UInt j (0); j < FieldDim; ++j)
183  {
184  M_interpolatedLaplacians[q][j] = 0.0;
185  }
186  }
187  }
188 
189  //! Show the values
190  void showValues() const
191  {
192  std::cout << " Laplacians : " << std::endl;
193 
194  for (UInt i (0); i < M_quadrature->nbQuadPt(); ++i)
195  {
196  std::cout << M_interpolatedLaplacians[i] << std::endl;
197  }
198  }
199 
200  //! Display method
201  static void display (std::ostream& out = std::cout)
202  {
203  out << "interpolated[ " << FieldDim << " ][ " << SpaceDim << " ]";
204  }
205 
206  //@}
207 
208 
209  //! @name Set Methods
210  //@{
211 
212  //! Do nothing setter for the global current FE
213  template< typename CFEType >
214  void setGlobalCFE (const CFEType* /*globalCFE*/)
215  {}
216 
217  //! Do nothing setter for the test current FE
218  template< typename CFEType >
219  void setTestCFE (const CFEType* /*testCFE*/)
220  {}
221 
222  //! Do nothing setter for the solution current FE
223  template< typename CFEType >
224  void setSolutionCFE (const CFEType* /*solutionCFE*/)
225  {}
226 
227  //! Setter for the quadrature rule
228  void setQuadrature (const QuadratureRule& qr)
229  {
230  if (M_quadrature != 0)
231  {
232  delete M_quadrature;
233  }
234  M_quadrature = new QuadratureRule (qr);
235  M_currentFE.setQuadratureRule (qr);
236  M_interpolatedLaplacians.resize (qr.nbQuadPt() );
237  }
238 
239  //@}
240 
241 
242  //! @name Get Methods
243  //@{
244 
245  //! Getter for a value
246  return_Type value_q (const UInt& q) const
247  {
248  return M_interpolatedLaplacians[q];
249  }
250 
251  //! Getter for the value for a vector
252  return_Type value_qi (const UInt& q, const UInt& /*i*/) const
253  {
254  return M_interpolatedLaplacians[q];
255  }
256 
257  //! Getter for the value for a matrix
258  return_Type value_qij (const UInt& q, const UInt& /*i*/, const UInt& /*j*/) const
259  {
260  return M_interpolatedLaplacians[q];
261  }
262 
263  //@}
264 
265 
266 private:
267 
268  //! @name Private Methods
269  //@{
270 
271  //! No empty constructor
272  EvaluationInterpolateLaplacian();
273 
274  //@}
275 
276  //! Data storage
277  fespacePtr_Type M_fespace;
278  vector_Type M_vector;
279  QuadratureRule* M_quadrature;
280 
281  //! Structure for the computations
282  ETCurrentFE<SpaceDim, FieldDim> M_currentFE;
283 
284  //! Storage for the temporary values
285  std::vector<return_Type> M_interpolatedLaplacians;
286 };
287 
288 template<typename MeshType, typename MapType, UInt SpaceDim, UInt FieldDim>
289 const flag_Type
290 EvaluationInterpolateLaplacian<MeshType, MapType, SpaceDim, FieldDim>::
291 S_globalUpdateFlag = ET_UPDATE_NONE;
292 
293 template<typename MeshType, typename MapType, UInt SpaceDim, UInt FieldDim>
294 const flag_Type
295 EvaluationInterpolateLaplacian<MeshType, MapType, SpaceDim, FieldDim>::
296 S_testUpdateFlag = ET_UPDATE_NONE;
297 
298 template<typename MeshType, typename MapType, UInt SpaceDim, UInt FieldDim>
299 const flag_Type
300 EvaluationInterpolateLaplacian<MeshType, MapType, SpaceDim, FieldDim>::
301 S_solutionUpdateFlag = ET_UPDATE_NONE;
302 
303 
304 //! Evaluation for the interpolation of the laplacian of a FE function
305 /*!
306  @author Davide Forti <davide.forti@epfl.ch>
307 
308  This class aims at representing an interpolated FE gradient.
309 
310  This is the specialized (partially) implementation representing a scalar FE
311 
312  This class is an Evaluation class, and therefore, has all the methods
313  required to work within the Evaluation trees.
314  */
315 
316 template<typename MeshType, typename MapType, UInt SpaceDim>
317 class EvaluationInterpolateLaplacian<MeshType, MapType, SpaceDim, 1>
318 {
319 
320 public:
321 
322  //! @name Public Types
323  //@{
324 
325  //! Type of the value returned by this class
326  typedef Real return_Type;
327 
328  //! Type of the FESpace to be used in this class
329  typedef ETFESpace<MeshType, MapType, SpaceDim, 1> fespace_Type;
330 
331  //! Type of the pointer on the FESpace
332  typedef std::shared_ptr<fespace_Type> fespacePtr_Type;
333 
334  //! Type of the vector to be used
335  typedef VectorEpetra vector_Type;
336 
337  //@}
338 
339 
340  //! @name Static constants
341  //@{
342 
343  //! Flag for the global current FE
344  const static flag_Type S_globalUpdateFlag;
345 
346  //! Flag for the test current FE
347  const static flag_Type S_testUpdateFlag;
348 
349  //! Flag for the solution current FE
350  const static flag_Type S_solutionUpdateFlag;
351 
352  //@}
353 
354 
355  //! @name Constructors, destructor
356  //@{
357 
358  //! Copy constructor
359  EvaluationInterpolateLaplacian (const EvaluationInterpolateLaplacian<MeshType, MapType, SpaceDim, 1>& evaluation)
360  :
361  M_fespace ( evaluation.M_fespace),
362  M_vector ( evaluation.M_vector, Repeated),
363  M_offset ( evaluation.M_offset ),
364  M_quadrature (0),
365  M_currentFE (evaluation.M_currentFE),
366  M_interpolatedLaplacians (evaluation.M_interpolatedLaplacians)
367  {
368  if (evaluation.M_quadrature != 0)
369  {
370  M_quadrature = new QuadratureRule (* (evaluation.M_quadrature) );
371  }
372  }
373 
374  //! Expression-based constructor
375  explicit EvaluationInterpolateLaplacian (const ExpressionInterpolateLaplacian<MeshType, MapType, SpaceDim, 1>& expression)
376  :
377  M_fespace ( expression.fespace() ),
378  M_vector ( expression.vector(), Repeated ),
379  M_offset ( expression.offset() ),
380  M_quadrature (0),
381  M_currentFE (M_fespace->refFE(), M_fespace->geoMap() ),
382  M_interpolatedLaplacians (0)
383  {}
384 
385  //! Destructor
386  ~EvaluationInterpolateLaplacian()
387  {
388  if (M_quadrature != 0)
389  {
390  delete M_quadrature;
391  }
392  }
393 
394  //@}
395 
396 
397  //! @name Methods
398  //@{
399 
400  //! Internal update: computes the interpolated gradients
401  void update (const UInt& iElement)
402  {
403  zero();
404 
405  M_currentFE.update (M_fespace->mesh()->element (iElement), ET_UPDATE_LAPLACIAN);
406 
407  for (UInt i (0); i < M_fespace->refFE().nbDof(); ++i)
408  {
409  for (UInt q (0); q < M_quadrature->nbQuadPt(); ++q)
410  {
411  UInt globalID (M_fespace->dof().localToGlobalMap (iElement, i) + M_offset);
412 
413  M_interpolatedLaplacians[q] +=
414  M_currentFE.laplacian (i, q)
415  * M_vector[globalID];
416  }
417  }
418  }
419 
420  //! Erase the interpolated gradients stored internally
421  void zero()
422  {
423  for (UInt q (0); q < M_quadrature->nbQuadPt(); ++q)
424  {
425  for (UInt i (0); i < SpaceDim; ++i)
426  {
427  M_interpolatedLaplacians[q] = 0.0;
428  }
429  }
430  }
431 
432  //! Show the values
433  void showValues() const
434  {
435  std::cout << " Gradients : " << std::endl;
436 
437  for (UInt i (0); i < M_quadrature->nbQuadPt(); ++i)
438  {
439  std::cout << M_interpolatedLaplacians[i] << std::endl;
440  }
441  }
442 
443  //! Display method
444  static void display (std::ostream& out = std::cout)
445  {
446  out << "interpolated[ " << SpaceDim << " ]";
447  }
448 
449  //@}
450 
451 
452  //! @name Set Methods
453  //@{
454 
455  //! Do nothing setter for the global current FE
456  template< typename CFEType >
457  void setGlobalCFE (const CFEType* /*globalCFE*/)
458  {}
459 
460  //! Do nothing setter for the test current FE
461  template< typename CFEType >
462  void setTestCFE (const CFEType* /*testCFE*/)
463  {}
464 
465  //! Do nothing setter for the solution current FE
466  template< typename CFEType >
467  void setSolutionCFE (const CFEType* /*solutionCFE*/)
468  {}
469 
470  //! Setter for the quadrature rule
471  void setQuadrature (const QuadratureRule& qr)
472  {
473  if (M_quadrature != 0)
474  {
475  delete M_quadrature;
476  }
477  M_quadrature = new QuadratureRule (qr);
478  M_currentFE.setQuadratureRule (qr);
479  M_interpolatedLaplacians.resize (qr.nbQuadPt() );
480  }
481 
482  //@}
483 
484 
485  //! @name Get Methods
486  //@{
487 
488  //! Getter for a value
489  return_Type value_q (const UInt& q) const
490  {
491  return M_interpolatedLaplacians[q];
492  }
493 
494  //! Getter for the value for a vector
495  return_Type value_qi (const UInt& q, const UInt& /*i*/) const
496  {
497  return M_interpolatedLaplacians[q];
498  }
499 
500  //! Getter for the value for a matrix
501  return_Type value_qij (const UInt& q, const UInt& /*i*/, const UInt& /*j*/) const
502  {
503  return M_interpolatedLaplacians[q];
504  }
505 
506  //@}
507 
508 private:
509 
510  //! @name Private Methods
511  //@{
512 
513  //! No empty constructor
514  EvaluationInterpolateLaplacian();
515 
516  //@}
517 
518  //! Data storage
519  fespacePtr_Type M_fespace;
520  vector_Type M_vector;
521  UInt M_offset;
522  QuadratureRule* M_quadrature;
523 
524  //! Structure for the computations
525  ETCurrentFE<SpaceDim, 1> M_currentFE;
526 
527  //! Storage for the temporary values
528  std::vector<return_Type> M_interpolatedLaplacians;
529 };
530 
531 
532 template<typename MeshType, typename MapType, UInt SpaceDim>
533 const flag_Type
534 EvaluationInterpolateLaplacian<MeshType, MapType, SpaceDim, 1>::
535 S_globalUpdateFlag = ET_UPDATE_NONE;
536 
537 template<typename MeshType, typename MapType, UInt SpaceDim>
538 const flag_Type
539 EvaluationInterpolateLaplacian<MeshType, MapType, SpaceDim, 1>::
540 S_testUpdateFlag = ET_UPDATE_NONE;
541 
542 template<typename MeshType, typename MapType, UInt SpaceDim>
543 const flag_Type
544 EvaluationInterpolateLaplacian<MeshType, MapType, SpaceDim, 1>::
545 S_solutionUpdateFlag = ET_UPDATE_NONE;
546 
547 
548 
549 
550 ////! Evaluation for the interpolation of the gradient of a FE function
551 ///*!
552 // @author Samuel Quinodoz <samuel.quinodoz@epfl.ch>
553 //
554 // This class aims at representing an interpolated FE gradient.
555 //
556 // This is the specialized (partially) implementation representing a vector FE
557 //
558 // This class is an Evaluation class, and therefore, has all the methods
559 // required to work within the Evaluation trees.
560 // */
561 //template<typename MeshType, typename MapType>
562 //class EvaluationInterpolateLaplacian<MeshType, MapType, 3, 3>
563 //{
564 //
565 //public:
566 //
567 // //! @name Public Types
568 // //@{
569 //
570 // //! Type of the value returned by this class
571 // typedef MatrixSmall<3, 3> return_Type;
572 //
573 // //! Type of the FESpace to be used in this class
574 // typedef ETFESpace<MeshType, MapType, 3, 3> fespace_Type;
575 //
576 // //! Type of the pointer on the FESpace
577 // typedef std::shared_ptr<fespace_Type> fespacePtr_Type;
578 //
579 // //! Type of the vector to be used
580 // typedef VectorEpetra vector_Type;
581 //
582 // //@}
583 //
584 //
585 // //! @name Static constants
586 // //@{
587 //
588 // //! Flag for the global current FE
589 // const static flag_Type S_globalUpdateFlag;
590 //
591 // //! Flag for the test current FE
592 // const static flag_Type S_testUpdateFlag;
593 //
594 // //! Flag for the solution current FE
595 // const static flag_Type S_solutionUpdateFlag;
596 //
597 // //@}
598 //
599 //
600 // //! @name Constructors, destructor
601 // //@{
602 //
603 // //! Copy constructor
604 // EvaluationInterpolateLaplacian (const EvaluationInterpolateLaplacian<MeshType, MapType, 3, 3>& evaluation)
605 // :
606 // M_fespace ( evaluation.M_fespace),
607 // M_vector ( evaluation.M_vector, Repeated),
608 // M_offset ( evaluation.M_offset ),
609 // M_quadrature (0),
610 // M_currentFE (evaluation.M_currentFE),
611 // M_interpolatedLaplacians (evaluation.M_interpolatedLaplacians)
612 // {
613 // if (evaluation.M_quadrature != 0)
614 // {
615 // M_quadrature = new QuadratureRule (* (evaluation.M_quadrature) );
616 // }
617 // }
618 //
619 // //! Expression-based constructor
620 // explicit EvaluationInterpolateLaplacian (const ExpressionInterpolateLaplacian<MeshType, MapType, 3, 3>& expression)
621 // :
622 // M_fespace ( expression.fespace() ),
623 // M_vector ( expression.vector(), Repeated ),
624 // M_offset ( expression.offset() ),
625 // M_quadrature (0),
626 // M_currentFE (M_fespace->refFE(), M_fespace->geoMap() ),
627 // M_interpolatedLaplacians (0)
628 // {}
629 //
630 // //! Destructor
631 // ~EvaluationInterpolateLaplacian()
632 // {
633 // if (M_quadrature != 0)
634 // {
635 // delete M_quadrature;
636 // }
637 // }
638 //
639 // //@}
640 //
641 //
642 // //! @name Methods
643 // //@{
644 //
645 // //! Internal update: computes the interpolated gradients
646 // void update (const UInt& iElement)
647 // {
648 // zero();
649 //
650 // M_currentFE.update (M_fespace->mesh()->element (iElement), ET_UPDATE_DPHI);
651 // Real nbFEDof (M_fespace->refFE().nbDof() );
652 //
653 // VectorSmall<3> nodalValues;
654 // MatrixSmall<3, 3> nodalGradMatrix;
655 //
656 // for (UInt i (0); i < nbFEDof; ++i)
657 // {
658 // for (UInt iField (0); iField < 3; ++iField)
659 // {
660 // UInt globalID (M_fespace->dof().localToGlobalMap (iElement, i) + iField * M_fespace->dof().numTotalDof() + M_offset);
661 // nodalValues[iField] = M_vector[globalID];
662 // }
663 //
664 //
665 //
666 // for (UInt q (0); q < M_quadrature->nbQuadPt(); ++q)
667 // {
668 // nodalGradMatrix = M_currentFE.dphi (i, q)
669 // + M_currentFE.dphi (i + nbFEDof, q)
670 // + M_currentFE.dphi (i + 2 * nbFEDof, q);
671 //
672 // M_interpolatedLaplacians[q] += nodalGradMatrix.emult (nodalValues);
673 //
674 // }
675 //
676 // }
677 // }
678 //
679 // //! Erase the interpolated gradients stored internally
680 // void zero()
681 // {
682 // for (UInt q (0); q < M_quadrature->nbQuadPt(); ++q)
683 // {
684 // for (UInt j (0); j < 3; ++j)
685 // {
686 // for (UInt i (0); i < 3; ++i)
687 // {
688 // M_interpolatedLaplacians[q][j][i] = 0.0;
689 // }
690 // }
691 // }
692 // }
693 //
694 // //! Show the values
695 // void showValues() const
696 // {
697 // std::cout << " Gradients : " << std::endl;
698 //
699 // for (UInt i (0); i < M_quadrature->nbQuadPt(); ++i)
700 // {
701 // std::cout << M_interpolatedLaplacians[i] << std::endl;
702 // }
703 // }
704 //
705 // //! Display method
706 // static void display (std::ostream& out = std::cout)
707 // {
708 // out << "interpolated[ " << 3 << " ]";
709 // }
710 //
711 // //@}
712 //
713 //
714 // //! @name Set Methods
715 // //@{
716 //
717 // //! Do nothing setter for the global current FE
718 // template< typename CFEType >
719 // void setGlobalCFE (const CFEType* /*globalCFE*/)
720 // {}
721 //
722 // //! Do nothing setter for the test current FE
723 // template< typename CFEType >
724 // void setTestCFE (const CFEType* /*testCFE*/)
725 // {}
726 //
727 // //! Do nothing setter for the solution current FE
728 // template< typename CFEType >
729 // void setSolutionCFE (const CFEType* /*solutionCFE*/)
730 // {}
731 //
732 // //! Setter for the quadrature rule
733 // void setQuadrature (const QuadratureRule& qr)
734 // {
735 // if (M_quadrature != 0)
736 // {
737 // delete M_quadrature;
738 // }
739 // M_quadrature = new QuadratureRule (qr);
740 // M_currentFE.setQuadratureRule (qr);
741 // M_interpolatedLaplacians.resize (qr.nbQuadPt() );
742 // }
743 //
744 // //@}
745 //
746 //
747 // //! @name Get Methods
748 // //@{
749 //
750 // //! Getter for a value
751 // return_Type value_q (const UInt& q) const
752 // {
753 // return M_interpolatedLaplacians[q];
754 // }
755 //
756 // //! Getter for the value for a vector
757 // return_Type value_qi (const UInt& q, const UInt& /*i*/) const
758 // {
759 // return M_interpolatedLaplacians[q];
760 // }
761 //
762 // //! Getter for the value for a matrix
763 // return_Type value_qij (const UInt& q, const UInt& /*i*/, const UInt& /*j*/) const
764 // {
765 // return M_interpolatedLaplacians[q];
766 // }
767 //
768 // //@}
769 //
770 //private:
771 //
772 // //! @name Private Methods
773 // //@{
774 //
775 // //! No empty constructor
776 // EvaluationInterpolateLaplacian();
777 //
778 // //@}
779 //
780 // //! Data storage
781 // fespacePtr_Type M_fespace;
782 // vector_Type M_vector;
783 // UInt M_offset;
784 // QuadratureRule* M_quadrature;
785 //
786 // //! Structure for the computations
787 // ETCurrentFE<3, 3> M_currentFE;
788 //
789 // //! Storage for the temporary values
790 // std::vector<return_Type> M_interpolatedLaplacians;
791 //};
792 //
793 //
794 //template<typename MeshType, typename MapType >
795 //const flag_Type
796 //EvaluationInterpolateLaplacian<MeshType, MapType, 3, 3>::
797 //S_globalUpdateFlag = ET_UPDATE_NONE;
798 //
799 //template<typename MeshType, typename MapType>
800 //const flag_Type
801 //EvaluationInterpolateLaplacian<MeshType, MapType, 3, 3>::
802 //S_testUpdateFlag = ET_UPDATE_NONE;
803 //
804 //template<typename MeshType, typename MapType>
805 //const flag_Type
806 //EvaluationInterpolateLaplacian<MeshType, MapType, 3, 3>::
807 //S_solutionUpdateFlag = ET_UPDATE_NONE;
808 //
809 
810 } // Namespace ExpressionAssembly
811 
812 } // Namespace LifeV
813 #endif
VectorEpetra - The Epetra Vector format Wrapper.
uint32_type flag_Type
bit-flag with up to 32 different flags
Definition: LifeV.hpp:197
QuadratureRule(const QuadratureRule &qr)
Copy constructor.
void updateInverseJacobian(const UInt &iQuadPt)
double Real
Generic real data.
Definition: LifeV.hpp:175
QuadratureRule - The basis class for storing and accessing quadrature rules.
const UInt & nbQuadPt() const
Getter for the number of quadrature points.
uint32_type UInt
generic unsigned integer (used mainly for addressing)
Definition: LifeV.hpp:191