22#include <deal.II/grid/tria_iterator.templates.h>
41template <
int dim,
int spacedim,
bool lda>
42template <
typename Number>
50 (this->
dof_handler->hp_capability_enabled ==
false &&
55 if (this->is_active())
60 if ((this->
dof_handler->hp_capability_enabled ==
false) ||
64 (fe_index == this->active_fe_index()) ||
72 const unsigned int dofs_per_cell = this->
get_fe().n_dofs_per_cell();
73 if (dofs_per_cell == 0)
75 interpolated_values = 0;
83 this->
dof_handler->get_fe(fe_index).n_dofs_per_cell(),
84 this->get_fe().n_dofs_per_cell());
85 this->
dof_handler->get_fe(fe_index).get_interpolation_matrix(
86 this->
get_fe(), interpolation);
87 interpolation.
vmult(interpolated_values, tmp);
105 "You cannot call this function on non-active cells "
106 "of DoFHandler objects unless you provide an explicit "
107 "finite element index because they do not have naturally "
108 "associated finite element spaces associated: degrees "
109 "of freedom are only distributed on active cells for which "
110 "the active FE index has been set."));
118 Assert(interpolated_values.
size() == dofs_per_cell,
120 Assert(values.size() == this->dof_handler->n_dofs(),
134 interpolated_values = 0;
167 this->
child(
child)->get_interpolated_dof_values(values,
175 for (
unsigned int i = 0; i < dofs_per_cell; ++i)
177 interpolated_values(i) += tmp2(i);
178 else if (tmp2(i) != Number())
179 interpolated_values(i) = tmp2(i);
188#include "dof_accessor_get.inst"
const DoFHandler< dim, spacedim > & get_dof_handler() const
DoFHandler< dim, spacedim > * dof_handler
void get_dof_values(const InputVector &values, Vector< number > &local_values) const
const FiniteElement< dimension_, space_dimension_ > & get_fe() const
TriaIterator< DoFCellAccessor< dimension_, space_dimension_, level_dof_access > > child(const unsigned int i) const
void get_interpolated_dof_values(const ReadVector< Number > &values, Vector< Number > &interpolated_values, const types::fe_index fe_index=numbers::invalid_fe_index) const
static const types::fe_index default_fe_index
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
virtual size_type size() const override
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcInvalidObject()
static ::ExceptionBase & ExcVectorDoesNotMatch()
static ::ExceptionBase & ExcMessage(std::string arg1)
const types::fe_index invalid_fe_index
unsigned short int fe_index