From 63cacb03436869185be0c174d3ceb6fad52a5f13 Mon Sep 17 00:00:00 2001 From: Joachim Schoeberl Date: Wed, 22 Jul 2009 19:01:39 +0000 Subject: [PATCH] delete vector --- libsrc/linalg/vector.cpp | 786 --------------------------------------- 1 file changed, 786 deletions(-) delete mode 100644 libsrc/linalg/vector.cpp diff --git a/libsrc/linalg/vector.cpp b/libsrc/linalg/vector.cpp deleted file mode 100644 index 859147e4..00000000 --- a/libsrc/linalg/vector.cpp +++ /dev/null @@ -1,786 +0,0 @@ -#ifdef abc -#include -#include -#include - -namespace netgen -{ - - double BaseVector :: shit = 0; - - // %FD Constructs a vector of length zero - BaseVector :: BaseVector () - { - length = 0; - } - - // %FD Constructs a vector of given length - BaseVector :: BaseVector ( - INDEX alength // length of the vector - ) - { - length = alength; - } - - // %FD Sets length of the vector, old vector will be destroyed - void - BaseVector :: SetLength ( - INDEX alength // new length of the vector - ) - { - length = alength; - } - - // %FD Changes length of the vector, old values stay valid - void - BaseVector :: ChangeLength ( - INDEX alength // new length of the vector - ) - { - length = alength; - } - - - - // %FD { Write a vector with the help of the '<<' operator onto a stream } - ostream & // stream for further use - operator<< ( - ostream & s, // stream to write vector onto - const BaseVector & v // vector to write - ) - { - return v.Print (s); - } - - - // %FD{ Divides every component of the vector by the scalar c. - // The function checks for division by zero } - BaseVector & // result vector - BaseVector :: operator/= ( - double c // scalar to divide by - ) - { - if (c) - return (*this) *= (1/c); - else - { - (*myerr) << "operator/=: division by zero" << endl; - return *this; - } - } - - - // %FD Creates a copy of the object - BaseVector * // pointer to the new vector - BaseVector :: Copy () const - { - cerr << "Base_vector::Copy called" << endl << flush; - return NULL; - } - - - - - void BaseVector :: GetElementVector (const Array & pnum, - BaseVector & elvec) const - { - int i; - for (i = 1; i <= pnum.Size(); i++) - elvec(i) = (*this)(pnum.Get(i)); - } - - void BaseVector :: SetElementVector (const Array & pnum, - const BaseVector & elvec) - { - int i; - for (i = 1; i <= pnum.Size(); i++) - (*this)(pnum.Get(i)) = elvec(i); - } - - - void BaseVector :: AddElementVector (const Array & pnum, - const BaseVector & elvec) - { - int i; - for (i = 1; i <= pnum.Size(); i++) - (*this)(pnum.Get(i)) += elvec(i); - } - - - - - - - - - - - - TempVector :: ~TempVector () - { - delete vec; - } - - TempVector BaseVector :: operator+ (const BaseVector & v2) const - { - return (*Copy()) += v2; - } - - TempVector BaseVector :: operator- (const BaseVector & v2) const - { - return (*Copy()) -= v2; - } - - TempVector BaseVector :: operator- () const - { - return (*Copy()) *= -1; - } - - - TempVector operator* (const BaseVector & v1, double scal) - { - return (*v1.Copy()) *= scal; - } - - TempVector operator/ (const BaseVector & v1, double scal) - { - return (*v1.Copy()) /= scal; - } - - - TempVector operator* (double scal, const BaseVector & v1) - { - return v1 * scal; - } - - - - - - BaseVector * TempVector :: Copy () const - { - return vec->Copy(); - } - - - - - - - - - - - double Vector :: shit = 0; - - class clVecpool - { - public: - Array vecs; - Array veclens; - - ~clVecpool(); - }; - - clVecpool :: ~clVecpool() - { - int i; - for (i = 1; i <= vecs.Size(); i++) - delete vecs.Elem(i); - } - - static clVecpool vecpool; - - - - static double * NewDouble (INDEX len) - { - if (len < 10) - return new double[len]; - else - { - int i; - for (i = 1; i <= vecpool.veclens.Size(); i++) - if (vecpool.veclens.Get(i) == len) - { - double * hvec = vecpool.vecs.Get(i); - vecpool.vecs.DeleteElement(i); - vecpool.veclens.DeleteElement(i); - return hvec; - } - - return new double[len]; - } - } - - static void DeleteDouble (INDEX len, double * dp) - { - if (len < 10) - delete [] dp; - else - { - vecpool.vecs.Append (dp); - vecpool.veclens.Append (len); - } - } - - - - Vector :: Vector () : BaseVector() - { - data = NULL; - } - - Vector :: Vector (INDEX alength) : BaseVector (alength) - { - if (length) - { - // data = new double[length]; - data = NewDouble (length); - - if (!data) - { - length = 0; - (*myerr) << "Vector not allocated" << endl; - } - } - else - data = NULL; - } - - - Vector :: Vector (const Vector & v2) - { - length = v2.length; - - if (length) - { - // data = new double[length]; - data = NewDouble (length); - - if (data) - { - memcpy (data, v2.data, length * sizeof (double)); - } - else - { - length = 0; - (*myerr) << "Vector::Vector : Vector not allocated" << endl; - } - } - else - data = NULL; - } - - - Vector :: ~Vector () - { - // veclenfile << "~Vector delete: " << length << endl; - if (data) - { - DeleteDouble (length, data); - // delete [] data; - } - - } - - void Vector :: SetLength (INDEX alength) - { - if (length == alength) return; - - if (data) - { - DeleteDouble (length, data); - // delete [] data; - } - data = NULL; - length = alength; - - if (length == 0) return; - // data = new double[length]; - data = NewDouble (length); - - if (!data) - { - length = 0; - (*myerr) << "Vector::SetLength: Vector not allocated" << endl; - } - } - - void Vector :: ChangeLength (INDEX alength) - { - (*mycout) << "Vector::ChangeLength called" << endl; - if (length == alength) return; - - if (alength == 0) - { - // delete [] data; - DeleteDouble (length, data); - length = 0; - return; - } - - double * olddata = data; - - data = NewDouble (alength); - // data = new double[alength]; - if (!data) - { - length = 0; - (*myerr) << "Vector::SetLength: Vector not allocated" << endl; - delete [] olddata; - } - - memcpy (data, olddata, min2(alength, length)); - - delete [] olddata; - length = alength; - } - - /// NEW RM - void Vector::SetBlockLength (INDEX /* blength */) - { - MyError("BaseVector::SetBlockLength was called for a Vector"); - } - - - double & Vector :: operator() (INDEX i) - { - if (i >= 1 && i <= length) return Elem(i); - else (*myerr) << "\nindex " << i << " out of range (" - << 1 << "," << Length() << ")\n"; - return shit; - } - - double Vector :: operator() (INDEX i) const - { - if (i >= 1 && i <= length) return Get(i); - else (*myerr) << "\nindex " << i << " out of range (" - << 1 << "," << Length() << ")\n" << flush; - return shit; - } - - - - double Vector :: SupNorm () const - { - double sup = 0; - - for (INDEX i = 1; i <= Length(); i++) - if (fabs (Get(i)) > sup) - sup = fabs(Get(i)); - - return sup; - } - - double Vector :: L2Norm () const - { - double sum = 0; - - for (INDEX i = 1; i <= Length(); i++) - sum += Get(i) * Get(i); - - return sqrt (sum); - } - - double Vector :: L1Norm () const - { - double sum = 0; - - for (INDEX i = 1; i <= Length(); i++) - sum += fabs (Get(i)); - - return sum; - } - - double Vector :: Max () const - { - if (!Length()) return 0; - double m = Get(1); - for (INDEX i = 2; i <= Length(); i++) - if (Get(i) > m) m = Get(i); - return m; - } - - double Vector :: Min () const - { - if (!Length()) return 0; - double m = Get(1); - for (INDEX i = 2; i <= Length(); i++) - if (Get(i) < m) m = Get(i); - return m; - } - - - /* - ostream & operator<<(ostream & s, const Vector & v) - { - int w = s.width(); - if (v.Length()) - { - s.width(0); - s << '('; - for (INDEX i = 1; i < v.Length(); i++) - { - s.width(w); - s << v.Get(i) << ","; - if (i % 8 == 0) s << endl << ' '; - } - s.width(w); - s << v.Get(v.Length()) << ')'; - } - else - s << "(Vector not allocated)"; - - return s; - } - */ - - ostream & Vector :: Print (ostream & s) const - { - int w = s.width(); - if (Length()) - { - s.width(0); - s << '('; - for (INDEX i = 1; i < Length(); i++) - { - s.width(w); - s << Get(i) << ","; - if (i % 8 == 0) s << endl << ' '; - } - s.width(w); - s << Get(Length()) << ')'; - } - else - s << "(Vector not allocated)"; - - return s; - } - - - - BaseVector & Vector :: operator+= (const BaseVector & v2) - { - const Vector & hv2 = v2.CastToVector(); - - if (Length() == hv2.Length()) - for (INDEX i = 1; i <= Length(); i++) - Elem (i) += hv2.Get(i); - else - (*myerr) << "operator+= illegal dimension" << endl; - return *this; - } - - BaseVector & Vector :: operator-= (const BaseVector & v2) - { - const Vector & hv2 = v2.CastToVector(); - - if (Length() == hv2.Length()) - for (INDEX i = 1; i <= Length(); i++) - Elem (i) -= hv2.Get(i); - else - (*myerr) << "operator-= illegal dimension" << endl; - return *this; - } - - BaseVector & Vector :: operator*= (double c) - { - for (INDEX i = 1; i <= Length(); i++) - Elem(i) *= c; - return *this; - } - - - - BaseVector & Vector :: Add (double scal, const BaseVector & v2) - { - const Vector & hv2 = v2.CastToVector(); - - if (Length() == hv2.Length()) - { - double * p1 = data; - double * p2 = hv2.data; - - for (INDEX i = Length(); i > 0; i--) - { - (*p1) += scal * (*p2); - p1++; p2++; - } - } - else - (*myerr) << "Vector::Add: illegal dimension" << endl; - return *this; - } - - BaseVector & Vector :: Add2 (double scal, const BaseVector & v2, - double scal3, const BaseVector & v3) - { - const Vector & hv2 = v2.CastToVector(); - const Vector & hv3 = v3.CastToVector(); - - if (Length() == hv2.Length()) - { - double * p1 = data; - double * p2 = hv2.data; - double * p3 = hv3.data; - - for (INDEX i = Length(); i > 0; i--) - { - (*p1) += (scal * (*p2) + scal3 * (*p3)); - p1++; p2++; p3++; - } - } - else - (*myerr) << "Vector::Add: illegal dimension" << endl; - return *this; - } - - BaseVector & Vector :: Set (double scal, const BaseVector & v2) - { - const Vector & hv2 = v2.CastToVector(); - - if (Length() == hv2.Length()) - { - double * p1 = data; - double * p2 = hv2.data; - - for (INDEX i = Length(); i > 0; i--) - { - (*p1) = scal * (*p2); - p1++; p2++; - } - } - else - (*myerr) << "Vector::Set: illegal dimension" << endl; - return *this; - } - - - BaseVector & Vector :: Set2 (double scal , const BaseVector & v2, - double scal3, const BaseVector & v3) - { - const Vector & hv2 = v2.CastToVector(); - const Vector & hv3 = v3.CastToVector(); - - if (Length() == hv2.Length() && Length() == hv3.Length()) - { - double * p1 = data; - double * p2 = hv2.data; - double * p3 = hv3.data; - - for (INDEX i = Length(); i > 0; i--) - { - (*p1) = scal * (*p2) + scal3 * (*p3); - p1++; p2++; p3++; - } - } - else - (*myerr) << "Vector::Set: illegal dimension" << endl; - return *this; - } - - - void Vector :: GetPart (int startpos, BaseVector & v2) const - { - Vector & hv2 = v2.CastToVector(); - - if (Length() >= startpos + v2.Length() - 1) - { - const double * p1 = &Get(startpos); - double * p2 = &hv2.Elem(1); - - memcpy (p2, p1, hv2.Length() * sizeof(double)); - } - else - MyError ("Vector::GetPart: Vector to short"); - } - - - // NEW RM - void Vector :: SetPart (int startpos, const BaseVector & v2) - { - const Vector & hv2 = v2.CastToVector(); - INDEX i; - INDEX n = v2.Length(); - - if (Length() >= startpos + n - 1) - { - double * p1 = &Elem(startpos); - const double * p2 = &hv2.Get(1); - - for (i = 1; i <= n; i++) - { - (*p1) = (*p2); - p1++; - p2++; - } - } - else - MyError ("Vector::SetPart: Vector to short"); - } - - void Vector :: AddPart (int startpos, double val, const BaseVector & v2) - { - const Vector & hv2 = v2.CastToVector(); - INDEX i; - INDEX n = v2.Length(); - - if (Length() >= startpos + n - 1) - { - double * p1 = &Elem(startpos); - const double * p2 = &hv2.Get(1); - - for (i = 1; i <= n; i++) - { - (*p1) += val * (*p2); - p1++; - p2++; - } - } - else - MyError ("Vector::AddPart: Vector to short"); - } - - - - - double Vector :: operator* (const BaseVector & v2) const - { - const Vector & hv2 = v2.CastToVector(); - - double sum = 0; - double * p1 = data; - double * p2 = hv2.data; - - if (Length() == hv2.Length()) - { - for (INDEX i = Length(); i > 0; i--) - { - sum += (*p1) * (*p2); - p1++; p2++; - } - } - else - (*myerr) << "Scalarproduct illegal dimension" << endl; - return sum; - } - - void Vector :: SetRandom () - { - INDEX i; - for (i = 1; i <= Length(); i++) - Elem(i) = rand (); - - double l2 = L2Norm(); - if (l2 > 0) - (*this) /= l2; - // Elem(i) = 1.0 / double(i); - // Elem(i) = drand48(); - } - - - /* - TempVector Vector :: operator- () const - { - Vector & sum = *(Vector*)Copy(); - - if (sum.Length () == Length()) - { - for (INDEX i = 1; i <= Length(); i++) - sum.Set (i, Get(i)); - } - else - (*myerr) << "operator+ (Vector, Vector): sum.Length() not ok" << endl; - return sum; - } - */ - - BaseVector & Vector::operator= (const Vector & v2) - { - SetLength (v2.Length()); - - if (data == v2.data) return *this; - - if (v2.Length() == Length()) - memcpy (data, v2.data, sizeof (double) * Length()); - else - (*myerr) << "Vector::operator=: not allocated" << endl; - - return *this; - } - - BaseVector & Vector::operator= (const BaseVector & v2) - { - const Vector & hv2 = v2.CastToVector(); - - SetLength (hv2.Length()); - - if (data == hv2.data) return *this; - - if (hv2.Length() == Length()) - memcpy (data, hv2.data, sizeof (double) * Length()); - else - (*myerr) << "Vector::operator=: not allocated" << endl; - - return *this; - } - - - BaseVector & Vector::operator= (double scal) - { - if (!Length()) (*myerr) << "Vector::operator= (double) : data not allocated" - << endl; - - for (INDEX i = 1; i <= Length(); i++) - Set (i, scal); - - return *this; - } - - - BaseVector * Vector :: Copy () const - { - return new Vector (*this); - } - - - void Vector :: Swap (BaseVector & v2) - { - Vector & hv2 = v2.CastToVector(); - swap (length, hv2.length); - swap (data, hv2.data); - } - - - - - void Vector :: GetElementVector (const Array & pnum, - BaseVector & elvec) const - { - int i; - Vector & helvec = elvec.CastToVector(); - for (i = 1; i <= pnum.Size(); i++) - helvec.Elem(i) = Get(pnum.Get(i)); - } - - void Vector :: SetElementVector (const Array & pnum, - const BaseVector & elvec) - { - int i; - const Vector & helvec = elvec.CastToVector(); - for (i = 1; i <= pnum.Size(); i++) - Elem(pnum.Get(i)) = helvec.Get(i); - } - - - void Vector :: AddElementVector (const Array & pnum, - const BaseVector & elvec) - { - int i; - const Vector & helvec = elvec.CastToVector(); - for (i = 1; i <= pnum.Size(); i++) - Elem(pnum.Get(i)) += helvec.Get(i); - } -} -#endif