From: Wolfgang Bangerth Date: Thu, 2 Apr 1998 15:17:21 +0000 (+0000) Subject: Add support to release memory in dSMatrix. X-Git-Tag: v8.0.0~23131 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe5c100353bf659ef60da5e98805b011ab20fbfc;p=dealii.git Add support to release memory in dSMatrix. git-svn-id: https://svn.dealii.org/trunk@123 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/source/numerics/base.cc b/deal.II/deal.II/source/numerics/base.cc index 46ea191420..c3c3edbb94 100644 --- a/deal.II/deal.II/source/numerics/base.cc +++ b/deal.II/deal.II/source/numerics/base.cc @@ -53,7 +53,7 @@ void ProblemBase::clear () { tria = 0; dof_handler = 0; system_sparsity.reinit (1,1,1); - system_matrix.reinit (system_sparsity); + system_matrix.clear (); right_hand_side.reinit (1); solution.reinit (1); constraints.clear (); diff --git a/deal.II/lac/include/lac/dsmatrix.h b/deal.II/lac/include/lac/dsmatrix.h index 81690dce27..658980efda 100644 --- a/deal.II/lac/include/lac/dsmatrix.h +++ b/deal.II/lac/include/lac/dsmatrix.h @@ -172,6 +172,13 @@ class dSMatrix // void reinit (dSMatrixStruct &); + /** + * Release all memory and return to a state + * just like after having called the + * default constructor. + */ + void clear (); + // int m() const; // diff --git a/deal.II/lac/source/dsmatrix.cc b/deal.II/lac/source/dsmatrix.cc index c038df127c..c3a580ef8f 100644 --- a/deal.II/lac/source/dsmatrix.cc +++ b/deal.II/lac/source/dsmatrix.cc @@ -391,6 +391,15 @@ dSMatrix::reinit (dSMatrixStruct &sparsity) { +void +dSMatrix::clear () { + cols = 0; + if (val) delete[] val; + val = 0; + max_len = 0; +}; + + void dSMatrix::vmult(dVector& dst,const dVector& src) const