[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>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [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,
Yves . Renard <=