diff --git a/extensions/RefinementExpression.h b/extensions/RefinementExpression.h index ccba17ad40353bbeda77c99cddff8fd40fb44b68..502caa3e508fd64794446f6fbad0eb1f217be291 100644 --- a/extensions/RefinementExpression.h +++ b/extensions/RefinementExpression.h @@ -37,8 +37,6 @@ public: RefinementExpression(ProblemStat& prob, int component = 0, bool doCalcMeshSize_ = false) : mesh(prob.getMesh(component)), - adaptInfo(NULL), - refineOperation(NULL), numRefinements0(15), doCalcMeshSize(doCalcMeshSize_), onlyRefine(false), @@ -48,13 +46,13 @@ public: coarseningManager = prob.getCoarseningManager(); refinementManager = prob.getRefinementManager(); numRefinements = numRefinements0; - refineOperation = new StandardRefineOperation; + + standardRefineOperation.reset(new StandardRefineOperation); + refineOperation = standardRefineOperation.get(); } RefinementExpression(Mesh *mesh_, bool doCalcMeshSize_ = false) : mesh(mesh_), - adaptInfo(NULL), - refineOperation(NULL), numRefinements0(15), doCalcMeshSize(doCalcMeshSize_), onlyRefine(false), @@ -81,8 +79,8 @@ public: } numRefinements = numRefinements0; - - refineOperation = new StandardRefineOperation; + standardRefineOperation.reset(new StandardRefineOperation); + refineOperation = standardRefineOperation.get(); } virtual ~RefinementExpression() @@ -93,9 +91,6 @@ public: delete coarseningManager; delete refinementManager; } - - if (refineOperation) - delete refineOperation; } void finalize() @@ -315,9 +310,6 @@ public: void setRefineOperation(AdaptInfo* adaptInfo_, StandardRefineOperation* refineOperation_) { - if (refineOperation) - delete refineOperation; - adaptInfo = adaptInfo_; refineOperation = refineOperation_; } @@ -338,8 +330,10 @@ protected: RefinementManager* refinementManager; CoarseningManager* coarseningManager; - AdaptInfo* adaptInfo; - StandardRefineOperation* refineOperation; + AdaptInfo* adaptInfo = nullptr; + + std::shared_ptr<StandardRefineOperation> standardRefineOperation; + StandardRefineOperation* refineOperation = nullptr; int numRefinements; int numRefinements0;