include/deal.II/fe/fe_poly.h

00001 //---------------------------------------------------------------------------
00002 //    @f$Id: fe_poly.h 25493 2012-05-05 18:36:25Z kormann @f$
00003 //
00004 //    Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011, 2012 by the deal.II authors
00005 //
00006 //    This file is subject to QPL and may not be  distributed
00007 //    without copyright and license information. Please refer
00008 //    to the file deal.II/doc/license.html for the  text  and
00009 //    further information on this license.
00010 //
00011 //---------------------------------------------------------------------------
00012 #ifndef __deal2__fe_poly_h
00013 #define __deal2__fe_poly_h
00014 
00015 
00016 #include <deal.II/fe/fe.h>
00017 
00018 DEAL_II_NAMESPACE_OPEN
00019 
00022 
00064 template <class POLY, int dim=POLY::dimension, int spacedim=dim>
00065 class FE_Poly : public FiniteElement<dim,spacedim>
00066 {
00067   public:
00071     FE_Poly (const POLY& poly_space,
00072              const FiniteElementData<dim> &fe_data,
00073              const std::vector<bool> &restriction_is_additive_flags,
00074              const std::vector<std::vector<bool> > &nonzero_components);
00075 
00082     unsigned int get_degree () const;
00083 
00091     std::vector<unsigned int> get_poly_space_numbering() const;
00092 
00098     std::vector<unsigned int> get_poly_space_numbering_inverse() const;
00099 
00108     virtual double shape_value (const unsigned int i,
00109                                 const Point<dim> &p) const;
00110 
00128     virtual double shape_value_component (const unsigned int i,
00129                                           const Point<dim> &p,
00130                                           const unsigned int component) const;
00131 
00140     virtual Tensor<1,dim> shape_grad (const unsigned int  i,
00141                                       const Point<dim>   &p) const;
00142 
00160     virtual Tensor<1,dim> shape_grad_component (const unsigned int i,
00161                                                 const Point<dim> &p,
00162                                                 const unsigned int component) const;
00163 
00174     virtual Tensor<2,dim> shape_grad_grad (const unsigned int  i,
00175                                            const Point<dim> &p) const;
00176 
00194     virtual Tensor<2,dim> shape_grad_grad_component (const unsigned int i,
00195                                                      const Point<dim> &p,
00196                                                      const unsigned int component) const;
00197   protected:
00198 
00199     virtual
00200     typename Mapping<dim,spacedim>::InternalDataBase *
00201     get_data (const UpdateFlags,
00202               const Mapping<dim,spacedim>& mapping,
00203               const Quadrature<dim>& quadrature) const ;
00204 
00205     virtual void
00206     fill_fe_values (const Mapping<dim,spacedim>                           &mapping,
00207                     const typename Triangulation<dim,spacedim>::cell_iterator &cell,
00208                     const Quadrature<dim>                                 &quadrature,
00209                     typename Mapping<dim,spacedim>::InternalDataBase      &mapping_internal,
00210                     typename Mapping<dim,spacedim>::InternalDataBase      &fe_internal,
00211                     FEValuesData<dim,spacedim>                            &data,
00212                     CellSimilarity::Similarity                       &cell_similarity) const;
00213 
00214     virtual void
00215     fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
00216                          const typename Triangulation<dim,spacedim>::cell_iterator &cell,
00217                          const unsigned int                    face_no,
00218                          const Quadrature<dim-1>                &quadrature,
00219                          typename Mapping<dim,spacedim>::InternalDataBase      &mapping_internal,
00220                          typename Mapping<dim,spacedim>::InternalDataBase      &fe_internal,
00221                          FEValuesData<dim,spacedim>& data) const ;
00222 
00223     virtual void
00224     fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
00225                             const typename Triangulation<dim,spacedim>::cell_iterator &cell,
00226                             const unsigned int                    face_no,
00227                             const unsigned int                    sub_no,
00228                             const Quadrature<dim-1>                &quadrature,
00229                             typename Mapping<dim,spacedim>::InternalDataBase      &mapping_internal,
00230                             typename Mapping<dim,spacedim>::InternalDataBase      &fe_internal,
00231                             FEValuesData<dim,spacedim>& data) const ;
00232 
00233 
00260     virtual UpdateFlags update_once (const UpdateFlags flags) const;
00261 
00316     virtual UpdateFlags update_each (const UpdateFlags flags) const;
00317 
00318 
00327     class InternalData : public FiniteElement<dim,spacedim>::InternalDataBase
00328     {
00329       public:
00350         std::vector<std::vector<double> > shape_values;
00351 
00370         std::vector<std::vector<Tensor<1,dim> > > shape_gradients;
00371     };
00372 
00378     POLY poly_space;
00379 };
00380 
00383 DEAL_II_NAMESPACE_CLOSE
00384 
00385 #endif
00386 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

deal.II documentation generated on Tue May 22 2012 12:06:08 by doxygen 1.7.3