]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Add matrix_norm_square, get_sparsity_pattern
authorwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 5 May 2000 17:11:14 +0000 (17:11 +0000)
committerwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 5 May 2000 17:11:14 +0000 (17:11 +0000)
git-svn-id: https://svn.dealii.org/trunk@2816 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/lac/include/lac/block_sparse_matrix.h

index 9d40cafb81196277cb400c81a2712899f4f47a2c..0172d1370577f550f85b35704d37f69ad201aebe 100644 (file)
@@ -326,7 +326,27 @@ class BlockSparseMatrix : public Subscriptor
                                      * be square for this operation.
                                      */
     template <typename somenumber>
-    somenumber matrix_norm (const BlockVector<rows,somenumber> &v) const;
+    somenumber matrix_norm_square (const BlockVector<rows,somenumber> &v) const;
+    
+                                    /**
+                                     * Return a (constant) reference
+                                     * to the underlying sparsity
+                                     * pattern of this matrix.
+                                     *
+                                     * Though the return value is
+                                     * declared #const#, you should
+                                     * be aware that it may change if
+                                     * you call any nonconstant
+                                     * function of objects which
+                                     * operate on it.
+                                     */
+    const BlockSparsityPattern<rows,columns> &
+    get_sparsity_pattern () const;
+
+                                    /**
+                                     * Exception
+                                     */
+    DeclException0 (ExcMatrixNotBlockSquare);
     
   private:
                                     /**
@@ -632,4 +652,36 @@ Tvmult_add (BlockVector<columns,somenumber>    &/*dst*/,
 
 
 
+template <typename number, int  rows, int columns>
+template <typename somenumber>
+somenumber
+BlockSparseMatrix<number,rows,columns>::
+matrix_norm_square (const BlockVector<rows,somenumber> &v) const
+{
+  Assert (rows == columns, ExcMatrixNotBlockSquare());
+
+  somenumber norm_sqr = 0;
+  for (unsigned int row=0; row<rows; ++row)
+    for (unsigned int col=0; col<columns; ++col)
+      if (row==col)
+       norm_sqr += block(row,col).matrix_norm_square (v.block(row));
+      else
+       norm_sqr += block(row,col).matrix_scalar_product (v.block(row),
+                                                         v.block(col));
+  return norm_sqr;
+};
+
+
+
+template <typename number, int  rows, int columns>
+const BlockSparsityPattern<rows,columns> &
+BlockSparseMatrix<number,rows,columns>::get_sparsity_pattern () const
+{
+  return *sparsity_pattern;
+};
+
+
+
+
+
 #endif    // __deal2__block_sparse_matrix_h

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.