--- /dev/null
+// ------------------------------------------------------------------------
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+// Copyright (C) 2025 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// Part of the source code is dual licensed under Apache-2.0 WITH
+// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
+// governing the source code and code contributions can be found in
+// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
+//
+// ------------------------------------------------------------------------
+
+#ifndef dealii_mapping_p1_h
+#define dealii_mapping_p1_h
+
+
+#include <deal.II/base/config.h>
+
+#include <deal.II/base/qprojector.h>
+
+#include <deal.II/fe/mapping.h>
+
+#include <cmath>
+
+
+DEAL_II_NAMESPACE_OPEN
+
+/**
+ * @addtogroup mapping
+ * @{
+ */
+
+/**
+ * @brief Implementation of the classic affine transformation mapping used for
+ * simplices.
+ *
+ * For simplex cells, the transformation mapping the unit to real cell may be
+ * written as an affine transformation: that is
+ *
+ * @f[
+ * \begin{pmatrix}
+ * x \\
+ * y
+ * \end{pmatrix}
+ * =
+ * \begin{pmatrix}
+ * x_1 - x_0 & x_2 - x_0 \\
+ * y_1 - y_0 & y_2 - y_0
+ * \end{pmatrix}
+ * \begin{pmatrix}
+ * \hat{x} \\
+ * \hat{y}
+ * \end{pmatrix}
+ * +
+ * \begin{pmatrix}
+ * x_0 \\
+ * y_0
+ * \end{pmatrix}
+ * @f]
+ *
+ * in which $(x_0, y_0)$, $(x_1, y_1)$ and $(x_2, y_2)$ are the vertices of a
+ * triangle (in a codimension zero space). Unlike MappingQ1, this mapping is
+ * affine, not bilinear or trilinear. Hence, this mapping's transformation
+ * matrices (i.e., the covariant and contravariant transformations) and shift
+ * vector are constant on each cell. This property makes this mapping
+ * significantly more efficient than the equivalent MappingFE set up with a
+ * linear FE_SimplexP.
+ */
+template <int dim, int spacedim = dim>
+class MappingP1 : public Mapping<dim, spacedim>
+{
+public:
+ virtual std::unique_ptr<Mapping<dim, spacedim>>
+ clone() const override;
+
+ /**
+ * Return @p true because MappingP1 preserves vertex locations.
+ */
+ virtual bool
+ preserves_vertex_locations() const override;
+
+ /**
+ * This mapping is compatible with simplex reference cells.
+ */
+ virtual bool
+ is_compatible_with(const ReferenceCell &reference_cell) const override;
+
+ /**
+ * @name Mapping points between reference and real cells
+ * @{
+ */
+
+ virtual Point<spacedim>
+ transform_unit_to_real_cell(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const Point<dim> &p) const override;
+
+ virtual Point<dim>
+ transform_real_to_unit_cell(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const Point<spacedim> &p) const override;
+
+ virtual void
+ transform_points_real_to_unit_cell(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const ArrayView<const Point<spacedim>> &real_points,
+ const ArrayView<Point<dim>> &unit_points) const override;
+
+ /**
+ * @}
+ */
+
+ /**
+ * @name Functions to transform tensors from reference to real coordinates
+ * @{
+ */
+
+ virtual void
+ transform(const ArrayView<const Tensor<1, dim>> &input,
+ const MappingKind kind,
+ const typename Mapping<dim, spacedim>::InternalDataBase &internal,
+ const ArrayView<Tensor<1, spacedim>> &output) const override;
+
+ virtual void
+ transform(const ArrayView<const DerivativeForm<1, dim, spacedim>> &input,
+ const MappingKind kind,
+ const typename Mapping<dim, spacedim>::InternalDataBase &internal,
+ const ArrayView<Tensor<2, spacedim>> &output) const override;
+
+ virtual void
+ transform(const ArrayView<const Tensor<2, dim>> &input,
+ const MappingKind kind,
+ const typename Mapping<dim, spacedim>::InternalDataBase &internal,
+ const ArrayView<Tensor<2, spacedim>> &output) const override;
+
+ virtual void
+ transform(const ArrayView<const DerivativeForm<2, dim, spacedim>> &input,
+ const MappingKind kind,
+ const typename Mapping<dim, spacedim>::InternalDataBase &internal,
+ const ArrayView<Tensor<3, spacedim>> &output) const override;
+
+ virtual void
+ transform(const ArrayView<const Tensor<3, dim>> &input,
+ const MappingKind kind,
+ const typename Mapping<dim, spacedim>::InternalDataBase &internal,
+ const ArrayView<Tensor<3, spacedim>> &output) const override;
+
+ /**
+ * @}
+ */
+
+ /**
+ * As opposed to the other fill_fe_values() and fill_fe_face_values()
+ * functions that rely on pre-computed information of InternalDataBase, this
+ * function chooses the flexible evaluation path on the cell and points
+ * passed in to the current function.
+ *
+ * @param[in] cell The cell where to evaluate the mapping
+ *
+ * @param[in] unit_points The points in reference coordinates where the
+ * transformation (Jacobians, positions) should be computed.
+ *
+ * @param[in] update_flags The kind of information that should be computed.
+ *
+ * @param[out] output_data A struct containing the evaluated quantities such
+ * as the Jacobian resulting from application of the mapping on the given
+ * cell with its underlying manifolds.
+ */
+ void
+ fill_mapping_data_for_generic_points(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const ArrayView<const Point<dim>> &unit_points,
+ const UpdateFlags update_flags,
+ internal::FEValuesImplementation::MappingRelatedData<dim, spacedim>
+ &output_data) const;
+
+ /**
+ * @name Interface with FEValues
+ * @{
+ */
+
+ /**
+ * Storage for internal data of the mapping. See Mapping::InternalDataBase
+ * for an extensive description.
+ *
+ * This includes data that is computed once when the object is created (in
+ * get_data()) as well as data the class wants to store from between the
+ * call to fill_fe_values(), fill_fe_face_values(), or
+ * fill_fe_subface_values() until possible later calls from the finite
+ * element to functions such as transform(). The latter class of member
+ * variables are marked as 'mutable'.
+ */
+ class InternalData : public Mapping<dim, spacedim>::InternalDataBase
+ {
+ public:
+ /**
+ * Constructor for use with arbitrary points.
+ */
+ InternalData(const ArrayView<const Point<dim>> &quadrature_points);
+
+ /**
+ * Constructor.
+ */
+ InternalData(const Quadrature<dim> &quadrature);
+
+ virtual void
+ reinit(const UpdateFlags update_flags,
+ const Quadrature<dim> &quadrature) override;
+
+ /**
+ * Return an estimate (in bytes) for the memory consumption of this object.
+ */
+ virtual std::size_t
+ memory_consumption() const override;
+
+ /**
+ * Affine component of the transformation.
+ */
+ mutable Tensor<1, spacedim> affine_component;
+
+ /**
+ * Linear component of the transformation.
+ */
+ mutable DerivativeForm<1, dim, spacedim> linear_component;
+
+ /**
+ * Determinant of linear_component.
+ */
+ mutable double determinant;
+
+ /**
+ * Quadrature. May be an amalgamation of rules created by, e.g.,
+ * QProjector::project_to_all_faces().
+ */
+ Quadrature<dim> quadrature;
+ };
+
+private:
+ virtual UpdateFlags
+ requires_update_flags(const UpdateFlags update_flags) const override;
+
+ virtual std::unique_ptr<typename Mapping<dim, spacedim>::InternalDataBase>
+ get_data(const UpdateFlags, const Quadrature<dim> &quadrature) const override;
+
+ using Mapping<dim, spacedim>::get_face_data;
+
+ virtual std::unique_ptr<typename Mapping<dim, spacedim>::InternalDataBase>
+ get_face_data(const UpdateFlags flags,
+ const hp::QCollection<dim - 1> &quadrature) const override;
+
+ virtual std::unique_ptr<typename Mapping<dim, spacedim>::InternalDataBase>
+ get_subface_data(const UpdateFlags flags,
+ const Quadrature<dim - 1> &quadrature) const override;
+
+ virtual CellSimilarity::Similarity
+ fill_fe_values(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const CellSimilarity::Similarity cell_similarity,
+ const Quadrature<dim> &quadrature,
+ const typename Mapping<dim, spacedim>::InternalDataBase &internal_data,
+ internal::FEValuesImplementation::MappingRelatedData<dim, spacedim>
+ &output_data) const override;
+
+ using Mapping<dim, spacedim>::fill_fe_face_values;
+
+ virtual void
+ fill_fe_face_values(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const unsigned int face_no,
+ const hp::QCollection<dim - 1> &quadrature,
+ const typename Mapping<dim, spacedim>::InternalDataBase &internal_data,
+ internal::FEValuesImplementation::MappingRelatedData<dim, spacedim>
+ &output_data) const override;
+
+ virtual void
+ fill_fe_subface_values(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const unsigned int face_no,
+ const unsigned int subface_no,
+ const Quadrature<dim - 1> &quadrature,
+ const typename Mapping<dim, spacedim>::InternalDataBase &internal_data,
+ internal::FEValuesImplementation::MappingRelatedData<dim, spacedim>
+ &output_data) const override;
+
+ /**
+ * @}
+ */
+
+ /**
+ * Update the affine and linear components fields of the incoming InternalData
+ * object.
+ */
+ void
+ update_transformation(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const InternalData &data) const;
+
+ /**
+ * Transform quadrature points from the unit cell to the real cell.
+ */
+ void
+ transform_quadrature_points(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const InternalData &data,
+ const typename QProjector<dim>::DataSetDescriptor &offset,
+ std::vector<Point<spacedim>> &quadrature_points) const;
+
+ /**
+ * Compute the normal vectors if the UpdateFlags of the incoming InternalData
+ * object say that they should be updated.
+ */
+ void
+ maybe_update_normal_vectors(
+ const unsigned int face_no,
+ const InternalData &data,
+ std::vector<Tensor<1, spacedim>> &normal_vectors) const;
+
+ /**
+ * Since the Jacobian is constant for this mapping all derivatives of the
+ * Jacobian are identically zero. Fill these quantities with zeros if the
+ * corresponding update flags say that they should be updated.
+ */
+ void
+ maybe_update_jacobian_derivatives(
+ const InternalData &data,
+ const CellSimilarity::Similarity cell_similarity,
+ internal::FEValuesImplementation::MappingRelatedData<dim, spacedim>
+ &output_data) const;
+
+ /**
+ * Compute the Jacobians if the UpdateFlags of the incoming
+ * InternalData object say that they should be updated.
+ */
+ void
+ maybe_update_jacobians(
+ const InternalData &data,
+ const CellSimilarity::Similarity cell_similarity,
+ internal::FEValuesImplementation::MappingRelatedData<dim, spacedim>
+ &output_data) const;
+
+ /**
+ * Compute the inverse Jacobians if the UpdateFlags of the incoming
+ * InternalData object say that they should be updated.
+ */
+ void
+ maybe_update_inverse_jacobians(
+ const InternalData &data,
+ const CellSimilarity::Similarity cell_similarity,
+ internal::FEValuesImplementation::MappingRelatedData<dim, spacedim>
+ &output_data) const;
+};
+
+/** @} */
+
+DEAL_II_NAMESPACE_CLOSE
+
+#endif
mapping_cartesian.cc
mapping.cc
mapping_fe.cc
+ mapping_p1.cc
mapping_q1.cc
mapping_q.cc
mapping_q_cache.cc
mapping.inst.in
mapping_fe.inst.in
mapping_fe_field.inst.in
+ mapping_p1.inst.in
mapping_q1_eulerian.inst.in
mapping_q1.inst.in
mapping_q_cache.inst.in
--- /dev/null
+// ------------------------------------------------------------------------
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+// Copyright (C) 2025 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// Part of the source code is dual licensed under Apache-2.0 WITH
+// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
+// governing the source code and code contributions can be found in
+// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
+//
+// ------------------------------------------------------------------------
+
+#include <deal.II/base/array_view.h>
+#include <deal.II/base/memory_consumption.h>
+#include <deal.II/base/qprojector.h>
+#include <deal.II/base/quadrature.h>
+#include <deal.II/base/tensor.h>
+
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/fe/mapping_internal.h>
+#include <deal.II/fe/mapping_p1.h>
+
+#include <deal.II/grid/tria_iterator.h>
+
+#include <algorithm>
+#include <cmath>
+#include <memory>
+
+
+DEAL_II_NAMESPACE_OPEN
+
+namespace
+{
+ template <int dim, int spacedim>
+ DerivativeForm<1, dim, spacedim>
+ compute_linear_transformation(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell)
+ {
+ DerivativeForm<1, dim, spacedim> result;
+ for (unsigned int j = 0; j < spacedim; ++j)
+ for (unsigned int i = 1; i < dim + 1; ++i)
+ result[j][i - 1] = cell->vertex(i)[j] - cell->vertex(0)[j];
+ return result;
+ }
+} // namespace
+
+
+
+template <int dim, int spacedim>
+MappingP1<dim, spacedim>::InternalData::InternalData(
+ const ArrayView<const Point<dim>> &quadrature_points)
+{
+ quadrature.initialize(quadrature_points);
+}
+
+
+
+template <int dim, int spacedim>
+MappingP1<dim, spacedim>::InternalData::InternalData(
+ const Quadrature<dim> &quadrature)
+ : quadrature(quadrature)
+{}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::InternalData::reinit(
+ const UpdateFlags update_flags,
+ const Quadrature<dim> &quadrature)
+{
+ this->quadrature = quadrature;
+ this->update_each = update_flags;
+}
+
+
+
+template <int dim, int spacedim>
+std::size_t
+MappingP1<dim, spacedim>::InternalData::memory_consumption() const
+{
+ return (Mapping<dim, spacedim>::InternalDataBase::memory_consumption() +
+ MemoryConsumption::memory_consumption(affine_component) +
+ MemoryConsumption::memory_consumption(linear_component) +
+ MemoryConsumption::memory_consumption(determinant) +
+ MemoryConsumption::memory_consumption(quadrature));
+}
+
+
+
+template <int dim, int spacedim>
+bool
+MappingP1<dim, spacedim>::preserves_vertex_locations() const
+{
+ return true;
+}
+
+
+
+template <int dim, int spacedim>
+bool
+MappingP1<dim, spacedim>::is_compatible_with(
+ const ReferenceCell &reference_cell) const
+{
+ return reference_cell.is_simplex();
+}
+
+
+
+template <int dim, int spacedim>
+UpdateFlags
+MappingP1<dim, spacedim>::requires_update_flags(const UpdateFlags in) const
+{
+ // Like MappingCartesian, this mapping is simple and has minimal update
+ // interdependencies
+ UpdateFlags out = in;
+ if (out & update_boundary_forms)
+ out |= update_normal_vectors;
+
+ return out;
+}
+
+
+
+template <int dim, int spacedim>
+std::unique_ptr<typename Mapping<dim, spacedim>::InternalDataBase>
+MappingP1<dim, spacedim>::get_data(const UpdateFlags update_flags,
+ const Quadrature<dim> &quadrature) const
+{
+ auto data_ptr = std::make_unique<InternalData>(quadrature);
+
+ // verify that we have computed the transitive hull of the required
+ // flags and that FEValues has faithfully passed them on to us
+ Assert(update_flags == requires_update_flags(update_flags),
+ ExcInternalError());
+
+ // store the flags in the internal data object so we can access them
+ // in fill_fe_*_values(). use the transitive hull of the required
+ // flags
+ data_ptr->update_each = requires_update_flags(update_flags);
+
+ return data_ptr;
+}
+
+
+
+template <int dim, int spacedim>
+std::unique_ptr<typename Mapping<dim, spacedim>::InternalDataBase>
+MappingP1<dim, spacedim>::get_face_data(
+ const UpdateFlags update_flags,
+ const hp::QCollection<dim - 1> &quadrature) const
+{
+ auto data_ptr = std::make_unique<InternalData>(
+ QProjector<dim>::project_to_all_faces(ReferenceCells::get_simplex<dim>(),
+ quadrature));
+
+ // verify that we have computed the transitive hull of the required
+ // flags and that FEValues has faithfully passed them on to us
+ Assert(update_flags == requires_update_flags(update_flags),
+ ExcInternalError());
+
+ // store the flags in the internal data object so we can access them
+ // in fill_fe_*_values()
+ data_ptr->update_each = update_flags;
+
+ return data_ptr;
+}
+
+
+
+template <int dim, int spacedim>
+std::unique_ptr<typename Mapping<dim, spacedim>::InternalDataBase>
+MappingP1<dim, spacedim>::get_subface_data(
+ const UpdateFlags update_flags,
+ const Quadrature<dim - 1> &quadrature) const
+{
+ auto data_ptr = std::make_unique<InternalData>(
+ QProjector<dim>::project_to_all_subfaces(ReferenceCells::get_simplex<dim>(),
+ quadrature));
+
+ // verify that we have computed the transitive hull of the required
+ // flags and that FEValues has faithfully passed them on to us
+ Assert(update_flags == requires_update_flags(update_flags),
+ ExcInternalError());
+
+ // store the flags in the internal data object so we can access them
+ // in fill_fe_*_values()
+ data_ptr->update_each = update_flags;
+
+ return data_ptr;
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::update_transformation(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const InternalData &data) const
+{
+ data.affine_component = cell->vertex(0);
+ data.linear_component = compute_linear_transformation<dim, spacedim>(cell);
+ data.determinant = data.linear_component.determinant();
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::transform_quadrature_points(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const InternalData &data,
+ const typename QProjector<dim>::DataSetDescriptor &offset,
+ std::vector<Point<spacedim>> &quadrature_points) const
+{
+ Assert(cell->vertex(0) == data.affine_component, ExcInternalError());
+ for (unsigned int i = 0; i < quadrature_points.size(); ++i)
+ quadrature_points[i] =
+ data.affine_component +
+ apply_transformation(data.linear_component,
+ data.quadrature.point(offset + i));
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::maybe_update_normal_vectors(
+ const unsigned int face_no,
+ const InternalData &data,
+ std::vector<Tensor<1, spacedim>> &normal_vectors) const
+{
+ const Tensor<1, dim> ref_normal_vector =
+ ReferenceCells::get_simplex<dim>().template unit_normal_vectors<dim>(
+ face_no);
+ Tensor<1, spacedim> normal_vector =
+ apply_transformation(data.linear_component.covariant_form(),
+ ref_normal_vector);
+ normal_vector /= normal_vector.norm();
+
+ std::fill(normal_vectors.begin(), normal_vectors.end(), normal_vector);
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::maybe_update_jacobian_derivatives(
+ const InternalData &data,
+ const CellSimilarity::Similarity cell_similarity,
+ internal::FEValuesImplementation::MappingRelatedData<dim, spacedim>
+ &output_data) const
+{
+ // The Jacobian is constant so its derivatives are zero
+ if (cell_similarity != CellSimilarity::translation)
+ {
+ if (data.update_each & update_jacobian_grads)
+ std::fill(output_data.jacobian_grads.begin(),
+ output_data.jacobian_grads.end(),
+ DerivativeForm<2, dim, spacedim>());
+
+ if (data.update_each & update_jacobian_pushed_forward_grads)
+ std::fill(output_data.jacobian_pushed_forward_grads.begin(),
+ output_data.jacobian_pushed_forward_grads.end(),
+ Tensor<3, spacedim>());
+
+ if (data.update_each & update_jacobian_2nd_derivatives)
+ std::fill(output_data.jacobian_2nd_derivatives.begin(),
+ output_data.jacobian_2nd_derivatives.end(),
+ DerivativeForm<3, dim, spacedim>());
+
+ if (data.update_each & update_jacobian_pushed_forward_2nd_derivatives)
+ std::fill(output_data.jacobian_pushed_forward_2nd_derivatives.begin(),
+ output_data.jacobian_pushed_forward_2nd_derivatives.end(),
+ Tensor<4, spacedim>());
+
+ if (data.update_each & update_jacobian_3rd_derivatives)
+ std::fill(output_data.jacobian_3rd_derivatives.begin(),
+ output_data.jacobian_3rd_derivatives.end(),
+ DerivativeForm<4, dim, spacedim>());
+
+ if (data.update_each & update_jacobian_pushed_forward_3rd_derivatives)
+ std::fill(output_data.jacobian_pushed_forward_3rd_derivatives.begin(),
+ output_data.jacobian_pushed_forward_3rd_derivatives.end(),
+ Tensor<5, spacedim>());
+ }
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::maybe_update_jacobians(
+ const InternalData &data,
+ const CellSimilarity::Similarity cell_similarity,
+ internal::FEValuesImplementation::MappingRelatedData<dim, spacedim>
+ &output_data) const
+{
+ // "compute" Jacobian at the quadrature points, which are all the
+ // same
+ if (data.update_each & update_jacobians)
+ if (cell_similarity != CellSimilarity::translation)
+ std::fill(output_data.jacobians.begin(),
+ output_data.jacobians.end(),
+ data.linear_component);
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::maybe_update_inverse_jacobians(
+ const InternalData &data,
+ const CellSimilarity::Similarity cell_similarity,
+ internal::FEValuesImplementation::MappingRelatedData<dim, spacedim>
+ &output_data) const
+{
+ if (data.update_each & update_inverse_jacobians)
+ if (cell_similarity != CellSimilarity::translation)
+ {
+ const auto inverse = data.linear_component.covariant_form().transpose();
+ std::fill(output_data.inverse_jacobians.begin(),
+ output_data.inverse_jacobians.end(),
+ inverse);
+ }
+}
+
+
+
+template <int dim, int spacedim>
+CellSimilarity::Similarity
+MappingP1<dim, spacedim>::fill_fe_values(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const CellSimilarity::Similarity cell_similarity,
+ const Quadrature<dim> &quadrature,
+ const typename Mapping<dim, spacedim>::InternalDataBase &internal_data,
+ internal::FEValuesImplementation::MappingRelatedData<dim, spacedim>
+ &output_data) const
+{
+ Assert(dynamic_cast<const InternalData *>(&internal_data) != nullptr,
+ ExcInternalError());
+ const InternalData &data = static_cast<const InternalData &>(internal_data);
+
+ update_transformation(cell, data);
+ if (data.update_each & update_quadrature_points)
+ transform_quadrature_points(cell,
+ data,
+ QProjector<dim>::DataSetDescriptor::cell(),
+ output_data.quadrature_points);
+
+ // A special property of this mapping is that the Jacobian is constant over
+ // the cell
+ if (data.update_each & update_JxW_values)
+ if (cell_similarity != CellSimilarity::translation)
+ {
+ for (unsigned int i = 0; i < output_data.JxW_values.size(); ++i)
+ output_data.JxW_values[i] = data.determinant * quadrature.weight(i);
+ }
+
+ maybe_update_jacobians(data, cell_similarity, output_data);
+ maybe_update_jacobian_derivatives(data, cell_similarity, output_data);
+ maybe_update_inverse_jacobians(data, cell_similarity, output_data);
+
+ if (data.update_each & update_normal_vectors)
+ {
+ Assert(spacedim == dim + 1,
+ ExcMessage("There is no (unique) cell normal for " +
+ Utilities::int_to_string(dim) +
+ "-dimensional cells in " +
+ Utilities::int_to_string(spacedim) +
+ "-dimensional space. This only works if the "
+ "space dimension is one greater than the "
+ "dimensionality of the mesh cells."));
+
+ Tensor<1, spacedim> normal;
+ // avoid warnings by only computing cross products in supported dimensions
+ if constexpr (dim == 1 && spacedim == 2)
+ normal = cross_product_2d(-data.linear_component.transpose()[0]);
+ else if constexpr (dim == 2 && spacedim == 3)
+ {
+ const auto transpose = data.linear_component.transpose();
+ normal = cross_product_3d(transpose[0], transpose[1]);
+ }
+ else
+ DEAL_II_ASSERT_UNREACHABLE();
+ normal /= normal.norm();
+
+ if (cell->direction_flag() == false)
+ normal *= -1.0;
+
+ std::fill(output_data.normal_vectors.begin(),
+ output_data.normal_vectors.end(),
+ normal);
+ }
+
+ return cell_similarity;
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::fill_mapping_data_for_generic_points(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const ArrayView<const Point<dim>> &unit_points,
+ const UpdateFlags update_flags,
+ internal::FEValuesImplementation::MappingRelatedData<dim, spacedim>
+ &output_data) const
+{
+ if (update_flags == update_default)
+ return;
+
+ Assert(update_flags & update_inverse_jacobians ||
+ update_flags & update_jacobians ||
+ update_flags & update_quadrature_points,
+ ExcNotImplemented());
+
+ output_data.initialize(unit_points.size(), update_flags);
+
+ InternalData data(unit_points);
+ data.update_each = update_flags;
+ update_transformation(cell, data);
+
+ if (data.update_each & update_quadrature_points)
+ transform_quadrature_points(cell,
+ data,
+ QProjector<dim>::DataSetDescriptor::cell(),
+ output_data.quadrature_points);
+
+ maybe_update_jacobians(data, CellSimilarity::none, output_data);
+ maybe_update_inverse_jacobians(data, CellSimilarity::none, output_data);
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::fill_fe_face_values(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const unsigned int face_no,
+ const hp::QCollection<dim - 1> &quadrature_collection,
+ const typename Mapping<dim, spacedim>::InternalDataBase &internal_data,
+ internal::FEValuesImplementation::MappingRelatedData<dim, spacedim>
+ &output_data) const
+{
+ Assert(dynamic_cast<const InternalData *>(&internal_data) != nullptr,
+ ExcInternalError());
+ const InternalData &data = static_cast<const InternalData &>(internal_data);
+
+ update_transformation(cell, data);
+ const auto offset =
+ QProjector<dim>::DataSetDescriptor::face(cell->reference_cell(),
+ face_no,
+ cell->combined_face_orientation(
+ face_no),
+ quadrature_collection);
+ if (data.update_each & update_quadrature_points)
+ transform_quadrature_points(cell,
+ data,
+ offset,
+ output_data.quadrature_points);
+
+ maybe_update_normal_vectors(face_no, data, output_data.normal_vectors);
+
+ if (data.update_each & (update_JxW_values | update_boundary_forms))
+ {
+ // Since the quadrature weights presently sum to
+ // cell->reference_cell().face_measure(face_no), we have to rescale so
+ // they sum to the area of the face
+ const double J = cell->face(face_no)->measure() /
+ cell->reference_cell().face_measure(face_no);
+ if (data.update_each & update_JxW_values)
+ for (unsigned int i = 0; i < output_data.JxW_values.size(); ++i)
+ output_data.JxW_values[i] = J * data.quadrature.weight(i + offset);
+
+ if (data.update_each & update_boundary_forms)
+ for (unsigned int i = 0; i < output_data.boundary_forms.size(); ++i)
+ output_data.boundary_forms[i] = J * output_data.normal_vectors[i];
+ }
+
+ maybe_update_jacobians(data, CellSimilarity::none, output_data);
+ maybe_update_jacobian_derivatives(data, CellSimilarity::none, output_data);
+ maybe_update_inverse_jacobians(data, CellSimilarity::none, output_data);
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::fill_fe_subface_values(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const unsigned int face_no,
+ const unsigned int subface_no,
+ const Quadrature<dim - 1> &quadrature,
+ const typename Mapping<dim, spacedim>::InternalDataBase &internal_data,
+ internal::FEValuesImplementation::MappingRelatedData<dim, spacedim>
+ &output_data) const
+{
+ Assert(dynamic_cast<const InternalData *>(&internal_data) != nullptr,
+ ExcInternalError());
+ const InternalData &data = static_cast<const InternalData &>(internal_data);
+
+ update_transformation(cell, data);
+ const auto offset =
+ QProjector<dim>::DataSetDescriptor::subface(cell->reference_cell(),
+ face_no,
+ subface_no,
+ cell->combined_face_orientation(
+ face_no),
+ quadrature.size(),
+ cell->subface_case(face_no));
+ if (data.update_each & update_quadrature_points)
+ transform_quadrature_points(cell,
+ data,
+ offset,
+ output_data.quadrature_points);
+
+ maybe_update_normal_vectors(face_no, data, output_data.normal_vectors);
+
+ if (data.update_each & (update_JxW_values | update_boundary_forms))
+ {
+ // Same as fill_fe_face_values()
+ const double J =
+ cell->face(face_no)->measure() /
+ cell->face(face_no)->reference_cell().volume() /
+ // TODO: once we support 3d refinement this should be updated to the
+ // simplex version of GeometryInfo::subface_ratio()
+ (dim == 2 ? 2 : 4);
+ if (data.update_each & update_JxW_values)
+ for (unsigned int i = 0; i < output_data.JxW_values.size(); ++i)
+ output_data.JxW_values[i] = J * quadrature.weight(i);
+
+ if (data.update_each & update_boundary_forms)
+ for (unsigned int i = 0; i < output_data.boundary_forms.size(); ++i)
+ output_data.boundary_forms[i] = J * output_data.normal_vectors[i];
+ }
+
+ maybe_update_jacobians(data, CellSimilarity::none, output_data);
+ maybe_update_jacobian_derivatives(data, CellSimilarity::none, output_data);
+ maybe_update_inverse_jacobians(data, CellSimilarity::none, output_data);
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::transform(
+ const ArrayView<const Tensor<1, dim>> &input,
+ const MappingKind mapping_kind,
+ const typename Mapping<dim, spacedim>::InternalDataBase &mapping_data,
+ const ArrayView<Tensor<1, spacedim>> &output) const
+{
+ AssertDimension(input.size(), output.size());
+ Assert(dynamic_cast<const InternalData *>(&mapping_data) != nullptr,
+ ExcInternalError());
+ const InternalData &data = static_cast<const InternalData &>(mapping_data);
+
+ switch (mapping_kind)
+ {
+ case mapping_covariant:
+ {
+ const auto covariant = data.linear_component.covariant_form();
+ for (unsigned int i = 0; i < output.size(); ++i)
+ output[i] = apply_transformation(covariant, input[i]);
+ return;
+ }
+
+ case mapping_contravariant:
+ {
+ for (unsigned int i = 0; i < output.size(); ++i)
+ output[i] = apply_transformation(data.linear_component, input[i]);
+ return;
+ }
+ case mapping_piola:
+ {
+ auto transformation = data.linear_component;
+ Assert(data.determinant > 0.0, ExcDivideByZero());
+ for (unsigned int d = 0; d < spacedim; ++d)
+ transformation[d] /= data.determinant;
+ for (unsigned int i = 0; i < output.size(); ++i)
+ output[i] = apply_transformation(transformation, input[i]);
+ return;
+ }
+ default:
+ DEAL_II_NOT_IMPLEMENTED();
+ }
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::transform(
+ const ArrayView<const DerivativeForm<1, dim, spacedim>> &input,
+ const MappingKind mapping_kind,
+ const typename Mapping<dim, spacedim>::InternalDataBase &mapping_data,
+ const ArrayView<Tensor<2, spacedim>> &output) const
+{
+ AssertDimension(input.size(), output.size());
+ Assert(dynamic_cast<const InternalData *>(&mapping_data) != nullptr,
+ ExcInternalError());
+ const InternalData &data = static_cast<const InternalData &>(mapping_data);
+
+ switch (mapping_kind)
+ {
+ case mapping_covariant:
+ {
+ const auto covariant = data.linear_component.covariant_form();
+ for (unsigned int i = 0; i < output.size(); ++i)
+ output[i] = apply_transformation(covariant, input[i]);
+
+ return;
+ }
+ default:
+ DEAL_II_NOT_IMPLEMENTED();
+ }
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::transform(
+ const ArrayView<const Tensor<2, dim>> &input,
+ const MappingKind mapping_kind,
+ const typename Mapping<dim, spacedim>::InternalDataBase &mapping_data,
+ const ArrayView<Tensor<2, spacedim>> &output) const
+{
+ AssertDimension(input.size(), output.size());
+ Assert(dynamic_cast<const InternalData *>(&mapping_data) != nullptr,
+ ExcInternalError());
+ const InternalData &data = static_cast<const InternalData &>(mapping_data);
+
+ switch (mapping_kind)
+ {
+ case mapping_covariant:
+ {
+ Assert(data.update_each & update_covariant_transformation,
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField(
+ "update_covariant_transformation"));
+
+ const auto covariant = data.linear_component.covariant_form();
+ for (unsigned int i = 0; i < output.size(); ++i)
+ output[i] = apply_transformation(covariant, input[i]);
+ return;
+ }
+
+ case mapping_contravariant:
+ {
+ Assert(data.update_each & update_contravariant_transformation,
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField(
+ "update_contravariant_transformation"));
+
+ for (unsigned int i = 0; i < output.size(); ++i)
+ output[i] = apply_transformation(data.linear_component, input[i]);
+ return;
+ }
+
+ case mapping_covariant_gradient:
+ {
+ Assert(data.update_each & update_covariant_transformation,
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField(
+ "update_covariant_transformation"));
+
+ const auto covariant = data.linear_component.covariant_form();
+ for (unsigned int i = 0; i < output.size(); ++i)
+ {
+ const DerivativeForm<1, spacedim, dim> A =
+ apply_transformation(covariant, transpose(input[i]));
+ output[i] = apply_transformation(covariant, A.transpose());
+ }
+ return;
+ }
+
+ case mapping_contravariant_gradient:
+ {
+ Assert(data.update_each & update_covariant_transformation,
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField(
+ "update_covariant_transformation"));
+
+ const auto covariant = data.linear_component.covariant_form();
+ for (unsigned int i = 0; i < output.size(); ++i)
+ {
+ const DerivativeForm<1, spacedim, dim> A =
+ apply_transformation(data.linear_component,
+ transpose(input[i]));
+ output[i] = apply_transformation(covariant, A.transpose());
+ }
+
+ return;
+ }
+
+ case mapping_piola_gradient:
+ {
+ Assert(data.update_each & update_contravariant_transformation,
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField(
+ "update_contravariant_transformation"));
+
+ const auto covariant = data.linear_component.covariant_form();
+ auto scaled_contravariant = data.linear_component;
+ for (unsigned int d = 0; d < spacedim; ++d)
+ scaled_contravariant[d] /= data.determinant;
+ for (unsigned int i = 0; i < output.size(); ++i)
+ {
+ const DerivativeForm<1, spacedim, dim> A =
+ apply_transformation(covariant, input[i]);
+ const Tensor<2, spacedim> T =
+ apply_transformation(scaled_contravariant, A.transpose());
+
+ output[i] = transpose(T);
+ }
+
+ return;
+ }
+
+ default:
+ Assert(false, ExcNotImplemented());
+ }
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::transform(
+ const ArrayView<const DerivativeForm<2, dim, spacedim>> &input,
+ const MappingKind mapping_kind,
+ const typename Mapping<dim, spacedim>::InternalDataBase &mapping_data,
+ const ArrayView<Tensor<3, spacedim>> &output) const
+{
+ AssertDimension(input.size(), output.size());
+ Assert(dynamic_cast<const InternalData *>(&mapping_data) != nullptr,
+ ExcInternalError());
+ const InternalData &data = static_cast<const InternalData &>(mapping_data);
+
+ switch (mapping_kind)
+ {
+ case mapping_covariant_gradient:
+ {
+ Assert(data.update_each & update_covariant_transformation,
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField(
+ "update_covariant_transformation"));
+
+ const auto covariant = data.linear_component.covariant_form();
+ for (unsigned int i = 0; i < output.size(); ++i)
+ output[i] = internal::apply_covariant_gradient(covariant, input[i]);
+
+ return;
+ }
+ default:
+ DEAL_II_NOT_IMPLEMENTED();
+ }
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::transform(
+ const ArrayView<const Tensor<3, dim>> &input,
+ const MappingKind mapping_kind,
+ const typename Mapping<dim, spacedim>::InternalDataBase &mapping_data,
+ const ArrayView<Tensor<3, spacedim>> &output) const
+{
+ AssertDimension(input.size(), output.size());
+ Assert(dynamic_cast<const InternalData *>(&mapping_data) != nullptr,
+ ExcInternalError());
+ const InternalData &data = static_cast<const InternalData &>(mapping_data);
+
+ switch (mapping_kind)
+ {
+ case mapping_contravariant_hessian:
+ {
+ Assert(data.update_each & update_covariant_transformation,
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField(
+ "update_covariant_transformation"));
+ Assert(data.update_each & update_contravariant_transformation,
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField(
+ "update_contravariant_transformation"));
+
+ const auto covariant = data.linear_component.covariant_form();
+ for (unsigned int i = 0; i < output.size(); ++i)
+ output[i] =
+ internal::apply_contravariant_hessian(covariant,
+ data.linear_component,
+ input[i]);
+
+ return;
+ }
+
+ case mapping_covariant_hessian:
+ {
+ Assert(data.update_each & update_covariant_transformation,
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField(
+ "update_covariant_transformation"));
+
+ const auto covariant = data.linear_component.covariant_form();
+ for (unsigned int i = 0; i < output.size(); ++i)
+ output[i] = internal::apply_covariant_hessian(covariant, input[i]);
+
+ return;
+ }
+
+ case mapping_piola_hessian:
+ {
+ Assert(data.update_each & update_covariant_transformation,
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField(
+ "update_covariant_transformation"));
+ Assert(data.update_each & update_contravariant_transformation,
+ typename FEValuesBase<dim>::ExcAccessToUninitializedField(
+ "update_contravariant_transformation"));
+
+ const auto covariant = data.linear_component.covariant_form();
+ for (unsigned int i = 0; i < output.size(); ++i)
+ output[i] = internal::apply_piola_hessian(covariant,
+ data.linear_component,
+ data.determinant,
+ input[i]);
+
+ return;
+ }
+
+ default:
+ DEAL_II_NOT_IMPLEMENTED();
+ }
+}
+
+
+
+template <int dim, int spacedim>
+Point<spacedim>
+MappingP1<dim, spacedim>::transform_unit_to_real_cell(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const Point<dim> &p) const
+{
+ const DerivativeForm<1, dim, spacedim> linear_component =
+ compute_linear_transformation<dim, spacedim>(cell);
+ const Tensor<1, spacedim> sheared = apply_transformation(linear_component, p);
+ return cell->vertex(0) + sheared;
+}
+
+
+
+template <int dim, int spacedim>
+Point<dim>
+MappingP1<dim, spacedim>::transform_real_to_unit_cell(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const Point<spacedim> &p) const
+{
+ const DerivativeForm<1, spacedim, dim> linear_component =
+ compute_linear_transformation<dim, spacedim>(cell)
+ .covariant_form()
+ .transpose();
+ const Tensor<1, spacedim> offset = cell->vertex(0);
+ return Point<dim>(apply_transformation(linear_component, p - offset));
+}
+
+
+
+template <int dim, int spacedim>
+void
+MappingP1<dim, spacedim>::transform_points_real_to_unit_cell(
+ const typename Triangulation<dim, spacedim>::cell_iterator &cell,
+ const ArrayView<const Point<spacedim>> &real_points,
+ const ArrayView<Point<dim>> &unit_points) const
+{
+ const DerivativeForm<1, spacedim, dim> linear_component =
+ compute_linear_transformation<dim, spacedim>(cell)
+ .covariant_form()
+ .transpose();
+ const Tensor<1, spacedim> offset = cell->vertex(0);
+ for (unsigned int i = 0; i < real_points.size(); ++i)
+ unit_points[i] = Point<dim>(
+ apply_transformation(linear_component, real_points[i] - offset));
+}
+
+
+
+template <int dim, int spacedim>
+std::unique_ptr<Mapping<dim, spacedim>>
+MappingP1<dim, spacedim>::clone() const
+{
+ return std::make_unique<MappingP1<dim, spacedim>>(*this);
+}
+
+
+//---------------------------------------------------------------------------
+// explicit instantiations
+#include "fe/mapping_p1.inst"
+
+
+DEAL_II_NAMESPACE_CLOSE
--- /dev/null
+// ------------------------------------------------------------------------
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+// Copyright (C) 2025 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// Part of the source code is dual licensed under Apache-2.0 WITH
+// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
+// governing the source code and code contributions can be found in
+// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
+//
+// ------------------------------------------------------------------------
+
+
+for (deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS)
+ {
+#if deal_II_dimension <= deal_II_space_dimension
+ template class MappingP1<deal_II_dimension, deal_II_space_dimension>;
+#endif
+ }
--- /dev/null
+// ------------------------------------------------------------------------
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+// Copyright (C) 2025 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// Part of the source code is dual licensed under Apache-2.0 WITH
+// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
+// governing the source code and code contributions can be found in
+// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
+//
+// ------------------------------------------------------------------------
+
+#include <deal.II/base/quadrature_lib.h>
+
+#include <deal.II/fe/fe_nothing.h>
+#include <deal.II/fe/fe_simplex_p.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/fe/mapping_fe.h>
+#include <deal.II/fe/mapping_p1.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools_topology.h>
+#include <deal.II/grid/tria.h>
+
+#include "../tests.h"
+
+
+// Test MappingP1's cell values for mapping quantities by comparing with
+// MappingFE.
+
+using namespace dealii;
+
+template <int dim, int spacedim = dim>
+void
+test()
+{
+ deallog << "MappingP1<" << dim << ", " << spacedim << ">" << std::endl;
+
+ const auto reference_cell = ReferenceCells::get_simplex<dim>();
+
+ Triangulation<dim, spacedim> tria;
+ if constexpr (dim == 1)
+ GridGenerator::subdivided_hyper_cube(tria, 1, 1.0, 2.0, true);
+ else if constexpr (dim == 2 && spacedim == 3)
+ {
+ Triangulation<dim> tria_2d;
+ GridGenerator::subdivided_hyper_cube_with_simplices(
+ tria_2d, 1, 1.0, 2.0, true);
+ std::vector<Point<dim>> points_2d;
+ std::vector<CellData<dim>> cell_data;
+ SubCellData subcell_data;
+ std::tie(points_2d, cell_data, subcell_data) =
+ GridTools::get_coarse_mesh_description(tria_2d);
+
+ std::vector<Point<spacedim>> points_3d;
+ for (const auto &p : points_2d)
+ points_3d.emplace_back(p[0], p[1], 1.0 + p[0] * p[0] + p[1] * p[1]);
+
+ tria.create_triangulation(points_3d, cell_data, subcell_data);
+ }
+ else
+ GridGenerator::subdivided_hyper_cube_with_simplices(
+ tria, 1, 1.0, 2.0, true);
+ FE_SimplexP<dim, spacedim> fe(1);
+ MappingP1<dim, spacedim> mapping;
+ MappingFE<dim, spacedim> mapping_fe(fe);
+
+ QGaussSimplex<dim> quadrature(2);
+
+ UpdateFlags flags =
+ update_quadrature_points | update_JxW_values | update_jacobians |
+ update_jacobian_grads | update_inverse_jacobians |
+ update_jacobian_pushed_forward_grads | update_jacobian_2nd_derivatives |
+ update_jacobian_pushed_forward_2nd_derivatives |
+ update_jacobian_3rd_derivatives |
+ update_jacobian_pushed_forward_3rd_derivatives | update_volume_elements;
+ if (dim + 1 == spacedim)
+ flags |= update_normal_vectors | update_boundary_forms;
+
+ FEValues<dim, spacedim> fe_values(mapping, fe, quadrature, flags);
+ FEValues<dim, spacedim> fe_values_2(mapping_fe, fe, quadrature, flags);
+
+ for (const auto &cell : tria.active_cell_iterators())
+ {
+ deallog << std::endl;
+ fe_values.reinit(cell);
+ fe_values_2.reinit(cell);
+
+ deallog << "cell vertices" << std::endl;
+ for (const unsigned int vertex_no : cell->vertex_indices())
+ deallog << " " << cell->vertex(vertex_no) << std::endl;
+ deallog << std::endl;
+
+ deallog << "transform_unit_to_real_cell" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ const Point<spacedim> p =
+ mapping.transform_unit_to_real_cell(cell, quadrature.point(qp_n));
+ deallog << " " << p << std::endl;
+
+ Assert((p - fe_values_2.quadrature_point(qp_n)).norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "transform_real_to_unit_cell" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ const Point<dim> p = mapping.transform_real_to_unit_cell(
+ cell, fe_values_2.quadrature_point(qp_n));
+ deallog << " " << p << std::endl;
+
+ Assert((quadrature.point(qp_n) - p).norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "JxW" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " " << fe_values.JxW(qp_n) << std::endl;
+
+ Assert(std::abs((fe_values.JxW(qp_n) - fe_values_2.JxW(qp_n))) <
+ 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "quadrature points" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ const Point<dim> p = mapping.transform_real_to_unit_cell(
+ cell, fe_values.quadrature_point(qp_n));
+ deallog << " " << p << " -> " << fe_values.quadrature_point(qp_n)
+ << std::endl;
+ Assert(reference_cell.contains_point(p, 1e-12), ExcInternalError());
+
+ Assert((fe_values.quadrature_point(qp_n) -
+ fe_values_2.quadrature_point(qp_n))
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ if constexpr (dim + 1 == spacedim)
+ {
+ deallog << "normal vectors" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << fe_values.normal_vector(qp_n) << std::endl;
+
+ Assert((fe_values.normal_vector(qp_n) -
+ fe_values_2.normal_vector(qp_n))
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+ }
+
+ deallog << "Jacobians" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " " << fe_values.jacobian(qp_n) << std::endl;
+
+ for (unsigned int d = 0; d < spacedim; ++d)
+ Assert((fe_values.jacobian(qp_n)[d] - fe_values_2.jacobian(qp_n)[d])
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian gradients" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_grad(qp_n).norm() == 0) << std::endl;
+
+ for (unsigned int d = 0; d < spacedim; ++d)
+ Assert((fe_values.jacobian_grad(qp_n)[d] -
+ fe_values_2.jacobian_grad(qp_n)[d])
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "inverse jacobians" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " " << fe_values.inverse_jacobian(qp_n) << std::endl;
+
+ for (unsigned int d = 0; d < dim; ++d)
+ Assert((fe_values.inverse_jacobian(qp_n)[d] -
+ fe_values_2.inverse_jacobian(qp_n)[d])
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian push forward gradients" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_pushed_forward_grad(qp_n).norm() == 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian 2nd derivatives" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_2nd_derivative(qp_n).norm() == 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian push forward 2nd derivatives" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_pushed_forward_2nd_derivative(qp_n)
+ .norm() == 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian 3rd derivatives" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_3rd_derivative(qp_n).norm() == 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian push forward 3rd derivatives" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_pushed_forward_3rd_derivative(qp_n)
+ .norm() == 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+ }
+
+ deallog << std::endl;
+}
+
+int
+main()
+{
+ initlog();
+
+ test<1>();
+ test<1, 2>();
+ test<2>();
+ test<2, 3>();
+ test<3>();
+
+ deallog << "OK" << std::endl;
+}
--- /dev/null
+
+DEAL::MappingP1<1, 1>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000
+DEAL:: 2.00000
+DEAL::
+DEAL::transform_unit_to_real_cell
+DEAL:: 1.21132
+DEAL:: 1.78868
+DEAL::
+DEAL::transform_real_to_unit_cell
+DEAL:: 0.211325
+DEAL:: 0.788675
+DEAL::
+DEAL::JxW
+DEAL:: 0.500000
+DEAL:: 0.500000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.211325 -> 1.21132
+DEAL:: 0.788675 -> 1.78868
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000
+DEAL:: 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000
+DEAL:: 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::MappingP1<1, 2>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 0.00000
+DEAL:: 2.00000 0.00000
+DEAL::
+DEAL::transform_unit_to_real_cell
+DEAL:: 1.21132 0.00000
+DEAL:: 1.78868 0.00000
+DEAL::
+DEAL::transform_real_to_unit_cell
+DEAL:: 0.211325
+DEAL:: 0.788675
+DEAL::
+DEAL::JxW
+DEAL:: 0.500000
+DEAL:: 0.500000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.211325 -> 1.21132 0.00000
+DEAL:: 0.788675 -> 1.78868 0.00000
+DEAL::
+DEAL::normal vectors
+DEAL::-0.00000 1.00000
+DEAL::-0.00000 1.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000
+DEAL:: 1.00000 0.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 0.00000
+DEAL:: 1.00000 0.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::MappingP1<2, 2>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 1.00000
+DEAL:: 2.00000 1.00000
+DEAL:: 1.00000 2.00000
+DEAL::
+DEAL::transform_unit_to_real_cell
+DEAL:: 1.17856 1.15505
+DEAL:: 1.07503 1.64495
+DEAL:: 1.66639 1.15505
+DEAL:: 1.28002 1.64495
+DEAL::
+DEAL::transform_real_to_unit_cell
+DEAL:: 0.178559 0.155051
+DEAL:: 0.0750311 0.644949
+DEAL:: 0.666390 0.155051
+DEAL:: 0.280020 0.644949
+DEAL::
+DEAL::JxW
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.178559 0.155051 -> 1.17856 1.15505
+DEAL:: 0.0750311 0.644949 -> 1.07503 1.64495
+DEAL:: 0.666390 0.155051 -> 1.66639 1.15505
+DEAL:: 0.280020 0.644949 -> 1.28002 1.64495
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 2.00000
+DEAL:: 1.00000 2.00000
+DEAL:: 2.00000 1.00000
+DEAL::
+DEAL::transform_unit_to_real_cell
+DEAL:: 1.82144 1.84495
+DEAL:: 1.92497 1.35505
+DEAL:: 1.33361 1.84495
+DEAL:: 1.71998 1.35505
+DEAL::
+DEAL::transform_real_to_unit_cell
+DEAL:: 0.178559 0.155051
+DEAL:: 0.0750311 0.644949
+DEAL:: 0.666390 0.155051
+DEAL:: 0.280020 0.644949
+DEAL::
+DEAL::JxW
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.178559 0.155051 -> 1.82144 1.84495
+DEAL:: 0.0750311 0.644949 -> 1.92497 1.35505
+DEAL:: 0.666390 0.155051 -> 1.33361 1.84495
+DEAL:: 0.280020 0.644949 -> 1.71998 1.35505
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::MappingP1<2, 3>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 1.00000 3.00000
+DEAL:: 2.00000 1.00000 6.00000
+DEAL:: 1.00000 2.00000 6.00000
+DEAL::
+DEAL::transform_unit_to_real_cell
+DEAL:: 1.17856 1.15505 4.00083
+DEAL:: 1.07503 1.64495 5.15994
+DEAL:: 1.66639 1.15505 5.46432
+DEAL:: 1.28002 1.64495 5.77491
+DEAL::
+DEAL::transform_real_to_unit_cell
+DEAL:: 0.178559 0.155051
+DEAL:: 0.0750311 0.644949
+DEAL:: 0.666390 0.155051
+DEAL:: 0.280020 0.644949
+DEAL::
+DEAL::JxW
+DEAL:: 0.693155
+DEAL:: 0.396570
+DEAL:: 0.693155
+DEAL:: 0.396570
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.178559 0.155051 -> 1.17856 1.15505 4.00083
+DEAL:: 0.0750311 0.644949 -> 1.07503 1.64495 5.15994
+DEAL:: 0.666390 0.155051 -> 1.66639 1.15505 5.46432
+DEAL:: 0.280020 0.644949 -> 1.28002 1.64495 5.77491
+DEAL::
+DEAL::normal vectors
+DEAL::-0.688247 -0.688247 0.229416
+DEAL::-0.688247 -0.688247 0.229416
+DEAL::-0.688247 -0.688247 0.229416
+DEAL::-0.688247 -0.688247 0.229416
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 2.00000 9.00000
+DEAL:: 1.00000 2.00000 6.00000
+DEAL:: 2.00000 1.00000 6.00000
+DEAL::
+DEAL::transform_unit_to_real_cell
+DEAL:: 1.82144 1.84495 7.99917
+DEAL:: 1.92497 1.35505 6.84006
+DEAL:: 1.33361 1.84495 6.53568
+DEAL:: 1.71998 1.35505 6.22509
+DEAL::
+DEAL::transform_real_to_unit_cell
+DEAL:: 0.178559 0.155051
+DEAL:: 0.0750311 0.644949
+DEAL:: 0.666390 0.155051
+DEAL:: 0.280020 0.644949
+DEAL::
+DEAL::JxW
+DEAL:: 0.693155
+DEAL:: 0.396570
+DEAL:: 0.693155
+DEAL:: 0.396570
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.178559 0.155051 -> 1.82144 1.84495 7.99917
+DEAL:: 0.0750311 0.644949 -> 1.92497 1.35505 6.84006
+DEAL:: 0.666390 0.155051 -> 1.33361 1.84495 6.53568
+DEAL:: 0.280020 0.644949 -> 1.71998 1.35505 6.22509
+DEAL::
+DEAL::normal vectors
+DEAL::-0.688247 -0.688247 0.229416
+DEAL::-0.688247 -0.688247 0.229416
+DEAL::-0.688247 -0.688247 0.229416
+DEAL::-0.688247 -0.688247 0.229416
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::MappingP1<3, 3>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 1.00000 1.00000
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL::
+DEAL::transform_unit_to_real_cell
+DEAL:: 1.16200 1.18385 1.01272
+DEAL:: 1.01091 1.28152 1.36213
+DEAL:: 1.19012 1.01140 1.35862
+DEAL:: 1.17082 1.15282 1.63849
+DEAL:: 1.15869 1.58566 1.13085
+DEAL:: 1.57123 1.14692 1.14037
+DEAL::
+DEAL::transform_real_to_unit_cell
+DEAL:: 0.162001 0.183850 0.0127184
+DEAL:: 0.0109052 0.281524 0.362127
+DEAL:: 0.190117 0.0114033 0.358621
+DEAL:: 0.170817 0.152818 0.638493
+DEAL:: 0.158685 0.585663 0.130847
+DEAL:: 0.571226 0.146918 0.140373
+DEAL::
+DEAL::JxW
+DEAL:: 0.0203870
+DEAL:: 0.0213444
+DEAL:: 0.0220947
+DEAL:: 0.0234374
+DEAL:: 0.0374025
+DEAL:: 0.0420007
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.162001 0.183850 0.0127184 -> 1.16200 1.18385 1.01272
+DEAL:: 0.0109052 0.281524 0.362127 -> 1.01091 1.28152 1.36213
+DEAL:: 0.190117 0.0114033 0.358621 -> 1.19012 1.01140 1.35862
+DEAL:: 0.170817 0.152818 0.638493 -> 1.17082 1.15282 1.63849
+DEAL:: 0.158685 0.585663 0.130847 -> 1.15869 1.58566 1.13085
+DEAL:: 0.571226 0.146918 0.140373 -> 1.57123 1.14692 1.14037
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 2.00000 2.00000 1.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL::
+DEAL::transform_unit_to_real_cell
+DEAL:: 1.35857 1.83800 1.01272
+DEAL:: 1.65456 1.98909 1.36213
+DEAL:: 1.56014 1.80988 1.35862
+DEAL:: 1.96213 1.82918 1.63849
+DEAL:: 1.87520 1.84131 1.13085
+DEAL:: 1.85852 1.42877 1.14037
+DEAL::
+DEAL::transform_real_to_unit_cell
+DEAL:: 0.162001 0.183850 0.0127184
+DEAL:: 0.0109052 0.281524 0.362127
+DEAL:: 0.190117 0.0114033 0.358621
+DEAL:: 0.170817 0.152818 0.638493
+DEAL:: 0.158685 0.585663 0.130847
+DEAL:: 0.571226 0.146918 0.140373
+DEAL::
+DEAL::JxW
+DEAL:: 0.0203870
+DEAL:: 0.0213444
+DEAL:: 0.0220947
+DEAL:: 0.0234374
+DEAL:: 0.0374025
+DEAL:: 0.0420007
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.162001 0.183850 0.0127184 -> 1.35857 1.83800 1.01272
+DEAL:: 0.0109052 0.281524 0.362127 -> 1.65456 1.98909 1.36213
+DEAL:: 0.190117 0.0114033 0.358621 -> 1.56014 1.80988 1.35862
+DEAL:: 0.170817 0.152818 0.638493 -> 1.96213 1.82918 1.63849
+DEAL:: 0.158685 0.585663 0.130847 -> 1.87520 1.84131 1.13085
+DEAL:: 0.571226 0.146918 0.140373 -> 1.85852 1.42877 1.14037
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL:: 2.00000 1.00000 2.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL::
+DEAL::transform_unit_to_real_cell
+DEAL:: 1.83800 1.01272 1.35857
+DEAL:: 1.98909 1.36213 1.65456
+DEAL:: 1.80988 1.35862 1.56014
+DEAL:: 1.82918 1.63849 1.96213
+DEAL:: 1.84131 1.13085 1.87520
+DEAL:: 1.42877 1.14037 1.85852
+DEAL::
+DEAL::transform_real_to_unit_cell
+DEAL:: 0.162001 0.183850 0.0127184
+DEAL:: 0.0109052 0.281524 0.362127
+DEAL:: 0.190117 0.0114033 0.358621
+DEAL:: 0.170817 0.152818 0.638493
+DEAL:: 0.158685 0.585663 0.130847
+DEAL:: 0.571226 0.146918 0.140373
+DEAL::
+DEAL::JxW
+DEAL:: 0.0203870
+DEAL:: 0.0213444
+DEAL:: 0.0220947
+DEAL:: 0.0234374
+DEAL:: 0.0374025
+DEAL:: 0.0420007
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.162001 0.183850 0.0127184 -> 1.83800 1.01272 1.35857
+DEAL:: 0.0109052 0.281524 0.362127 -> 1.98909 1.36213 1.65456
+DEAL:: 0.190117 0.0114033 0.358621 -> 1.80988 1.35862 1.56014
+DEAL:: 0.170817 0.152818 0.638493 -> 1.82918 1.63849 1.96213
+DEAL:: 0.158685 0.585663 0.130847 -> 1.84131 1.13085 1.87520
+DEAL:: 0.571226 0.146918 0.140373 -> 1.42877 1.14037 1.85852
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL:: 1.00000 2.00000 2.00000
+DEAL::
+DEAL::transform_unit_to_real_cell
+DEAL:: 1.18385 1.83800 1.35857
+DEAL:: 1.28152 1.98909 1.65456
+DEAL:: 1.01140 1.80988 1.56014
+DEAL:: 1.15282 1.82918 1.96213
+DEAL:: 1.58566 1.84131 1.87520
+DEAL:: 1.14692 1.42877 1.85852
+DEAL::
+DEAL::transform_real_to_unit_cell
+DEAL:: 0.162001 0.183850 0.0127184
+DEAL:: 0.0109052 0.281524 0.362127
+DEAL:: 0.190117 0.0114033 0.358621
+DEAL:: 0.170817 0.152818 0.638493
+DEAL:: 0.158685 0.585663 0.130847
+DEAL:: 0.571226 0.146918 0.140373
+DEAL::
+DEAL::JxW
+DEAL:: 0.0203870
+DEAL:: 0.0213444
+DEAL:: 0.0220947
+DEAL:: 0.0234374
+DEAL:: 0.0374025
+DEAL:: 0.0420007
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.162001 0.183850 0.0127184 -> 1.18385 1.83800 1.35857
+DEAL:: 0.0109052 0.281524 0.362127 -> 1.28152 1.98909 1.65456
+DEAL:: 0.190117 0.0114033 0.358621 -> 1.01140 1.80988 1.56014
+DEAL:: 0.170817 0.152818 0.638493 -> 1.15282 1.82918 1.96213
+DEAL:: 0.158685 0.585663 0.130847 -> 1.58566 1.84131 1.87520
+DEAL:: 0.571226 0.146918 0.140373 -> 1.14692 1.42877 1.85852
+DEAL::
+DEAL::Jacobians
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL::
+DEAL::transform_unit_to_real_cell
+DEAL:: 1.65415 1.17472 1.19657
+DEAL:: 1.70757 1.37303 1.64365
+DEAL:: 1.79848 1.54874 1.37002
+DEAL:: 1.67636 1.80931 1.79131
+DEAL:: 1.25565 1.28953 1.71651
+DEAL:: 1.28186 1.71160 1.28729
+DEAL::
+DEAL::transform_real_to_unit_cell
+DEAL:: 0.162001 0.183850 0.0127184
+DEAL:: 0.0109052 0.281524 0.362127
+DEAL:: 0.190117 0.0114033 0.358621
+DEAL:: 0.170817 0.152818 0.638493
+DEAL:: 0.158685 0.585663 0.130847
+DEAL:: 0.571226 0.146918 0.140373
+DEAL::
+DEAL::JxW
+DEAL:: 0.0407740
+DEAL:: 0.0426888
+DEAL:: 0.0441893
+DEAL:: 0.0468748
+DEAL:: 0.0748051
+DEAL:: 0.0840013
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.162001 0.183850 0.0127184 -> 1.65415 1.17472 1.19657
+DEAL:: 0.0109052 0.281524 0.362127 -> 1.70757 1.37303 1.64365
+DEAL:: 0.190117 0.0114033 0.358621 -> 1.79848 1.54874 1.37002
+DEAL:: 0.170817 0.152818 0.638493 -> 1.67636 1.80931 1.79131
+DEAL:: 0.158685 0.585663 0.130847 -> 1.25565 1.28953 1.71651
+DEAL:: 0.571226 0.146918 0.140373 -> 1.28186 1.71160 1.28729
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::OK
--- /dev/null
+// ------------------------------------------------------------------------
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+// Copyright (C) 2025 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// Part of the source code is dual licensed under Apache-2.0 WITH
+// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
+// governing the source code and code contributions can be found in
+// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
+//
+// ------------------------------------------------------------------------
+
+#include <deal.II/base/quadrature_lib.h>
+
+#include <deal.II/fe/fe_nothing.h>
+#include <deal.II/fe/fe_simplex_p.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/fe/mapping_fe.h>
+#include <deal.II/fe/mapping_p1.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools_topology.h>
+#include <deal.II/grid/tria.h>
+
+#include "../tests.h"
+
+
+// Test MappingP1's face values by comparing with MappingFE.
+
+using namespace dealii;
+
+template <int dim, int spacedim = dim>
+void
+test()
+{
+ deallog << "MappingP1<" << dim << ", " << spacedim << ">" << std::endl;
+
+ const auto reference_cell = ReferenceCells::get_simplex<dim>();
+
+ Triangulation<dim, spacedim> tria;
+ if constexpr (dim == 1)
+ GridGenerator::subdivided_hyper_cube(tria, 1, 1.0, 2.0, true);
+ else if constexpr (dim == 2 && spacedim == 3)
+ {
+ Triangulation<dim> tria_2d;
+ GridGenerator::subdivided_hyper_cube_with_simplices(
+ tria_2d, 1, 1.0, 2.0, true);
+ std::vector<Point<dim>> points_2d;
+ std::vector<CellData<dim>> cell_data;
+ SubCellData subcell_data;
+ std::tie(points_2d, cell_data, subcell_data) =
+ GridTools::get_coarse_mesh_description(tria_2d);
+
+ std::vector<Point<spacedim>> points_3d;
+ for (const auto &p : points_2d)
+ points_3d.emplace_back(p[0], p[1], 1.0 + p[0] * p[0] + p[1] * p[1]);
+
+ tria.create_triangulation(points_3d, cell_data, subcell_data);
+ }
+ else
+ GridGenerator::subdivided_hyper_cube_with_simplices(
+ tria, 1, 1.0, 2.0, true);
+ FE_SimplexP<dim, spacedim> fe(1);
+ MappingP1<dim, spacedim> mapping;
+ MappingFE<dim, spacedim> mapping_fe(fe);
+
+ QGaussSimplex<dim - 1> quadrature(2);
+
+ UpdateFlags flags =
+ update_quadrature_points | update_JxW_values | update_jacobians |
+ update_jacobian_grads | update_inverse_jacobians |
+ update_jacobian_pushed_forward_grads | update_jacobian_2nd_derivatives |
+ update_jacobian_pushed_forward_2nd_derivatives |
+ update_jacobian_3rd_derivatives |
+ update_jacobian_pushed_forward_3rd_derivatives | update_boundary_forms;
+ if (dim == spacedim)
+ flags |= update_normal_vectors;
+
+ FEFaceValues<dim, spacedim> fe_values(mapping, fe, quadrature, flags);
+ FEFaceValues<dim, spacedim> fe_values_2(mapping_fe, fe, quadrature, flags);
+
+ for (const auto &cell : tria.active_cell_iterators())
+ {
+ deallog << std::endl;
+
+ deallog << "cell vertices" << std::endl;
+ for (const unsigned int vertex_no : cell->vertex_indices())
+ deallog << " " << cell->vertex(vertex_no) << std::endl;
+ deallog << std::endl;
+
+ for (unsigned int face_no : cell->face_indices())
+ {
+ fe_values.reinit(cell, face_no);
+ fe_values_2.reinit(cell, face_no);
+
+ deallog << "JxW" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " " << fe_values.JxW(qp_n) << std::endl;
+
+ Assert(std::abs((fe_values.JxW(qp_n) - fe_values_2.JxW(qp_n))) <
+ 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "quadrature points" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ const Point<dim> p = mapping.transform_real_to_unit_cell(
+ cell, fe_values.quadrature_point(qp_n));
+ deallog << " " << p << " -> " << fe_values.quadrature_point(qp_n)
+ << std::endl;
+ Assert(reference_cell.contains_point(p, 1e-12),
+ ExcInternalError());
+
+ Assert((fe_values.quadrature_point(qp_n) -
+ fe_values_2.quadrature_point(qp_n))
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "boundary forms" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << fe_values.normal_vector(qp_n) << std::endl;
+
+ Assert((fe_values.boundary_form(qp_n) -
+ fe_values_2.boundary_form(qp_n))
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ if constexpr (dim == spacedim)
+ {
+ deallog << "normal vectors" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << fe_values.normal_vector(qp_n) << std::endl;
+
+ Assert((fe_values.normal_vector(qp_n) -
+ fe_values_2.normal_vector(qp_n))
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+ }
+
+ deallog << "Jacobians" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " " << fe_values.jacobian(qp_n) << std::endl;
+
+ for (unsigned int d = 0; d < spacedim; ++d)
+ Assert((fe_values.jacobian(qp_n)[d] -
+ fe_values_2.jacobian(qp_n)[d])
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian gradients" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_grad(qp_n).norm() == 0)
+ << std::endl;
+
+ for (unsigned int d = 0; d < spacedim; ++d)
+ Assert((fe_values.jacobian_grad(qp_n)[d] -
+ fe_values_2.jacobian_grad(qp_n)[d])
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "inverse jacobians" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " " << fe_values.inverse_jacobian(qp_n) << std::endl;
+
+ for (unsigned int d = 0; d < dim; ++d)
+ Assert((fe_values.inverse_jacobian(qp_n)[d] -
+ fe_values_2.inverse_jacobian(qp_n)[d])
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian push forward gradients" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_pushed_forward_grad(qp_n).norm() ==
+ 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian 2nd derivatives" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_2nd_derivative(qp_n).norm() == 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian push forward 2nd derivatives" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_pushed_forward_2nd_derivative(qp_n)
+ .norm() == 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian 3rd derivatives" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_3rd_derivative(qp_n).norm() == 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian push forward 3rd derivatives" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_pushed_forward_3rd_derivative(qp_n)
+ .norm() == 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+ }
+ }
+
+ deallog << std::endl;
+}
+
+int
+main()
+{
+ initlog();
+
+ test<1>();
+ test<1, 2>();
+ test<2>();
+ test<2, 3>();
+ test<3>();
+
+ deallog << "OK" << std::endl;
+}
--- /dev/null
+
+DEAL::MappingP1<1, 1>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000
+DEAL:: 2.00000
+DEAL::
+DEAL::JxW
+DEAL:: 1.00000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.00000 -> 1.00000
+DEAL::
+DEAL::boundary forms
+DEAL::-1.00000
+DEAL::
+DEAL::normal vectors
+DEAL::-1.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 1.00000
+DEAL::
+DEAL::quadrature points
+DEAL:: 1.00000 -> 2.00000
+DEAL::
+DEAL::boundary forms
+DEAL::1.00000
+DEAL::
+DEAL::normal vectors
+DEAL::1.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::MappingP1<1, 2>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 0.00000
+DEAL:: 2.00000 0.00000
+DEAL::
+DEAL::JxW
+DEAL:: 1.00000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.00000 -> 1.00000 0.00000
+DEAL::
+DEAL::boundary forms
+DEAL::-1.00000 -0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 0.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 1.00000
+DEAL::
+DEAL::quadrature points
+DEAL:: 1.00000 -> 2.00000 0.00000
+DEAL::
+DEAL::boundary forms
+DEAL::1.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 0.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::MappingP1<2, 2>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 1.00000
+DEAL:: 2.00000 1.00000
+DEAL:: 1.00000 2.00000
+DEAL::
+DEAL::JxW
+DEAL:: 0.500000
+DEAL:: 0.500000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.211325 0.00000 -> 1.21132 1.00000
+DEAL:: 0.788675 0.00000 -> 1.78868 1.00000
+DEAL::
+DEAL::boundary forms
+DEAL::0.00000 -1.00000
+DEAL::0.00000 -1.00000
+DEAL::
+DEAL::normal vectors
+DEAL::0.00000 -1.00000
+DEAL::0.00000 -1.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.707107
+DEAL:: 0.707107
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.788675 0.211325 -> 1.78868 1.21132
+DEAL:: 0.211325 0.788675 -> 1.21132 1.78868
+DEAL::
+DEAL::boundary forms
+DEAL::0.707107 0.707107
+DEAL::0.707107 0.707107
+DEAL::
+DEAL::normal vectors
+DEAL::0.707107 0.707107
+DEAL::0.707107 0.707107
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.500000
+DEAL:: 0.500000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.00000 0.788675 -> 1.00000 1.78868
+DEAL:: 0.00000 0.211325 -> 1.00000 1.21132
+DEAL::
+DEAL::boundary forms
+DEAL::-1.00000 0.00000
+DEAL::-1.00000 0.00000
+DEAL::
+DEAL::normal vectors
+DEAL::-1.00000 0.00000
+DEAL::-1.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 2.00000
+DEAL:: 1.00000 2.00000
+DEAL:: 2.00000 1.00000
+DEAL::
+DEAL::JxW
+DEAL:: 0.500000
+DEAL:: 0.500000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.211325 0.00000 -> 1.78868 2.00000
+DEAL:: 0.788675 0.00000 -> 1.21132 2.00000
+DEAL::
+DEAL::boundary forms
+DEAL::0.00000 1.00000
+DEAL::0.00000 1.00000
+DEAL::
+DEAL::normal vectors
+DEAL::0.00000 1.00000
+DEAL::0.00000 1.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.707107
+DEAL:: 0.707107
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.211325 0.788675 -> 1.78868 1.21132
+DEAL:: 0.788675 0.211325 -> 1.21132 1.78868
+DEAL::
+DEAL::boundary forms
+DEAL::-0.707107 -0.707107
+DEAL::-0.707107 -0.707107
+DEAL::
+DEAL::normal vectors
+DEAL::-0.707107 -0.707107
+DEAL::-0.707107 -0.707107
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.500000
+DEAL:: 0.500000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.00000 0.788675 -> 2.00000 1.21132
+DEAL:: 0.00000 0.211325 -> 2.00000 1.78868
+DEAL::
+DEAL::boundary forms
+DEAL::1.00000 0.00000
+DEAL::1.00000 0.00000
+DEAL::
+DEAL::normal vectors
+DEAL::1.00000 0.00000
+DEAL::1.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::MappingP1<2, 3>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 1.00000 3.00000
+DEAL:: 2.00000 1.00000 6.00000
+DEAL:: 1.00000 2.00000 6.00000
+DEAL::
+DEAL::JxW
+DEAL:: 1.58114
+DEAL:: 1.58114
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.211325 0.00000 -> 1.21132 1.00000 3.63397
+DEAL:: 0.788675 1.11022e-16 -> 1.78868 1.00000 5.36603
+DEAL::
+DEAL::boundary forms
+DEAL::0.652929 -0.725476 -0.217643
+DEAL::0.652929 -0.725476 -0.217643
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.707107
+DEAL:: 0.707107
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.788675 0.211325 -> 1.78868 1.21132 6.00000
+DEAL:: 0.211325 0.788675 -> 1.21132 1.78868 6.00000
+DEAL::
+DEAL::boundary forms
+DEAL::0.162221 0.162221 0.973329
+DEAL::0.162221 0.162221 0.973329
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 1.58114
+DEAL:: 1.58114
+DEAL::
+DEAL::quadrature points
+DEAL:: 1.11022e-16 0.788675 -> 1.00000 1.78868 5.36603
+DEAL:: 6.93889e-17 0.211325 -> 1.00000 1.21132 3.63397
+DEAL::
+DEAL::boundary forms
+DEAL::-0.725476 0.652929 -0.217643
+DEAL::-0.725476 0.652929 -0.217643
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 2.00000 9.00000
+DEAL:: 1.00000 2.00000 6.00000
+DEAL:: 2.00000 1.00000 6.00000
+DEAL::
+DEAL::JxW
+DEAL:: 1.58114
+DEAL:: 1.58114
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.211325 -6.93889e-17 -> 1.78868 2.00000 8.36603
+DEAL:: 0.788675 1.11022e-16 -> 1.21132 2.00000 6.63397
+DEAL::
+DEAL::boundary forms
+DEAL::-0.652929 0.725476 0.217643
+DEAL::-0.652929 0.725476 0.217643
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.707107
+DEAL:: 0.707107
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.211325 0.788675 -> 1.78868 1.21132 6.00000
+DEAL:: 0.788675 0.211325 -> 1.21132 1.78868 6.00000
+DEAL::
+DEAL::boundary forms
+DEAL::-0.162221 -0.162221 -0.973329
+DEAL::-0.162221 -0.162221 -0.973329
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 1.58114
+DEAL:: 1.58114
+DEAL::
+DEAL::quadrature points
+DEAL:: 1.11022e-16 0.788675 -> 2.00000 1.21132 6.63397
+DEAL:: -6.93889e-17 0.211325 -> 2.00000 1.78868 8.36603
+DEAL::
+DEAL::boundary forms
+DEAL::0.725476 -0.652929 0.217643
+DEAL::0.725476 -0.652929 0.217643
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::MappingP1<3, 3>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 1.00000 1.00000
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL::
+DEAL::JxW
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.178559 0.155051 0.00000 -> 1.17856 1.15505 1.00000
+DEAL:: 0.0750311 0.644949 0.00000 -> 1.07503 1.64495 1.00000
+DEAL:: 0.666390 0.155051 0.00000 -> 1.66639 1.15505 1.00000
+DEAL:: 0.280020 0.644949 0.00000 -> 1.28002 1.64495 1.00000
+DEAL::
+DEAL::boundary forms
+DEAL::0.00000 0.00000 -1.00000
+DEAL::0.00000 0.00000 -1.00000
+DEAL::0.00000 0.00000 -1.00000
+DEAL::0.00000 0.00000 -1.00000
+DEAL::
+DEAL::normal vectors
+DEAL::0.00000 0.00000 -1.00000
+DEAL::0.00000 0.00000 -1.00000
+DEAL::0.00000 0.00000 -1.00000
+DEAL::0.00000 0.00000 -1.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.666390 0.00000 0.155051 -> 1.66639 1.00000 1.15505
+DEAL:: 0.280020 0.00000 0.644949 -> 1.28002 1.00000 1.64495
+DEAL:: 0.178559 0.00000 0.155051 -> 1.17856 1.00000 1.15505
+DEAL:: 0.0750311 0.00000 0.644949 -> 1.07503 1.00000 1.64495
+DEAL::
+DEAL::boundary forms
+DEAL::0.00000 -1.00000 0.00000
+DEAL::0.00000 -1.00000 0.00000
+DEAL::0.00000 -1.00000 0.00000
+DEAL::0.00000 -1.00000 0.00000
+DEAL::
+DEAL::normal vectors
+DEAL::0.00000 -1.00000 0.00000
+DEAL::0.00000 -1.00000 0.00000
+DEAL::0.00000 -1.00000 0.00000
+DEAL::0.00000 -1.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.00000 0.178559 0.155051 -> 1.00000 1.17856 1.15505
+DEAL:: 0.00000 0.0750311 0.644949 -> 1.00000 1.07503 1.64495
+DEAL:: 0.00000 0.666390 0.155051 -> 1.00000 1.66639 1.15505
+DEAL:: 0.00000 0.280020 0.644949 -> 1.00000 1.28002 1.64495
+DEAL::
+DEAL::boundary forms
+DEAL::-1.00000 0.00000 0.00000
+DEAL::-1.00000 0.00000 0.00000
+DEAL::-1.00000 0.00000 0.00000
+DEAL::-1.00000 0.00000 0.00000
+DEAL::
+DEAL::normal vectors
+DEAL::-1.00000 0.00000 0.00000
+DEAL::-1.00000 0.00000 0.00000
+DEAL::-1.00000 0.00000 0.00000
+DEAL::-1.00000 0.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.178559 0.666390 0.155051 -> 1.17856 1.66639 1.15505
+DEAL:: 0.0750311 0.280020 0.644949 -> 1.07503 1.28002 1.64495
+DEAL:: 0.666390 0.178559 0.155051 -> 1.66639 1.17856 1.15505
+DEAL:: 0.280020 0.0750311 0.644949 -> 1.28002 1.07503 1.64495
+DEAL::
+DEAL::boundary forms
+DEAL::0.577350 0.577350 0.577350
+DEAL::0.577350 0.577350 0.577350
+DEAL::0.577350 0.577350 0.577350
+DEAL::0.577350 0.577350 0.577350
+DEAL::
+DEAL::normal vectors
+DEAL::0.577350 0.577350 0.577350
+DEAL::0.577350 0.577350 0.577350
+DEAL::0.577350 0.577350 0.577350
+DEAL::0.577350 0.577350 0.577350
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 2.00000 2.00000 1.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL::
+DEAL::JxW
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.178559 0.155051 0.00000 -> 1.33361 1.82144 1.00000
+DEAL:: 0.0750311 0.644949 0.00000 -> 1.71998 1.92497 1.00000
+DEAL:: 0.666390 0.155051 0.00000 -> 1.82144 1.33361 1.00000
+DEAL:: 0.280020 0.644949 0.00000 -> 1.92497 1.71998 1.00000
+DEAL::
+DEAL::boundary forms
+DEAL::0.00000 0.00000 -1.00000
+DEAL::0.00000 0.00000 -1.00000
+DEAL::0.00000 0.00000 -1.00000
+DEAL::0.00000 0.00000 -1.00000
+DEAL::
+DEAL::normal vectors
+DEAL::0.00000 0.00000 -1.00000
+DEAL::0.00000 0.00000 -1.00000
+DEAL::0.00000 0.00000 -1.00000
+DEAL::0.00000 0.00000 -1.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.666390 2.22045e-16 0.155051 -> 1.82144 1.33361 1.15505
+DEAL:: 0.280020 0.00000 0.644949 -> 1.92497 1.71998 1.64495
+DEAL:: 0.178559 2.22045e-16 0.155051 -> 1.33361 1.82144 1.15505
+DEAL:: 0.0750311 0.00000 0.644949 -> 1.71998 1.92497 1.64495
+DEAL::
+DEAL::boundary forms
+DEAL::-0.577350 -0.577350 0.577350
+DEAL::-0.577350 -0.577350 0.577350
+DEAL::-0.577350 -0.577350 0.577350
+DEAL::-0.577350 -0.577350 0.577350
+DEAL::
+DEAL::normal vectors
+DEAL::-0.577350 -0.577350 0.577350
+DEAL::-0.577350 -0.577350 0.577350
+DEAL::-0.577350 -0.577350 0.577350
+DEAL::-0.577350 -0.577350 0.577350
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.00000 0.178559 0.155051 -> 1.33361 2.00000 1.15505
+DEAL:: 0.00000 0.0750311 0.644949 -> 1.71998 2.00000 1.64495
+DEAL:: 0.00000 0.666390 0.155051 -> 1.82144 2.00000 1.15505
+DEAL:: 0.00000 0.280020 0.644949 -> 1.92497 2.00000 1.64495
+DEAL::
+DEAL::boundary forms
+DEAL::0.00000 1.00000 0.00000
+DEAL::0.00000 1.00000 0.00000
+DEAL::0.00000 1.00000 0.00000
+DEAL::0.00000 1.00000 0.00000
+DEAL::
+DEAL::normal vectors
+DEAL::0.00000 1.00000 0.00000
+DEAL::0.00000 1.00000 0.00000
+DEAL::0.00000 1.00000 0.00000
+DEAL::0.00000 1.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.178559 0.666390 0.155051 -> 2.00000 1.82144 1.15505
+DEAL:: 0.0750311 0.280020 0.644949 -> 2.00000 1.92497 1.64495
+DEAL:: 0.666390 0.178559 0.155051 -> 2.00000 1.33361 1.15505
+DEAL:: 0.280020 0.0750311 0.644949 -> 2.00000 1.71998 1.64495
+DEAL::
+DEAL::boundary forms
+DEAL::1.00000 0.00000 0.00000
+DEAL::1.00000 0.00000 0.00000
+DEAL::1.00000 0.00000 0.00000
+DEAL::1.00000 0.00000 0.00000
+DEAL::
+DEAL::normal vectors
+DEAL::1.00000 0.00000 0.00000
+DEAL::1.00000 0.00000 0.00000
+DEAL::1.00000 0.00000 0.00000
+DEAL::1.00000 0.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 1.00000 1.00000 -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 1.00000 -1.00000 -0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL:: 2.00000 1.00000 2.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL::
+DEAL::JxW
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.178559 0.155051 0.00000 -> 1.82144 1.00000 1.33361
+DEAL:: 0.0750311 0.644949 0.00000 -> 1.92497 1.00000 1.71998
+DEAL:: 0.666390 0.155051 0.00000 -> 1.33361 1.00000 1.82144
+DEAL:: 0.280020 0.644949 0.00000 -> 1.71998 1.00000 1.92497
+DEAL::
+DEAL::boundary forms
+DEAL::0.00000 -1.00000 0.00000
+DEAL::0.00000 -1.00000 0.00000
+DEAL::0.00000 -1.00000 0.00000
+DEAL::0.00000 -1.00000 0.00000
+DEAL::
+DEAL::normal vectors
+DEAL::0.00000 -1.00000 0.00000
+DEAL::0.00000 -1.00000 0.00000
+DEAL::0.00000 -1.00000 0.00000
+DEAL::0.00000 -1.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.666390 2.22045e-16 0.155051 -> 1.33361 1.15505 1.82144
+DEAL:: 0.280020 0.00000 0.644949 -> 1.71998 1.64495 1.92497
+DEAL:: 0.178559 2.22045e-16 0.155051 -> 1.82144 1.15505 1.33361
+DEAL:: 0.0750311 0.00000 0.644949 -> 1.92497 1.64495 1.71998
+DEAL::
+DEAL::boundary forms
+DEAL::-0.577350 0.577350 -0.577350
+DEAL::-0.577350 0.577350 -0.577350
+DEAL::-0.577350 0.577350 -0.577350
+DEAL::-0.577350 0.577350 -0.577350
+DEAL::
+DEAL::normal vectors
+DEAL::-0.577350 0.577350 -0.577350
+DEAL::-0.577350 0.577350 -0.577350
+DEAL::-0.577350 0.577350 -0.577350
+DEAL::-0.577350 0.577350 -0.577350
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.00000 0.178559 0.155051 -> 2.00000 1.15505 1.33361
+DEAL:: 0.00000 0.0750311 0.644949 -> 2.00000 1.64495 1.71998
+DEAL:: 0.00000 0.666390 0.155051 -> 2.00000 1.15505 1.82144
+DEAL:: 0.00000 0.280020 0.644949 -> 2.00000 1.64495 1.92497
+DEAL::
+DEAL::boundary forms
+DEAL::1.00000 0.00000 0.00000
+DEAL::1.00000 0.00000 0.00000
+DEAL::1.00000 0.00000 0.00000
+DEAL::1.00000 0.00000 0.00000
+DEAL::
+DEAL::normal vectors
+DEAL::1.00000 0.00000 0.00000
+DEAL::1.00000 0.00000 0.00000
+DEAL::1.00000 0.00000 0.00000
+DEAL::1.00000 0.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.178559 0.666390 0.155051 -> 1.82144 1.15505 2.00000
+DEAL:: 0.0750311 0.280020 0.644949 -> 1.92497 1.64495 2.00000
+DEAL:: 0.666390 0.178559 0.155051 -> 1.33361 1.15505 2.00000
+DEAL:: 0.280020 0.0750311 0.644949 -> 1.71998 1.64495 2.00000
+DEAL::
+DEAL::boundary forms
+DEAL::0.00000 0.00000 1.00000
+DEAL::0.00000 0.00000 1.00000
+DEAL::0.00000 0.00000 1.00000
+DEAL::0.00000 0.00000 1.00000
+DEAL::
+DEAL::normal vectors
+DEAL::0.00000 0.00000 1.00000
+DEAL::0.00000 0.00000 1.00000
+DEAL::0.00000 0.00000 1.00000
+DEAL::0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL:: -1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL:: -1.00000 0.00000 0.00000 1.00000 -1.00000 1.00000 0.00000 1.00000 -0.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL:: 1.00000 2.00000 2.00000
+DEAL::
+DEAL::JxW
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.178559 0.155051 0.00000 -> 1.15505 1.82144 1.33361
+DEAL:: 0.0750311 0.644949 -2.22045e-16 -> 1.64495 1.92497 1.71998
+DEAL:: 0.666390 0.155051 2.22045e-16 -> 1.15505 1.33361 1.82144
+DEAL:: 0.280020 0.644949 -2.22045e-16 -> 1.64495 1.71998 1.92497
+DEAL::
+DEAL::boundary forms
+DEAL::0.577350 -0.577350 -0.577350
+DEAL::0.577350 -0.577350 -0.577350
+DEAL::0.577350 -0.577350 -0.577350
+DEAL::0.577350 -0.577350 -0.577350
+DEAL::
+DEAL::normal vectors
+DEAL::0.577350 -0.577350 -0.577350
+DEAL::0.577350 -0.577350 -0.577350
+DEAL::0.577350 -0.577350 -0.577350
+DEAL::0.577350 -0.577350 -0.577350
+DEAL::
+DEAL::Jacobians
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.666390 0.00000 0.155051 -> 1.00000 1.33361 1.82144
+DEAL:: 0.280020 0.00000 0.644949 -> 1.00000 1.71998 1.92497
+DEAL:: 0.178559 0.00000 0.155051 -> 1.00000 1.82144 1.33361
+DEAL:: 0.0750311 0.00000 0.644949 -> 1.00000 1.92497 1.71998
+DEAL::
+DEAL::boundary forms
+DEAL::-1.00000 0.00000 0.00000
+DEAL::-1.00000 0.00000 0.00000
+DEAL::-1.00000 0.00000 0.00000
+DEAL::-1.00000 0.00000 0.00000
+DEAL::
+DEAL::normal vectors
+DEAL::-1.00000 0.00000 0.00000
+DEAL::-1.00000 0.00000 0.00000
+DEAL::-1.00000 0.00000 0.00000
+DEAL::-1.00000 0.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.00000 0.178559 0.155051 -> 1.17856 2.00000 1.33361
+DEAL:: 0.00000 0.0750311 0.644949 -> 1.07503 2.00000 1.71998
+DEAL:: 0.00000 0.666390 0.155051 -> 1.66639 2.00000 1.82144
+DEAL:: 0.00000 0.280020 0.644949 -> 1.28002 2.00000 1.92497
+DEAL::
+DEAL::boundary forms
+DEAL::0.00000 1.00000 0.00000
+DEAL::0.00000 1.00000 0.00000
+DEAL::0.00000 1.00000 0.00000
+DEAL::0.00000 1.00000 0.00000
+DEAL::
+DEAL::normal vectors
+DEAL::0.00000 1.00000 0.00000
+DEAL::0.00000 1.00000 0.00000
+DEAL::0.00000 1.00000 0.00000
+DEAL::0.00000 1.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL:: 0.159021
+DEAL:: 0.0909793
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.178559 0.666390 0.155051 -> 1.66639 1.82144 2.00000
+DEAL:: 0.0750311 0.280020 0.644949 -> 1.28002 1.92497 2.00000
+DEAL:: 0.666390 0.178559 0.155051 -> 1.17856 1.33361 2.00000
+DEAL:: 0.280020 0.0750311 0.644949 -> 1.07503 1.71998 2.00000
+DEAL::
+DEAL::boundary forms
+DEAL::0.00000 0.00000 1.00000
+DEAL::0.00000 0.00000 1.00000
+DEAL::0.00000 0.00000 1.00000
+DEAL::0.00000 0.00000 1.00000
+DEAL::
+DEAL::normal vectors
+DEAL::0.00000 0.00000 1.00000
+DEAL::0.00000 0.00000 1.00000
+DEAL::0.00000 0.00000 1.00000
+DEAL::0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL:: 0.00000 1.00000 0.00000 -1.00000 0.00000 0.00000 1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL:: 0.00000 -1.00000 0.00000 1.00000 0.00000 -0.00000 -1.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL::
+DEAL::JxW
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.666390 0.155051 -1.11022e-16 -> 1.17856 1.66639 1.15505
+DEAL:: 0.280020 0.644949 0.00000 -> 1.07503 1.28002 1.64495
+DEAL:: 0.178559 0.155051 -1.11022e-16 -> 1.66639 1.17856 1.15505
+DEAL:: 0.0750311 0.644949 0.00000 -> 1.28002 1.07503 1.64495
+DEAL::
+DEAL::boundary forms
+DEAL::-0.577350 -0.577350 -0.577350
+DEAL::-0.577350 -0.577350 -0.577350
+DEAL::-0.577350 -0.577350 -0.577350
+DEAL::-0.577350 -0.577350 -0.577350
+DEAL::
+DEAL::normal vectors
+DEAL::-0.577350 -0.577350 -0.577350
+DEAL::-0.577350 -0.577350 -0.577350
+DEAL::-0.577350 -0.577350 -0.577350
+DEAL::-0.577350 -0.577350 -0.577350
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.178559 0.00000 0.155051 -> 1.82144 1.33361 1.15505
+DEAL:: 0.0750311 1.11022e-16 0.644949 -> 1.92497 1.71998 1.64495
+DEAL:: 0.666390 -1.11022e-16 0.155051 -> 1.33361 1.82144 1.15505
+DEAL:: 0.280020 1.11022e-16 0.644949 -> 1.71998 1.92497 1.64495
+DEAL::
+DEAL::boundary forms
+DEAL::0.577350 0.577350 -0.577350
+DEAL::0.577350 0.577350 -0.577350
+DEAL::0.577350 0.577350 -0.577350
+DEAL::0.577350 0.577350 -0.577350
+DEAL::
+DEAL::normal vectors
+DEAL::0.577350 0.577350 -0.577350
+DEAL::0.577350 0.577350 -0.577350
+DEAL::0.577350 0.577350 -0.577350
+DEAL::0.577350 0.577350 -0.577350
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL::
+DEAL::quadrature points
+DEAL:: -1.11022e-16 0.666390 0.155051 -> 1.33361 1.15505 1.82144
+DEAL:: 0.00000 0.280020 0.644949 -> 1.71998 1.64495 1.92497
+DEAL:: -1.11022e-16 0.178559 0.155051 -> 1.82144 1.15505 1.33361
+DEAL:: 0.00000 0.0750311 0.644949 -> 1.92497 1.64495 1.71998
+DEAL::
+DEAL::boundary forms
+DEAL::0.577350 -0.577350 0.577350
+DEAL::0.577350 -0.577350 0.577350
+DEAL::0.577350 -0.577350 0.577350
+DEAL::0.577350 -0.577350 0.577350
+DEAL::
+DEAL::normal vectors
+DEAL::0.577350 -0.577350 0.577350
+DEAL::0.577350 -0.577350 0.577350
+DEAL::0.577350 -0.577350 0.577350
+DEAL::0.577350 -0.577350 0.577350
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL:: 0.275432
+DEAL:: 0.157581
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.666390 0.178559 0.155051 -> 1.15505 1.82144 1.33361
+DEAL:: 0.280020 0.0750311 0.644949 -> 1.64495 1.92497 1.71998
+DEAL:: 0.178559 0.666390 0.155051 -> 1.15505 1.33361 1.82144
+DEAL:: 0.0750311 0.280020 0.644949 -> 1.64495 1.71998 1.92497
+DEAL::
+DEAL::boundary forms
+DEAL::-0.577350 0.577350 0.577350
+DEAL::-0.577350 0.577350 0.577350
+DEAL::-0.577350 0.577350 0.577350
+DEAL::-0.577350 0.577350 0.577350
+DEAL::
+DEAL::normal vectors
+DEAL::-0.577350 0.577350 0.577350
+DEAL::-0.577350 0.577350 0.577350
+DEAL::-0.577350 0.577350 0.577350
+DEAL::-0.577350 0.577350 0.577350
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL:: -1.00000 -1.00000 0.00000 1.00000 0.00000 1.00000 0.00000 1.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL:: -0.500000 0.500000 -0.500000 -0.500000 -0.500000 0.500000 0.500000 0.500000 0.500000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::OK
--- /dev/null
+// ------------------------------------------------------------------------
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+// Copyright (C) 2025 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// Part of the source code is dual licensed under Apache-2.0 WITH
+// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
+// governing the source code and code contributions can be found in
+// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
+//
+// ------------------------------------------------------------------------
+
+#include <deal.II/base/quadrature_lib.h>
+
+#include <deal.II/fe/fe_nothing.h>
+#include <deal.II/fe/fe_simplex_p.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/fe/mapping_fe.h>
+#include <deal.II/fe/mapping_p1.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools_topology.h>
+#include <deal.II/grid/tria.h>
+
+#include "../tests.h"
+
+
+// Test MappingP1's subface values by comparing with MappingFE.
+
+using namespace dealii;
+
+template <int dim, int spacedim = dim>
+void
+test()
+{
+ deallog << "MappingP1<" << dim << ", " << spacedim << ">" << std::endl;
+
+ const auto reference_cell = ReferenceCells::get_simplex<dim>();
+
+ Triangulation<dim, spacedim> tria;
+ if constexpr (dim == 1)
+ GridGenerator::subdivided_hyper_cube(tria, 1, 1.0, 2.0, true);
+ else if constexpr (dim == 2 && spacedim == 3)
+ {
+ Triangulation<dim> tria_2d;
+ GridGenerator::subdivided_hyper_cube_with_simplices(
+ tria_2d, 1, 1.0, 2.0, true);
+ std::vector<Point<dim>> points_2d;
+ std::vector<CellData<dim>> cell_data;
+ SubCellData subcell_data;
+ std::tie(points_2d, cell_data, subcell_data) =
+ GridTools::get_coarse_mesh_description(tria_2d);
+
+ std::vector<Point<spacedim>> points_3d;
+ for (const auto &p : points_2d)
+ points_3d.emplace_back(p[0], p[1], 1.0 + p[0] * p[0] + p[1] * p[1]);
+
+ tria.create_triangulation(points_3d, cell_data, subcell_data);
+ }
+ else
+ GridGenerator::subdivided_hyper_cube_with_simplices(
+ tria, 1, 1.0, 2.0, true);
+ FE_SimplexP<dim, spacedim> fe(1);
+ MappingP1<dim, spacedim> mapping;
+ MappingFE<dim, spacedim> mapping_fe(fe);
+
+ QGaussSimplex<dim - 1> quadrature(2);
+
+ UpdateFlags flags =
+ update_quadrature_points | update_JxW_values | update_jacobians |
+ update_jacobian_grads | update_inverse_jacobians |
+ update_jacobian_pushed_forward_grads | update_jacobian_2nd_derivatives |
+ update_jacobian_pushed_forward_2nd_derivatives |
+ update_jacobian_3rd_derivatives |
+ update_jacobian_pushed_forward_3rd_derivatives;
+ if (dim == spacedim)
+ flags |= update_normal_vectors;
+
+ FESubfaceValues<dim, spacedim> fe_values(mapping, fe, quadrature, flags);
+ FESubfaceValues<dim, spacedim> fe_values_2(mapping_fe, fe, quadrature, flags);
+
+ // Same as the other tests: bypass the check for whether or not the current
+ // face actually has children by using a DoFHandler instead of a Triangulation
+ DoFHandler<dim, spacedim> dof_handler(tria);
+ dof_handler.distribute_dofs(fe);
+
+ for (const auto &cell : dof_handler.active_cell_iterators())
+ {
+ deallog << std::endl;
+
+ deallog << "cell vertices" << std::endl;
+ for (const unsigned int vertex_no : cell->vertex_indices())
+ deallog << " " << cell->vertex(vertex_no) << std::endl;
+ deallog << std::endl;
+
+ for (unsigned int face_no : cell->face_indices())
+ {
+ for (unsigned int subface_no = 0; subface_no < (dim == 2 ? 2 : 4);
+ ++subface_no)
+
+ {
+ fe_values.reinit(cell, face_no, subface_no);
+ fe_values_2.reinit(cell, face_no, subface_no);
+
+ deallog << "JxW" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " " << fe_values.JxW(qp_n) << std::endl;
+
+ Assert(std::abs((fe_values.JxW(qp_n) -
+ fe_values_2.JxW(qp_n))) < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "quadrature points" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ const Point<dim> p = mapping.transform_real_to_unit_cell(
+ cell, fe_values.quadrature_point(qp_n));
+ deallog << " " << p << " -> "
+ << fe_values.quadrature_point(qp_n) << std::endl;
+ Assert(reference_cell.contains_point(p, 1e-12),
+ ExcInternalError());
+
+ Assert((fe_values.quadrature_point(qp_n) -
+ fe_values_2.quadrature_point(qp_n))
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ if constexpr (dim == spacedim)
+ {
+ deallog << "normal vectors" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << fe_values.normal_vector(qp_n) << std::endl;
+
+ Assert((fe_values.normal_vector(qp_n) -
+ fe_values_2.normal_vector(qp_n))
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+ }
+
+ deallog << "Jacobians" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " " << fe_values.jacobian(qp_n) << std::endl;
+
+ for (unsigned int d = 0; d < spacedim; ++d)
+ Assert((fe_values.jacobian(qp_n)[d] -
+ fe_values_2.jacobian(qp_n)[d])
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian gradients" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_grad(qp_n).norm() == 0)
+ << std::endl;
+
+ for (unsigned int d = 0; d < spacedim; ++d)
+ Assert((fe_values.jacobian_grad(qp_n)[d] -
+ fe_values_2.jacobian_grad(qp_n)[d])
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "inverse jacobians" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " " << fe_values.inverse_jacobian(qp_n)
+ << std::endl;
+
+ for (unsigned int d = 0; d < dim; ++d)
+ Assert((fe_values.inverse_jacobian(qp_n)[d] -
+ fe_values_2.inverse_jacobian(qp_n)[d])
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian push forward gradients" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_pushed_forward_grad(qp_n)
+ .norm() == 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian 2nd derivatives" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_2nd_derivative(qp_n).norm() ==
+ 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian push forward 2nd derivatives" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values
+ .jacobian_pushed_forward_2nd_derivative(qp_n)
+ .norm() == 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian 3rd derivatives" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values.jacobian_3rd_derivative(qp_n).norm() ==
+ 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+
+ deallog << "Jacobian push forward 3rd derivatives" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ deallog << " all zero = "
+ << (fe_values
+ .jacobian_pushed_forward_3rd_derivative(qp_n)
+ .norm() == 0)
+ << std::endl;
+ }
+ deallog << std::endl;
+ }
+ }
+ }
+
+ deallog << std::endl;
+}
+
+int
+main()
+{
+ initlog();
+
+ test<2>();
+ test<2, 3>();
+ // At the present time we do not support tetrahedral subfaces
+ // test<3>();
+
+ deallog << "OK" << std::endl;
+}
--- /dev/null
+
+DEAL::MappingP1<2, 2>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 1.00000
+DEAL:: 2.00000 1.00000
+DEAL:: 1.00000 2.00000
+DEAL::
+DEAL::JxW
+DEAL:: 0.250000
+DEAL:: 0.250000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.105662 0.00000 -> 1.10566 1.00000
+DEAL:: 0.394338 0.00000 -> 1.39434 1.00000
+DEAL::
+DEAL::normal vectors
+DEAL::0.00000 -1.00000
+DEAL::0.00000 -1.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.250000
+DEAL:: 0.250000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.605662 0.00000 -> 1.60566 1.00000
+DEAL:: 0.894338 0.00000 -> 1.89434 1.00000
+DEAL::
+DEAL::normal vectors
+DEAL::0.00000 -1.00000
+DEAL::0.00000 -1.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.353553
+DEAL:: 0.353553
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.894338 0.105662 -> 1.89434 1.10566
+DEAL:: 0.605662 0.394338 -> 1.60566 1.39434
+DEAL::
+DEAL::normal vectors
+DEAL::0.707107 0.707107
+DEAL::0.707107 0.707107
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.353553
+DEAL:: 0.353553
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.394338 0.605662 -> 1.39434 1.60566
+DEAL:: 0.105662 0.894338 -> 1.10566 1.89434
+DEAL::
+DEAL::normal vectors
+DEAL::0.707107 0.707107
+DEAL::0.707107 0.707107
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.250000
+DEAL:: 0.250000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.00000 0.894338 -> 1.00000 1.89434
+DEAL:: 0.00000 0.605662 -> 1.00000 1.60566
+DEAL::
+DEAL::normal vectors
+DEAL::-1.00000 0.00000
+DEAL::-1.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.250000
+DEAL:: 0.250000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.00000 0.394338 -> 1.00000 1.39434
+DEAL:: 0.00000 0.105662 -> 1.00000 1.10566
+DEAL::
+DEAL::normal vectors
+DEAL::-1.00000 0.00000
+DEAL::-1.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL:: 1.00000 -0.00000 -0.00000 1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 2.00000
+DEAL:: 1.00000 2.00000
+DEAL:: 2.00000 1.00000
+DEAL::
+DEAL::JxW
+DEAL:: 0.250000
+DEAL:: 0.250000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.105662 0.00000 -> 1.89434 2.00000
+DEAL:: 0.394338 0.00000 -> 1.60566 2.00000
+DEAL::
+DEAL::normal vectors
+DEAL::0.00000 1.00000
+DEAL::0.00000 1.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.250000
+DEAL:: 0.250000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.605662 0.00000 -> 1.39434 2.00000
+DEAL:: 0.894338 0.00000 -> 1.10566 2.00000
+DEAL::
+DEAL::normal vectors
+DEAL::0.00000 1.00000
+DEAL::0.00000 1.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.353553
+DEAL:: 0.353553
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.105662 0.894338 -> 1.89434 1.10566
+DEAL:: 0.394338 0.605662 -> 1.60566 1.39434
+DEAL::
+DEAL::normal vectors
+DEAL::-0.707107 -0.707107
+DEAL::-0.707107 -0.707107
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.353553
+DEAL:: 0.353553
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.605662 0.394338 -> 1.39434 1.60566
+DEAL:: 0.894338 0.105662 -> 1.10566 1.89434
+DEAL::
+DEAL::normal vectors
+DEAL::-0.707107 -0.707107
+DEAL::-0.707107 -0.707107
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.250000
+DEAL:: 0.250000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.00000 0.894338 -> 2.00000 1.10566
+DEAL:: 0.00000 0.605662 -> 2.00000 1.39434
+DEAL::
+DEAL::normal vectors
+DEAL::1.00000 0.00000
+DEAL::1.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.250000
+DEAL:: 0.250000
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.00000 0.394338 -> 2.00000 1.60566
+DEAL:: 0.00000 0.105662 -> 2.00000 1.89434
+DEAL::
+DEAL::normal vectors
+DEAL::1.00000 0.00000
+DEAL::1.00000 0.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL:: -1.00000 -0.00000 -0.00000 -1.00000
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::MappingP1<2, 3>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 1.00000 3.00000
+DEAL:: 2.00000 1.00000 6.00000
+DEAL:: 1.00000 2.00000 6.00000
+DEAL::
+DEAL::JxW
+DEAL:: 0.790569
+DEAL:: 0.790569
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.105662 9.02056e-17 -> 1.10566 1.00000 3.31699
+DEAL:: 0.394338 -5.55112e-17 -> 1.39434 1.00000 4.18301
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.790569
+DEAL:: 0.790569
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.605662 2.22045e-16 -> 1.60566 1.00000 4.81699
+DEAL:: 0.894338 0.00000 -> 1.89434 1.00000 5.68301
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.353553
+DEAL:: 0.353553
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.894338 0.105662 -> 1.89434 1.10566 6.00000
+DEAL:: 0.605662 0.394338 -> 1.60566 1.39434 6.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.353553
+DEAL:: 0.353553
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.394338 0.605662 -> 1.39434 1.60566 6.00000
+DEAL:: 0.105662 0.894338 -> 1.10566 1.89434 6.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.790569
+DEAL:: 0.790569
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.00000 0.894338 -> 1.00000 1.89434 5.68301
+DEAL:: 2.22045e-16 0.605662 -> 1.00000 1.60566 4.81699
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.790569
+DEAL:: 0.790569
+DEAL::
+DEAL::quadrature points
+DEAL:: -5.55112e-17 0.394338 -> 1.00000 1.39434 4.18301
+DEAL:: 9.02056e-17 0.105662 -> 1.00000 1.10566 3.31699
+DEAL::
+DEAL::Jacobians
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL:: 1.00000 0.00000 0.00000 1.00000 3.00000 3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL:: 0.526316 -0.473684 0.157895 -0.473684 0.526316 0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 2.00000 9.00000
+DEAL:: 1.00000 2.00000 6.00000
+DEAL:: 2.00000 1.00000 6.00000
+DEAL::
+DEAL::JxW
+DEAL:: 0.790569
+DEAL:: 0.790569
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.105662 1.59595e-16 -> 1.89434 2.00000 8.68301
+DEAL:: 0.394338 -5.55112e-17 -> 1.60566 2.00000 7.81699
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.790569
+DEAL:: 0.790569
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.605662 2.22045e-16 -> 1.39434 2.00000 7.18301
+DEAL:: 0.894338 0.00000 -> 1.10566 2.00000 6.31699
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.353553
+DEAL:: 0.353553
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.105662 0.894338 -> 1.89434 1.10566 6.00000
+DEAL:: 0.394338 0.605662 -> 1.60566 1.39434 6.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.353553
+DEAL:: 0.353553
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.605662 0.394338 -> 1.39434 1.60566 6.00000
+DEAL:: 0.894338 0.105662 -> 1.10566 1.89434 6.00000
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.790569
+DEAL:: 0.790569
+DEAL::
+DEAL::quadrature points
+DEAL:: 0.00000 0.894338 -> 2.00000 1.10566 6.31699
+DEAL:: 2.22045e-16 0.605662 -> 2.00000 1.39434 7.18301
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::JxW
+DEAL:: 0.790569
+DEAL:: 0.790569
+DEAL::
+DEAL::quadrature points
+DEAL:: -5.55112e-17 0.394338 -> 2.00000 1.60566 7.81699
+DEAL:: 1.59595e-16 0.105662 -> 2.00000 1.89434 8.68301
+DEAL::
+DEAL::Jacobians
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL:: -1.00000 0.00000 0.00000 -1.00000 -3.00000 -3.00000
+DEAL::
+DEAL::Jacobian gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::inverse jacobians
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL:: -0.526316 0.473684 -0.157895 0.473684 -0.526316 -0.157895
+DEAL::
+DEAL::Jacobian push forward gradients
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 2nd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::Jacobian push forward 3rd derivatives
+DEAL:: all zero = 1
+DEAL:: all zero = 1
+DEAL::
+DEAL::
+DEAL::OK
--- /dev/null
+// ------------------------------------------------------------------------
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+// Copyright (C) 2025 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// Part of the source code is dual licensed under Apache-2.0 WITH
+// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
+// governing the source code and code contributions can be found in
+// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
+//
+// ------------------------------------------------------------------------
+
+#include <deal.II/base/quadrature_lib.h>
+
+#include <deal.II/fe/fe_nothing.h>
+#include <deal.II/fe/fe_simplex_p.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/fe/mapping_fe.h>
+#include <deal.II/fe/mapping_p1.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools_topology.h>
+#include <deal.II/grid/tria.h>
+
+#include "../tests.h"
+
+
+// Test MappingP1's cell values for FE quantities by comparing with MappingFE.
+
+using namespace dealii;
+
+template <int dim, int spacedim = dim>
+void
+test()
+{
+ deallog << "MappingP1<" << dim << ", " << spacedim << ">" << std::endl;
+
+ const auto reference_cell = ReferenceCells::get_simplex<dim>();
+
+ Triangulation<dim, spacedim> tria;
+ if constexpr (dim == 1)
+ GridGenerator::subdivided_hyper_cube(tria, 1, 1.0, 2.0, true);
+ else if constexpr (dim == 2 && spacedim == 3)
+ {
+ Triangulation<dim> tria_2d;
+ GridGenerator::subdivided_hyper_cube_with_simplices(
+ tria_2d, 1, 1.0, 2.0, true);
+ std::vector<Point<dim>> points_2d;
+ std::vector<CellData<dim>> cell_data;
+ SubCellData subcell_data;
+ std::tie(points_2d, cell_data, subcell_data) =
+ GridTools::get_coarse_mesh_description(tria_2d);
+
+ std::vector<Point<spacedim>> points_3d;
+ for (const auto &p : points_2d)
+ points_3d.emplace_back(p[0], p[1], 1.0 + p[0] * p[0] + p[1] * p[1]);
+
+ tria.create_triangulation(points_3d, cell_data, subcell_data);
+ }
+ else
+ GridGenerator::subdivided_hyper_cube_with_simplices(
+ tria, 1, 1.0, 2.0, true);
+ FE_SimplexP<dim, spacedim> fe(3);
+ MappingP1<dim, spacedim> mapping;
+ MappingFE<dim, spacedim> mapping_fe(fe);
+
+ QGaussSimplex<dim> quadrature(2);
+
+ UpdateFlags flags =
+ update_values | update_gradients | update_hessians | update_3rd_derivatives;
+
+ FEValues<dim, spacedim> fe_values(mapping, fe, quadrature, flags);
+ FEValues<dim, spacedim> fe_values_2(mapping_fe, fe, quadrature, flags);
+
+ for (const auto &cell : tria.active_cell_iterators())
+ {
+ deallog << std::endl;
+ fe_values.reinit(cell);
+ fe_values_2.reinit(cell);
+
+ deallog << "cell vertices" << std::endl;
+ for (const unsigned int vertex_no : cell->vertex_indices())
+ deallog << " " << cell->vertex(vertex_no) << std::endl;
+ deallog << std::endl;
+
+ deallog << "shape_values" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ for (unsigned int i = 0; i < fe.dofs_per_cell; ++i)
+ {
+ // here and below, only print out values for a single shape
+ // function so that the output isn't tens of thousands of lines
+ // long
+ if (i == fe.dofs_per_cell / 2)
+ deallog << " " << fe_values.shape_value(i, qp_n) << std::endl;
+ Assert(std::abs(fe_values.shape_value(i, qp_n) -
+ fe_values_2.shape_value(i, qp_n)) < 1e-12,
+ ExcInternalError());
+ }
+ }
+ deallog << std::endl;
+
+ deallog << "shape_gradients" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ for (unsigned int i = 0; i < fe.dofs_per_cell; ++i)
+ {
+ if (i == fe.dofs_per_cell / 2)
+ deallog << " " << fe_values.shape_grad(i, qp_n) << std::endl;
+ Assert((fe_values.shape_grad(i, qp_n) -
+ fe_values_2.shape_grad(i, qp_n))
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ }
+ deallog << std::endl;
+
+ deallog << "shape_hessians" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ for (unsigned int i = 0; i < fe.dofs_per_cell; ++i)
+ {
+ if (i == fe.dofs_per_cell / 2)
+ deallog << " " << fe_values.shape_hessian(i, qp_n)
+ << std::endl;
+ Assert((fe_values.shape_hessian(i, qp_n) -
+ fe_values_2.shape_hessian(i, qp_n))
+ .norm() < 1e-12,
+ ExcInternalError());
+ }
+ }
+ deallog << std::endl;
+
+ deallog << "shape_3rd_derivatives" << std::endl;
+ for (unsigned int qp_n = 0; qp_n < quadrature.size(); ++qp_n)
+ {
+ for (unsigned int i = 0; i < fe.dofs_per_cell; ++i)
+ {
+ if (i == fe.dofs_per_cell / 2)
+ deallog << " " << fe_values.shape_3rd_derivative(i, qp_n)
+ << std::endl;
+ Assert((fe_values.shape_3rd_derivative(i, qp_n) -
+ fe_values_2.shape_3rd_derivative(i, qp_n))
+ .norm() < 1e-08,
+ ExcInternalError());
+ }
+ }
+ deallog << std::endl;
+ }
+
+ deallog << std::endl;
+}
+
+int
+main()
+{
+ initlog();
+
+ test<1>();
+ test<1, 2>();
+ test<2>();
+ test<2, 3>();
+ test<3>();
+
+ deallog << "OK" << std::endl;
+}
--- /dev/null
+
+DEAL::MappingP1<1, 1>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000
+DEAL:: 2.00000
+DEAL::
+DEAL::shape_values
+DEAL:: 1.02452
+DEAL:: -0.274519
+DEAL::
+DEAL::shape_gradients
+DEAL:: 1.29904
+DEAL:: -1.29904
+DEAL::
+DEAL::shape_hessians
+DEAL:: -27.8827
+DEAL:: 18.8827
+DEAL::
+DEAL::shape_3rd_derivatives
+DEAL:: 81.0000
+DEAL:: 81.0000
+DEAL::
+DEAL::
+DEAL::MappingP1<1, 2>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 0.00000
+DEAL:: 2.00000 0.00000
+DEAL::
+DEAL::shape_values
+DEAL:: 1.02452
+DEAL:: -0.274519
+DEAL::
+DEAL::shape_gradients
+DEAL:: 1.29904 0.00000
+DEAL:: -1.29904 -0.00000
+DEAL::
+DEAL::shape_hessians
+DEAL:: -27.8827 -0.00000 -0.00000 -0.00000
+DEAL:: 18.8827 0.00000 0.00000 0.00000
+DEAL::
+DEAL::shape_3rd_derivatives
+DEAL:: 81.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+DEAL:: 81.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+DEAL::
+DEAL::
+DEAL::MappingP1<2, 2>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 1.00000
+DEAL:: 2.00000 1.00000
+DEAL:: 1.00000 2.00000
+DEAL::
+DEAL::shape_values
+DEAL:: -0.0578481
+DEAL:: -0.168744
+DEAL:: 0.464575
+DEAL:: -0.129982
+DEAL::
+DEAL::shape_gradients
+DEAL:: 0.0497847 -0.373091
+DEAL:: -1.59571 -0.261639
+DEAL:: 2.09203 2.99627
+DEAL:: 1.97389 -0.201539
+DEAL::
+DEAL::shape_hessians
+DEAL:: 4.18638 0.321086 0.321086 0.00000
+DEAL:: 17.4136 -2.47416 -2.47416 0.00000
+DEAL:: 4.18638 13.4925 13.4925 0.00000
+DEAL:: 17.4136 3.06054 3.06054 0.00000
+DEAL::
+DEAL::shape_3rd_derivatives
+DEAL:: 0.00000 27.0000 27.0000 0.00000 27.0000 0.00000 0.00000 0.00000
+DEAL:: 0.00000 27.0000 27.0000 0.00000 27.0000 0.00000 0.00000 0.00000
+DEAL:: 0.00000 27.0000 27.0000 0.00000 27.0000 0.00000 0.00000 0.00000
+DEAL:: 0.00000 27.0000 27.0000 0.00000 27.0000 0.00000 0.00000 0.00000
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 2.00000
+DEAL:: 1.00000 2.00000
+DEAL:: 2.00000 1.00000
+DEAL::
+DEAL::shape_values
+DEAL:: -0.0578481
+DEAL:: -0.168744
+DEAL:: 0.464575
+DEAL:: -0.129982
+DEAL::
+DEAL::shape_gradients
+DEAL:: -0.0497847 0.373091
+DEAL:: 1.59571 0.261639
+DEAL:: -2.09203 -2.99627
+DEAL:: -1.97389 0.201539
+DEAL::
+DEAL::shape_hessians
+DEAL:: 4.18638 0.321086 0.321086 0.00000
+DEAL:: 17.4136 -2.47416 -2.47416 -0.00000
+DEAL:: 4.18638 13.4925 13.4925 0.00000
+DEAL:: 17.4136 3.06054 3.06054 0.00000
+DEAL::
+DEAL::shape_3rd_derivatives
+DEAL:: -0.00000 -27.0000 -27.0000 -0.00000 -27.0000 -0.00000 -0.00000 -0.00000
+DEAL:: -0.00000 -27.0000 -27.0000 -0.00000 -27.0000 -0.00000 -0.00000 -0.00000
+DEAL:: -0.00000 -27.0000 -27.0000 -0.00000 -27.0000 -0.00000 -0.00000 -0.00000
+DEAL:: -0.00000 -27.0000 -27.0000 -0.00000 -27.0000 -0.00000 -0.00000 -0.00000
+DEAL::
+DEAL::
+DEAL::MappingP1<2, 3>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 1.00000 3.00000
+DEAL:: 2.00000 1.00000 6.00000
+DEAL:: 1.00000 2.00000 6.00000
+DEAL::
+DEAL::shape_values
+DEAL:: -0.0578481
+DEAL:: -0.168744
+DEAL:: 0.464575
+DEAL:: -0.129982
+DEAL::
+DEAL::shape_gradients
+DEAL:: 0.202930 -0.219946 -0.0510483
+DEAL:: -0.715911 0.618156 -0.293265
+DEAL:: -0.318216 0.586022 0.803416
+DEAL:: 1.13436 -1.04107 0.279845
+DEAL::
+DEAL::shape_hessians
+DEAL:: 0.999563 -0.882708 0.350567 -0.882708 0.779228 -0.310440 0.350567 -0.310440 0.120379
+DEAL:: 6.05737 -5.58185 1.42655 -5.58185 5.14086 -1.32296 1.42655 -1.32296 0.310769
+DEAL:: -5.56792 5.72126 0.460025 5.72126 -5.78825 -0.200982 0.460025 -0.200982 0.777128
+DEAL:: 3.29769 -2.80684 1.47255 -2.80684 2.38118 -1.27697 1.47255 -1.27697 0.586738
+DEAL::
+DEAL::shape_3rd_derivatives
+DEAL:: -10.6284 10.3135 -0.944744 10.3135 -9.95524 1.07465 -0.944744 1.07465 0.389707 10.3135 -9.95524 1.07465 -9.95524 9.56553 -1.16912 1.07465 -1.16912 -0.283423 -0.944744 1.07465 0.389707 1.07465 -1.16912 -0.283423 0.389707 -0.283423 0.318851
+DEAL:: -10.6284 10.3135 -0.944744 10.3135 -9.95524 1.07465 -0.944744 1.07465 0.389707 10.3135 -9.95524 1.07465 -9.95524 9.56553 -1.16912 1.07465 -1.16912 -0.283423 -0.944744 1.07465 0.389707 1.07465 -1.16912 -0.283423 0.389707 -0.283423 0.318851
+DEAL:: -10.6284 10.3135 -0.944744 10.3135 -9.95524 1.07465 -0.944744 1.07465 0.389707 10.3135 -9.95524 1.07465 -9.95524 9.56553 -1.16912 1.07465 -1.16912 -0.283423 -0.944744 1.07465 0.389707 1.07465 -1.16912 -0.283423 0.389707 -0.283423 0.318851
+DEAL:: -10.6284 10.3135 -0.944744 10.3135 -9.95524 1.07465 -0.944744 1.07465 0.389707 10.3135 -9.95524 1.07465 -9.95524 9.56553 -1.16912 1.07465 -1.16912 -0.283423 -0.944744 1.07465 0.389707 1.07465 -1.16912 -0.283423 0.389707 -0.283423 0.318851
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 2.00000 9.00000
+DEAL:: 1.00000 2.00000 6.00000
+DEAL:: 2.00000 1.00000 6.00000
+DEAL::
+DEAL::shape_values
+DEAL:: -0.0578481
+DEAL:: -0.168744
+DEAL:: 0.464575
+DEAL:: -0.129982
+DEAL::
+DEAL::shape_gradients
+DEAL:: -0.202930 0.219946 0.0510483
+DEAL:: 0.715911 -0.618156 0.293265
+DEAL:: 0.318216 -0.586022 -0.803416
+DEAL:: -1.13436 1.04107 -0.279845
+DEAL::
+DEAL::shape_hessians
+DEAL:: 0.999563 -0.882708 0.350567 -0.882708 0.779228 -0.310440 0.350567 -0.310440 0.120379
+DEAL:: 6.05737 -5.58185 1.42655 -5.58185 5.14086 -1.32296 1.42655 -1.32296 0.310769
+DEAL:: -5.56792 5.72126 0.460025 5.72126 -5.78825 -0.200982 0.460025 -0.200982 0.777128
+DEAL:: 3.29769 -2.80684 1.47255 -2.80684 2.38118 -1.27697 1.47255 -1.27697 0.586738
+DEAL::
+DEAL::shape_3rd_derivatives
+DEAL:: 10.6284 -10.3135 0.944744 -10.3135 9.95524 -1.07465 0.944744 -1.07465 -0.389707 -10.3135 9.95524 -1.07465 9.95524 -9.56553 1.16912 -1.07465 1.16912 0.283423 0.944744 -1.07465 -0.389707 -1.07465 1.16912 0.283423 -0.389707 0.283423 -0.318851
+DEAL:: 10.6284 -10.3135 0.944744 -10.3135 9.95524 -1.07465 0.944744 -1.07465 -0.389707 -10.3135 9.95524 -1.07465 9.95524 -9.56553 1.16912 -1.07465 1.16912 0.283423 0.944744 -1.07465 -0.389707 -1.07465 1.16912 0.283423 -0.389707 0.283423 -0.318851
+DEAL:: 10.6284 -10.3135 0.944744 -10.3135 9.95524 -1.07465 0.944744 -1.07465 -0.389707 -10.3135 9.95524 -1.07465 9.95524 -9.56553 1.16912 -1.07465 1.16912 0.283423 0.944744 -1.07465 -0.389707 -1.07465 1.16912 0.283423 -0.389707 0.283423 -0.318851
+DEAL:: 10.6284 -10.3135 0.944744 -10.3135 9.95524 -1.07465 0.944744 -1.07465 -0.389707 -10.3135 9.95524 -1.07465 9.95524 -9.56553 1.16912 -1.07465 1.16912 0.283423 0.944744 -1.07465 -0.389707 -1.07465 1.16912 0.283423 -0.389707 0.283423 -0.318851
+DEAL::
+DEAL::
+DEAL::MappingP1<3, 3>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 1.00000 1.00000
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL::
+DEAL::shape_values
+DEAL:: 0.0339313
+DEAL:: 0.0204525
+DEAL:: 0.226849
+DEAL:: -0.0964507
+DEAL:: -0.0459722
+DEAL:: -0.0514379
+DEAL::
+DEAL::shape_gradients
+DEAL:: -0.163032 -0.163032 2.50487
+DEAL:: -1.74798 -1.74798 -1.69150
+DEAL:: -2.64526 -2.64526 -2.01270
+DEAL:: 2.22034 2.22034 2.06928
+DEAL:: 0.147892 0.147892 -0.203450
+DEAL:: 0.0954487 0.0954487 -0.270989
+DEAL::
+DEAL::shape_hessians
+DEAL:: 0.343396 0.343396 -12.4752 0.343396 0.343396 -12.4752 -12.4752 -12.4752 -25.2938
+DEAL:: 9.77742 9.77742 4.95043 9.77742 9.77742 4.95043 4.95043 4.95043 0.123440
+DEAL:: 9.68276 9.68276 2.30657 9.68276 9.68276 2.30657 2.30657 2.30657 -5.06962
+DEAL:: 17.2393 17.2393 20.7168 17.2393 17.2393 20.7168 20.7168 20.7168 24.1943
+DEAL:: 3.53287 3.53287 4.66314 3.53287 3.53287 4.66314 4.66314 4.66314 5.79341
+DEAL:: 3.79007 3.79007 4.47003 3.79007 3.79007 4.47003 4.47003 4.47003 5.15000
+DEAL::
+DEAL::shape_3rd_derivatives
+DEAL:: 0.00000 0.00000 27.0000 0.00000 0.00000 27.0000 27.0000 27.0000 54.0000 0.00000 0.00000 27.0000 0.00000 0.00000 27.0000 27.0000 27.0000 54.0000 27.0000 27.0000 54.0000 27.0000 27.0000 54.0000 54.0000 54.0000 81.0000
+DEAL:: 0.00000 0.00000 27.0000 0.00000 0.00000 27.0000 27.0000 27.0000 54.0000 0.00000 0.00000 27.0000 0.00000 0.00000 27.0000 27.0000 27.0000 54.0000 27.0000 27.0000 54.0000 27.0000 27.0000 54.0000 54.0000 54.0000 81.0000
+DEAL:: 0.00000 0.00000 27.0000 0.00000 0.00000 27.0000 27.0000 27.0000 54.0000 0.00000 0.00000 27.0000 0.00000 0.00000 27.0000 27.0000 27.0000 54.0000 27.0000 27.0000 54.0000 27.0000 27.0000 54.0000 54.0000 54.0000 81.0000
+DEAL:: 0.00000 0.00000 27.0000 0.00000 0.00000 27.0000 27.0000 27.0000 54.0000 0.00000 0.00000 27.0000 0.00000 0.00000 27.0000 27.0000 27.0000 54.0000 27.0000 27.0000 54.0000 27.0000 27.0000 54.0000 54.0000 54.0000 81.0000
+DEAL:: 0.00000 0.00000 27.0000 0.00000 0.00000 27.0000 27.0000 27.0000 54.0000 0.00000 0.00000 27.0000 0.00000 0.00000 27.0000 27.0000 27.0000 54.0000 27.0000 27.0000 54.0000 27.0000 27.0000 54.0000 54.0000 54.0000 81.0000
+DEAL:: 0.00000 0.00000 27.0000 0.00000 0.00000 27.0000 27.0000 27.0000 54.0000 0.00000 0.00000 27.0000 0.00000 0.00000 27.0000 27.0000 27.0000 54.0000 27.0000 27.0000 54.0000 27.0000 27.0000 54.0000 54.0000 54.0000 81.0000
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 2.00000 2.00000 1.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL::
+DEAL::shape_values
+DEAL:: 0.0339313
+DEAL:: 0.0204525
+DEAL:: 0.226849
+DEAL:: -0.0964507
+DEAL:: -0.0459722
+DEAL:: -0.0514379
+DEAL::
+DEAL::shape_gradients
+DEAL:: -0.163032 0.00000 2.66790
+DEAL:: -1.74798 0.00000 0.0564788
+DEAL:: -2.64526 0.00000 0.632559
+DEAL:: 2.22034 0.00000 -0.151060
+DEAL:: 0.147892 0.00000 -0.351342
+DEAL:: 0.0954487 0.00000 -0.366438
+DEAL::
+DEAL::shape_hessians
+DEAL:: 0.343396 0.00000 -12.8186 0.00000 0.00000 0.00000 -12.8186 0.00000 0.00000
+DEAL:: 9.77742 0.00000 -4.82699 0.00000 0.00000 0.00000 -4.82699 0.00000 0.00000
+DEAL:: 9.68276 0.00000 -7.37619 0.00000 0.00000 0.00000 -7.37619 0.00000 -1.77636e-15
+DEAL:: 17.2393 0.00000 3.47747 0.00000 0.00000 0.00000 3.47747 0.00000 3.55271e-15
+DEAL:: 3.53287 0.00000 1.13027 0.00000 0.00000 0.00000 1.13027 0.00000 4.44089e-16
+DEAL:: 3.79007 0.00000 0.679966 0.00000 0.00000 0.00000 0.679966 0.00000 8.88178e-16
+DEAL::
+DEAL::shape_3rd_derivatives
+DEAL:: 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+DEAL:: 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+DEAL:: 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+DEAL:: 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+DEAL:: 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+DEAL:: 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL:: 2.00000 1.00000 2.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL::
+DEAL::shape_values
+DEAL:: 0.0339313
+DEAL:: 0.0204525
+DEAL:: 0.226849
+DEAL:: -0.0964507
+DEAL:: -0.0459722
+DEAL:: -0.0514379
+DEAL::
+DEAL::shape_gradients
+DEAL:: 0.00000 2.66790 -0.163032
+DEAL:: 0.00000 0.0564788 -1.74798
+DEAL:: 0.00000 0.632559 -2.64526
+DEAL:: 0.00000 -0.151060 2.22034
+DEAL:: 0.00000 -0.351342 0.147892
+DEAL:: 0.00000 -0.366438 0.0954487
+DEAL::
+DEAL::shape_hessians
+DEAL:: 0.00000 0.00000 0.00000 0.00000 0.00000 -12.8186 0.00000 -12.8186 0.343396
+DEAL:: 0.00000 0.00000 0.00000 0.00000 0.00000 -4.82699 0.00000 -4.82699 9.77742
+DEAL:: 0.00000 0.00000 0.00000 0.00000 -1.77636e-15 -7.37619 0.00000 -7.37619 9.68276
+DEAL:: 0.00000 0.00000 0.00000 0.00000 3.55271e-15 3.47747 0.00000 3.47747 17.2393
+DEAL:: 0.00000 0.00000 0.00000 0.00000 4.44089e-16 1.13027 0.00000 1.13027 3.53287
+DEAL:: 0.00000 0.00000 0.00000 0.00000 8.88178e-16 0.679966 0.00000 0.679966 3.79007
+DEAL::
+DEAL::shape_3rd_derivatives
+DEAL:: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 27.0000 0.00000
+DEAL:: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 27.0000 0.00000
+DEAL:: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 27.0000 0.00000
+DEAL:: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 27.0000 0.00000
+DEAL:: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 27.0000 0.00000
+DEAL:: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 27.0000 0.00000
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL:: 1.00000 2.00000 2.00000
+DEAL::
+DEAL::shape_values
+DEAL:: 0.0339313
+DEAL:: 0.0204525
+DEAL:: 0.226849
+DEAL:: -0.0964507
+DEAL:: -0.0459722
+DEAL:: -0.0514379
+DEAL::
+DEAL::shape_gradients
+DEAL:: -2.66790 2.66790 2.50487
+DEAL:: -0.0564788 0.0564788 -1.69150
+DEAL:: -0.632559 0.632559 -2.01270
+DEAL:: 0.151060 -0.151060 2.06928
+DEAL:: 0.351342 -0.351342 -0.203450
+DEAL:: 0.366438 -0.366438 -0.270989
+DEAL::
+DEAL::shape_hessians
+DEAL:: 0.00000 0.00000 12.8186 0.00000 0.00000 -12.8186 12.8186 -12.8186 -25.2938
+DEAL:: 0.00000 0.00000 4.82699 0.00000 0.00000 -4.82699 4.82699 -4.82699 0.123440
+DEAL:: -1.77636e-15 1.77636e-15 7.37619 1.77636e-15 -1.77636e-15 -7.37619 7.37619 -7.37619 -5.06962
+DEAL:: 3.55271e-15 -3.55271e-15 -3.47747 -3.55271e-15 3.55271e-15 3.47747 -3.47747 3.47747 24.1943
+DEAL:: 4.44089e-16 -4.44089e-16 -1.13027 -4.44089e-16 4.44089e-16 1.13027 -1.13027 1.13027 5.79341
+DEAL:: 8.88178e-16 -8.88178e-16 -0.679966 -8.88178e-16 8.88178e-16 0.679966 -0.679966 0.679966 5.15000
+DEAL::
+DEAL::shape_3rd_derivatives
+DEAL:: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 -27.0000 0.00000 0.00000 27.0000 -27.0000 27.0000 81.0000
+DEAL:: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 -27.0000 0.00000 0.00000 27.0000 -27.0000 27.0000 81.0000
+DEAL:: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 -27.0000 0.00000 0.00000 27.0000 -27.0000 27.0000 81.0000
+DEAL:: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 -27.0000 0.00000 0.00000 27.0000 -27.0000 27.0000 81.0000
+DEAL:: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 -27.0000 0.00000 0.00000 27.0000 -27.0000 27.0000 81.0000
+DEAL:: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -27.0000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 27.0000 0.00000 0.00000 -27.0000 0.00000 0.00000 27.0000 -27.0000 27.0000 81.0000
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL::
+DEAL::shape_values
+DEAL:: 0.0339313
+DEAL:: 0.0204525
+DEAL:: 0.226849
+DEAL:: -0.0964507
+DEAL:: -0.0459722
+DEAL:: -0.0514379
+DEAL::
+DEAL::shape_gradients
+DEAL:: 1.41547 1.25243 1.25243
+DEAL:: 0.902231 -0.845752 -0.845752
+DEAL:: 1.63891 -1.00635 -1.00635
+DEAL:: -1.18570 1.03464 1.03464
+DEAL:: -0.249617 -0.101725 -0.101725
+DEAL:: -0.230943 -0.135495 -0.135495
+DEAL::
+DEAL::shape_hessians
+DEAL:: 6.49515 -0.0858490 -0.0858490 -0.0858490 -6.32345 -6.32345 -0.0858490 -6.32345 -6.32345
+DEAL:: 4.85785 -2.44436 -2.44436 -2.44436 0.0308600 0.0308600 -2.44436 0.0308600 0.0308600
+DEAL:: 6.10879 -2.42069 -2.42069 -2.42069 -1.26741 -1.26741 -2.42069 -1.26741 -1.26741
+DEAL:: 2.57110 -4.30983 -4.30983 -4.30983 6.04856 6.04856 -4.30983 6.04856 6.04856
+DEAL:: 0.318084 -0.883218 -0.883218 -0.883218 1.44835 1.44835 -0.883218 1.44835 1.44835
+DEAL:: 0.607534 -0.947516 -0.947516 -0.947516 1.28750 1.28750 -0.947516 1.28750 1.28750
+DEAL::
+DEAL::shape_3rd_derivatives
+DEAL:: 10.1250 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 10.1250 10.1250 -3.37500 10.1250 10.1250 -3.37500 -3.37500 -3.37500 -3.37500 10.1250 10.1250 -3.37500 10.1250 10.1250
+DEAL:: 10.1250 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 10.1250 10.1250 -3.37500 10.1250 10.1250 -3.37500 -3.37500 -3.37500 -3.37500 10.1250 10.1250 -3.37500 10.1250 10.1250
+DEAL:: 10.1250 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 10.1250 10.1250 -3.37500 10.1250 10.1250 -3.37500 -3.37500 -3.37500 -3.37500 10.1250 10.1250 -3.37500 10.1250 10.1250
+DEAL:: 10.1250 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 10.1250 10.1250 -3.37500 10.1250 10.1250 -3.37500 -3.37500 -3.37500 -3.37500 10.1250 10.1250 -3.37500 10.1250 10.1250
+DEAL:: 10.1250 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 10.1250 10.1250 -3.37500 10.1250 10.1250 -3.37500 -3.37500 -3.37500 -3.37500 10.1250 10.1250 -3.37500 10.1250 10.1250
+DEAL:: 10.1250 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 -3.37500 10.1250 10.1250 -3.37500 10.1250 10.1250 -3.37500 -3.37500 -3.37500 -3.37500 10.1250 10.1250 -3.37500 10.1250 10.1250
+DEAL::
+DEAL::
+DEAL::OK
--- /dev/null
+// ------------------------------------------------------------------------
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+// Copyright (C) 2025 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// Part of the source code is dual licensed under Apache-2.0 WITH
+// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
+// governing the source code and code contributions can be found in
+// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
+//
+// ------------------------------------------------------------------------
+
+#include <deal.II/base/quadrature_lib.h>
+
+#include <deal.II/fe/fe_nothing.h>
+#include <deal.II/fe/fe_simplex_p.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/fe/mapping_fe.h>
+#include <deal.II/fe/mapping_p1.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/grid_tools_topology.h>
+#include <deal.II/grid/tria.h>
+
+#include "../tests.h"
+
+
+// Test MappingP1::transform() by comparing with MappingFE.
+
+
+// To call Mapping::transform() we have to get the mapping data, which requires
+// accessing a protected member of FEValuesBase:
+template <int dim, int spacedim>
+class FEValues2 : public FEValues<dim, spacedim>
+{
+public:
+ using FEValues<dim, spacedim>::FEValues;
+
+ const typename Mapping<dim, spacedim>::InternalDataBase &
+ get_mapping_data() const
+ {
+ Assert(this->mapping_data, ExcInternalError());
+ return *this->mapping_data;
+ }
+};
+
+using namespace dealii;
+
+void
+fill_tensor(double &t)
+{
+ t = random_value<double>();
+}
+
+template <int rank, int dim>
+void
+fill_tensor(Tensor<rank, dim> &t)
+{
+ for (unsigned int d = 0; d < dim; ++d)
+ fill_tensor(t[d]);
+}
+
+template <int dim>
+void
+fill_tensor(Tensor<1, dim> &t)
+{
+ for (unsigned int d = 0; d < dim; ++d)
+ t[d] = random_value<double>();
+}
+
+template <int dim, int spacedim = dim>
+void
+test()
+{
+ deallog << "MappingP1<" << dim << ", " << spacedim << ">" << std::endl;
+
+ const auto reference_cell = ReferenceCells::get_simplex<dim>();
+
+ Triangulation<dim, spacedim> tria;
+ if constexpr (dim == 1)
+ GridGenerator::subdivided_hyper_cube(tria, 1, 1.0, 2.0, true);
+ else if constexpr (dim == 2 && spacedim == 3)
+ {
+ Triangulation<dim> tria_2d;
+ GridGenerator::subdivided_hyper_cube_with_simplices(
+ tria_2d, 1, 1.0, 2.0, true);
+ std::vector<Point<dim>> points_2d;
+ std::vector<CellData<dim>> cell_data;
+ SubCellData subcell_data;
+ std::tie(points_2d, cell_data, subcell_data) =
+ GridTools::get_coarse_mesh_description(tria_2d);
+
+ std::vector<Point<spacedim>> points_3d;
+ for (const auto &p : points_2d)
+ points_3d.emplace_back(p[0], p[1], 1.0 + p[0] * p[0] + p[1] * p[1]);
+
+ tria.create_triangulation(points_3d, cell_data, subcell_data);
+ }
+ else
+ GridGenerator::subdivided_hyper_cube_with_simplices(
+ tria, 1, 1.0, 2.0, true);
+ FE_SimplexP<dim, spacedim> fe(3);
+ MappingP1<dim, spacedim> mapping;
+ MappingFE<dim, spacedim> mapping_fe(fe);
+
+ QGaussSimplex<dim> quadrature(2);
+
+ UpdateFlags flags = update_values | update_gradients | update_hessians |
+ update_3rd_derivatives |
+ update_contravariant_transformation;
+
+ FEValues2<dim, spacedim> fe_values(mapping, fe, quadrature, flags);
+ FEValues2<dim, spacedim> fe_values_2(mapping_fe, fe, quadrature, flags);
+
+ for (const auto &cell : tria.active_cell_iterators())
+ {
+ deallog << std::endl;
+
+ // We need to update the internal states before we can
+ // compute values with transform():
+ fe_values.reinit(cell);
+ fe_values_2.reinit(cell);
+
+ deallog << "cell vertices" << std::endl;
+ for (const unsigned int vertex_no : cell->vertex_indices())
+ deallog << " " << cell->vertex(vertex_no) << std::endl;
+ deallog << std::endl;
+
+ // First transform():
+ {
+ std::vector<Tensor<1, dim>> input(quadrature.size());
+ for (auto &v : input)
+ fill_tensor(v);
+ auto input_2 = input;
+
+ auto test_mapping = [&](const MappingKind &mapping_kind,
+ const std::string &mapping_name) {
+ deallog << "transform Tensor<1, " << spacedim << "> with "
+ << mapping_name << ":" << std::endl;
+
+ std::vector<Tensor<1, spacedim>> output(quadrature.size());
+ auto output_2 = output;
+
+ mapping.transform(make_array_view(input),
+ mapping_kind,
+ fe_values.get_mapping_data(),
+ make_array_view(output));
+ mapping_fe.transform(make_array_view(input_2),
+ mapping_kind,
+ fe_values_2.get_mapping_data(),
+ make_array_view(output_2));
+
+ for (unsigned int i = 0; i < input.size(); ++i)
+ {
+ Assert((output[i] - output_2[i]).norm() < 1e-12,
+ ExcInternalError());
+ if (i == input.size() / 2)
+ deallog << output[i] << std::endl;
+ }
+ };
+
+ test_mapping(MappingKind::mapping_covariant, "mapping_covariant");
+ test_mapping(MappingKind::mapping_contravariant,
+ "mapping_contravariant");
+ test_mapping(MappingKind::mapping_piola, "mapping_piola");
+ }
+ deallog << std::endl;
+
+ // Second transform():
+ {
+ std::vector<DerivativeForm<1, dim, spacedim>> input(quadrature.size());
+ for (auto &v : input)
+ for (unsigned int d = 0; d < spacedim; ++d)
+ fill_tensor(v[d]);
+ auto input_2 = input;
+
+ auto test_mapping = [&](const MappingKind &mapping_kind,
+ const std::string &mapping_name) {
+ deallog << "transform DerivativeForm<1, " << dim << ", " << spacedim
+ << "> with " << mapping_name << ":" << std::endl;
+
+ std::vector<Tensor<2, spacedim>> output(quadrature.size());
+ auto output_2 = output;
+
+ mapping.transform(make_array_view(input),
+ mapping_kind,
+ fe_values.get_mapping_data(),
+ make_array_view(output));
+ mapping_fe.transform(make_array_view(input_2),
+ mapping_kind,
+ fe_values_2.get_mapping_data(),
+ make_array_view(output_2));
+
+ for (unsigned int i = 0; i < input.size(); ++i)
+ {
+ Assert((output[i] - output_2[i]).norm() < 1e-12,
+ ExcInternalError());
+ if (i == input.size() / 2)
+ deallog << output[i] << std::endl;
+ }
+ };
+
+ test_mapping(MappingKind::mapping_covariant, "mapping_covariant");
+ // Other mappings are not yet implemented for MappingFE so we do not
+ // have them in MappingP1 (or tests here)
+#if 0
+ test_mapping(MappingKind::mapping_contravariant,
+ "mapping_contravariant");
+ test_mapping(MappingKind::mapping_piola, "mapping_piola");
+#endif
+ }
+ deallog << std::endl;
+
+ // Third transform():
+ //
+ // these transformations are only implemented for codim 0
+ if (dim == spacedim)
+ {
+ std::vector<Tensor<2, dim>> input(quadrature.size());
+ for (auto &v : input)
+ fill_tensor(v);
+ auto input_2 = input;
+
+ auto test_mapping = [&](const MappingKind &mapping_kind,
+ const std::string &mapping_name) {
+ deallog << "transform Tensor<2, " << dim << "> with "
+ << mapping_name << ":" << std::endl;
+
+ std::vector<Tensor<2, spacedim>> output(quadrature.size());
+ auto output_2 = output;
+
+ mapping.transform(make_array_view(input),
+ mapping_kind,
+ fe_values.get_mapping_data(),
+ make_array_view(output));
+ mapping_fe.transform(make_array_view(input_2),
+ mapping_kind,
+ fe_values_2.get_mapping_data(),
+ make_array_view(output_2));
+
+ for (unsigned int i = 0; i < input.size(); ++i)
+ {
+ Assert((output[i] - output_2[i]).norm() < 1e-12,
+ ExcInternalError());
+ if (i == input.size() / 2)
+ deallog << output[i] << std::endl;
+ }
+ };
+
+ // not yet implemented by MappingFE
+#if 0
+ test_mapping(MappingKind::mapping_covariant, "mapping_covariant");
+#endif
+ test_mapping(MappingKind::mapping_contravariant,
+ "mapping_contravariant");
+ test_mapping(MappingKind::mapping_covariant_gradient,
+ "mapping_covariant_gradient");
+ test_mapping(MappingKind::mapping_contravariant_gradient,
+ "mapping_contravariant_gradient");
+ test_mapping(MappingKind::mapping_piola_gradient,
+ "mapping_piola_gradient");
+ }
+ deallog << std::endl;
+
+ {
+ std::vector<DerivativeForm<2, dim, spacedim>> input(quadrature.size());
+ for (auto &v : input)
+ for (unsigned int d = 0; d < spacedim; ++d)
+ fill_tensor(v[d]);
+ auto input_2 = input;
+
+ auto test_mapping = [&](const MappingKind &mapping_kind,
+ const std::string &mapping_name) {
+ deallog << "transform DerivativeForm<2, " << dim << ", " << spacedim
+ << "> with " << mapping_name << ":" << std::endl;
+
+ std::vector<Tensor<3, spacedim>> output(quadrature.size());
+ auto output_2 = output;
+
+ mapping.transform(make_array_view(input),
+ mapping_kind,
+ fe_values.get_mapping_data(),
+ make_array_view(output));
+ mapping_fe.transform(make_array_view(input_2),
+ mapping_kind,
+ fe_values_2.get_mapping_data(),
+ make_array_view(output_2));
+
+ for (unsigned int i = 0; i < input.size(); ++i)
+ {
+ Assert((output[i] - output_2[i]).norm() < 1e-12,
+ ExcInternalError());
+ if (i == input.size() / 2)
+ deallog << output[i] << std::endl;
+ }
+ };
+
+ // This is the only mapping implemented for MappingFE
+ test_mapping(MappingKind::mapping_covariant_gradient,
+ "mapping_covariant_gradient");
+ }
+ deallog << std::endl;
+
+ {
+ std::vector<Tensor<3, dim>> input(quadrature.size());
+ for (auto &v : input)
+ fill_tensor(v);
+ auto input_2 = input;
+
+ auto test_mapping = [&](const MappingKind &mapping_kind,
+ const std::string &mapping_name) {
+ deallog << "transform Tensor<3, " << dim << "> with " << mapping_name
+ << ":" << std::endl;
+
+ std::vector<Tensor<3, spacedim>> output(quadrature.size());
+ auto output_2 = output;
+
+ mapping.transform(make_array_view(input),
+ mapping_kind,
+ fe_values.get_mapping_data(),
+ make_array_view(output));
+ mapping_fe.transform(make_array_view(input_2),
+ mapping_kind,
+ fe_values_2.get_mapping_data(),
+ make_array_view(output_2));
+
+ for (unsigned int i = 0; i < input.size(); ++i)
+ {
+ Assert((output[i] - output_2[i]).norm() < 1e-12,
+ ExcInternalError());
+ if (i == input.size() / 2)
+ deallog << output[i] << std::endl;
+ }
+ };
+
+ // This is the only mapping implemented for MappingFE
+ test_mapping(MappingKind::mapping_contravariant_hessian,
+ "mapping_contravariant_hessian");
+ test_mapping(MappingKind::mapping_covariant_hessian,
+ "mapping_covariant_hessian");
+ test_mapping(MappingKind::mapping_piola_hessian,
+ "mapping_piola_hessian");
+ }
+ deallog << std::endl;
+ }
+
+ deallog << std::endl;
+}
+
+int
+main()
+{
+ initlog();
+
+ test<1>();
+ test<1, 2>();
+ test<2>();
+ test<2, 3>();
+ test<3>();
+
+ deallog << "OK" << std::endl;
+}
--- /dev/null
+
+DEAL::MappingP1<1, 1>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000
+DEAL:: 2.00000
+DEAL::
+DEAL::transform Tensor<1, 1> with mapping_covariant:
+DEAL::0.394383
+DEAL::transform Tensor<1, 1> with mapping_contravariant:
+DEAL::0.394383
+DEAL::transform Tensor<1, 1> with mapping_piola:
+DEAL::0.394383
+DEAL::
+DEAL::transform DerivativeForm<1, 1, 1> with mapping_covariant:
+DEAL::0.798440
+DEAL::
+DEAL::transform Tensor<2, 1> with mapping_contravariant:
+DEAL::0.197551
+DEAL::transform Tensor<2, 1> with mapping_covariant_gradient:
+DEAL::0.197551
+DEAL::transform Tensor<2, 1> with mapping_contravariant_gradient:
+DEAL::0.197551
+DEAL::transform Tensor<2, 1> with mapping_piola_gradient:
+DEAL::0.197551
+DEAL::
+DEAL::transform DerivativeForm<2, 1, 1> with mapping_covariant_gradient:
+DEAL::0.768230
+DEAL::
+DEAL::transform Tensor<3, 1> with mapping_contravariant_hessian:
+DEAL::0.553970
+DEAL::transform Tensor<3, 1> with mapping_covariant_hessian:
+DEAL::0.553970
+DEAL::transform Tensor<3, 1> with mapping_piola_hessian:
+DEAL::0.553970
+DEAL::
+DEAL::
+DEAL::MappingP1<1, 2>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 0.00000
+DEAL:: 2.00000 0.00000
+DEAL::
+DEAL::transform Tensor<1, 2> with mapping_covariant:
+DEAL::0.628871 0.00000
+DEAL::transform Tensor<1, 2> with mapping_contravariant:
+DEAL::0.628871 0.00000
+DEAL::transform Tensor<1, 2> with mapping_piola:
+DEAL::0.628871 0.00000
+DEAL::
+DEAL::transform DerivativeForm<1, 1, 2> with mapping_covariant:
+DEAL::0.952230 0.00000 0.916195 0.00000
+DEAL::
+DEAL::
+DEAL::transform DerivativeForm<2, 1, 2> with mapping_covariant_gradient:
+DEAL::0.141603 0.00000 0.00000 0.00000 0.606969 0.00000 0.00000 0.00000
+DEAL::
+DEAL::transform Tensor<3, 1> with mapping_contravariant_hessian:
+DEAL::0.242887 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+DEAL::transform Tensor<3, 1> with mapping_covariant_hessian:
+DEAL::0.242887 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+DEAL::transform Tensor<3, 1> with mapping_piola_hessian:
+DEAL::0.242887 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+DEAL::
+DEAL::
+DEAL::MappingP1<2, 2>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 1.00000
+DEAL:: 2.00000 1.00000
+DEAL:: 1.00000 2.00000
+DEAL::
+DEAL::transform Tensor<1, 2> with mapping_covariant:
+DEAL::0.129790 0.108809
+DEAL::transform Tensor<1, 2> with mapping_contravariant:
+DEAL::0.129790 0.108809
+DEAL::transform Tensor<1, 2> with mapping_piola:
+DEAL::0.129790 0.108809
+DEAL::
+DEAL::transform DerivativeForm<1, 2, 2> with mapping_covariant:
+DEAL::0.292517 0.771358 0.526745 0.769914
+DEAL::
+DEAL::transform Tensor<2, 2> with mapping_contravariant:
+DEAL::0.890233 0.348893 0.0641713 0.0200230
+DEAL::transform Tensor<2, 2> with mapping_covariant_gradient:
+DEAL::0.890233 0.348893 0.0641713 0.0200230
+DEAL::transform Tensor<2, 2> with mapping_contravariant_gradient:
+DEAL::0.890233 0.348893 0.0641713 0.0200230
+DEAL::transform Tensor<2, 2> with mapping_piola_gradient:
+DEAL::0.890233 0.348893 0.0641713 0.0200230
+DEAL::
+DEAL::transform DerivativeForm<2, 2, 2> with mapping_covariant_gradient:
+DEAL::0.639979 0.354049 0.687861 0.165974 0.440105 0.880075 0.829201 0.330337
+DEAL::
+DEAL::transform Tensor<3, 2> with mapping_contravariant_hessian:
+DEAL::0.786002 0.307458 0.447034 0.226107 0.187533 0.276235 0.556444 0.416501
+DEAL::transform Tensor<3, 2> with mapping_covariant_hessian:
+DEAL::0.786002 0.307458 0.447034 0.226107 0.187533 0.276235 0.556444 0.416501
+DEAL::transform Tensor<3, 2> with mapping_piola_hessian:
+DEAL::0.786002 0.307458 0.447034 0.226107 0.187533 0.276235 0.556444 0.416501
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 2.00000
+DEAL:: 1.00000 2.00000
+DEAL:: 2.00000 1.00000
+DEAL::
+DEAL::transform Tensor<1, 2> with mapping_covariant:
+DEAL::-0.294160 -0.232262
+DEAL::transform Tensor<1, 2> with mapping_contravariant:
+DEAL::-0.294160 -0.232262
+DEAL::transform Tensor<1, 2> with mapping_piola:
+DEAL::-0.294160 -0.232262
+DEAL::
+DEAL::transform DerivativeForm<1, 2, 2> with mapping_covariant:
+DEAL::-0.0525293 -0.521563 -0.176211 -0.240062
+DEAL::
+DEAL::transform Tensor<2, 2> with mapping_contravariant:
+DEAL::-0.461420 -0.819677 -0.573319 -0.755581
+DEAL::transform Tensor<2, 2> with mapping_covariant_gradient:
+DEAL::0.461420 0.819677 0.573319 0.755581
+DEAL::transform Tensor<2, 2> with mapping_contravariant_gradient:
+DEAL::0.461420 0.819677 0.573319 0.755581
+DEAL::transform Tensor<2, 2> with mapping_piola_gradient:
+DEAL::0.461420 0.819677 0.573319 0.755581
+DEAL::
+DEAL::transform DerivativeForm<2, 2, 2> with mapping_covariant_gradient:
+DEAL::0.579430 0.452576 0.687387 0.0996401 0.530808 0.757294 0.304295 0.992228
+DEAL::
+DEAL::transform Tensor<3, 2> with mapping_contravariant_hessian:
+DEAL::-0.700620 -0.316867 -0.328777 -0.231428 -0.0741610 -0.633072 -0.223656 -0.651132
+DEAL::transform Tensor<3, 2> with mapping_covariant_hessian:
+DEAL::-0.700620 -0.316867 -0.328777 -0.231428 -0.0741610 -0.633072 -0.223656 -0.651132
+DEAL::transform Tensor<3, 2> with mapping_piola_hessian:
+DEAL::-0.700620 -0.316867 -0.328777 -0.231428 -0.0741610 -0.633072 -0.223656 -0.651132
+DEAL::
+DEAL::
+DEAL::MappingP1<2, 3>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 1.00000 3.00000
+DEAL:: 2.00000 1.00000 6.00000
+DEAL:: 1.00000 2.00000 6.00000
+DEAL::
+DEAL::transform Tensor<1, 3> with mapping_covariant:
+DEAL::0.227161 -0.204121 0.0691176
+DEAL::transform Tensor<1, 3> with mapping_contravariant:
+DEAL::0.434513 0.00323146 1.31323
+DEAL::transform Tensor<1, 3> with mapping_piola:
+DEAL::0.0996842 0.000741348 0.301277
+DEAL::
+DEAL::transform DerivativeForm<1, 2, 3> with mapping_covariant:
+DEAL::0.0526633 0.0163670 0.207091 0.0952398 -0.0672536 0.0839587 0.0235072 0.0415593 0.195200
+DEAL::
+DEAL::
+DEAL::transform DerivativeForm<2, 2, 3> with mapping_covariant_gradient:
+DEAL::0.00262227 0.0128906 0.0465387 0.00478225 -0.0110389 -0.0187698 0.0222136 0.00555525 0.0833064 -0.0593771 0.0528572 -0.0195595 0.0369649 -0.0250018 0.0358894 -0.0672364 0.0835663 0.0489898 -0.136412 0.161354 0.0748259 0.158493 -0.175333 -0.0505202 0.0662434 -0.0419377 0.0729172
+DEAL::
+DEAL::transform Tensor<3, 2> with mapping_contravariant_hessian:
+DEAL::0.0765510 -0.0940676 -0.0525499 -0.0959432 0.118322 0.0671376 -0.0581766 0.0727643 0.0437630 0.0715061 -0.0703671 0.00341720 -0.0590654 0.0667505 0.0230554 0.0373223 -0.0108497 0.0794178 0.444171 -0.493304 -0.147398 -0.465026 0.555219 0.270579 -0.0625630 0.185744 0.369542
+DEAL::transform Tensor<3, 2> with mapping_covariant_hessian:
+DEAL::0.00641866 -0.0161775 -0.0292765 -0.0225181 0.0306563 0.0244146 -0.0482983 0.0434363 -0.0145858 0.00137382 0.00752305 0.0266906 0.0143597 -0.0209156 -0.0196676 0.0472007 -0.0401777 0.0210690 0.0233774 -0.0259634 -0.00775780 -0.0244750 0.0292220 0.0142410 -0.00329279 0.00977599 0.0194496
+DEAL::transform Tensor<3, 2> with mapping_piola_hessian:
+DEAL::0.0175620 -0.0215806 -0.0120558 -0.0220109 0.0271450 0.0154024 -0.0133466 0.0166933 0.0100399 0.0164046 -0.0161433 0.000783959 -0.0135505 0.0153136 0.00528927 0.00856232 -0.00248909 0.0182197 0.101900 -0.113172 -0.0338155 -0.106684 0.127376 0.0620751 -0.0143529 0.0426125 0.0847788
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 2.00000 9.00000
+DEAL:: 1.00000 2.00000 6.00000
+DEAL:: 2.00000 1.00000 6.00000
+DEAL::
+DEAL::transform Tensor<1, 3> with mapping_covariant:
+DEAL::-0.131238 0.108999 -0.0667160
+DEAL::transform Tensor<1, 3> with mapping_contravariant:
+DEAL::-0.331386 -0.0911486 -1.26760
+DEAL::transform Tensor<1, 3> with mapping_piola:
+DEAL::-0.0760251 -0.0209109 -0.290808
+DEAL::
+DEAL::transform DerivativeForm<1, 2, 3> with mapping_covariant:
+DEAL::-0.249994 0.185556 -0.193315 0.0258343 -0.0558522 -0.0900538 -0.0813533 0.00935259 -0.216002
+DEAL::
+DEAL::
+DEAL::transform DerivativeForm<2, 2, 3> with mapping_covariant_gradient:
+DEAL::0.183983 -0.170222 0.0412823 -0.187246 0.178591 -0.0259633 -0.00978860 0.0251076 0.0459570 -0.0389647 0.0458142 0.0205486 0.0492430 -0.0503709 -0.00338381 0.0308348 -0.0136700 0.0514944 -0.217988 0.234920 0.0507959 0.213229 -0.225065 -0.0355099 -0.0142786 0.0295646 0.0458580
+DEAL::
+DEAL::transform Tensor<3, 2> with mapping_contravariant_hessian:
+DEAL::0.171381 -0.155668 0.0471369 -0.161334 0.139290 -0.0661346 0.0301384 -0.0491361 -0.0569932 0.0258343 -0.0238077 0.00607977 -0.0193061 0.0135366 -0.0173086 0.0195844 -0.0308133 -0.0336866 0.591645 -0.538428 0.159650 -0.541922 0.458479 -0.250330 0.149169 -0.239848 -0.272039
+DEAL::transform Tensor<3, 2> with mapping_covariant_hessian:
+DEAL::0.0779630 -0.0706534 0.0219290 -0.0757679 0.0668982 -0.0266089 0.00658547 -0.0112653 -0.0140396 -0.0675833 0.0612073 -0.0191281 0.0662605 -0.0588548 0.0222171 -0.00396848 0.00705748 0.00926701 0.0311392 -0.0283383 0.00840263 -0.0285222 0.0241305 -0.0131753 0.00785098 -0.0126236 -0.0143179
+DEAL::transform Tensor<3, 2> with mapping_piola_hessian:
+DEAL::0.0393174 -0.0357128 0.0108139 -0.0370127 0.0319552 -0.0151723 0.00691422 -0.0112726 -0.0130751 0.00592679 -0.00546186 0.00139480 -0.00442913 0.00310551 -0.00397087 0.00449298 -0.00706906 -0.00772823 0.135733 -0.123524 0.0366262 -0.124325 0.105182 -0.0574296 0.0342216 -0.0550250 -0.0624101
+DEAL::
+DEAL::
+DEAL::MappingP1<3, 3>
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 1.00000 1.00000
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL::
+DEAL::transform Tensor<1, 3> with mapping_covariant:
+DEAL::0.311950 0.645889 0.00600477
+DEAL::transform Tensor<1, 3> with mapping_contravariant:
+DEAL::0.311950 0.645889 0.00600477
+DEAL::transform Tensor<1, 3> with mapping_piola:
+DEAL::0.311950 0.645889 0.00600477
+DEAL::
+DEAL::transform DerivativeForm<1, 3, 3> with mapping_covariant:
+DEAL::0.503461 0.828957 0.675654 0.904170 0.191112 0.394521 0.706067 0.868924 0.547397
+DEAL::
+DEAL::transform Tensor<2, 3> with mapping_contravariant:
+DEAL::0.0484997 0.814351 0.384658 0.637656 0.452122 0.143982 0.413078 0.247033 0.406767
+DEAL::transform Tensor<2, 3> with mapping_covariant_gradient:
+DEAL::0.0484997 0.814351 0.384658 0.637656 0.452122 0.143982 0.413078 0.247033 0.406767
+DEAL::transform Tensor<2, 3> with mapping_contravariant_gradient:
+DEAL::0.0484997 0.814351 0.384658 0.637656 0.452122 0.143982 0.413078 0.247033 0.406767
+DEAL::transform Tensor<2, 3> with mapping_piola_gradient:
+DEAL::0.0484997 0.814351 0.384658 0.637656 0.452122 0.143982 0.413078 0.247033 0.406767
+DEAL::
+DEAL::transform DerivativeForm<2, 3, 3> with mapping_covariant_gradient:
+DEAL::0.227552 0.946925 0.0138663 0.160824 0.119989 0.461848 0.648545 0.915221 0.100857 0.614227 0.0705570 0.393746 0.496431 0.436585 0.293177 0.244069 0.912391 0.566164 0.190709 0.0347164 0.431844 0.813904 0.753383 0.356383 0.997970 0.0356664 0.523548
+DEAL::
+DEAL::transform Tensor<3, 3> with mapping_contravariant_hessian:
+DEAL::0.129976 0.0812650 0.377997 0.136956 0.659878 0.114459 0.880683 0.582450 0.210863 0.668326 0.528885 0.312343 0.943222 0.768206 0.122086 0.0382648 0.514936 0.399300 0.211565 0.452650 0.160162 0.308247 0.433758 0.00543489 0.649787 0.126222 0.461949
+DEAL::transform Tensor<3, 3> with mapping_covariant_hessian:
+DEAL::0.129976 0.0812650 0.377997 0.136956 0.659878 0.114459 0.880683 0.582450 0.210863 0.668326 0.528885 0.312343 0.943222 0.768206 0.122086 0.0382648 0.514936 0.399300 0.211565 0.452650 0.160162 0.308247 0.433758 0.00543489 0.649787 0.126222 0.461949
+DEAL::transform Tensor<3, 3> with mapping_piola_hessian:
+DEAL::0.129976 0.0812650 0.377997 0.136956 0.659878 0.114459 0.880683 0.582450 0.210863 0.668326 0.528885 0.312343 0.943222 0.768206 0.122086 0.0382648 0.514936 0.399300 0.211565 0.452650 0.160162 0.308247 0.433758 0.00543489 0.649787 0.126222 0.461949
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 2.00000 2.00000 1.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL::
+DEAL::transform Tensor<1, 3> with mapping_covariant:
+DEAL::0.142119 -0.794231 0.152483
+DEAL::transform Tensor<1, 3> with mapping_contravariant:
+DEAL::1.37307 -0.936349 0.294601
+DEAL::transform Tensor<1, 3> with mapping_piola:
+DEAL::1.37307 -0.936349 0.294601
+DEAL::
+DEAL::transform DerivativeForm<1, 3, 3> with mapping_covariant:
+DEAL::0.599644 0.327455 -0.531410 0.432199 -0.469350 0.449033 0.460652 -0.214198 0.0109871
+DEAL::
+DEAL::transform Tensor<2, 3> with mapping_contravariant:
+DEAL::1.00705 -0.460067 0.00584319 1.15368 -0.268684 0.693370 1.33354 -0.444097 0.653087
+DEAL::transform Tensor<2, 3> with mapping_covariant_gradient:
+DEAL::0.191630 -0.0770539 0.501740 -0.349509 -0.158126 1.03704 0.0447295 -0.130684 -0.0850131
+DEAL::transform Tensor<2, 3> with mapping_contravariant_gradient:
+DEAL::0.969130 -0.203719 0.383170 -0.541140 -0.0810721 0.535296 0.236360 -0.207738 0.416727
+DEAL::transform Tensor<2, 3> with mapping_piola_gradient:
+DEAL::0.969130 -0.203719 0.383170 -0.541140 -0.0810721 0.535296 0.236360 -0.207738 0.416727
+DEAL::
+DEAL::transform DerivativeForm<2, 3, 3> with mapping_covariant_gradient:
+DEAL::0.889511 0.191415 -0.877830 0.508799 0.540404 -0.504072 -0.712811 -0.901059 1.34033 0.275884 -0.594169 0.271839 -0.649495 -1.37132 0.521523 0.552738 1.26759 -0.877482 0.461250 -0.0845347 0.395576 0.00856861 -0.424305 -0.0125271 -0.0745805 -0.438308 0.173866
+DEAL::
+DEAL::transform Tensor<3, 3> with mapping_contravariant_hessian:
+DEAL::1.20258 -0.498151 0.458070 0.234632 -0.925455 1.20947 0.819576 1.46319 -0.809469 -0.478869 0.168679 -0.234331 -0.211786 0.404109 -0.466375 0.211735 0.151384 0.0667253 0.0604589 -0.524539 0.0221181 -0.0672838 -0.457334 0.0487371 0.708616 1.15132 0.198349
+DEAL::transform Tensor<3, 3> with mapping_covariant_hessian:
+DEAL::0.663252 0.195067 0.201622 0.0901297 -0.0640118 0.694359 0.322695 0.463253 -0.941092 0.184382 0.363746 -0.0327093 -0.121656 0.340097 0.227984 0.534430 0.614637 -0.874367 -0.602793 -0.719606 -0.179503 -0.157414 -0.393322 -0.645622 0.385921 0.688071 1.13944
+DEAL::transform Tensor<3, 3> with mapping_piola_hessian:
+DEAL::1.20258 -0.498151 0.458070 0.234632 -0.925455 1.20947 0.819576 1.46319 -0.809469 -0.478869 0.168679 -0.234331 -0.211786 0.404109 -0.466375 0.211735 0.151384 0.0667253 0.0604589 -0.524539 0.0221181 -0.0672838 -0.457334 0.0487371 0.708616 1.15132 0.198349
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL:: 2.00000 1.00000 2.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL::
+DEAL::transform Tensor<1, 3> with mapping_covariant:
+DEAL::-0.201739 -0.288793 0.538055
+DEAL::transform Tensor<1, 3> with mapping_contravariant:
+DEAL::-0.739794 0.249262 1.52711
+DEAL::transform Tensor<1, 3> with mapping_piola:
+DEAL::-0.739794 0.249262 1.52711
+DEAL::
+DEAL::transform DerivativeForm<1, 3, 3> with mapping_covariant:
+DEAL::-0.755795 0.503068 0.0365160 0.100272 -0.408905 0.429613 0.149429 0.385547 0.563161
+DEAL::
+DEAL::transform Tensor<2, 3> with mapping_contravariant:
+DEAL::-0.519048 0.722377 1.85468 -0.993110 0.527017 1.99397 -0.501480 0.123969 0.734536
+DEAL::transform Tensor<2, 3> with mapping_covariant_gradient:
+DEAL::-0.613476 -0.0559461 -0.139413 0.126877 -0.0382939 -0.364754 -0.519269 0.0531764 0.473841
+DEAL::transform Tensor<2, 3> with mapping_contravariant_gradient:
+DEAL::-0.0942063 -0.109123 -0.613254 -0.392393 0.0148825 0.109087 -0.817456 0.177181 1.19618
+DEAL::transform Tensor<2, 3> with mapping_piola_gradient:
+DEAL::-0.0942063 -0.109123 -0.613254 -0.392393 0.0148825 0.109087 -0.817456 0.177181 1.19618
+DEAL::
+DEAL::transform DerivativeForm<2, 3, 3> with mapping_covariant_gradient:
+DEAL::0.708186 -0.463812 0.678878 -0.290548 -0.00385977 -0.0553032 0.263845 -0.617082 0.843894 0.279304 0.126941 0.0520103 0.796179 -1.21941 0.845005 -0.315036 0.736193 0.0988576 0.626390 -0.591605 -0.0904713 -0.163415 0.227708 -0.271097 0.361253 -0.402947 0.483742
+DEAL::
+DEAL::transform Tensor<3, 3> with mapping_contravariant_hessian:
+DEAL::0.510503 -0.751498 0.00294762 0.373528 -0.0630112 0.0180202 -0.287593 0.0866658 -0.927706 0.174945 0.228774 -0.388907 -0.0141391 -0.292582 0.587891 0.225515 0.211570 0.339732 -0.859328 1.10637 -0.487316 0.305308 -0.105013 0.792600 -0.125698 0.196409 1.31618
+DEAL::transform Tensor<3, 3> with mapping_covariant_hessian:
+DEAL::-0.0132674 -0.625403 -0.0925139 1.06650 0.0615460 0.240750 -0.926400 0.158170 -0.878967 0.698715 0.102679 -0.293445 -0.707114 -0.417139 0.365162 0.864322 0.140066 0.290993 -0.523770 0.126095 -0.0954615 0.692975 0.124557 0.222729 -0.638807 0.0715042 0.0487385
+DEAL::transform Tensor<3, 3> with mapping_piola_hessian:
+DEAL::0.510503 -0.751498 0.00294762 0.373528 -0.0630112 0.0180202 -0.287593 0.0866658 -0.927706 0.174945 0.228774 -0.388907 -0.0141391 -0.292582 0.587891 0.225515 0.211570 0.339732 -0.859328 1.10637 -0.487316 0.305308 -0.105013 0.792600 -0.125698 0.196409 1.31618
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL:: 1.00000 2.00000 2.00000
+DEAL::
+DEAL::transform Tensor<1, 3> with mapping_covariant:
+DEAL::0.689174 -0.345145 0.129542
+DEAL::transform Tensor<1, 3> with mapping_contravariant:
+DEAL::0.818716 -0.474687 1.42295
+DEAL::transform Tensor<1, 3> with mapping_piola:
+DEAL::0.818716 -0.474687 1.42295
+DEAL::
+DEAL::transform DerivativeForm<1, 3, 3> with mapping_covariant:
+DEAL::-0.117110 -0.174875 0.518436 -0.186362 0.392333 0.776374 0.0790493 -0.506194 0.326868
+DEAL::
+DEAL::transform Tensor<2, 3> with mapping_contravariant:
+DEAL::0.565959 -0.158316 0.894023 0.971047 -0.425894 1.64463 0.132400 -0.543165 0.694498
+DEAL::transform Tensor<2, 3> with mapping_covariant_gradient:
+DEAL::0.609895 0.346023 0.228752 -0.282743 -0.535664 -0.150815 0.113467 -0.524232 0.0189329
+DEAL::transform Tensor<2, 3> with mapping_contravariant_gradient:
+DEAL::0.723362 -0.178209 0.247685 -0.396211 -0.0114324 -0.169748 1.23304 -0.691009 0.436366
+DEAL::transform Tensor<2, 3> with mapping_piola_gradient:
+DEAL::0.723362 -0.178209 0.247685 -0.396211 -0.0114324 -0.169748 1.23304 -0.691009 0.436366
+DEAL::
+DEAL::transform DerivativeForm<2, 3, 3> with mapping_covariant_gradient:
+DEAL::0.750328 -0.830659 -0.645453 0.0377798 0.314893 0.0955697 -0.684099 0.318815 0.883299 0.673094 -0.945303 -0.192734 -0.498593 1.00664 0.427445 -0.503149 0.457608 0.551681 -0.939741 -0.581062 0.112035 0.319098 0.447242 -0.0649697 0.407552 0.490195 0.572763
+DEAL::
+DEAL::transform Tensor<3, 3> with mapping_contravariant_hessian:
+DEAL::-0.878496 0.964399 0.470082 0.0992492 0.538159 0.219427 0.658270 -0.179485 0.316945 0.395950 -0.0233784 -0.285767 0.345599 -0.685760 0.0181557 -0.237005 -0.265367 -0.280851 -0.857045 0.0640299 0.198368 0.434100 1.10683 -0.0797541 0.752795 0.162933 1.30432
+DEAL::transform Tensor<3, 3> with mapping_covariant_hessian:
+DEAL::-1.29590 1.88815 1.02756 -0.581201 0.655244 0.500452 0.800751 -0.256537 -0.389577 0.813352 -0.947126 -0.843248 1.02605 -0.802845 -0.262869 -0.379485 -0.188315 0.425671 0.417402 -0.923748 -0.557481 0.680450 -0.117085 -0.281025 -0.142480 0.0770515 0.706522
+DEAL::transform Tensor<3, 3> with mapping_piola_hessian:
+DEAL::-0.878496 0.964399 0.470082 0.0992492 0.538159 0.219427 0.658270 -0.179485 0.316945 0.395950 -0.0233784 -0.285767 0.345599 -0.685760 0.0181557 -0.237005 -0.265367 -0.280851 -0.857045 0.0640299 0.198368 0.434100 1.10683 -0.0797541 0.752795 0.162933 1.30432
+DEAL::
+DEAL::
+DEAL::cell vertices
+DEAL:: 2.00000 1.00000 1.00000
+DEAL:: 1.00000 2.00000 1.00000
+DEAL:: 1.00000 1.00000 2.00000
+DEAL:: 2.00000 2.00000 2.00000
+DEAL::
+DEAL::transform Tensor<1, 3> with mapping_covariant:
+DEAL::-0.138167 0.210714 0.632515
+DEAL::transform Tensor<1, 3> with mapping_contravariant:
+DEAL::-1.11956 1.19211 1.61391
+DEAL::transform Tensor<1, 3> with mapping_piola:
+DEAL::-0.559782 0.596056 0.806956
+DEAL::
+DEAL::transform DerivativeForm<1, 3, 3> with mapping_covariant:
+DEAL::-0.260762 0.591629 0.297525 -0.513961 -0.116214 0.257420 0.0158942 0.445645 0.265161
+DEAL::
+DEAL::transform Tensor<2, 3> with mapping_contravariant:
+DEAL::-1.17591 1.17360 1.50907 -1.67814 1.30168 1.18473 -0.853347 1.32694 1.34097
+DEAL::transform Tensor<2, 3> with mapping_covariant_gradient:
+DEAL::0.437617 -0.0114326 -0.113683 0.226351 0.197520 0.430744 -0.199383 0.249108 0.0299119
+DEAL::transform Tensor<2, 3> with mapping_contravariant_gradient:
+DEAL::0.848266 -0.469493 -0.688022 -0.184298 0.655580 1.00508 -0.610031 0.707169 0.604251
+DEAL::transform Tensor<2, 3> with mapping_piola_gradient:
+DEAL::0.424133 -0.234747 -0.344011 -0.0921488 0.327790 0.502541 -0.305016 0.353584 0.302125
+DEAL::
+DEAL::transform DerivativeForm<2, 3, 3> with mapping_covariant_gradient:
+DEAL::0.237939 -0.0862134 -0.0840394 0.0247836 0.178493 -0.274922 -0.0274792 0.103165 0.577786 0.296266 0.0721105 -0.200318 -0.199723 0.230421 0.195743 -0.241162 0.224749 0.107578 -0.164602 -0.238117 -0.520660 -0.120001 0.336527 -0.410995 -0.189660 -0.00922999 0.158203
+DEAL::
+DEAL::transform Tensor<3, 3> with mapping_contravariant_hessian:
+DEAL::-0.426893 0.561782 0.291059 -0.146023 -0.310761 -0.526594 0.432111 -0.0482769 0.234212 0.0128203 -0.534156 -0.0947411 -0.127332 0.175298 0.467218 -0.313362 0.219626 0.213252 -0.212251 -0.825377 -0.389515 -0.411318 0.0137232 0.149544 -0.312396 0.294629 0.0206458
+DEAL::transform Tensor<3, 3> with mapping_covariant_hessian:
+DEAL::-0.370027 0.0814534 0.0972304 -0.244180 -0.185816 -0.240755 0.167643 0.0923559 0.234134 -0.0440452 -0.0538272 0.0990877 -0.0291750 0.0503523 0.181379 -0.0488949 0.0789929 0.213331 -0.269117 -0.345048 -0.195686 -0.313162 -0.111222 -0.136295 -0.0479291 0.153996 0.0207243
+DEAL::transform Tensor<3, 3> with mapping_piola_hessian:
+DEAL::-0.213447 0.280891 0.145530 -0.0730117 -0.155381 -0.263297 0.216055 -0.0241384 0.117106 0.00641017 -0.267078 -0.0473706 -0.0636659 0.0876490 0.233609 -0.156681 0.109813 0.106626 -0.106126 -0.412688 -0.194757 -0.205659 0.00686162 0.0747721 -0.156198 0.147314 0.0103229
+DEAL::
+DEAL::
+DEAL::OK