From e9bb6493102aded78e2e6ed8891861be06e4619b Mon Sep 17 00:00:00 2001 From: Matthias Maier Date: Thu, 31 Aug 2017 21:26:34 -0500 Subject: [PATCH] add a test --- tests/fe/interpolate_system_2.cc | 59 ++++++++++++++++++++++++++++ tests/fe/interpolate_system_2.output | 13 ++++++ 2 files changed, 72 insertions(+) create mode 100644 tests/fe/interpolate_system_2.cc create mode 100644 tests/fe/interpolate_system_2.output diff --git a/tests/fe/interpolate_system_2.cc b/tests/fe/interpolate_system_2.cc new file mode 100644 index 0000000000..f9eae57e62 --- /dev/null +++ b/tests/fe/interpolate_system_2.cc @@ -0,0 +1,59 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2017 by the deal.II authors +// +// This file is part of the deal.II library. +// +// The deal.II library is free software; you can use it, redistribute +// it, and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// The full text of the license can be found in the file LICENSE at +// the top level of the deal.II distribution. +// +// --------------------------------------------------------------------- + + +#include "interpolate_common.h" +#include + +#include +#include +#include + + +// +// Check convert_generalized_support_opint_values_to_dof_values for systems +// of non-Lagrangian elements. +// + +template +void check(T function, const unsigned int degree) +{ + auto fe = FESystem(FE_RaviartThomas(degree), + 2, + FESystem(FE_RaviartThomas(degree), 2), + 1); + deallog << fe.get_name() << std::endl; + + std::vector dofs(fe.dofs_per_cell); + + std::vector> values(fe.get_generalized_support_points().size(), + Vector(4 * dim)); + function.vector_value_list(fe.get_generalized_support_points(), values); + + fe.convert_generalized_support_point_values_to_dof_values(values, dofs); + deallog << " vector " << vector_difference(fe, dofs, function, 0) << std::endl; +} + +int main() +{ + initlog(); + + check<2>(Q1WedgeFunction<2, 1, 4 * 2>(), 1); + check<2>(Q1WedgeFunction<2, 2, 4 * 2>(), 2); + check<2>(Q1WedgeFunction<2, 3, 4 * 2>(), 3); + check<3>(Q1WedgeFunction<3, 1, 4 * 3>(), 1); + check<3>(Q1WedgeFunction<3, 2, 4 * 3>(), 2); + check<3>(Q1WedgeFunction<3, 3, 4 * 3>(), 3); +} diff --git a/tests/fe/interpolate_system_2.output b/tests/fe/interpolate_system_2.output new file mode 100644 index 0000000000..27edc81d45 --- /dev/null +++ b/tests/fe/interpolate_system_2.output @@ -0,0 +1,13 @@ + +DEAL::FESystem<2>[FE_RaviartThomas<2>(1)^2-FESystem<2>[FE_RaviartThomas<2>(1)^2]] +DEAL:: vector 1.66533e-16 +DEAL::FESystem<2>[FE_RaviartThomas<2>(2)^2-FESystem<2>[FE_RaviartThomas<2>(2)^2]] +DEAL:: vector 2.39392e-16 +DEAL::FESystem<2>[FE_RaviartThomas<2>(3)^2-FESystem<2>[FE_RaviartThomas<2>(3)^2]] +DEAL:: vector 1.87784e-16 +DEAL::FESystem<3>[FE_RaviartThomas<3>(1)^2-FESystem<3>[FE_RaviartThomas<3>(1)^2]] +DEAL:: vector 1.59595e-16 +DEAL::FESystem<3>[FE_RaviartThomas<3>(2)^2-FESystem<3>[FE_RaviartThomas<3>(2)^2]] +DEAL:: vector 5.22585e-16 +DEAL::FESystem<3>[FE_RaviartThomas<3>(3)^2-FESystem<3>[FE_RaviartThomas<3>(3)^2]] +DEAL:: vector 3.52637e-16 -- 2.39.5