getfem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Getfem-commits] r5137 - in /trunk/getfem/src: getfem/getfem_mesh_slicer


From: Yves . Renard
Subject: [Getfem-commits] r5137 - in /trunk/getfem/src: getfem/getfem_mesh_slicers.h getfem/getfem_model_solvers.h getfem/getfem_models.h gmm/gmm_std.h
Date: Tue, 17 Nov 2015 12:37:02 -0000

Author: renard
Date: Tue Nov 17 13:37:01 2015
New Revision: 5137

URL: http://svn.gna.org/viewcvs/getfem?rev=5137&view=rev
Log:
Replacing a few new by std::make_shared and std::make_unique

Modified:
    trunk/getfem/src/getfem/getfem_mesh_slicers.h
    trunk/getfem/src/getfem/getfem_model_solvers.h
    trunk/getfem/src/getfem/getfem_models.h
    trunk/getfem/src/gmm/gmm_std.h

Modified: trunk/getfem/src/getfem/getfem_mesh_slicers.h
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/getfem_mesh_slicers.h?rev=5137&r1=5136&r2=5137&view=diff
==============================================================================
--- trunk/getfem/src/getfem/getfem_mesh_slicers.h       (original)
+++ trunk/getfem/src/getfem/getfem_mesh_slicers.h       Tue Nov 17 13:37:01 2015
@@ -194,7 +194,7 @@
     virtual void copy(size_type cv, base_vector& coeff) const = 0;
     virtual scalar_type maxval() const = 0;
     virtual ~mesh_slice_cv_dof_data_base() {}
-    virtual mesh_slice_cv_dof_data_base* clone() const = 0;
+    virtual std::unique_ptr<mesh_slice_cv_dof_data_base> clone() const = 0;
   };
 
   /**
@@ -223,9 +223,8 @@
         *out = u[*it];
     }
     scalar_type maxval() const { return gmm::vect_norminf(u); }
-    virtual mesh_slice_cv_dof_data_base* clone() const {
-      return new mesh_slice_cv_dof_data<VEC>(*this);
-    }
+    virtual std::unique_ptr<mesh_slice_cv_dof_data_base> clone() const
+    { return std::make_unique<mesh_slice_cv_dof_data<VEC>>(*this); }
   };
   
 

Modified: trunk/getfem/src/getfem/getfem_model_solvers.h
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/getfem_model_solvers.h?rev=5137&r1=5136&r2=5137&view=diff
==============================================================================
--- trunk/getfem/src/getfem/getfem_model_solvers.h      (original)
+++ trunk/getfem/src/getfem/getfem_model_solvers.h      Tue Nov 17 13:37:01 2015
@@ -562,20 +562,21 @@
 
 
   template<typename MATRIX, typename VECTOR>
-  std::shared_ptr<abstract_linear_solver<MATRIX, VECTOR> >
+  std::shared_ptr<abstract_linear_solver<MATRIX, VECTOR>>
   default_linear_solver(const model &md) {
-    std::shared_ptr<abstract_linear_solver<MATRIX, VECTOR> > p;
 
 #if GETFEM_PARA_LEVEL == 1 && GETFEM_PARA_SOLVER == MUMPS_PARA_SOLVER
     if (md.is_symmetric())
-      p.reset(new linear_solver_mumps_sym<MATRIX, VECTOR>);
+      return std::make_shared<linear_solver_mumps_sym<MATRIX, VECTOR>>();
     else
-      p.reset(new linear_solver_mumps<MATRIX, VECTOR>);
+      return std::make_shared<linear_solver_mumps<MATRIX, VECTOR>>();
 #elif GETFEM_PARA_LEVEL > 1 && GETFEM_PARA_SOLVER == MUMPS_PARA_SOLVER
     if (md.is_symmetric())
-      p.reset(new linear_solver_distributed_mumps_sym<MATRIX, VECTOR>);
-    else
-      p.reset(new linear_solver_distributed_mumps<MATRIX, VECTOR>);
+      return std::make_shared
+       <linear_solver_distributed_mumps_sym<MATRIX, VECTOR>>();
+      else
+       return std::make_shared
+         <linear_solver_distributed_mumps<MATRIX, VECTOR>>();
 #else
     size_type ndof = md.nb_dof(), max3d = 15000, dim = md.leading_dimension();
 # ifdef GMM_USES_MUMPS
@@ -584,59 +585,65 @@
     if ((ndof<300000 && dim<=2) || (ndof<max3d && dim<=3) || (ndof<1000)) {
 # ifdef GMM_USES_MUMPS
       if (md.is_symmetric())
-        p.reset(new linear_solver_mumps_sym<MATRIX, VECTOR>);
+       return std::make_shared<linear_solver_mumps_sym<MATRIX, VECTOR>>();
       else
-        p.reset(new linear_solver_mumps<MATRIX, VECTOR>);
+       return std::make_shared<linear_solver_mumps<MATRIX, VECTOR>>();
 # else
-      p.reset(new linear_solver_superlu<MATRIX, VECTOR>);
+      return std::make_shared<linear_solver_superlu<MATRIX, VECTOR>>();
 # endif
     }
     else {
       if (md.is_coercive())
-        p.reset(new linear_solver_cg_preconditioned_ildlt<MATRIX, VECTOR>);
+       return std::make_shared
+         <linear_solver_cg_preconditioned_ildlt<MATRIX, VECTOR>>();
       else {
         if (dim <= 2)
-          p.reset(new
-                  linear_solver_gmres_preconditioned_ilut<MATRIX,VECTOR>);
-        else
-          p.reset(new
-                  linear_solver_gmres_preconditioned_ilu<MATRIX,VECTOR>);
+         return std::make_shared
+           <linear_solver_gmres_preconditioned_ilut<MATRIX,VECTOR>>();
+         else
+           return std::make_shared
+             <linear_solver_gmres_preconditioned_ilu<MATRIX,VECTOR>>();
       }
     }
 #endif
-    return p;
+    return std::shared_ptr<abstract_linear_solver<MATRIX, VECTOR>>();
   }
 
   template <typename MATRIX, typename VECTOR>
-  std::shared_ptr<abstract_linear_solver<MATRIX, VECTOR> >
+  std::shared_ptr<abstract_linear_solver<MATRIX, VECTOR>>
   select_linear_solver(const model &md, const std::string &name) {
-    std::shared_ptr<abstract_linear_solver<MATRIX, VECTOR> > p;
+    std::shared_ptr<abstract_linear_solver<MATRIX, VECTOR>> p;
     if (bgeot::casecmp(name, "superlu") == 0)
-      p.reset(new linear_solver_superlu<MATRIX, VECTOR>);
+      return std::make_shared<linear_solver_superlu<MATRIX, VECTOR>>();
     else if (bgeot::casecmp(name, "mumps") == 0) {
 #ifdef GMM_USES_MUMPS
 # if GETFEM_PARA_LEVEL <= 1
-      p.reset(new linear_solver_mumps<MATRIX, VECTOR>);
+      return std::make_shared<linear_solver_mumps<MATRIX, VECTOR>>();
 # else
-      p.reset(new linear_solver_distributed_mumps<MATRIX, VECTOR>);
+      return std::make_shared
+       <linear_solver_distributed_mumps<MATRIX, VECTOR>>();
 # endif
 #else
       GMM_ASSERT1(false, "Mumps is not interfaced");
 #endif
     }
     else if (bgeot::casecmp(name, "cg/ildlt") == 0)
-      p.reset(new linear_solver_cg_preconditioned_ildlt<MATRIX, VECTOR>);
+      return std::make_shared
+       <linear_solver_cg_preconditioned_ildlt<MATRIX, VECTOR>>();
     else if (bgeot::casecmp(name, "gmres/ilu") == 0)
-      p.reset(new linear_solver_gmres_preconditioned_ilu<MATRIX, VECTOR>);
+      return std::make_shared
+       <linear_solver_gmres_preconditioned_ilu<MATRIX, VECTOR>>();
     else if (bgeot::casecmp(name, "gmres/ilut") == 0)
-      p.reset(new linear_solver_gmres_preconditioned_ilut<MATRIX, VECTOR>);
+      return std::make_shared
+       <linear_solver_gmres_preconditioned_ilut<MATRIX, VECTOR>>();
     else if (bgeot::casecmp(name, "gmres/ilutp") == 0)
-      p.reset(new linear_solver_gmres_preconditioned_ilutp<MATRIX, VECTOR>);
+      return std::make_shared
+       <linear_solver_gmres_preconditioned_ilutp<MATRIX, VECTOR>>();
     else if (bgeot::casecmp(name, "auto") == 0)
-      p = default_linear_solver<MATRIX, VECTOR>(md);
+      return default_linear_solver<MATRIX, VECTOR>(md);
     else
       GMM_ASSERT1(false, "Unknown linear solver");
-    return p;
+    return std::shared_ptr<abstract_linear_solver<MATRIX, VECTOR>>();
   }
 
   inline rmodel_plsolver_type rselect_linear_solver(const model &md,

Modified: trunk/getfem/src/getfem/getfem_models.h
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/getfem_models.h?rev=5137&r1=5136&r2=5137&view=diff
==============================================================================
--- trunk/getfem/src/getfem/getfem_models.h     (original)
+++ trunk/getfem/src/getfem/getfem_models.h     Tue Nov 17 13:37:01 2015
@@ -232,7 +232,7 @@
           v_num_data(act_counter()),
           alpha(1), pim_data(pimd) {
         if (filter != VDESCRFILTER_NO && mf != 0)
-          partial_mf = ppartial_mesh_fem(new partial_mesh_fem(*mf));
+          partial_mf = std::make_shared<partial_mesh_fem>(*mf);
         // v_num_data = v_num;
         if (qdims.size() == 0) qdims.push_back(1);
         GMM_ASSERT1(qdim(), "Attempt to create a null size variable");

Modified: trunk/getfem/src/gmm/gmm_std.h
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/gmm/gmm_std.h?rev=5137&r1=5136&r2=5137&view=diff
==============================================================================
--- trunk/getfem/src/gmm/gmm_std.h      (original)
+++ trunk/getfem/src/gmm/gmm_std.h      Tue Nov 17 13:37:01 2015
@@ -126,8 +126,14 @@
 #include <limits>
 #include <sstream>
 #include <numeric>
+#include <memory>
 #include <locale.h>
 
+namespace std {
+  template<typename T, typename ...Args>
+  unique_ptr<T> make_unique( Args&& ...args )
+  { return std::unique_ptr<T>( new T( std::forward<Args>(args)... ) ); }
+}
 
 #ifdef GETFEM_HAVE_OPENMP      
 #include <omp.h>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]