]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Convert more hand-allocations to VectorMemory::Pointer. 4956/head
authorWolfgang Bangerth <bangerth@colostate.edu>
Thu, 24 Aug 2017 22:02:36 +0000 (16:02 -0600)
committerWolfgang Bangerth <bangerth@colostate.edu>
Thu, 24 Aug 2017 22:02:36 +0000 (16:02 -0600)
include/deal.II/lac/constrained_linear_operator.h
include/deal.II/lac/eigen.h
include/deal.II/lac/packaged_operation.h

index 509d35bb7c83371ad10591df28c73ed6be661d90..5d4c70ba12cda9781d8f1ee11083e358e1165813 100644 (file)
@@ -318,13 +318,11 @@ constrained_right_hand_side(const ConstraintMatrix &constraint_matrix,
     const auto Ct = transpose_operator(C);
 
     static GrowingVectorMemory<Domain> vector_memory;
-    Domain *k = vector_memory.alloc();
+    typename VectorMemory<Domain>::Pointer k (vector_memory);
     linop.reinit_domain_vector(*k, /*bool fast=*/ false);
     constraint_matrix.distribute(*k);
 
     v += Ct * (right_hand_side - linop **k);
-
-    vector_memory.free(k);
   };
 
   // lambda capture expressions are a C++14 feature...
index 26e0d8ec915a0cb8a1f724e33212780131f8013c..ddd9e9a2dd22efb46b4b2dd1468e69e4c10287cc 100644 (file)
@@ -239,10 +239,10 @@ EigenPower<VectorType>::solve (double           &value,
 
   deallog.push("Power method");
 
-  VectorType *Vy = this->memory.alloc ();
+  typename VectorMemory<VectorType>::Pointer Vy (this->memory);
   VectorType &y = *Vy;
   y.reinit (x);
-  VectorType *Vr = this->memory.alloc ();
+  typename VectorMemory<VectorType>::Pointer Vr (this->memory);
   VectorType &r = *Vr;
   r.reinit (x);
 
@@ -291,9 +291,6 @@ EigenPower<VectorType>::solve (double           &value,
       conv = this->iteration_status (iter, std::fabs(1./length-1./old_length), x);
     }
 
-  this->memory.free(Vy);
-  this->memory.free(Vr);
-
   deallog.pop();
 
   // in case of failure: throw exception
index f34d1ca4842f7e83a8547d4e9237347adfac8138..e801def071c4f662549b9e7609e4599c58d4ed96 100644 (file)
@@ -750,26 +750,22 @@ operator*(const LinearOperator<Range, Domain, Payload> &op,
   {
     static GrowingVectorMemory<Range> vector_memory;
 
-    Range *i = vector_memory.alloc();
+    typename VectorMemory<Range>::Pointer i (vector_memory);
     op.reinit_domain_vector(*i, /*bool omit_zeroing_entries =*/ true);
 
     comp.apply(*i);
     op.vmult(v, *i);
-
-    vector_memory.free(i);
   };
 
   return_comp.apply_add = [op, comp](Domain &v)
   {
     static GrowingVectorMemory<Range> vector_memory;
 
-    Range *i = vector_memory.alloc();
+    typename VectorMemory<Range>::Pointer i (vector_memory);
     op.reinit_range_vector(*i, /*bool omit_zeroing_entries =*/ true);
 
     comp.apply(*i);
     op.vmult_add(v, *i);
-
-    vector_memory.free(i);
   };
 
   return return_comp;
@@ -800,26 +796,22 @@ operator*(const PackagedOperation<Range> &comp,
   {
     static GrowingVectorMemory<Range> vector_memory;
 
-    Range *i = vector_memory.alloc();
+    typename VectorMemory<Range>::Pointer i (vector_memory);
     op.reinit_range_vector(*i, /*bool omit_zeroing_entries =*/ true);
 
     comp.apply(*i);
     op.Tvmult(v, *i);
-
-    vector_memory.free(i);
   };
 
   return_comp.apply_add = [op, comp](Domain &v)
   {
     static GrowingVectorMemory<Range> vector_memory;
 
-    Range *i = vector_memory.alloc();
+    typename VectorMemory<Range>::Pointer i (vector_memory);
     op.reinit_range_vector(*i, /*bool omit_zeroing_entries =*/ true);
 
     comp.apply(*i);
     op.Tvmult_add(v, *i);
-
-    vector_memory.free(i);
   };
 
   return return_comp;

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.