23#include <deal.II/grid/tria_iterator.templates.h>
45template <
int dim,
int spacedim,
bool lda>
46template <
class InputVector,
typename number>
51 const unsigned int fe_index_)
const
53 const unsigned int fe_index =
54 (this->dof_handler->hp_capability_enabled ==
false &&
59 if (this->is_active())
64 if ((this->dof_handler->hp_capability_enabled ==
false) ||
68 (fe_index == this->active_fe_index()) ||
70 this->get_dof_values(
values, interpolated_values);
76 const unsigned int dofs_per_cell = this->get_fe().n_dofs_per_cell();
77 if (dofs_per_cell == 0)
79 interpolated_values = 0;
84 this->get_dof_values(
values, tmp);
87 this->dof_handler->get_fe(fe_index).n_dofs_per_cell(),
88 this->get_fe().n_dofs_per_cell());
89 this->dof_handler->get_fe(fe_index).get_interpolation_matrix(
90 this->get_fe(), interpolation);
91 interpolation.
vmult(interpolated_values, tmp);
106 Assert((this->dof_handler->hp_capability_enabled ==
false) ||
109 "You cannot call this function on non-active cells "
110 "of DoFHandler objects unless you provide an explicit "
111 "finite element index because they do not have naturally "
112 "associated finite element spaces associated: degrees "
113 "of freedom are only distributed on active cells for which "
114 "the active FE index has been set."));
117 this->get_dof_handler().get_fe(fe_index);
120 Assert(this->dof_handler !=
nullptr,
121 typename BaseClass::ExcInvalidObject());
122 Assert(interpolated_values.
size() == dofs_per_cell,
123 typename BaseClass::ExcVectorDoesNotMatch());
125 typename BaseClass::ExcVectorDoesNotMatch());
138 interpolated_values = 0;
165 for (
unsigned int child = 0; child < this->n_children(); ++child)
171 this->child(child)->get_interpolated_dof_values(
values,
179 for (
unsigned int i = 0; i < dofs_per_cell; ++i)
181 interpolated_values(i) += tmp2(i);
182 else if (tmp2(i) != number())
183 interpolated_values(i) = tmp2(i);
192#include "dof_accessor_get.inst"
void get_interpolated_dof_values(const InputVector &values, Vector< number > &interpolated_values, const unsigned int fe_index=DoFHandler< dimension_, space_dimension_ >::invalid_fe_index) const
unsigned int n_dofs_per_cell() const
virtual const FullMatrix< double > & get_restriction_matrix(const unsigned int child, const RefinementCase< dim > &refinement_case=RefinementCase< dim >::isotropic_refinement) const
bool restriction_is_additive(const unsigned int index) const
void vmult(Vector< number2 > &w, const Vector< number2 > &v, const bool adding=false) const
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcMessage(std::string arg1)