]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Restructuring and more error checks
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Wed, 18 Mar 1998 16:15:14 +0000 (16:15 +0000)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Wed, 18 Mar 1998 16:15:14 +0000 (16:15 +0000)
git-svn-id: https://svn.dealii.org/trunk@84 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/lac/include/lac/dsmatrix.h
deal.II/lac/include/lac/ivector.h
deal.II/lac/source/dvector.cc
deal.II/lac/source/ivector.cc

index d6c3ec9c60cfec89e2e7fcb5e24d5835c5f687f4..74fd455190b131d1b91dcbc9c7edd2f56ad80e2a 100644 (file)
@@ -1,5 +1,5 @@
 /*----------------------------   dsmatrix.h     ---------------------------*/
-/*      <Id:>                 */
+/*      $Id$                 */
 #ifndef __dsmatrix_H
 #define __dsmatrix_H
 /*----------------------------   dsmatrix.h     ---------------------------*/
@@ -10,9 +10,6 @@
 // Roland Becker, Guido Kanschat, Franz-Theo Suttmeier
 
 
-#ifndef __lac_dsmatrix_h
-#define __lac_dsmatrix_h
-
 #include <math.h>
 #ifndef __lac_dvector_h
 #include <lac/dvector.h>
index 39023fffd69010101b4001ebe875cb41f626b6ad..fb39a785239dd8b707ee83facababbd2035525e4 100644 (file)
@@ -90,6 +90,11 @@ protected:
                                      * on fast=0 vector is filled by 0.
                                      */
     void reinit(const iVector& V, int fast = 0);
+
+                                    /**
+                                     * Set all elements to zero.
+                                     */
+    void clear ();
     
                                     /**
                                      *  Inquire Dimension. returns Dimension ,
@@ -168,15 +173,21 @@ inline int iVector::n() const
   return dim;
 }
 
+
+
 inline int iVector::operator() (int i) const
 {
   Assert ((i>=0) || (i<dim), ExcInvalidIndex(i,dim));
   return val[i];
 }
 
+
+
 inline int& iVector::operator() (int i)
 {
   Assert ((i>=0) || (i<dim), ExcInvalidIndex(i,dim));
   return val[i];
 }
+
+
 #endif
index 938391b1957ed67e28f290aea891d4544ef79e7a..b32d3d3b08f6bc72f44b781b9280fee08d386c5b 100644 (file)
@@ -7,12 +7,14 @@
 #include <lac/dvector.h>
 #include <math.h>
 
-dVector::dVector() : val(0)
-{
-  dim=maxdim=0;
-}
+dVector::dVector() :
+               dim(0),
+               maxdim(0),
+               val(0)
+{}
 
-dVector::dVector(int n) : val(0)
+
+dVector::dVector(int n)
 {
   Assert (n>0, ExcInvalidNumber(n));
 
@@ -22,11 +24,14 @@ dVector::dVector(int n) : val(0)
     {
       val = new double[maxdim];
       Assert (val != 0, ExcOutOfMemory());
-      (*this) = 0.;
+      clear ();
     }
+  else
+    val = 0;
 }
 
-dVector::dVector(const dVector& v) : val(0)
+
+dVector::dVector(const dVector& v)
 {
   dim = v.n();
   maxdim = v.n();
@@ -35,10 +40,15 @@ dVector::dVector(const dVector& v) : val(0)
     {
       val = new double[maxdim];
       Assert (val != 0, ExcOutOfMemory());
-      for (int i=0;i<dim;i++) val[i] = v.val[i];
+      for (int i=0; i<dim; i++)
+       val[i] = v.val[i];
     }
+  else
+    val = 0;
 }
 
+
+
 void dVector::reinit(int n, int fast)
 {
   Assert (n>0, ExcInvalidNumber(n));
@@ -50,9 +60,12 @@ void dVector::reinit(int n, int fast)
     maxdim = n;
   }
   dim = n;
-  if (!fast) (*this) = 0.;
+  if (!fast)
+    clear ();
 }
 
+
+
 void dVector::reinit(const dVector& v, int fast)
 {
   int n = v.n();
@@ -68,6 +81,8 @@ void dVector::reinit(const dVector& v, int fast)
     clear ();
 }
 
+
+
 dVector::~dVector()
 {
   if (val) delete[] val;
@@ -245,6 +260,7 @@ dVector& dVector::operator = (const dVector& v)
 }
 
 
+
 void dVector::cadd(int i, const VectorBase& V, double s, int j)
 {
   const dVector& v = (const dVector&) V;
@@ -255,6 +271,8 @@ void dVector::cadd(int i, const VectorBase& V, double s, int j)
   val[i] += s*v.val[j];
 }
 
+
+
 void dVector::cadd(int i, const VectorBase& V, double s, int j, double t, int k)
 {
   const dVector& v = (const dVector&) V;
@@ -282,12 +300,16 @@ void dVector::cadd(int i, const VectorBase& V, double s, int j,
   val[i] += s*v.val[j] + t*v.val[k] + q*v.val[l] + r*v.val[m];
 }
 
+
+
 void dVector::czero(int i)
 {
   Assert ((i>=0) && (i<dim), ExcInvalidIndex(i,dim));
   val[i] = 0.;
 }
 
+
+
 void dVector::cequ(int i, const VectorBase& V, double s, int j)
 {
   const dVector& v = (const dVector&) V;
@@ -298,6 +320,8 @@ void dVector::cequ(int i, const VectorBase& V, double s, int j)
   val[i] = s*v.val[j];
 }
 
+
+
 void dVector::cequ(int i, const VectorBase& V, double s, int j, double t, int k)
 {
   const dVector& v = (const dVector&) V;
@@ -309,6 +333,8 @@ void dVector::cequ(int i, const VectorBase& V, double s, int j, double t, int k)
   val[i] = s*v.val[j] + t*v.val[k];
 }
 
+
+
 void dVector::cequ(int i, const VectorBase& V, double s, int j,
                   double t, int k, double q, int l, double r, int m)
 {
@@ -323,22 +349,30 @@ void dVector::cequ(int i, const VectorBase& V, double s, int j,
   val[i] = s*v.val[j] + t*v.val[k] + q*v.val[l] + r*v.val[m];
 }
 
+
+
 const char* dVector::name() const
 {
   return "dVector";
 }
 
+
+
 void dVector::print(FILE* f, const char* format) const
 {
   if (!format) format = " %5.2f";
-  for (int j=0;j<n();j++) fprintf(f, format, val[j]);
+  for (int j=0;j<n();j++)
+    fprintf(f, format, val[j]);
   fputc('\n',f);
 }
 
+
+
 void dVector::print(const char* format) const
 {
   if (!format) format = " %5.2f";
-  for (int j=0;j<n();j++) printf (format, val[j]);
+  for (int j=0;j<n();j++)
+    printf (format, val[j]);
   printf ("\n");
 }
 
index 967b02da39d12439f41a4512e968fa1d9fc29e67..75cd8cf3d88f36726ac656fe936d8a8d266f9065 100644 (file)
@@ -13,7 +13,7 @@ iVector::iVector()
   dim=maxdim=1;
   val = new int[1];
   Assert (val != 0, ExcOutOfMemory());
-  val[0] = 0;
+  clear ();
 }
 
 iVector::iVector(int n)
@@ -24,16 +24,20 @@ iVector::iVector(int n)
   maxdim = n;
   val = new int[maxdim];
   Assert (val != 0, ExcOutOfMemory());
-  (*this) = 0;
+  clear ();
 }
 
+
 iVector::iVector(const iVector& v)
 {
   reinit(v.dim,1);
   int i;
-  for (i=0;i<dim;i++) val[i] = v.val[i];
+  for (i=0; i<dim; i++)
+    val[i] = v.val[i];
 }
 
+
+
 void iVector::reinit(int n, int fast)
 {
   Assert (n>0, ExcInvalidNumber(n));
@@ -45,9 +49,12 @@ void iVector::reinit(int n, int fast)
     maxdim = n;
   }
   dim = n;
-  if (!fast) (*this) = 0;
+  if (!fast)
+    clear ();
 }
 
+
+
 void iVector::reinit(const iVector& v, int fast)
 {
   int n = v.n();
@@ -59,45 +66,59 @@ void iVector::reinit(const iVector& v, int fast)
     maxdim = n;
   }
   dim = n;
-  if (!fast) (*this) = 0;
+  if (!fast)
+    clear ();
 }
 
+
+
 iVector::~iVector()
 {
-  delete[] val;
+  if (val)
+    delete[] val;
+}
+
+
+
+void iVector::clear () {
+  for (int i=0; i<dim; ++i)
+    val[i] = 0;
 }
 
+
 void iVector::add(const iVector& v)
 {
-  int i;
-  for (i = 0; i < dim; i++) val[i] += v(i);
+  for (int i=0; i<dim; ++i) val[i] += v(i);
 }
 
+
+
 void iVector::add(int a, const iVector& v)
 {
-  int i;
-  for (i = 0; i < dim; i++) val[i] += a * v(i);
+  for (int i=0; i<dim; ++i) val[i] += a * v(i);
 }
 
+
+
 void iVector::equ(int a, const iVector& u)
 {
-  int i;
-  for (i=0;i<dim;i++) val[i] = a*u.val[i];
+  for (int i=0; i<dim; ++i) val[i] = a*u.val[i];
 }
 
+
+
 iVector& iVector::operator = (int s)
 {
-  int i;
 //  if (s==0.) memset(val,sizeof(*val) * dim, 0);
-  for (i=0;i<dim;i++) val[i] = s;
+  for (int i=0; i<dim; ++i) val[i] = s;
   return *this;
 }
 
+
 iVector& iVector::operator = (const iVector& v)
 {
   if (v.dim != dim) reinit(v,1);
 
-  int i;
-  for (i=0;i<dim;i++) val[i] = v.val[i];
+  for (int i=0; i<dim; ++i) val[i] = v.val[i];
   return *this;
 }

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.