From f4aa34d54efb1212f56094d254ef2c6de6c36208 Mon Sep 17 00:00:00 2001 From: heister Date: Sat, 10 Mar 2012 21:21:54 +0000 Subject: [PATCH] add new failing test for no_normal_flux git-svn-id: https://svn.dealii.org/trunk@25243 0785d39b-7218-0410-832d-ea1e28bc413d --- tests/deal.II/no_flux_10.cc | 75 ++++++++++++++++++++++++++++ tests/deal.II/no_flux_10/cmp/generic | 49 ++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 tests/deal.II/no_flux_10.cc create mode 100644 tests/deal.II/no_flux_10/cmp/generic diff --git a/tests/deal.II/no_flux_10.cc b/tests/deal.II/no_flux_10.cc new file mode 100644 index 0000000000..ea3975593d --- /dev/null +++ b/tests/deal.II/no_flux_10.cc @@ -0,0 +1,75 @@ +//---------------------------- vectors_rhs_hp_02.cc --------------------------- +// $Id: vectors_rhs_hp_02.cc 23710 2011-05-17 04:50:10Z bangerth $ +// Version: $Name$ +// +// Copyright (C) 2000, 2001, 2003, 2004, 2006, 2007, 2011 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. +// +//---------------------------- vectors_rhs_hp_02.cc --------------------------- + +// we get this crash: +// +// An error occurred in line <4677> of file in function +// void dealii::VectorTools::compute_no_normal_flux_constraints(const DH&, unsigned int, const std::set&, dealii::ConstraintMatrix&, const dealii::Mapping&) [with int dim = 2, DH = dealii::DoFHandler, int spacedim = 2] +// The violated condition was: +// std::fabs(determinant (t)) > 1e-3 +// The name and call sequence of the exception was: +// ExcMessage("Found a set of normal vectors that are nearly collinear.") +// Additional Information: +// Found a set of normal vectors that are nearly collinear. + +// the crash does not happen without a boundary object. Same error occures with HyperShellBoundary instead of HalfHyperShellBoundary. + +#include "../tests.h" + +#include +#include +#include +#include +#include +#include +#include + +using namespace dealii; + +template +void run() +{ + Triangulation triangulation; + FESystem fe(FE_Q(1), dim); + DoFHandler dof_handler (triangulation); + ConstraintMatrix constraints; + MappingQ mapping(1); + + GridGenerator::half_hyper_shell (triangulation, + Point(), + 0.5, + 1); + + static HalfHyperShellBoundary boundary; + triangulation.set_boundary (0, boundary); + + dof_handler.distribute_dofs (fe); + + std::set no_normal_flux_boundaries; + no_normal_flux_boundaries.insert (0); + VectorTools::compute_no_normal_flux_constraints + (dof_handler, 0, + no_normal_flux_boundaries, + constraints, mapping); +} + +int main (int argc, char *argv[]) +{ + std::ofstream logfile ("no_flux_10/output"); + logfile.precision (4); + logfile.setf(std::ios::fixed); + deallog.attach(logfile); + deallog.depth_console (0); + + run<2> (); +} diff --git a/tests/deal.II/no_flux_10/cmp/generic b/tests/deal.II/no_flux_10/cmp/generic new file mode 100644 index 0000000000..b77282acb6 --- /dev/null +++ b/tests/deal.II/no_flux_10/cmp/generic @@ -0,0 +1,49 @@ + + 0 = 0 + 1 = 0 + 3 2: 0.7265 + 4 = 0 + 5 = 0 + 7 6: 0.7265 + 8 9: 0.3249 + 10 11: 0.3249 + 12 13: -0.3249 + 14 15: -0.3249 + 17 16: -0.7265 + 19 18: -0.7265 + 20 = 0 + 21 = 0 + 22 = 0 + 23 = 0 + 0 = 0 + 2 1: -1.0000 + 3 = 0 + 5 4: -1.0000 + 6 7: -0.5273 + 6 8: 0.5273 + 9 10: 0.5273 + 9 11: 0.5273 + 12 = 0 + 14 13: -1.0000 + 15 = 0 + 17 16: -1.0000 + 18 19: -0.5273 + 18 20: 0.5273 + 21 22: 0.5273 + 21 23: 0.5273 + 24 = 0 + 26 25: -1.0000 + 27 = 0 + 29 28: -1.0000 + 30 31: -0.5273 + 30 32: -0.5273 + 33 34: -0.5273 + 33 35: -0.5273 + 36 = 0 + 38 37: -1.0000 + 39 40: 0.5273 + 39 41: -0.5273 + 42 = 0 + 44 43: -1.0000 + 45 46: 0.5273 + 45 47: -0.5273 -- 2.39.5