From bf829c4557a8b3b3bb21a3e7bcd8093041a9393c Mon Sep 17 00:00:00 2001 From: bangerth Date: Wed, 27 Jun 2012 18:58:49 +0000 Subject: [PATCH] New test. git-svn-id: https://svn.dealii.org/trunk@25652 0785d39b-7218-0410-832d-ea1e28bc413d --- tests/fe/mapping_real_to_unit_q4_sphere_z.cc | 93 +++++++++++++++++++ .../cmp/generic | 2 + 2 files changed, 95 insertions(+) create mode 100644 tests/fe/mapping_real_to_unit_q4_sphere_z.cc create mode 100644 tests/fe/mapping_real_to_unit_q4_sphere_z/cmp/generic diff --git a/tests/fe/mapping_real_to_unit_q4_sphere_z.cc b/tests/fe/mapping_real_to_unit_q4_sphere_z.cc new file mode 100644 index 0000000000..11448a6179 --- /dev/null +++ b/tests/fe/mapping_real_to_unit_q4_sphere_z.cc @@ -0,0 +1,93 @@ +//----------------------------------------------------------------------------- +// $Id: data_out_base_pvd.cc 25569 2012-05-30 12:53:31Z bangerth $ +// Version: $Name$ +// +// Copyright (C) 2012 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. +// +//----------------------------------------------------------------------------- + + +// something like the original of mapping_real_to_unit_q4_sphere: we +// wanted to know whether a point is inside or outside, but got an +// exception before r25651 + +#include "../tests.h" + +#include +#include +#include +#include +#include + + +void test_real_to_unit_cell() +{ + const unsigned int dim = 3; + + // define a spherical cap boundary + // to be used for one of the faces + const double radius = Point(1.43757e-10, 4.48023e+06, 4.48023e+06).norm(); + HyperBallBoundary boundary (Point(), radius); + + // create the mesh: a single cell + // with the following coordinates: + std::vector > vertices; + vertices.push_back (Point( 6.70384e-11, 3.17728e+06, 3.17728e+06)); + vertices.push_back (Point( -1.46060e+06, 3.99043e+06, 1.46060e+06)); + vertices.push_back (Point( -1.46060e+06, 1.46060e+06, 3.99043e+06)); + vertices.push_back (Point( -2.59424e+06, 2.59424e+06, 2.59424e+06)); + vertices.push_back (Point( 1.43757e-10, 4.48023e+06, 4.48023e+06)); + vertices.push_back (Point( -2.05956e+06, 5.62684e+06, 2.05956e+06)); + vertices.push_back (Point( -2.05956e+06, 2.05956e+06, 5.62684e+06)); + vertices.push_back (Point( -3.65809e+06, 3.65809e+06, 3.65809e+06)); + // the points above don't show + // enough digits to have the same + // outer radius, so normalize the + // four outer ones + for (unsigned int v=4; v<8; ++v) + vertices[v] *= radius/vertices[v].norm(); + std::vector > cells; + { + CellData d = {{0,1,2,3,4,5,6,7},{0}}; + cells.push_back(d); + } + Triangulation triangulation; + triangulation.create_triangulation (vertices, cells, + SubCellData()); + + // set the boundary indicator for + // one face and adjacent edges of + // the single cell + triangulation.set_boundary (1, boundary); + triangulation.begin_active()->face(5)->set_all_boundary_indicators (1); + + // now see if the point is inside + // or outside + const Point p (-3.56413e+06, 1.74215e+06, 2.14762e+06); + Assert (triangulation.begin_active()->point_inside (p) + == false, + ExcInternalError()); + deallog << "Point is outside!" << std::endl; +} + + +int +main() +{ + std::ofstream logfile ("mapping_real_to_unit_q4_sphere_a/output"); + deallog.attach(logfile); + deallog.depth_console(0); + deallog.threshold_double(1.e-10); + + test_real_to_unit_cell(); + + return 0; +} + + + diff --git a/tests/fe/mapping_real_to_unit_q4_sphere_z/cmp/generic b/tests/fe/mapping_real_to_unit_q4_sphere_z/cmp/generic new file mode 100644 index 0000000000..d193d0581e --- /dev/null +++ b/tests/fe/mapping_real_to_unit_q4_sphere_z/cmp/generic @@ -0,0 +1,2 @@ + +DEAL::Point is outside! -- 2.39.5