Reference documentation for deal.II version 8.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
fe_values.h
1 // ---------------------------------------------------------------------
2 // @f$Id: fe_values.h 30364 2013-08-21 05:35:12Z kronbichler @f$
3 //
4 // Copyright (C) 2003 - 2013 by the deal.II authors
5 //
6 // This file is part of the deal.II library.
7 //
8 // The deal.II library is free software; you can use it, redistribute
9 // it, and/or modify it under the terms of the GNU Lesser General
10 // Public License as published by the Free Software Foundation; either
11 // version 2.1 of the License, or (at your option) any later version.
12 // The full text of the license can be found in the file LICENSE at
13 // the top level of the deal.II distribution.
14 //
15 // ---------------------------------------------------------------------
16 
17 #ifndef __deal2__hp_fe_values_h
18 #define __deal2__hp_fe_values_h
19 
20 #include <deal.II/base/config.h>
21 #include <deal.II/fe/fe.h>
22 #include <deal.II/hp/fe_collection.h>
23 #include <deal.II/hp/q_collection.h>
24 #include <deal.II/hp/mapping_collection.h>
25 #include <deal.II/fe/fe_values.h>
26 
27 #include <map>
28 #include <deal.II/base/std_cxx1x/shared_ptr.h>
29 
30 DEAL_II_NAMESPACE_OPEN
31 
32 template <int dim, int spacedim> class MappingQ1;
33 template <int dim, int spacedim> class FiniteElement;
34 
35 
36 
37 namespace internal
38 {
39  namespace hp
40  {
62  template <int dim, int q_dim, class FEValues>
64  {
65  public:
70  FEValuesBase (const ::hp::MappingCollection<dim,FEValues::space_dimension> &mapping_collection,
71  const ::hp::FECollection<dim,FEValues::space_dimension> &fe_collection,
72  const ::hp::QCollection<q_dim> &q_collection,
79  FEValuesBase (const ::hp::FECollection<dim,FEValues::space_dimension> &fe_collection,
80  const ::hp::QCollection<q_dim> &q_collection,
81  const UpdateFlags update_flags);
82 
87  const ::hp::FECollection<dim,FEValues::space_dimension> &
88  get_fe_collection () const;
89 
94  const ::hp::MappingCollection<dim,FEValues::space_dimension> &
95  get_mapping_collection () const;
96 
101  const ::hp::QCollection<q_dim> &
102  get_quadrature_collection () const;
103 
108 
115  const FEValues &get_present_fe_values () const;
116 
117  protected:
118 
126  FEValues &
127  select_fe_values (const unsigned int fe_index,
128  const unsigned int mapping_index,
129  const unsigned int q_index);
130 
131  protected:
137 
143 
147  const ::hp::QCollection<q_dim> q_collection;
148 
149  private:
162 
168 
173  };
174 
175  }
176 
177 }
178 
179 
180 namespace hp
181 {
182 
229  template <int dim, int spacedim=dim>
230  class FEValues : public ::internal::hp::FEValuesBase<dim,dim,::FEValues<dim,spacedim> >
231  {
232  public:
233 
234  static const unsigned int dimension = dim;
235 
236  static const unsigned int space_dimension = spacedim;
237 
247  FEValues (const ::hp::MappingCollection<dim,spacedim> &mapping_collection,
248  const ::hp::FECollection<dim,spacedim> &fe_collection,
249  const ::hp::QCollection<dim> &q_collection,
250  const UpdateFlags update_flags);
251 
252 
263  FEValues (const hp::FECollection<dim,spacedim> &fe_collection,
264  const hp::QCollection<dim> &q_collection,
265  const UpdateFlags update_flags);
266 
267 
314  template <class DH, bool lda>
315  void
317  const unsigned int q_index = numbers::invalid_unsigned_int,
318  const unsigned int mapping_index = numbers::invalid_unsigned_int,
319  const unsigned int fe_index = numbers::invalid_unsigned_int);
320 
335  void
337  const unsigned int q_index = numbers::invalid_unsigned_int,
338  const unsigned int mapping_index = numbers::invalid_unsigned_int,
339  const unsigned int fe_index = numbers::invalid_unsigned_int);
340 
341 
342  };
343 
344 
345 
369  template <int dim, int spacedim=dim>
370  class FEFaceValues : public ::internal::hp::FEValuesBase<dim,dim-1,::FEFaceValues<dim,spacedim> >
371  {
372  public:
385  const UpdateFlags update_flags);
386 
387 
398  FEFaceValues (const hp::FECollection<dim,spacedim> &fe_collection,
399  const hp::QCollection<dim-1> &q_collection,
400  const UpdateFlags update_flags);
401 
448  template <class DH, bool lda>
449  void
451  const unsigned int face_no,
452  const unsigned int q_index = numbers::invalid_unsigned_int,
453  const unsigned int mapping_index = numbers::invalid_unsigned_int,
454  const unsigned int fe_index = numbers::invalid_unsigned_int);
455 
470  void
472  const unsigned int face_no,
473  const unsigned int q_index = numbers::invalid_unsigned_int,
474  const unsigned int mapping_index = numbers::invalid_unsigned_int,
475  const unsigned int fe_index = numbers::invalid_unsigned_int);
476  };
477 
478 
479 
487  template <int dim, int spacedim=dim>
488  class FESubfaceValues : public ::internal::hp::FEValuesBase<dim,dim-1,::FESubfaceValues<dim,spacedim> >
489  {
490  public:
503  const UpdateFlags update_flags);
504 
505 
516  FESubfaceValues (const hp::FECollection<dim,spacedim> &fe_collection,
517  const hp::QCollection<dim-1> &q_collection,
518  const UpdateFlags update_flags);
519 
556  template <class DH, bool lda>
557  void
559  const unsigned int face_no,
560  const unsigned int subface_no,
561  const unsigned int q_index = numbers::invalid_unsigned_int,
562  const unsigned int mapping_index = numbers::invalid_unsigned_int,
563  const unsigned int fe_index = numbers::invalid_unsigned_int);
564 
579  void
581  const unsigned int face_no,
582  const unsigned int subface_no,
583  const unsigned int q_index = numbers::invalid_unsigned_int,
584  const unsigned int mapping_index = numbers::invalid_unsigned_int,
585  const unsigned int fe_index = numbers::invalid_unsigned_int);
586  };
587 
588 }
589 
590 
591 // -------------- inline and template functions --------------
592 
593 namespace internal
594 {
595  namespace hp
596  {
597  template <int dim, int q_dim, class FEValues>
598  inline
599  const FEValues &
601  {
602  return *fe_values_table(present_fe_values_index);
603  }
604 
605 
606 
607  template <int dim, int q_dim, class FEValues>
608  inline
609  const ::hp::FECollection<dim,FEValues::space_dimension> &
611  {
612  return *fe_collection;
613  }
614 
615 
616 
617  template <int dim, int q_dim, class FEValues>
618  inline
619  const ::hp::MappingCollection<dim,FEValues::space_dimension> &
621  {
622  return *mapping_collection;
623  }
624 
625 
626 
627  template <int dim, int q_dim, class FEValues>
628  inline
629  const ::hp::QCollection<q_dim> &
631  {
632  return q_collection;
633  }
634 
635 
636 
637  template <int dim, int q_dim, class FEValues>
638  inline
641  {
642  return update_flags;
643  }
644  }
645 
646 }
647 
648 DEAL_II_NAMESPACE_CLOSE
649 
650 #endif
static const unsigned int invalid_unsigned_int
Definition: types.h:191
void reinit(const TriaIterator< DoFCellAccessor< DH, lda > > cell, const unsigned int face_no, const unsigned int subface_no, const unsigned int q_index=numbers::invalid_unsigned_int, const unsigned int mapping_index=numbers::invalid_unsigned_int, const unsigned int fe_index=numbers::invalid_unsigned_int)
void reinit(const TriaIterator< DoFCellAccessor< DH, lda > > cell, const unsigned int q_index=numbers::invalid_unsigned_int, const unsigned int mapping_index=numbers::invalid_unsigned_int, const unsigned int fe_index=numbers::invalid_unsigned_int)
FESubfaceValues(const hp::MappingCollection< dim, spacedim > &mapping_collection, const hp::FECollection< dim, spacedim > &fe_collection, const hp::QCollection< dim-1 > &q_collection, const UpdateFlags update_flags)
FEValues & select_fe_values(const unsigned int fe_index, const unsigned int mapping_index, const unsigned int q_index)
const ::hp::FECollection< dim, FEValues::space_dimension > & get_fe_collection() const
Definition: fe_values.h:610
const SmartPointer< const ::hp::MappingCollection< dim, FEValues::space_dimension >, FEValuesBase< dim, q_dim, FEValues > > mapping_collection
Definition: fe_values.h:142
const ::hp::QCollection< q_dim > & get_quadrature_collection() const
Definition: fe_values.h:630
const ::hp::QCollection< q_dim > q_collection
Definition: fe_values.h:147
const ::hp::MappingCollection< dim, FEValues::space_dimension > & get_mapping_collection() const
Definition: fe_values.h:620
UpdateFlags
const FEValues & get_present_fe_values() const
Definition: fe_values.h:600
TableIndices< 3 > present_fe_values_index
Definition: fe_values.h:167
UpdateFlags get_update_flags() const
Definition: fe_values.h:640
FEValuesBase(const ::hp::MappingCollection< dim, FEValues::space_dimension > &mapping_collection, const ::hp::FECollection< dim, FEValues::space_dimension > &fe_collection, const ::hp::QCollection< q_dim > &q_collection, const UpdateFlags update_flags)
FEValues(const ::hp::MappingCollection< dim, spacedim > &mapping_collection, const ::hp::FECollection< dim, spacedim > &fe_collection, const ::hp::QCollection< dim > &q_collection, const UpdateFlags update_flags)
const SmartPointer< const ::hp::FECollection< dim, FEValues::space_dimension >, FEValuesBase< dim, q_dim, FEValues > > fe_collection
Definition: fe_values.h:136
Table< 3, std_cxx1x::shared_ptr< FEValues > > fe_values_table
Definition: fe_values.h:161
FEFaceValues(const hp::MappingCollection< dim, spacedim > &mapping_collection, const hp::FECollection< dim, spacedim > &fe_collection, const hp::QCollection< dim-1 > &q_collection, const UpdateFlags update_flags)
void reinit(const TriaIterator< DoFCellAccessor< DH, lda > > cell, const unsigned int face_no, const unsigned int q_index=numbers::invalid_unsigned_int, const unsigned int mapping_index=numbers::invalid_unsigned_int, const unsigned int fe_index=numbers::invalid_unsigned_int)
const UpdateFlags update_flags
Definition: fe_values.h:172