From 7f39c9515e996055e8d5f4a0e27ef22946801236 Mon Sep 17 00:00:00 2001 From: wolf Date: Wed, 9 Jun 2004 18:09:12 +0000 Subject: [PATCH] Get rid of duplicate information. git-svn-id: https://svn.dealii.org/trunk@9416 0785d39b-7218-0410-832d-ea1e28bc413d --- .../lac/include/lac/block_vector.templates.h | 33 ++-- deal.II/lac/include/lac/block_vector_base.h | 146 +++++++++--------- deal.II/lac/include/lac/petsc_block_vector.h | 40 +++-- .../include/lac/petsc_parallel_block_vector.h | 39 +++-- .../lac/source/petsc_parallel_block_vector.cc | 4 +- 5 files changed, 122 insertions(+), 140 deletions(-) diff --git a/deal.II/lac/include/lac/block_vector.templates.h b/deal.II/lac/include/lac/block_vector.templates.h index 0f962dfd83..51c252940f 100644 --- a/deal.II/lac/include/lac/block_vector.templates.h +++ b/deal.II/lac/include/lac/block_vector.templates.h @@ -42,11 +42,10 @@ BlockVector::BlockVector (const BlockVector& v) : BlockVectorBase > () { - this->components.resize (v.num_blocks); + this->components.resize (v.n_blocks()); this->block_indices = v.block_indices; - this->num_blocks = v.num_blocks; - for (unsigned int i=0; inum_blocks; ++i) + for (unsigned int i=0; in_blocks(); ++i) this->components[i] = v.components[i]; } @@ -78,11 +77,10 @@ void BlockVector::reinit (const std::vector &n, const bool fast) { this->block_indices.reinit (n); - this->num_blocks = n.size(); - if (this->components.size() != this->num_blocks) - this->components.resize(this->num_blocks); + if (this->components.size() != this->n_blocks()) + this->components.resize(this->n_blocks()); - for (unsigned int i=0; inum_blocks; ++i) + for (unsigned int i=0; in_blocks(); ++i) this->components[i].reinit(n[i], fast); } @@ -93,11 +91,10 @@ void BlockVector::reinit (const BlockVector& v, const bool fast) { this->block_indices = v.get_block_indices(); - this->num_blocks = v.n_blocks(); - if (this->components.size() != this->num_blocks) - this->components.resize(this->num_blocks); + if (this->components.size() != this->n_blocks()) + this->components.resize(this->n_blocks()); - for (unsigned int i=0;inum_blocks;++i) + for (unsigned int i=0;in_blocks();++i) this->block(i).reinit(v.block(i), fast); } @@ -111,10 +108,10 @@ BlockVector::~BlockVector () template void BlockVector::swap (BlockVector &v) { - Assert (this->num_blocks == v.num_blocks, - ExcDimensionMismatch(this->num_blocks, v.num_blocks)); + Assert (this->n_blocks() == v.n_blocks(), + ExcDimensionMismatch(this->n_blocks(), v.n_blocks())); - for (unsigned int i=0; inum_blocks; ++i) + for (unsigned int i=0; in_blocks(); ++i) ::swap (this->components[i], v.components[i]); ::swap (this->block_indices, v.block_indices); } @@ -127,7 +124,7 @@ void BlockVector::print (std::ostream &out, const bool scientific, const bool across) const { - for (unsigned int i=0;inum_blocks;++i) + for (unsigned int i=0;in_blocks();++i) { if (across) out << 'C' << i << ':'; @@ -142,7 +139,7 @@ void BlockVector::print (std::ostream &out, template void BlockVector::block_write (std::ostream &out) const { - for (unsigned int i=0;inum_blocks;++i) + for (unsigned int i=0;in_blocks();++i) this->components[i].block_write(out); } @@ -151,7 +148,7 @@ void BlockVector::block_write (std::ostream &out) const template void BlockVector::block_read (std::istream &in) { - for (unsigned int i=0;inum_blocks;++i) + for (unsigned int i=0;in_blocks();++i) this->components[i].block_read(in); } @@ -160,7 +157,7 @@ template unsigned int BlockVector::memory_consumption () const { - unsigned int mem = sizeof(this->num_blocks); + unsigned int mem = sizeof(this->n_blocks()); for (unsigned int i=0; icomponents.size(); ++i) mem += MemoryConsumption::memory_consumption (this->components[i]); mem += MemoryConsumption::memory_consumption (this->block_indices); diff --git a/deal.II/lac/include/lac/block_vector_base.h b/deal.II/lac/include/lac/block_vector_base.h index 16b518b37c..c50253448d 100644 --- a/deal.II/lac/include/lac/block_vector_base.h +++ b/deal.II/lac/include/lac/block_vector_base.h @@ -995,14 +995,6 @@ class BlockVectorBase * different blocks. */ BlockIndices block_indices; - - /** - * The number of blocks. This - * number is redundant to - * components.size() and stored - * here for convenience. - */ - unsigned int num_blocks; /** * Make the iterator class a @@ -1616,7 +1608,7 @@ inline unsigned int BlockVectorBase::n_blocks () const { - return num_blocks; + return block_indices.size(); } @@ -1625,7 +1617,7 @@ inline typename BlockVectorBase::BlockType & BlockVectorBase::block (const unsigned int i) { - Assert(i::BlockType & BlockVectorBase::block (const unsigned int i) const { - Assert(i::collect_sizes () { - std::vector sizes (num_blocks); + std::vector sizes (n_blocks()); - for (unsigned int i=0; i::clear () { - for (unsigned int i=0;i bool BlockVectorBase::all_zero () const { - for (unsigned int i=0;i bool BlockVectorBase::is_non_negative () const { - for (unsigned int i=0;i::value_type BlockVectorBase:: operator * (const BlockVectorBase& v) const { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); + Assert (n_blocks() == v.n_blocks(), + ExcDimensionMismatch(n_blocks(), v.n_blocks())); value_type sum = 0.; - for (unsigned int i=0;i::value_type BlockVectorBase::norm_sqr () const { value_type sum = 0.; - for (unsigned int i=0;i::value_type BlockVectorBase::mean_value () const { value_type sum = 0.; - for (unsigned int i=0;i::value_type BlockVectorBase::l1_norm () const { value_type sum = 0.; - for (unsigned int i=0;i::value_type BlockVectorBase::linfty_norm () const { value_type sum = 0.; - for (unsigned int i=0;i BlockVectorBase & BlockVectorBase::operator -= (const BlockVectorBase& v) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); + Assert (n_blocks() == v.n_blocks(), + ExcDimensionMismatch(n_blocks(), v.n_blocks())); - for (unsigned int i=0;i::operator -= (const BlockVectorBase& v) template void BlockVectorBase::add (const value_type a) { - for (unsigned int i=0;i::add (const value_type a) template void BlockVectorBase::add (const BlockVectorBase& v) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); + Assert (n_blocks() == v.n_blocks(), + ExcDimensionMismatch(n_blocks(), v.n_blocks())); - for (unsigned int i=0;i void BlockVectorBase::add (const value_type a, const BlockVectorBase& v) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); + Assert (n_blocks() == v.n_blocks(), + ExcDimensionMismatch(n_blocks(), v.n_blocks())); - for (unsigned int i=0;i::add (const value_type a, const value_type b, const BlockVectorBase& w) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); - Assert (num_blocks == w.num_blocks, - ExcDimensionMismatch(num_blocks, w.num_blocks)); + Assert (n_blocks() == v.n_blocks(), + ExcDimensionMismatch(n_blocks(), v.n_blocks())); + Assert (n_blocks() == w.n_blocks(), + ExcDimensionMismatch(n_blocks(), w.n_blocks())); - for (unsigned int i=0;i void BlockVectorBase::sadd (const value_type x, const BlockVectorBase& v) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); + Assert (n_blocks() == v.n_blocks(), + ExcDimensionMismatch(n_blocks(), v.n_blocks())); - for (unsigned int i=0;i void BlockVectorBase::sadd (const value_type x, const value_type a, const BlockVectorBase& v) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); + Assert (n_blocks() == v.n_blocks(), + ExcDimensionMismatch(n_blocks(), v.n_blocks())); - for (unsigned int i=0;i::sadd (const value_type x, const value_type a, const value_type b, const BlockVectorBase& w) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); - Assert (num_blocks == w.num_blocks, - ExcDimensionMismatch(num_blocks, w.num_blocks)); + Assert (n_blocks() == v.n_blocks(), + ExcDimensionMismatch(n_blocks(), v.n_blocks())); + Assert (n_blocks() == w.n_blocks(), + ExcDimensionMismatch(n_blocks(), w.n_blocks())); - for (unsigned int i=0;i::sadd (const value_type x, const value_type a, const value_type c, const BlockVectorBase& y) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); - Assert (num_blocks == w.num_blocks, - ExcDimensionMismatch(num_blocks, w.num_blocks)); - Assert (num_blocks == y.num_blocks, - ExcDimensionMismatch(num_blocks, y.num_blocks)); + Assert (n_blocks() == v.n_blocks(), + ExcDimensionMismatch(n_blocks(), v.n_blocks())); + Assert (n_blocks() == w.n_blocks(), + ExcDimensionMismatch(n_blocks(), w.n_blocks())); + Assert (n_blocks() == y.n_blocks(), + ExcDimensionMismatch(n_blocks(), y.n_blocks())); - for (unsigned int i=0;i template void BlockVectorBase::scale (const BlockVector2 &v) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); - for (unsigned int i=0;i::equ (const value_type a, const value_type b, const BlockVectorBase& w) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); - Assert (num_blocks == w.num_blocks, - ExcDimensionMismatch(num_blocks, w.num_blocks)); + Assert (n_blocks() == v.n_blocks(), + ExcDimensionMismatch(n_blocks(), v.n_blocks())); + Assert (n_blocks() == w.n_blocks(), + ExcDimensionMismatch(n_blocks(), w.n_blocks())); - for (unsigned int i=0;i void BlockVectorBase::equ (const value_type a, const BlockVector2 &v) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); + Assert (n_blocks() == v.n_blocks(), + ExcDimensionMismatch(n_blocks(), v.n_blocks())); - for (unsigned int i=0;i BlockVectorBase& BlockVectorBase::operator = (const value_type s) { - for (unsigned int i=0;i BlockVectorBase& BlockVectorBase::operator = (const BlockVectorBase& v) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); + Assert (n_blocks() == v.n_blocks(), + ExcDimensionMismatch(n_blocks(), v.n_blocks())); - for (unsigned int i=0;i BlockVectorBase& BlockVectorBase::operator = (const BlockVectorBase &v) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); + Assert (n_blocks() == v.n_blocks(), + ExcDimensionMismatch(n_blocks(), v.n_blocks())); - for (unsigned int i=0;i &v) const Assert (block_indices == v.block_indices, ExcNotmatchingBlockSizes()); - for (unsigned int i=0;i & BlockVectorBase::operator *= (const value_type factor) { - for (unsigned int i=0;i & BlockVectorBase::operator /= (const value_type factor) { - for (unsigned int i=0;i () { - components.resize (v.num_blocks); + this->components.resize (v.n_blocks()); block_indices = v.block_indices; - num_blocks = v.num_blocks; - for (unsigned int i=0; in_blocks(); ++i) + this->components[i] = v.components[i]; } @@ -335,12 +334,11 @@ namespace PETScWrappers : BlockVectorBase () { - components.resize (v.get_block_indices().size()); + this->components.resize (v.get_block_indices().size()); block_indices = v.get_block_indices(); - num_blocks = block_indices.size(); - for (unsigned int i=0; in_blocks(); ++i) + this->components[i] = v.block(i); } @@ -421,12 +419,11 @@ namespace PETScWrappers const bool fast) { block_indices.reinit (n); - num_blocks = n.size(); - if (components.size() != num_blocks) - components.resize(num_blocks); + if (this->components.size() != this->n_blocks()) + this->components.resize(this->n_blocks()); - for (unsigned int i=0; in_blocks(); ++i) + this->components[i].reinit(n[i], fast); } @@ -436,11 +433,10 @@ namespace PETScWrappers const bool fast) { block_indices = v.get_block_indices(); - num_blocks = v.n_blocks(); - if (components.size() != num_blocks) - components.resize(num_blocks); + if (this->components.size() != this->n_blocks()) + this->components.resize(this->n_blocks()); - for (unsigned int i=0;in_blocks();++i) block(i).reinit(v.block(i), fast); } @@ -450,12 +446,12 @@ namespace PETScWrappers void BlockVector::swap (BlockVector &v) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); + Assert (this->n_blocks() == v.n_blocks(), + ExcDimensionMismatch(this->n_blocks(), v.n_blocks())); - for (unsigned int i=0; in_blocks(); ++i) + this->components[i].swap (v.components[i]); + ::swap (this->block_indices, v.block_indices); } diff --git a/deal.II/lac/include/lac/petsc_parallel_block_vector.h b/deal.II/lac/include/lac/petsc_parallel_block_vector.h index 4fb6d07795..84834506b2 100644 --- a/deal.II/lac/include/lac/petsc_parallel_block_vector.h +++ b/deal.II/lac/include/lac/petsc_parallel_block_vector.h @@ -346,12 +346,11 @@ namespace PETScWrappers : BlockVectorBase () { - components.resize (v.num_blocks); - block_indices = v.block_indices; - num_blocks = v.num_blocks; + this->components.resize (v.n_blocks()); + this->block_indices = v.block_indices; - for (unsigned int i=0; in_blocks(); ++i) + this->components[i] = v.components[i]; } @@ -404,13 +403,12 @@ namespace PETScWrappers const std::vector &local_sizes, const bool fast) { - block_indices.reinit (block_sizes); - num_blocks = block_sizes.size(); - if (components.size() != num_blocks) - components.resize(num_blocks); + this->block_indices.reinit (block_sizes); + if (this->components.size() != this->n_blocks()) + this->components.resize(this->n_blocks()); - for (unsigned int i=0; in_blocks(); ++i) + this->components[i].reinit(communicator, block_sizes[i], local_sizes[i], fast); } @@ -420,12 +418,11 @@ namespace PETScWrappers BlockVector::reinit (const BlockVector& v, const bool fast) { - block_indices = v.get_block_indices(); - num_blocks = v.n_blocks(); - if (components.size() != num_blocks) - components.resize(num_blocks); + this->block_indices = v.get_block_indices(); + if (this->components.size() != this->n_blocks()) + this->components.resize(this->n_blocks()); - for (unsigned int i=0;in_blocks();++i) block(i).reinit(v.block(i), fast); } @@ -444,12 +441,12 @@ namespace PETScWrappers void BlockVector::swap (BlockVector &v) { - Assert (num_blocks == v.num_blocks, - ExcDimensionMismatch(num_blocks, v.num_blocks)); + Assert (this->n_blocks() == v.n_blocks(), + ExcDimensionMismatch(this->n_blocks(), v.n_blocks())); - for (unsigned int i=0; in_blocks(); ++i) + this->components[i].swap (v.components[i]); + ::swap (this->block_indices, v.block_indices); } diff --git a/deal.II/lac/source/petsc_parallel_block_vector.cc b/deal.II/lac/source/petsc_parallel_block_vector.cc index 8817d718b9..7ff4e71dec 100644 --- a/deal.II/lac/source/petsc_parallel_block_vector.cc +++ b/deal.II/lac/source/petsc_parallel_block_vector.cc @@ -29,8 +29,8 @@ namespace PETScWrappers Assert (v.get_block_indices() == this->get_block_indices(), ExcNonMatchingBlockVectors()); - for (unsigned int i=0; in_blocks(); ++i) + this->block(i) = v.block(i); return *this; } -- 2.39.5