From: Matthias Maier Date: Fri, 17 Apr 2015 12:26:56 +0000 (+0200) Subject: Override all interpolate() variants in FE_Q_Hierarchical X-Git-Tag: v8.3.0-rc1~254^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F823%2Fhead;p=dealii.git Override all interpolate() variants in FE_Q_Hierarchical --- diff --git a/include/deal.II/fe/fe_q_hierarchical.h b/include/deal.II/fe/fe_q_hierarchical.h index 3e4879ecef..4cb4cd508b 100644 --- a/include/deal.II/fe/fe_q_hierarchical.h +++ b/include/deal.II/fe/fe_q_hierarchical.h @@ -693,15 +693,29 @@ public: get_constant_modes () const; /** - * A function to interpolate scalar values, computed at the - * support points to the FE_Q_Hierarchical. - * * This function is not implemented and throws an exception if called. */ virtual void interpolate(std::vector &local_dofs, const std::vector &values) const; + /** + * This function is not implemented and throws an exception if called. + */ + virtual + void + interpolate(std::vector &local_dofs, + const std::vector > &values, + unsigned int offset = 0) const; + + /** + * This function is not implemented and throws an exception if called. + */ + virtual + void + interpolate(std::vector &local_dofs, + const VectorSlice > > &values) const; + protected: /** diff --git a/source/fe/fe_bdm.cc b/source/fe/fe_bdm.cc index f21a6fe434..e3ba8dc39f 100644 --- a/source/fe/fe_bdm.cc +++ b/source/fe/fe_bdm.cc @@ -1,6 +1,6 @@ // --------------------------------------------------------------------- // -// Copyright (C) 2003 - 2014 by the deal.II authors +// Copyright (C) 2003 - 2015 by the deal.II authors // // This file is part of the deal.II library. // @@ -165,10 +165,9 @@ FE_BDM::interpolate( ExcDimensionMismatch(values.size(), this->generalized_support_points.size())); Assert (local_dofs.size() == this->dofs_per_cell, ExcDimensionMismatch(local_dofs.size(),this->dofs_per_cell)); - // First do interpolation on - // faces. There, the component - // evaluated depends on the face - // direction and orientation. + + // First do interpolation on faces. There, the component evaluated + // depends on the face direction and orientation. unsigned int fbase = 0; unsigned int f=0; for (; f::faces_per_cell; diff --git a/source/fe/fe_q_hierarchical.cc b/source/fe/fe_q_hierarchical.cc index 9c24bd82cb..79f85a7a85 100644 --- a/source/fe/fe_q_hierarchical.cc +++ b/source/fe/fe_q_hierarchical.cc @@ -122,22 +122,39 @@ FE_Q_Hierarchical::get_name () const return namebuf.str(); } + +template +void +FE_Q_Hierarchical::interpolate( + std::vector &, + const std::vector &) const +{ + // The default implementation assumes that the FE has a delta property, + // i.e., values at the support points equal the corresponding DoFs. This + // is obviously not the case here. + Assert (false, ExcNotImplemented()); +} + + template void FE_Q_Hierarchical::interpolate( - std::vector &/*local_dofs*/, - const std::vector &/*values*/) const + std::vector &, + const std::vector > &, + unsigned int) const { - // The default implementation - // assumes that the FE has a delta property, - // i.e. values at the support points equal - // the corresponding DoFs. - // This is obviously not the case here. - Assert (false, - ExcNotImplemented()); + Assert (false, ExcNotImplemented()); } +template +void +FE_Q_Hierarchical::interpolate( + std::vector &local_dofs, + const VectorSlice > > &values) const +{ + Assert (false, ExcNotImplemented()); +} template