37 template <
int dim,
int spacedim>
47 std::vector<
bool>(1, true))
51 ExcMessage(
"FE_Trace can only be used for polynomial degrees "
52 "greater than zero"));
54 FETools::hierarchic_to_lexicographic_numbering<dim - 1>(
degree));
72 template <
int dim,
int spacedim>
73 std::unique_ptr<FiniteElement<dim, spacedim>>
76 return std_cxx14::make_unique<FE_TraceQ<dim, spacedim>>(this->degree);
81 template <
int dim,
int spacedim>
89 std::ostringstream namebuf;
91 << this->degree <<
")";
98 template <
int dim,
int spacedim>
101 const unsigned int shape_index,
102 const unsigned int face_index)
const
112 return fe_q.has_support_on_face(shape_index, face_index);
117 template <
int dim,
int spacedim>
118 std::pair<Table<2, bool>, std::vector<unsigned int>>
122 for (
unsigned int i = 0; i < this->dofs_per_cell; ++i)
123 constant_modes(0, i) =
true;
124 return std::pair<Table<2, bool>, std::vector<unsigned int>>(
125 constant_modes, std::vector<unsigned int>(1, 0));
128 template <
int dim,
int spacedim>
133 std::vector<double> & nodal_values)
const
136 this->get_unit_support_points().size());
140 for (
unsigned int i = 0; i < this->dofs_per_cell; ++i)
144 nodal_values[i] = support_point_values[i](0);
149 template <
int dim,
int spacedim>
150 std::vector<unsigned int>
157 std::vector<unsigned int> dpo(dim + 1, 1
U);
160 for (
unsigned int i = 1; i < dim; ++i)
161 dpo[i] = dpo[i - 1] * (deg - 1);
167 template <
int dim,
int spacedim>
171 return fe_q.hp_constraints_are_implemented();
175 template <
int dim,
int spacedim>
179 const unsigned int codim)
const
189 if (this->degree < fe_traceq_other->degree)
191 else if (this->degree == fe_traceq_other->degree)
199 if (fe_nothing->is_dominating())
214 template <
int dim,
int spacedim>
220 get_subface_interpolation_matrix(source_fe,
222 interpolation_matrix);
227 template <
int dim,
int spacedim>
231 const unsigned int subface,
235 Assert(interpolation_matrix.
n() == this->dofs_per_face,
245 fe_q.get_subface_interpolation_matrix(source_fe->fe_q,
247 interpolation_matrix);
249 else if (
dynamic_cast<const FE_Nothing<dim> *
>(&x_source_fe) !=
nullptr)
257 spacedim>::ExcInterpolationNotImplemented()));
262 template <
int spacedim>
269 template <
int spacedim>
276 std::ostringstream namebuf;
280 return namebuf.str();
286 #include "fe_trace.inst"