From 5a17447c4596f69912c709ff4fbad14f9202da54 Mon Sep 17 00:00:00 2001 From: wolf Date: Tue, 28 Jun 2005 16:11:38 +0000 Subject: [PATCH] New test. git-svn-id: https://svn.dealii.org/trunk@10955 0785d39b-7218-0410-832d-ea1e28bc413d --- tests/bits/fe_tools_cpfqpm_04.cc | 76 ++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 tests/bits/fe_tools_cpfqpm_04.cc diff --git a/tests/bits/fe_tools_cpfqpm_04.cc b/tests/bits/fe_tools_cpfqpm_04.cc new file mode 100644 index 0000000000..267195e255 --- /dev/null +++ b/tests/bits/fe_tools_cpfqpm_04.cc @@ -0,0 +1,76 @@ +//---------------------------- fe_tools_cpfqpm_04.cc --------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 2005 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//---------------------------- fe_tools_cpfqpm_04.cc --------------------------- + +#include "../tests.h" +#include "fe_tools_common.cc" +#include + +// check +// FETools::compute_projection_from_quadrature_points_matrix +// we put this into the fe_tools_common framework for simplicity, but +// in fact we ignore the second FE it passes to the check_this() function +// and we can only test as well for scalar elements, since this is all +// the function presently supports. +// +// the test makes sure that if the FE has support points and we use +// these support points as quadrature points, that the resulting +// matrix is the unit matrix + + +std::string output_file_name = "fe_tools_cpfqpm_04.output"; + + +template +void +check_this (const FiniteElement &fe, + const FiniteElement &/*fe2*/) +{ + // only check if both elements have + // support points. otherwise, + // interpolation doesn't really + // work + if (fe.n_components() != 1) + return; + + // ignore this check if this fe has already + // been treated + static std::set already_checked; + if (already_checked.find(fe.get_name()) != already_checked.end()) + return; + already_checked.insert (fe.get_name()); + + // only test elements with support + // points + if (fe.has_support_points() == false) + return; + + // test with different quadrature formulas + Quadrature q_rhs(fe.get_unit_support_points(), + std::vector (fe.dofs_per_cell, + 1./fe.dofs_per_cell)); + + FullMatrix X (fe.dofs_per_cell, + q_rhs.n_quadrature_points); + + Assert (X.m() == X.n(), ExcInternalError()); + + FETools::compute_projection_from_quadrature_points_matrix (fe, + q_rhs, q_rhs, + X); + + for (unsigned int i=0; i