From: Wolfgang Bangerth Date: Tue, 26 Sep 2017 00:35:52 +0000 (-0600) Subject: Avoid raw pointers in SUNDIALS IDA interfaces. X-Git-Tag: v9.0.0-rc1~1029^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F5153%2Fhead;p=dealii.git Avoid raw pointers in SUNDIALS IDA interfaces. --- diff --git a/source/sundials/ida.cc b/source/sundials/ida.cc index 830ee4baff..e7b2591628 100644 --- a/source/sundials/ida.cc +++ b/source/sundials/ida.cc @@ -51,13 +51,13 @@ namespace SUNDIALS IDA &solver = *static_cast *>(user_data); GrowingVectorMemory mem; - VectorType *src_yy = mem.alloc(); + typename VectorMemory::Pointer src_yy(mem); solver.reinit_vector(*src_yy); - VectorType *src_yp = mem.alloc(); + typename VectorMemory::Pointer src_yp(mem); solver.reinit_vector(*src_yp); - VectorType *residual = mem.alloc(); + typename VectorMemory::Pointer residual(mem); solver.reinit_vector(*residual); copy(*src_yy, yy); @@ -67,10 +67,6 @@ namespace SUNDIALS copy(rr, *residual); - mem.free(src_yy); - mem.free(src_yp); - mem.free(residual); - return err; } @@ -92,10 +88,10 @@ namespace SUNDIALS IDA &solver = *static_cast *>(IDA_mem->ida_user_data); GrowingVectorMemory mem; - VectorType *src_yy = mem.alloc(); + typename VectorMemory::Pointer src_yy(mem); solver.reinit_vector(*src_yy); - VectorType *src_yp = mem.alloc(); + typename VectorMemory::Pointer src_yp(mem); solver.reinit_vector(*src_yp); copy(*src_yy, yy); @@ -106,9 +102,6 @@ namespace SUNDIALS *src_yp, IDA_mem->ida_cj); - mem.free(src_yy); - mem.free(src_yp); - return err; } @@ -128,10 +121,10 @@ namespace SUNDIALS IDA &solver = *static_cast *>(IDA_mem->ida_user_data); GrowingVectorMemory mem; - VectorType *src = mem.alloc(); + typename VectorMemory::Pointer src(mem); solver.reinit_vector(*src); - VectorType *dst = mem.alloc(); + typename VectorMemory::Pointer dst(mem); solver.reinit_vector(*dst); copy(*src, b); @@ -139,9 +132,6 @@ namespace SUNDIALS int err = solver.solve_jacobian_system(*src,*dst); copy(b, *dst); - mem.free(src); - mem.free(dst); - return err; } @@ -490,10 +480,9 @@ namespace SUNDIALS differential_components = [&]() ->IndexSet { GrowingVectorMemory mem; - auto v = mem.alloc(); + typename VectorMemory::Pointer v(mem); reinit_vector(*v); - unsigned int size = v->size(); - mem.free(v); + const unsigned int size = v->size(); return complete_index_set(size); };