]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Kommentare auskommentiert
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Mon, 9 Mar 1998 16:35:22 +0000 (16:35 +0000)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Mon, 9 Mar 1998 16:35:22 +0000 (16:35 +0000)
git-svn-id: https://svn.dealii.org/trunk@45 0785d39b-7218-0410-832d-ea1e28bc413d

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

index f55f02f804d1bca74864b83adc2da7b807ce554c..ec90820a4bf7b1f21a520169040a329bbfe4d6f8 100644 (file)
@@ -8,14 +8,121 @@ static const char* OBJFILE = "DEAL $RCSfile$ $Revision$";
 
 #include <lac/dsmatrix.h>
 #include <ostream.h>
-#include <base/sort.h>
+
+
+/*----------------- from sort.h -------------------------*/
+
+
+//////////
+template<class T>
+inline void swap(T* a, T* b)
+{
+  T x = *a;
+  *a = *b;
+  *b = x;
+}
+
+//////////
+template<class T>
+inline void simple_sort(long n, T* field)
+{
+  long i,j;
+  for (i=1;i<n;i++)
+  {
+    for (j=i+1;j<=n;j++)
+    {
+      if (field[j] < field[i])
+      {
+       swap(field+i,field+j);
+      }
+    }
+  }
+}
+
+template<class T>
+inline void heapsort_sift(T* a, long l, long r)
+{
+  long i = l;
+  long j = 2*i;
+  T    x = a[i];
+
+  while (j<=r)
+  {
+    if (j<r) 
+    {
+      if (a[j] < a[j+1]) j++;
+    }
+    if (!(x < a[j])) break;
+    a[i] = a[j];
+    i = j;
+    j = 2*i;
+  }
+  a[i] = x;
+}
+
+
+//////////
+template<class T>
+inline void heapsort(int n, T* field)
+{
+  field--;
+
+  long l =(n/2)+1;
+  long r = n;
+
+  while (l>1)
+  {
+    l--;
+    heapsort_sift(field,l,r);
+  }
+  while (r>1)
+  {
+    swap(field+l,field+r);
+    r--;
+    heapsort_sift(field,l,r);
+  }
+}
+
+//////////
+template<class T>
+inline void _quicksort(long r, T* a, long l)
+{
+  long i = l;
+  long j = r;
+  T*   x = &a[(l+r)/2];
+  do
+  {
+    while (a[i] < *x) i++;
+    while (*x < a[j]) j--;
+    if (i<=j)
+    {
+      swap(a+i,a+j);
+      i++;
+      j--;
+    }
+  }
+  while (i<=j);
+  if (l<j) _quicksort(j,a,l);
+  if (i<r) _quicksort(r,a,i);
+}
+
+template<class T>
+inline void quicksort(long r, T* a)
+{
+  _quicksort(r,a,1);
+}
+
+
+/*----------------- from sort.h -------------------------*/
+
+
 
 void
 dSMatrixStruct::reinit(int m, int n, int max_per_row)
 {
-  THROW1(m<=0, IntError(IntError::IllegalDimension, m));
-  THROW1(n<=0, IntError(IntError::IllegalDimension, n));
-  THROW1(max_per_row<=0, IntError(IntError::IllegalDimension, max_per_row));
+//  THROW1(m<=0, IntError(IntError::IllegalDimension, m));
+//  THROW1(n<=0, IntError(IntError::IllegalDimension, n));
+//  THROW1(max_per_row<=0, IntError(IntError::IllegalDimension, max_per_row));
   rows = m;
   cols = n;
   vec_len = m * max_per_row;
index 1a7302e526bcbe70b851cb2d276cbcb6d3fd6e58..07ad2d3a0913d53e30611efe64dd795c0e823032 100644 (file)
@@ -18,12 +18,12 @@ dVector::dVector(int n) : val(0)
 {
   dim = n;
   maxdim = n;
-  THROW1(n<0, IntError(IntError::IllegalDimension, n, "dVector"));
+  //THROW1(n<0, IntError(IntError::IllegalDimension, n, "dVector"));
 
   if (n)
     {
       val = new double[maxdim];
-      THROWUNCOND(!val, Error(Error::NoMem,"dVector::dVector"));
+      //THROWUNCOND(!val, Error(Error::NoMem,"dVector::dVector"));
       (*this) = 0.;
     }
 }
@@ -36,19 +36,19 @@ dVector::dVector(const dVector& v) : val(0)
   if (dim)
     {
       val = new double[maxdim];
-      THROWUNCOND(!val, Error(Error::NoMem,"dVector::dVector"));
+      //THROWUNCOND(!val, Error(Error::NoMem,"dVector::dVector"));
       for (int i=0;i<dim;i++) val[i] = v.val[i];
     }
 }
 
 void dVector::reinit(int n, int fast)
 {
-  THROW1(n<=0, IntError(IntError::IllegalDimension, n));
+  //THROW1(n<=0, IntError(IntError::IllegalDimension, n));
   if (n>maxdim)
   {
     if (val) delete[] val;
     val = new double[n];
-    THROWUNCOND(!val, Error(Error::NoMem,"dVector::reinit"));
+    //THROWUNCOND(!val, Error(Error::NoMem,"dVector::reinit"));
     maxdim = n;
   }
   dim = n;
@@ -62,7 +62,7 @@ void dVector::reinit(const dVector& v, int fast)
   {
     if (val) delete[] val;
     val = new double[n];
-    THROWUNCOND(!val, Error(Error::NoMem,"dVector::reinit"));
+    //THROWUNCOND(!val, Error(Error::NoMem,"dVector::reinit"));
     maxdim = n;
   }
   dim = n;
@@ -172,8 +172,8 @@ dVector& dVector::operator = (const dVector& v)
 void dVector::cadd(int i, const VectorBase& V, double s, int j)
 {
   const dVector& v = (const dVector&) V;
-  THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cadd"));
-  THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cadd"));
+  //THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cadd"));
+  //THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cadd"));
 
   val[i] += s*v.val[j];
 }
@@ -181,9 +181,9 @@ void dVector::cadd(int i, const VectorBase& V, double s, int j)
 void dVector::cadd(int i, const VectorBase& V, double s, int j, double t, int k)
 {
   const dVector& v = (const dVector&) V;
-  THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cadd"));
-  THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cadd"));
-  THROW1((k<0) || (k>v.dim), IntError(IntError::Range,k,"cadd"));
+  //THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cadd"));
+  //THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cadd"));
+  //THROW1((k<0) || (k>v.dim), IntError(IntError::Range,k,"cadd"));
 
   val[i] += s*v.val[j] + t*v.val[k];
 }
@@ -192,26 +192,26 @@ void dVector::cadd(int i, const VectorBase& V, double s, int j,
                   double t, int k, double q, int l, double r, int m)
 {
   const dVector& v = (const dVector&) V;
-  THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cadd"));
-  THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cadd"));
-  THROW1((k<0) || (k>v.dim), IntError(IntError::Range,k,"cadd"));
-  THROW1((l<0) || (l>v.dim), IntError(IntError::Range,l,"cadd"));
-  THROW1((m<0) || (m>v.dim), IntError(IntError::Range,m,"cadd"));
+  //THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cadd"));
+  //THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cadd"));
+  //THROW1((k<0) || (k>v.dim), IntError(IntError::Range,k,"cadd"));
+  //THROW1((l<0) || (l>v.dim), IntError(IntError::Range,l,"cadd"));
+  //THROW1((m<0) || (m>v.dim), IntError(IntError::Range,m,"cadd"));
 
   val[i] += s*v.val[j] + t*v.val[k] + q*v.val[l] + r*v.val[m];
 }
 
 void dVector::czero(int i)
 {
-    THROW1((i<0) || (i>dim), IntError(IntError::Range,i));
+    //THROW1((i<0) || (i>dim), IntError(IntError::Range,i));
     val[i] = 0.;
 }
 
 void dVector::cequ(int i, const VectorBase& V, double s, int j)
 {
   const dVector& v = (const dVector&) V;
-  THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cequ"));
-  THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cequ"));
+  //THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cequ"));
+  //THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cequ"));
 
   val[i] = s*v.val[j];
 }
@@ -219,9 +219,9 @@ void dVector::cequ(int i, const VectorBase& V, double s, int j)
 void dVector::cequ(int i, const VectorBase& V, double s, int j, double t, int k)
 {
   const dVector& v = (const dVector&) V;
-  THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cequ"));
-  THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cequ"));
-  THROW1((k<0) || (k>v.dim), IntError(IntError::Range,k,"cequ"));
+  //THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cequ"));
+  //THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cequ"));
+  //THROW1((k<0) || (k>v.dim), IntError(IntError::Range,k,"cequ"));
 
   val[i] = s*v.val[j] + t*v.val[k];
 }
@@ -230,11 +230,11 @@ void dVector::cequ(int i, const VectorBase& V, double s, int j,
                   double t, int k, double q, int l, double r, int m)
 {
   const dVector& v = (const dVector&) V;
-  THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cequ"));
-  THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cequ"));
-  THROW1((k<0) || (k>v.dim), IntError(IntError::Range,k,"cequ"));
-  THROW1((l<0) || (l>v.dim), IntError(IntError::Range,l,"cequ"));
-  THROW1((m<0) || (m>v.dim), IntError(IntError::Range,m,"cequ"));
+  //THROW1((i<0) || (i>dim), IntError(IntError::Range,i,"cequ"));
+  //THROW1((j<0) || (j>v.dim), IntError(IntError::Range,j,"cequ"));
+  //THROW1((k<0) || (k>v.dim), IntError(IntError::Range,k,"cequ"));
+  //THROW1((l<0) || (l>v.dim), IntError(IntError::Range,l,"cequ"));
+  //THROW1((m<0) || (m>v.dim), IntError(IntError::Range,m,"cequ"));
 
   val[i] = s*v.val[j] + t*v.val[k] + q*v.val[l] + r*v.val[m];
 }
index 4e7242151b17f4cff91f33c221f1cd88455ea786..c98acc6808725c6df53aea28fbe749d7f9d32148 100644 (file)
@@ -12,7 +12,7 @@ iVector::iVector()
 {
   dim=maxdim=1;
   val = new int[1];
-  THROWUNCOND(!val, Error(Error::NoMem,"iVector::iVector"));
+  //THROWUNCOND(!val, Error(Error::NoMem,"iVector::iVector"));
   val[0] = 0;
 }
 
@@ -20,10 +20,10 @@ iVector::iVector(int n)
 {
   dim = n;
   maxdim = n;
-  THROW1(n<=0, IntError(IntError::IllegalDimension, n, "iVector::iVector"));
+  //THROW1(n<=0, IntError(IntError::IllegalDimension, n, "iVector::iVector"));
 
   val = new int[maxdim];
-  THROWUNCOND(!val, Error(Error::NoMem,"iVector::iVector"));
+  //THROWUNCOND(!val, Error(Error::NoMem,"iVector::iVector"));
   (*this) = 0;
 }
 
@@ -36,12 +36,12 @@ iVector::iVector(const iVector& v)
 
 void iVector::reinit(int n, int fast)
 {
-  THROW1(n<=0, IntError(IntError::IllegalDimension, n, "iVector::reinit"));
+  //THROW1(n<=0, IntError(IntError::IllegalDimension, n, "iVector::reinit"));
   if (n>maxdim)
   {
     delete[] val;
     val = new int[n];
-    THROWUNCOND(!val, Error(Error::NoMem,"iVector::reinit"));
+    //THROWUNCOND(!val, Error(Error::NoMem,"iVector::reinit"));
     maxdim = n;
   }
   dim = n;
@@ -55,7 +55,7 @@ void iVector::reinit(const iVector& v, int fast)
   {
     delete[] val;
     val = new int[n];
-    THROWUNCOND(!val, Error(Error::NoMem,"iVector::reinit"));
+    //THROWUNCOND(!val, Error(Error::NoMem,"iVector::reinit"));
     maxdim = n;
   }
   dim = n;

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.