From c819d8678c444c6e1fd8957e95adde4f8d41dfe9 Mon Sep 17 00:00:00 2001 From: bangerth Date: Tue, 4 Mar 2008 22:34:44 +0000 Subject: [PATCH] Add to documentation git-svn-id: https://svn.dealii.org/trunk@15850 0785d39b-7218-0410-832d-ea1e28bc413d --- .../lac/include/lac/block_sparsity_pattern.h | 15 ++++++++++ .../lac/compressed_set_sparsity_pattern.h | 28 +++++++++++-------- .../include/lac/compressed_sparsity_pattern.h | 11 ++++---- 3 files changed, 37 insertions(+), 17 deletions(-) diff --git a/deal.II/lac/include/lac/block_sparsity_pattern.h b/deal.II/lac/include/lac/block_sparsity_pattern.h index ee345c8fe0..8f54ee5cee 100644 --- a/deal.II/lac/include/lac/block_sparsity_pattern.h +++ b/deal.II/lac/include/lac/block_sparsity_pattern.h @@ -536,12 +536,20 @@ class BlockSparsityPattern : public BlockSparsityPatternBase * * This class is an example of the "dynamic" type of @ref Sparsity. * + * Note: This class inherits the same tradeoffs regarding its + * efficiency as CompressedSparsityPattern and as opposed to + * CompressedSetSparsity. Since the two classes (and consequently + * BlockCompressedSparsityPattern and + * BlockCompressedSetSparsityPattern) are interface-compatible it is + * frequently worth checking which version is more efficient. + * * Note: This class used to be called * CompressedBlockSparsityPattern. However, since it's a block wrapper around * the CompressedSparsityPattern class, this is a misnomer and the class has * been renamed. * *

Example

+ * * Usage of this class is very similar to CompressedSparsityPattern, * but since the use of block indices causes some additional * complications, we give a short example. @@ -660,6 +668,13 @@ typedef BlockCompressedSparsityPattern CompressedBlockSparsityPattern; * * This class is an example of the "dynamic" type of @ref Sparsity. * + * Note: This class inherits the same tradeoffs regarding its + * efficiency as CompressedSparsityPattern and as opposed to + * CompressedSetSparsity. Since the two classes (and consequently + * BlockCompressedSparsityPattern and + * BlockCompressedSetSparsityPattern) are interface-compatible it is + * frequently worth checking which version is more efficient. + * * @author Wolfgang Bangerth, 2007 */ class BlockCompressedSetSparsityPattern : public BlockSparsityPatternBase diff --git a/deal.II/lac/include/lac/compressed_set_sparsity_pattern.h b/deal.II/lac/include/lac/compressed_set_sparsity_pattern.h index 977dfdf758..544b6ae0d5 100644 --- a/deal.II/lac/include/lac/compressed_set_sparsity_pattern.h +++ b/deal.II/lac/include/lac/compressed_set_sparsity_pattern.h @@ -2,7 +2,7 @@ // $Id: compressed_sparsity_pattern.h 14038 2006-10-23 02:46:34Z bangerth $ // Version: $Name$ // -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 by the deal.II authors +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -50,8 +50,9 @@ template class SparseMatrix; * of sparsity patterns can be found in the documentation of the @ref Sparsity * module. * - * This class is an example of the "dynamic" type of @ref Sparsity. It is - * discussed in the @ref step_27 "step-27" tutorial program. + * This class is an example of the "dynamic" type of @ref Sparsity. It + * is discussed in the @ref step_27 "step-27" and @ref step_31 + * "step-31" tutorial programs. * *

Interface

* @@ -84,15 +85,18 @@ template class SparseMatrix; * This class is a variation of the CompressedSparsityPattern class. * Instead of using sorted vectors together with a caching algorithm * for storing the column indices of nonzero entries, the std::set - * container is used. This solution might not be the fastest in - * all situations, but seems to work much better than the - * CompressedSparsityPattern in the context of hp-adaptivity. - * On the other hand, a benchmark where nonzero entries were randomly inserted - * into the sparsity pattern revealed that this class is slower - * by a factor 4-6 in this situation. Hence, currently the suggestion - * is to carefully analyze which of the CompressedSparsityPattern - * classes works best in a certain setting. An algorithm which - * performs equally well in all situations still has to be found. + * container is used. This solution might not be the fastest in all + * situations, but seems to work much better than the + * CompressedSparsityPattern in the context of hp-adaptivity (see for + * example @ref step_27 "step-27"), or generally when there are many + * nonzero entries in each row of a matrix (see @ref step_31 + * "step-31"). On the other hand, a benchmark where nonzero entries + * were randomly inserted into the sparsity pattern revealed that this + * class is slower by a factor 4-6 in this situation. Hence, currently + * the suggestion is to carefully analyze which of the + * CompressedSparsityPattern classes works best in a certain + * setting. An algorithm which performs equally well in all situations + * still has to be found. * * * @author Oliver Kayser-Herold, 2007 diff --git a/deal.II/lac/include/lac/compressed_sparsity_pattern.h b/deal.II/lac/include/lac/compressed_sparsity_pattern.h index ed0d3dda37..f40410e422 100644 --- a/deal.II/lac/include/lac/compressed_sparsity_pattern.h +++ b/deal.II/lac/include/lac/compressed_sparsity_pattern.h @@ -2,7 +2,7 @@ // $Id$ // Version: $Name$ // -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 by the deal.II authors +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -79,10 +79,11 @@ template class SparseMatrix; * *

Notes

* - * A variation of this class is the CompressedSetSparsityPattern class that - * appears to be more efficient in some situations, in particular when using - * hp finite elements. See for example the @ref step_27 "step-27" tutorial - * program. + * A variation of this class is the CompressedSetSparsityPattern class + * that appears to be more efficient in some situations, in particular + * when using hp finite elements or, more generally, in cases with + * many nonzero entries. See for example the @ref step_27 "step-27" + * and @ref step_31 "step-31" tutorial programs. * * @author Wolfgang Bangerth, 2001 */ -- 2.39.5