From: Wolfgang Bangerth Date: Fri, 31 Jul 2009 21:31:43 +0000 (+0000) Subject: New test. X-Git-Tag: v8.0.0~7411 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1c0521ed26470d44a35cabbb0a1d1ffce229f345;p=dealii.git New test. git-svn-id: https://svn.dealii.org/trunk@19154 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/tests/deal.II/project_to_surface_03.cc b/tests/deal.II/project_to_surface_03.cc new file mode 100644 index 0000000000..d0bb507c58 --- /dev/null +++ b/tests/deal.II/project_to_surface_03.cc @@ -0,0 +1,113 @@ +//---------------------------- project_to_surface_03.cc --------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 2005, 2008, 2009 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. +// +//---------------------------- project_to_surface_03.cc --------------------------- + + +// like the _02 test, but project to the faces of a distorted cell + + + +#include "../tests.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + +template +void test () +{ + deallog << "dim=" << dim << std::endl; + + Triangulation tria; + StraightBoundary boundary; + + GridGenerator::hyper_cube(tria, 0, 1); + + const typename Triangulation::active_cell_iterator + cell=tria.begin_active(); + + // distort the cell a bit. all + // faces but face 0 stay planar; + // face 0 becomes a saddle + cell->vertex(0)[0] -= 0.25; + cell->vertex(6)[0] -= 0.25; + cell->vertex(2)[0] += 0.25; + cell->vertex(4)[0] += 0.25; + + + for (unsigned int point=0; point<9; ++point) + { + // choose the 8 vertices of the + // original unit cell as well + // as the center point + const Point trial_point = (point < 8 + ? + GeometryInfo::unit_cell_vertex(point) + : + Point(.5,.5,.5)); + + deallog << "Trial point = " << trial_point << std::endl; + + for (unsigned int e=0; e::quads_per_cell; ++e) + { + const typename Triangulation::quad_iterator + quad = (dim > 2 ? cell->quad(e) : + *reinterpret_cast::quad_iterator*>(&cell)); + + deallog << " Quad " << e << ", projected point="; + + const Point p = boundary.project_to_surface (quad, trial_point); + deallog << p; + deallog << " (quad is from "; + deallog << quad->vertex(0); + deallog << " to "; + deallog << quad->vertex(1); + deallog << " to "; + deallog << quad->vertex(2); + deallog << " to "; + deallog << quad->vertex(3); + deallog << ")" << std::endl; + + // now make sure that p is + // indeed closer to + // trial_point than any of + // the vertices of the quad + for (unsigned int v=0; v<4; ++v) + Assert (p.distance (trial_point) <= + quad->vertex(v).distance (trial_point), + ExcInternalError()); + } + deallog << std::endl; + } +} + + + + +int main () +{ + std::ofstream logfile ("project_to_surface_03/output"); + deallog << std::setprecision (3); + deallog << std::fixed; + deallog.attach(logfile); + deallog.depth_console (0); + + test<3>(); +} diff --git a/tests/deal.II/project_to_surface_03/cmp/generic b/tests/deal.II/project_to_surface_03/cmp/generic new file mode 100644 index 0000000000..0f298b28fb --- /dev/null +++ b/tests/deal.II/project_to_surface_03/cmp/generic @@ -0,0 +1,74 @@ + +DEAL::dim=3 +DEAL::Trial point = 0.000 0.000 0.000 +DEAL:: Quad 0, projected point=-0.180 0.076 0.076 (quad is from -0.250 0.000 0.000 to 0.250 1.000 0.000 to 0.250 0.000 1.000 to -0.250 1.000 1.000) +DEAL:: Quad 1, projected point=1.000 0.000 0.000 (quad is from 1.000 0.000 0.000 to 1.000 1.000 0.000 to 1.000 0.000 1.000 to 1.000 1.000 1.000) +DEAL:: Quad 2, projected point=0.000 0.000 0.000 (quad is from -0.250 0.000 0.000 to 0.250 0.000 1.000 to 1.000 0.000 0.000 to 1.000 0.000 1.000) +DEAL:: Quad 3, projected point=0.000 1.000 0.000 (quad is from 0.250 1.000 0.000 to -0.250 1.000 1.000 to 1.000 1.000 0.000 to 1.000 1.000 1.000) +DEAL:: Quad 4, projected point=0.000 0.000 0.000 (quad is from -0.250 0.000 0.000 to 1.000 0.000 0.000 to 0.250 1.000 0.000 to 1.000 1.000 0.000) +DEAL:: Quad 5, projected point=0.000 0.000 1.000 (quad is from 0.250 0.000 1.000 to 1.000 0.000 1.000 to -0.250 1.000 1.000 to 1.000 1.000 1.000) +DEAL:: +DEAL::Trial point = 1.000 0.000 0.000 +DEAL:: Quad 0, projected point=-0.059 0.257 0.257 (quad is from -0.250 0.000 0.000 to 0.250 1.000 0.000 to 0.250 0.000 1.000 to -0.250 1.000 1.000) +DEAL:: Quad 1, projected point=1.000 0.000 0.000 (quad is from 1.000 0.000 0.000 to 1.000 1.000 0.000 to 1.000 0.000 1.000 to 1.000 1.000 1.000) +DEAL:: Quad 2, projected point=1.000 0.000 0.000 (quad is from -0.250 0.000 0.000 to 0.250 0.000 1.000 to 1.000 0.000 0.000 to 1.000 0.000 1.000) +DEAL:: Quad 3, projected point=1.000 1.000 0.000 (quad is from 0.250 1.000 0.000 to -0.250 1.000 1.000 to 1.000 1.000 0.000 to 1.000 1.000 1.000) +DEAL:: Quad 4, projected point=1.000 0.000 0.000 (quad is from -0.250 0.000 0.000 to 1.000 0.000 0.000 to 0.250 1.000 0.000 to 1.000 1.000 0.000) +DEAL:: Quad 5, projected point=1.000 0.000 1.000 (quad is from 0.250 0.000 1.000 to 1.000 0.000 1.000 to -0.250 1.000 1.000 to 1.000 1.000 1.000) +DEAL:: +DEAL::Trial point = 0.000 1.000 0.000 +DEAL:: Quad 0, projected point=0.180 0.924 0.076 (quad is from -0.250 0.000 0.000 to 0.250 1.000 0.000 to 0.250 0.000 1.000 to -0.250 1.000 1.000) +DEAL:: Quad 1, projected point=1.000 1.000 0.000 (quad is from 1.000 0.000 0.000 to 1.000 1.000 0.000 to 1.000 0.000 1.000 to 1.000 1.000 1.000) +DEAL:: Quad 2, projected point=0.000 0.000 0.000 (quad is from -0.250 0.000 0.000 to 0.250 0.000 1.000 to 1.000 0.000 0.000 to 1.000 0.000 1.000) +DEAL:: Quad 3, projected point=0.000 1.000 0.000 (quad is from 0.250 1.000 0.000 to -0.250 1.000 1.000 to 1.000 1.000 0.000 to 1.000 1.000 1.000) +DEAL:: Quad 4, projected point=0.000 1.000 0.000 (quad is from -0.250 0.000 0.000 to 1.000 0.000 0.000 to 0.250 1.000 0.000 to 1.000 1.000 0.000) +DEAL:: Quad 5, projected point=0.000 1.000 1.000 (quad is from 0.250 0.000 1.000 to 1.000 0.000 1.000 to -0.250 1.000 1.000 to 1.000 1.000 1.000) +DEAL:: +DEAL::Trial point = 1.000 1.000 0.000 +DEAL:: Quad 0, projected point=0.630 1.294 -0.294 (quad is from -0.250 0.000 0.000 to 0.250 1.000 0.000 to 0.250 0.000 1.000 to -0.250 1.000 1.000) +DEAL:: Quad 1, projected point=1.000 1.000 0.000 (quad is from 1.000 0.000 0.000 to 1.000 1.000 0.000 to 1.000 0.000 1.000 to 1.000 1.000 1.000) +DEAL:: Quad 2, projected point=1.000 0.000 0.000 (quad is from -0.250 0.000 0.000 to 0.250 0.000 1.000 to 1.000 0.000 0.000 to 1.000 0.000 1.000) +DEAL:: Quad 3, projected point=1.000 1.000 0.000 (quad is from 0.250 1.000 0.000 to -0.250 1.000 1.000 to 1.000 1.000 0.000 to 1.000 1.000 1.000) +DEAL:: Quad 4, projected point=1.000 1.000 0.000 (quad is from -0.250 0.000 0.000 to 1.000 0.000 0.000 to 0.250 1.000 0.000 to 1.000 1.000 0.000) +DEAL:: Quad 5, projected point=1.000 1.000 1.000 (quad is from 0.250 0.000 1.000 to 1.000 0.000 1.000 to -0.250 1.000 1.000 to 1.000 1.000 1.000) +DEAL:: +DEAL::Trial point = 0.000 0.000 1.000 +DEAL:: Quad 0, projected point=0.180 0.076 0.924 (quad is from -0.250 0.000 0.000 to 0.250 1.000 0.000 to 0.250 0.000 1.000 to -0.250 1.000 1.000) +DEAL:: Quad 1, projected point=1.000 0.000 1.000 (quad is from 1.000 0.000 0.000 to 1.000 1.000 0.000 to 1.000 0.000 1.000 to 1.000 1.000 1.000) +DEAL:: Quad 2, projected point=0.000 0.000 1.000 (quad is from -0.250 0.000 0.000 to 0.250 0.000 1.000 to 1.000 0.000 0.000 to 1.000 0.000 1.000) +DEAL:: Quad 3, projected point=0.000 1.000 1.000 (quad is from 0.250 1.000 0.000 to -0.250 1.000 1.000 to 1.000 1.000 0.000 to 1.000 1.000 1.000) +DEAL:: Quad 4, projected point=0.000 0.000 0.000 (quad is from -0.250 0.000 0.000 to 1.000 0.000 0.000 to 0.250 1.000 0.000 to 1.000 1.000 0.000) +DEAL:: Quad 5, projected point=0.000 0.000 1.000 (quad is from 0.250 0.000 1.000 to 1.000 0.000 1.000 to -0.250 1.000 1.000 to 1.000 1.000 1.000) +DEAL:: +DEAL::Trial point = 1.000 0.000 1.000 +DEAL:: Quad 0, projected point=0.630 -0.294 1.294 (quad is from -0.250 0.000 0.000 to 0.250 1.000 0.000 to 0.250 0.000 1.000 to -0.250 1.000 1.000) +DEAL:: Quad 1, projected point=1.000 0.000 1.000 (quad is from 1.000 0.000 0.000 to 1.000 1.000 0.000 to 1.000 0.000 1.000 to 1.000 1.000 1.000) +DEAL:: Quad 2, projected point=1.000 0.000 1.000 (quad is from -0.250 0.000 0.000 to 0.250 0.000 1.000 to 1.000 0.000 0.000 to 1.000 0.000 1.000) +DEAL:: Quad 3, projected point=1.000 1.000 1.000 (quad is from 0.250 1.000 0.000 to -0.250 1.000 1.000 to 1.000 1.000 0.000 to 1.000 1.000 1.000) +DEAL:: Quad 4, projected point=1.000 0.000 0.000 (quad is from -0.250 0.000 0.000 to 1.000 0.000 0.000 to 0.250 1.000 0.000 to 1.000 1.000 0.000) +DEAL:: Quad 5, projected point=1.000 0.000 1.000 (quad is from 0.250 0.000 1.000 to 1.000 0.000 1.000 to -0.250 1.000 1.000 to 1.000 1.000 1.000) +DEAL:: +DEAL::Trial point = 0.000 1.000 1.000 +DEAL:: Quad 0, projected point=-0.180 0.924 0.924 (quad is from -0.250 0.000 0.000 to 0.250 1.000 0.000 to 0.250 0.000 1.000 to -0.250 1.000 1.000) +DEAL:: Quad 1, projected point=1.000 1.000 1.000 (quad is from 1.000 0.000 0.000 to 1.000 1.000 0.000 to 1.000 0.000 1.000 to 1.000 1.000 1.000) +DEAL:: Quad 2, projected point=0.000 0.000 1.000 (quad is from -0.250 0.000 0.000 to 0.250 0.000 1.000 to 1.000 0.000 0.000 to 1.000 0.000 1.000) +DEAL:: Quad 3, projected point=0.000 1.000 1.000 (quad is from 0.250 1.000 0.000 to -0.250 1.000 1.000 to 1.000 1.000 0.000 to 1.000 1.000 1.000) +DEAL:: Quad 4, projected point=0.000 1.000 0.000 (quad is from -0.250 0.000 0.000 to 1.000 0.000 0.000 to 0.250 1.000 0.000 to 1.000 1.000 0.000) +DEAL:: Quad 5, projected point=0.000 1.000 1.000 (quad is from 0.250 0.000 1.000 to 1.000 0.000 1.000 to -0.250 1.000 1.000 to 1.000 1.000 1.000) +DEAL:: +DEAL::Trial point = 1.000 1.000 1.000 +DEAL:: Quad 0, projected point=-0.059 0.743 0.743 (quad is from -0.250 0.000 0.000 to 0.250 1.000 0.000 to 0.250 0.000 1.000 to -0.250 1.000 1.000) +DEAL:: Quad 1, projected point=1.000 1.000 1.000 (quad is from 1.000 0.000 0.000 to 1.000 1.000 0.000 to 1.000 0.000 1.000 to 1.000 1.000 1.000) +DEAL:: Quad 2, projected point=1.000 0.000 1.000 (quad is from -0.250 0.000 0.000 to 0.250 0.000 1.000 to 1.000 0.000 0.000 to 1.000 0.000 1.000) +DEAL:: Quad 3, projected point=1.000 1.000 1.000 (quad is from 0.250 1.000 0.000 to -0.250 1.000 1.000 to 1.000 1.000 0.000 to 1.000 1.000 1.000) +DEAL:: Quad 4, projected point=1.000 1.000 0.000 (quad is from -0.250 0.000 0.000 to 1.000 0.000 0.000 to 0.250 1.000 0.000 to 1.000 1.000 0.000) +DEAL:: Quad 5, projected point=1.000 1.000 1.000 (quad is from 0.250 0.000 1.000 to 1.000 0.000 1.000 to -0.250 1.000 1.000 to 1.000 1.000 1.000) +DEAL:: +DEAL::Trial point = 0.500 0.500 0.500 +DEAL:: Quad 0, projected point=0.000 0.500 0.500 (quad is from -0.250 0.000 0.000 to 0.250 1.000 0.000 to 0.250 0.000 1.000 to -0.250 1.000 1.000) +DEAL:: Quad 1, projected point=1.000 0.500 0.500 (quad is from 1.000 0.000 0.000 to 1.000 1.000 0.000 to 1.000 0.000 1.000 to 1.000 1.000 1.000) +DEAL:: Quad 2, projected point=0.500 0.000 0.500 (quad is from -0.250 0.000 0.000 to 0.250 0.000 1.000 to 1.000 0.000 0.000 to 1.000 0.000 1.000) +DEAL:: Quad 3, projected point=0.500 1.000 0.500 (quad is from 0.250 1.000 0.000 to -0.250 1.000 1.000 to 1.000 1.000 0.000 to 1.000 1.000 1.000) +DEAL:: Quad 4, projected point=0.500 0.500 0.000 (quad is from -0.250 0.000 0.000 to 1.000 0.000 0.000 to 0.250 1.000 0.000 to 1.000 1.000 0.000) +DEAL:: Quad 5, projected point=0.500 0.500 1.000 (quad is from 0.250 0.000 1.000 to 1.000 0.000 1.000 to -0.250 1.000 1.000 to 1.000 1.000 1.000) +DEAL::