// $Id$
// Version: $Name$
//
-// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 by the deal.II authors
+// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by the deal.II authors
//
// This file is subject to QPL and may not be distributed
// without copyright and license information. Please refer
* to use multithreading, this
* function works in parallel.
*
- * See the general doc of this
- * class for more information.
+ * @todo This function does not
+ * work for finite elements with
+ * cell-dependent shape functions.
*/
template <int dim>
static
// needs to use another indirection. There
// should be not many technical problems,
// but it needs to be implemented
- if (dim<3)
- sparsity.compress();
- else
- Assert (false, ExcNotImplemented());
-
+ if (dim>=3)
+ {
+#ifdef DEBUG
+// Assert that there are no hanging nodes at the boundary
+ int level = -1;
+ for (typename DoFHandler<dim>::active_cell_iterator cell = dof.begin_active();
+ cell != dof.end(); ++cell)
+ for (unsigned int f=0;f<GeometryInfo<dim>::faces_per_cell;++f)
+ {
+ if (cell->at_boundary(f))
+ {
+ if (level == -1)
+ level = cell->level();
+ else
+ {
+ Assert (level == cell->level(), ExcNotImplemented());
+ }
+ }
+ }
+#endif
+ }
+ sparsity.compress();
+
// make mass matrix and right hand side
SparseMatrix<double> mass_matrix(sparsity);