]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Move IsBlockMatrix from block_indices.h to constraint_matrix.h. 1111/head
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Fri, 10 Jul 2015 22:28:06 +0000 (17:28 -0500)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Fri, 10 Jul 2015 22:28:06 +0000 (17:28 -0500)
The latter is the only file where it is actually used, so we may as well have it there.

doc/news/changes.h
include/deal.II/lac/block_indices.h
include/deal.II/lac/constraint_matrix.h
tests/lac/is_block_matrix.cc

index d0af277767d3dd9883441fdd5f69e04c72bcdf44..a0efda592bfe7b5523b2b7ea3719e0fe6304ea9c 100644 (file)
@@ -547,7 +547,14 @@ inconvenience this causes.
 
 
 <ol>
-  <li>New: CellId::to_string() returns a string representation.
+  <li>Changed: The IsBlockMatrix class is now declared in
+  <code>constraint_matrix.h</code> instead of its former home in
+  <code>block_indices.h</code>.
+  <br>
+  (Wolfgang Bangerth, 2015/07/10)
+  </li>
+
+  <li>New: CellId::to_string() returns a string representation of a CellId object.
   <br>
   (Timo Heister, 2015/07/05)
   </li>
index 41fafc8acf2c913285fda4f47085e2db361d16b9..2f9625769bfbc0a94d4c1797f96cbfd5a16ecbbd 100644 (file)
@@ -210,86 +210,6 @@ operator << (LogStream &s, const BlockIndices &bi)
 }
 
 
-template <typename MatrixType> class BlockMatrixBase;
-template <typename SparsityType> class BlockSparsityPatternBase;
-template <typename number>     class BlockSparseMatrixEZ;
-
-/**
- * A class that can be used to determine whether a given type is a block
- * matrix type or not. For example,
- * @code
- *   IsBlockMatrix<SparseMatrix<double> >::value
- * @endcode
- * has the value false, whereas
- * @code
- *   IsBlockMatrix<BlockSparseMatrix<double> >::value
- * @endcode
- * is true. This is sometimes useful in template contexts where we may want to
- * do things differently depending on whether a template type denotes a
- * regular or a block matrix type.
- *
- * @see
- * @ref GlossBlockLA "Block (linear algebra)"
- * @author Wolfgang Bangerth, 2009
- */
-template <typename MatrixType>
-struct IsBlockMatrix
-{
-private:
-  struct yes_type
-  {
-    char c[1];
-  };
-  struct no_type
-  {
-    char c[2];
-  };
-
-  /**
-   * Overload returning true if the class is derived from BlockMatrixBase,
-   * which is what block matrices do (with the exception of
-   * BlockSparseMatrixEZ).
-   */
-  template <typename T>
-  static yes_type check_for_block_matrix (const BlockMatrixBase<T> *);
-
-  /**
-   * Overload returning true if the class is derived from
-   * BlockSparsityPatternBase, which is what block sparsity patterns do.
-   */
-  template <typename T>
-  static yes_type check_for_block_matrix (const BlockSparsityPatternBase<T> *);
-
-  /**
-   * Overload for BlockSparseMatrixEZ, which is the only block matrix not
-   * derived from BlockMatrixBase at the time of writing this class.
-   */
-  template <typename T>
-  static yes_type check_for_block_matrix (const BlockSparseMatrixEZ<T> *);
-
-  /**
-   * Catch all for all other potential matrix types that are not block
-   * matrices.
-   */
-  static no_type check_for_block_matrix (...);
-
-public:
-  /**
-   * A statically computable value that indicates whether the template
-   * argument to this class is a block matrix (in fact whether the type is
-   * derived from BlockMatrixBase<T>).
-   */
-  static const bool value = (sizeof(check_for_block_matrix
-                                    ((MatrixType *)0))
-                             ==
-                             sizeof(yes_type));
-};
-
-
-// instantiation of the static member
-template <typename MatrixType>
-const bool IsBlockMatrix<MatrixType>::value;
-
 
 /* ---------------------- template and inline functions ------------------- */
 
index 4073d22682cc5326a8af6b1f25e23dcc54525093..85fe21b2312bf7a3edbc2893e446405488724caf 100644 (file)
@@ -44,7 +44,7 @@ class BlockDynamicSparsityPattern;
 template <typename number> class SparseMatrix;
 template <typename number> class BlockSparseMatrix;
 class BlockIndices;
-template <typename MatrixType> struct IsBlockMatrix;
+
 
 namespace internals
 {
@@ -1634,6 +1634,86 @@ void ConstraintMatrix::get_dof_values (const VectorType  &global_vector,
 }
 
 
+template <typename MatrixType> class BlockMatrixBase;
+template <typename SparsityType> class BlockSparsityPatternBase;
+template <typename number>     class BlockSparseMatrixEZ;
+
+/**
+ * A class that can be used to determine whether a given type is a block
+ * matrix type or not. For example,
+ * @code
+ *   IsBlockMatrix<SparseMatrix<double> >::value
+ * @endcode
+ * has the value false, whereas
+ * @code
+ *   IsBlockMatrix<BlockSparseMatrix<double> >::value
+ * @endcode
+ * is true. This is sometimes useful in template contexts where we may want to
+ * do things differently depending on whether a template type denotes a
+ * regular or a block matrix type.
+ *
+ * @see
+ * @ref GlossBlockLA "Block (linear algebra)"
+ * @author Wolfgang Bangerth, 2009
+ */
+template <typename MatrixType>
+struct IsBlockMatrix
+{
+private:
+  struct yes_type
+  {
+    char c[1];
+  };
+  struct no_type
+  {
+    char c[2];
+  };
+
+  /**
+   * Overload returning true if the class is derived from BlockMatrixBase,
+   * which is what block matrices do (with the exception of
+   * BlockSparseMatrixEZ).
+   */
+  template <typename T>
+  static yes_type check_for_block_matrix (const BlockMatrixBase<T> *);
+
+  /**
+   * Overload returning true if the class is derived from
+   * BlockSparsityPatternBase, which is what block sparsity patterns do.
+   */
+  template <typename T>
+  static yes_type check_for_block_matrix (const BlockSparsityPatternBase<T> *);
+
+  /**
+   * Overload for BlockSparseMatrixEZ, which is the only block matrix not
+   * derived from BlockMatrixBase at the time of writing this class.
+   */
+  template <typename T>
+  static yes_type check_for_block_matrix (const BlockSparseMatrixEZ<T> *);
+
+  /**
+   * Catch all for all other potential matrix types that are not block
+   * matrices.
+   */
+  static no_type check_for_block_matrix (...);
+
+public:
+  /**
+   * A statically computable value that indicates whether the template
+   * argument to this class is a block matrix (in fact whether the type is
+   * derived from BlockMatrixBase<T>).
+   */
+  static const bool value = (sizeof(check_for_block_matrix
+                                    ((MatrixType *)0))
+                             ==
+                             sizeof(yes_type));
+};
+
+
+// instantiation of the static member
+template <typename MatrixType>
+const bool IsBlockMatrix<MatrixType>::value;
+
 
 template <typename MatrixType>
 inline
index cd23062bbe76a6fd0677764b3fe0fc0d3a17604e..655d0e2aded19c23cfb1f62ca7a92b538d55a824 100644 (file)
@@ -1,6 +1,6 @@
 // ---------------------------------------------------------------------
 //
-// Copyright (C) 2009 - 2014 by the deal.II authors
+// Copyright (C) 2009 - 2015 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -24,6 +24,7 @@
 #include <deal.II/lac/compressed_set_sparsity_pattern.h>
 #include <deal.II/lac/block_sparsity_pattern.h>
 #include <deal.II/lac/block_sparse_matrix_ez.h>
+#include <deal.II/lac/constraint_matrix.h>
 
 #include <fstream>
 #include <iomanip>

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.