00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __deal2__fe_poly_face_h
00013 #define __deal2__fe_poly_face_h
00014
00015
00016 #include <deal.II/fe/fe.h>
00017
00018 DEAL_II_NAMESPACE_OPEN
00019
00022
00056 template <class POLY, int dim=POLY::dimension+1, int spacedim=dim>
00057 class FE_PolyFace : public FiniteElement<dim,spacedim>
00058 {
00059 public:
00063 FE_PolyFace (const POLY& poly_space,
00064 const FiniteElementData<dim> &fe_data,
00065 const std::vector<bool> &restriction_is_additive_flags);
00066
00073 unsigned int get_degree () const;
00074
00083
00084
00085
00103
00104
00105
00106
00115
00116
00117
00135
00136
00137
00138
00149
00150
00151
00169
00170
00171
00172
00173 protected:
00174
00175 virtual
00176 typename Mapping<dim,spacedim>::InternalDataBase *
00177 get_data (const UpdateFlags,
00178 const Mapping<dim,spacedim>& mapping,
00179 const Quadrature<dim>& quadrature) const ;
00180
00181 typename Mapping<dim,spacedim>::InternalDataBase *
00182 get_face_data (const UpdateFlags,
00183 const Mapping<dim,spacedim>& mapping,
00184 const Quadrature<dim-1>& quadrature) const ;
00185
00186 typename Mapping<dim,spacedim>::InternalDataBase *
00187 get_subface_data (const UpdateFlags,
00188 const Mapping<dim,spacedim>& mapping,
00189 const Quadrature<dim-1>& quadrature) const ;
00190
00191 virtual void
00192 fill_fe_values (const Mapping<dim,spacedim> &mapping,
00193 const typename Triangulation<dim,spacedim>::cell_iterator &cell,
00194 const Quadrature<dim> &quadrature,
00195 typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
00196 typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
00197 FEValuesData<dim,spacedim> &data,
00198 CellSimilarity::Similarity &cell_similarity) const;
00199
00200 virtual void
00201 fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
00202 const typename Triangulation<dim,spacedim>::cell_iterator &cell,
00203 const unsigned int face_no,
00204 const Quadrature<dim-1> &quadrature,
00205 typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
00206 typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
00207 FEValuesData<dim,spacedim>& data) const ;
00208
00209 virtual void
00210 fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
00211 const typename Triangulation<dim,spacedim>::cell_iterator &cell,
00212 const unsigned int face_no,
00213 const unsigned int sub_no,
00214 const Quadrature<dim-1> &quadrature,
00215 typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
00216 typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
00217 FEValuesData<dim,spacedim>& data) const ;
00218
00219
00246 virtual UpdateFlags update_once (const UpdateFlags flags) const;
00247
00302 virtual UpdateFlags update_each (const UpdateFlags flags) const;
00303
00304
00313 class InternalData : public FiniteElement<dim,spacedim>::InternalDataBase
00314 {
00315 public:
00341 std::vector<std::vector<double> > shape_values;
00342 };
00343
00349 POLY poly_space;
00350 };
00351
00354 DEAL_II_NAMESPACE_CLOSE
00355
00356 #endif
00357