// A small helper function to transform a component range starting
// at offset from the real to the unit cell according to the
- // supplied conformity.
+ // supplied conformity. The function_values vector is transformed
+ // in place.
//
// FIXME: This should be refactored into the mapping (i.e.
- // implement the inverse function of Mapping<dim,
- // spacedim>::transform). Further, the finite element should make
- // the information about the correct mapping directly accessible -
- // fe.conforming_space is not the right call (thing about BDM).
- const auto transform = [&](const typename FiniteElementData<dim>::Conformity conformity,
- unsigned int offset)
+ // implement the inverse function of Mapping<dim, spacedim>::transform).
+ // Further, the finite element should make the information about
+ // the correct mapping directly accessible (i.e. which MappingType
+ // should be used). Using fe.conforming_space might be a bit of a
+ // problem because we only support doing nothing, Hcurl, and Hdiv
+ // conforming mappings.
+ //
+
+ const auto transform = [&function_values, &fe_values_jacobians, &cell](
+ const typename FiniteElementData<dim>::Conformity conformity,
+ const unsigned int offset)
{
switch (conformity)
{
--- /dev/null
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2017 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+// Check projection property of VectorTools::interpolate for a complex,
+// staggered system of Hdiv / Hcurl / L2 conforming spaces.
+
+#include <deal.II/fe/fe_nedelec.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_raviart_thomas.h>
+#include <deal.II/fe/fe_system.h>
+
+#include "../tests.h"
+#include "generalized_interpolation.h"
+
+int main ()
+{
+ initlog();
+
+ static const int dim = 2;
+
+ FESystem<dim> fe(FE_RaviartThomas<dim>(1),
+ 2,
+ FE_Q<dim>(1),
+ 1,
+ FESystem<dim>(FE_Nedelec<dim>(2), 2),
+ 1,
+ FESystem<dim>(FE_Q<dim>(1), dim),
+ 1);
+
+ const unsigned int n_comp = fe.n_components();
+
+ test<2>(fe, F<2>(n_comp, 1), 1, false);
+}