From: Guido Kanschat Date: Thu, 10 Jul 2003 07:53:32 +0000 (+0000) Subject: revert previous checkin and disallow vectors of size 0 X-Git-Tag: v8.0.0~16339 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e3081dfd5958313d10072a141192cb691e5e2d15;p=dealii.git revert previous checkin and disallow vectors of size 0 git-svn-id: https://svn.dealii.org/trunk@7871 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/lac/include/lac/block_vector.templates.h b/deal.II/lac/include/lac/block_vector.templates.h index 8fa9bf34f9..66061cf4a8 100644 --- a/deal.II/lac/include/lac/block_vector.templates.h +++ b/deal.II/lac/include/lac/block_vector.templates.h @@ -493,7 +493,6 @@ BlockVector& BlockVector::operator = (const Number s) { for (unsigned int i=0;i class Vector; template class VectorMemory; class SolverControl; -/*! @addtogroup Solvers - * @{ - */ /** * Base class for iterative solvers. This class defines possible @@ -176,9 +173,6 @@ class Solver : public Subscriptor */ VectorMemory &memory; }; -/*! - * @} - */ /*-------------------------------- Inline functions ------------------------*/ @@ -199,4 +193,5 @@ Solver::Solver(SolverControl &cn, VectorMemory &mem) memory(mem) {} + #endif diff --git a/deal.II/lac/include/lac/sparsity_pattern.h b/deal.II/lac/include/lac/sparsity_pattern.h index ab7ad9fca6..69ceeddf96 100644 --- a/deal.II/lac/include/lac/sparsity_pattern.h +++ b/deal.II/lac/include/lac/sparsity_pattern.h @@ -1246,15 +1246,6 @@ SparsityPattern::copy_from (const unsigned int n_rows, { Assert (static_cast(std::distance (begin, end)) == n_rows, ExcIteratorRange (std::distance (begin, end), n_rows)); - - // If the matrix has a zero - // dimension, we are done here. - if ((n_rows == 0) || (n_cols ==0)) - { - reinit(n_rows, n_cols, 0); - compressed = true; - return; - } // first determine row lengths for // each row. if the matrix is diff --git a/deal.II/lac/include/lac/vector.h b/deal.II/lac/include/lac/vector.h index b27be53704..ba8b2e1420 100644 --- a/deal.II/lac/include/lac/vector.h +++ b/deal.II/lac/include/lac/vector.h @@ -646,9 +646,7 @@ void Vector::reinit (const unsigned int n, const bool fast) if (n==0) { if (val) delete[] val; - // one entry must be allocated - // for begin() and end() - val = new value_type[1]; + val = 0; maxdim = dim = 0; return; }; @@ -691,7 +689,6 @@ inline typename Vector::iterator Vector::begin () { - Assert (val!=0, ExcEmptyVector()); return &val[0]; } @@ -702,7 +699,6 @@ inline typename Vector::const_iterator Vector::begin () const { - Assert (val!=0, ExcEmptyVector()); return &val[0]; } @@ -713,7 +709,6 @@ inline typename Vector::iterator Vector::end () { - Assert (val!=0, ExcEmptyVector()); return &val[dim]; } @@ -724,7 +719,6 @@ inline typename Vector::const_iterator Vector::end () const { - Assert (val!=0, ExcEmptyVector()); return &val[dim]; } @@ -775,7 +769,7 @@ template inline Vector & Vector::operator = (const Number s) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); std::fill (begin(), end(), s); return *this; } diff --git a/deal.II/lac/include/lac/vector.templates.h b/deal.II/lac/include/lac/vector.templates.h index 8019229f7e..3ee37bacb5 100644 --- a/deal.II/lac/include/lac/vector.templates.h +++ b/deal.II/lac/include/lac/vector.templates.h @@ -95,7 +95,7 @@ Vector::swap (Vector &v) template bool Vector::all_zero () const { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); const_iterator p = begin(), e = end(); @@ -110,7 +110,7 @@ template template Number Vector::operator * (const Vector& v) const { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); if (this == reinterpret_cast*>(&v)) return norm_sqr(); @@ -146,7 +146,7 @@ Number Vector::operator * (const Vector& v) const template Number Vector::norm_sqr () const { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Number sum0 = 0, sum1 = 0, @@ -176,7 +176,7 @@ Number Vector::norm_sqr () const template Number Vector::mean_value () const { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Number sum0 = 0, sum1 = 0, @@ -206,7 +206,7 @@ Number Vector::mean_value () const template Number Vector::l1_norm () const { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Number sum0 = 0, sum1 = 0, @@ -243,7 +243,7 @@ Number Vector::l2_norm () const template Number Vector::lp_norm (const Number p) const { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Number sum0 = 0, sum1 = 0, @@ -274,7 +274,7 @@ Number Vector::lp_norm (const Number p) const template Number Vector::linfty_norm () const { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Number max0=0., max1=0., @@ -300,7 +300,7 @@ Number Vector::linfty_norm () const template Vector& Vector::operator += (const Vector& v) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); add (v); return *this; @@ -310,7 +310,7 @@ Vector& Vector::operator += (const Vector& v) template Vector& Vector::operator -= (const Vector& v) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Assert (dim == v.dim, ExcDimensionMismatch(dim, v.dim)); iterator i_ptr = begin(), @@ -326,7 +326,7 @@ Vector& Vector::operator -= (const Vector& v) template void Vector::add (const Number v) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); iterator i_ptr = begin(), i_end = end(); @@ -338,7 +338,7 @@ void Vector::add (const Number v) template void Vector::add (const Vector& v) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Assert (dim == v.dim, ExcDimensionMismatch(dim, v.dim)); iterator i_ptr = begin(), @@ -352,7 +352,7 @@ void Vector::add (const Vector& v) template void Vector::add (const Number a, const Vector& v) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Assert (dim == v.dim, ExcDimensionMismatch(dim, v.dim)); iterator i_ptr = begin(), @@ -367,7 +367,7 @@ template void Vector::add (const Number a, const Vector& v, const Number b, const Vector& w) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Assert (dim == v.dim, ExcDimensionMismatch(dim, v.dim)); Assert (dim == w.dim, ExcDimensionMismatch(dim, w.dim)); iterator i_ptr = begin(), @@ -382,7 +382,7 @@ void Vector::add (const Number a, const Vector& v, template void Vector::sadd (const Number x, const Vector& v) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Assert (dim == v.dim, ExcDimensionMismatch(dim, v.dim)); iterator i_ptr = begin(), i_end = end(); @@ -396,7 +396,7 @@ template void Vector::sadd (const Number x, const Number a, const Vector& v) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Assert (dim == v.dim, ExcDimensionMismatch(dim, v.dim)); iterator i_ptr = begin(), i_end = end(); @@ -411,7 +411,7 @@ void Vector::sadd (const Number x, const Number a, const Vector& v, const Number b, const Vector& w) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Assert (dim == v.dim, ExcDimensionMismatch(dim, v.dim)); Assert (dim == w.dim, ExcDimensionMismatch(dim, w.dim)); iterator i_ptr = begin(), @@ -429,7 +429,7 @@ void Vector::sadd (const Number x, const Number a, const Vector& w, const Number c, const Vector& y) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Assert (dim == v.dim, ExcDimensionMismatch(dim, v.dim)); Assert (dim == w.dim, ExcDimensionMismatch(dim, w.dim)); Assert (dim == y.dim, ExcDimensionMismatch(dim, y.dim)); @@ -448,7 +448,7 @@ void Vector::sadd (const Number x, const Number a, template void Vector::scale (const Number factor) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); iterator ptr = begin(); const const_iterator eptr = end(); @@ -462,7 +462,7 @@ template template void Vector::scale (const Vector &s) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Assert (dim == s.dim, ExcDimensionMismatch(dim, s.dim)); iterator ptr = begin(); @@ -478,7 +478,7 @@ template void Vector::equ (const Number a, const Vector& u, const Number b, const Vector& v) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Assert (dim == u.dim, ExcDimensionMismatch(dim, u.dim)); Assert (dim == v.dim, ExcDimensionMismatch(dim, v.dim)); iterator i_ptr = begin(), @@ -495,7 +495,7 @@ template template void Vector::equ (const Number a, const Vector& u) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Assert (dim == u.dim, ExcDimensionMismatch(dim, u.dim)); iterator i_ptr = begin(), i_end = end(); @@ -509,7 +509,7 @@ void Vector::equ (const Number a, const Vector& u) template void Vector::ratio (const Vector &a, const Vector &b) { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); Assert (a.dim == b.dim, ExcDimensionMismatch (a.dim, b.dim)); // no need to reinit with zeros, since @@ -531,7 +531,7 @@ Vector::operator = (const Vector& v) { if (v.dim != dim) reinit (v.dim, true); - if (val!=0) + if (dim!=0) std::copy (v.begin(), v.end(), begin()); return *this; @@ -546,7 +546,7 @@ Vector::operator = (const Vector& v) { if (v.size() != dim) reinit (v.size(), true); - if (val!=0) + if (dim!=0) std::copy (v.begin(), v.end(), begin()); return *this; @@ -557,7 +557,7 @@ Vector::operator = (const Vector& v) template void Vector::print (const char* format) const { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); if (!format) format = " %5.2f"; for (unsigned int j=0;j::print (std::ostream &out, const bool scientific, const bool across) const { - Assert (val!=0, ExcEmptyVector()); + Assert (dim!=0, ExcEmptyVector()); out.precision (precision); if (scientific) diff --git a/deal.II/lac/source/sparsity_pattern.cc b/deal.II/lac/source/sparsity_pattern.cc index 0e8ab7a1f4..5fb54c8615 100644 --- a/deal.II/lac/source/sparsity_pattern.cc +++ b/deal.II/lac/source/sparsity_pattern.cc @@ -257,13 +257,13 @@ SparsityPattern::reinit (const unsigned int m, cols = n; // delete empty matrices - if (m==0) + if ((m==0) || (n==0)) { if (rowstart) delete[] rowstart; if (colnums) delete[] colnums; - rowstart = new unsigned int[0]; - colnums = new unsigned int[0]; - max_vec_len = max_dim = 0; + rowstart = 0; + colnums = 0; + max_vec_len = max_dim = rows = cols = 0; // if dimension is zero: ignore // max_per_row max_row_length = 0; @@ -532,7 +532,7 @@ SparsityPattern::empty () const // know at how many places I missed // something in adding it, so I try to // be cautious. wb) - if (rowstart==0) + if ((rowstart==0) || (rows==0) || (cols==0)) { Assert (rowstart==0, ExcInternalError()); Assert (rows==0, ExcInternalError());