From 149ca46a42479b3dbf17e70e4dfeb3a9e86a49ce Mon Sep 17 00:00:00 2001 From: bangerth Date: Thu, 16 Dec 2010 23:45:10 +0000 Subject: [PATCH] New test. git-svn-id: https://svn.dealii.org/trunk@22988 0785d39b-7218-0410-832d-ea1e28bc413d --- tests/codim_one/mapping_01.cc | 83 ++++++++++++++++++++++++++ tests/codim_one/mapping_01/cmp/generic | 45 ++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 tests/codim_one/mapping_01.cc create mode 100644 tests/codim_one/mapping_01/cmp/generic diff --git a/tests/codim_one/mapping_01.cc b/tests/codim_one/mapping_01.cc new file mode 100644 index 0000000000..1468a54b8a --- /dev/null +++ b/tests/codim_one/mapping_01.cc @@ -0,0 +1,83 @@ +//---------------------------- mapping_01.cc --------------------------- +// $Id: bem.cc 22693 2010-11-11 20:11:47Z kanschat $ +// Version: $Name$ +// +// Copyright (C) 2010 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. +// +//---------------------------- mapping_01.cc --------------------------- + + +// test mapping surfaces in higher dimensions. when we use the MappingQ1 +// class, each 1d cell in 2d space is mapped to a straight line and so all +// cell normals should be parallel. likewise, if the four vertices of a 2d +// cell in 3d space are in a plane, then the cell normal vectors at all +// quadrature points of the same cell should be parallel, even though the true +// surface is curved + +#include "../tests.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +template +void test () +{ + deallog << "Testing hyper_ball in dim: " << dim << "..."<< std::endl; + + Triangulation volume_mesh; + GridGenerator::hyper_ball(volume_mesh); + + const HyperBallBoundary surface_description; + Triangulation boundary_mesh; + boundary_mesh.set_boundary (0, surface_description); + + GridTools::extract_boundary_mesh (volume_mesh, boundary_mesh); + + QGauss quadrature(2); + MappingQ1 mapping; + FE_Q fe (1); + + FEValues fe_values (mapping, fe, quadrature, update_cell_normal_vectors); + + for (typename Triangulation::active_cell_iterator + cell = boundary_mesh.begin_active(); cell != boundary_mesh.end(); + ++cell) + { + deallog << "Cell = " << cell + << ", with center at " << cell->center() + << std::endl; + fe_values.reinit (cell); + + for (unsigned int q=0; q (); + test<3> (); + + return 0; +} diff --git a/tests/codim_one/mapping_01/cmp/generic b/tests/codim_one/mapping_01/cmp/generic new file mode 100644 index 0000000000..50e01158df --- /dev/null +++ b/tests/codim_one/mapping_01/cmp/generic @@ -0,0 +1,45 @@ + +DEAL::Testing hyper_ball in dim: 2... +DEAL::Cell = 0.0, with center at 0.00000 -0.707107 +DEAL:: cell_normal[0] = 0.00000 1.00000 +DEAL:: cell_normal[1] = 0.00000 1.00000 +DEAL::Cell = 0.1, with center at -0.707107 0.00000 +DEAL:: cell_normal[0] = 1.00000 0.00000 +DEAL:: cell_normal[1] = 1.00000 0.00000 +DEAL::Cell = 0.2, with center at 0.707107 0.00000 +DEAL:: cell_normal[0] = -1.00000 0.00000 +DEAL:: cell_normal[1] = -1.00000 0.00000 +DEAL::Cell = 0.3, with center at 0.00000 0.707107 +DEAL:: cell_normal[0] = 0.00000 -1.00000 +DEAL:: cell_normal[1] = 0.00000 -1.00000 +DEAL::Testing hyper_ball in dim: 3... +DEAL::Cell = 0.0, with center at 0.00000 0.00000 -0.577350 +DEAL:: cell_normal[0] = 0.00000 0.00000 1.00000 +DEAL:: cell_normal[1] = 0.00000 0.00000 1.00000 +DEAL:: cell_normal[2] = 0.00000 0.00000 1.00000 +DEAL:: cell_normal[3] = 0.00000 0.00000 1.00000 +DEAL::Cell = 0.1, with center at 0.577350 0.00000 0.00000 +DEAL:: cell_normal[0] = -1.00000 0.00000 0.00000 +DEAL:: cell_normal[1] = -1.00000 0.00000 0.00000 +DEAL:: cell_normal[2] = -1.00000 0.00000 0.00000 +DEAL:: cell_normal[3] = -1.00000 0.00000 0.00000 +DEAL::Cell = 0.2, with center at 0.00000 0.00000 0.577350 +DEAL:: cell_normal[0] = 0.00000 0.00000 -1.00000 +DEAL:: cell_normal[1] = 0.00000 0.00000 -1.00000 +DEAL:: cell_normal[2] = 0.00000 0.00000 -1.00000 +DEAL:: cell_normal[3] = 0.00000 0.00000 -1.00000 +DEAL::Cell = 0.3, with center at -0.577350 0.00000 0.00000 +DEAL:: cell_normal[0] = 1.00000 0.00000 0.00000 +DEAL:: cell_normal[1] = 1.00000 0.00000 0.00000 +DEAL:: cell_normal[2] = 1.00000 0.00000 0.00000 +DEAL:: cell_normal[3] = 1.00000 0.00000 0.00000 +DEAL::Cell = 0.4, with center at 0.00000 -0.577350 0.00000 +DEAL:: cell_normal[0] = 0.00000 1.00000 0.00000 +DEAL:: cell_normal[1] = 0.00000 1.00000 0.00000 +DEAL:: cell_normal[2] = 0.00000 1.00000 0.00000 +DEAL:: cell_normal[3] = 0.00000 1.00000 0.00000 +DEAL::Cell = 0.5, with center at 0.00000 0.577350 0.00000 +DEAL:: cell_normal[0] = 0.00000 -1.00000 0.00000 +DEAL:: cell_normal[1] = 0.00000 -1.00000 0.00000 +DEAL:: cell_normal[2] = 0.00000 -1.00000 0.00000 +DEAL:: cell_normal[3] = 0.00000 -1.00000 0.00000 -- 2.39.5