diff --git a/ProcessLib/ProcessVariable.cpp b/ProcessLib/ProcessVariable.cpp index 8495f5a21180f23cf3d6ffe69cb8b833ef4353b9..aac8b94016bd90eb62d29164454bee5707157f25 100644 --- a/ProcessLib/ProcessVariable.cpp +++ b/ProcessLib/ProcessVariable.cpp @@ -42,8 +42,7 @@ ProcessVariable::ProcessVariable( config.get<std::string>("initial_condition.type"); if (type == "Uniform") { - _initial_condition = - new UniformInitialCondition(ic_config->second); + _initial_condition.reset(new UniformInitialCondition(ic_config->second)); } else { @@ -96,17 +95,6 @@ ProcessVariable::ProcessVariable( } } -ProcessVariable::~ProcessVariable() -{ - delete _initial_condition; - - for(auto p : _dirichlet_bcs) - delete p; - - for(auto p : _neumann_bc_configs) - delete p; -} - std::string const& ProcessVariable::getName() const { return _name; @@ -121,7 +109,7 @@ void ProcessVariable::initializeDirichletBCs( MeshGeoToolsLib::MeshNodeSearcher& searcher, std::vector<std::size_t>& global_ids, std::vector<double>& values) { - for (UniformDirichletBoundaryCondition* bc : _dirichlet_bcs) + for (auto& bc : _dirichlet_bcs) bc->initialize(searcher, global_ids, values); } diff --git a/ProcessLib/ProcessVariable.h b/ProcessLib/ProcessVariable.h index 7421eb48da5251242ad5bc9c2e9ad35f75ec37f0..47fc156d5380281cb5feb2f17a2b3385f3b6dc10 100644 --- a/ProcessLib/ProcessVariable.h +++ b/ProcessLib/ProcessVariable.h @@ -12,7 +12,8 @@ #include <boost/property_tree/ptree.hpp> - +#include "InitialCondition.h" +#include "UniformDirichletBoundaryCondition.h" #include "NeumannBc.h" namespace MeshGeoToolsLib @@ -46,12 +47,11 @@ namespace ProcessLib class ProcessVariable { using ConfigTree = boost::property_tree::ptree; + public: ProcessVariable(ConfigTree const& config, MeshLib::Mesh const& mesh, GeoLib::GEOObjects const& geometries); - ~ProcessVariable(); - std::string const& getName() const; /// Returns a mesh on which the process variable is defined. @@ -66,7 +66,7 @@ public: GlobalSetup const&, Args&&... args) { - for (NeumannBcConfig* config : _neumann_bc_configs) + for (auto& config : _neumann_bc_configs) { config->initialize(searcher); bcs = new NeumannBc<GlobalSetup>(*config, std::forward<Args>(args)...); @@ -76,9 +76,9 @@ public: private: std::string const _name; MeshLib::Mesh const& _mesh; - InitialCondition* _initial_condition; - std::vector<UniformDirichletBoundaryCondition*> _dirichlet_bcs; - std::vector<NeumannBcConfig*> _neumann_bc_configs; + std::unique_ptr<InitialCondition> _initial_condition; + std::vector<std::unique_ptr<UniformDirichletBoundaryCondition> > _dirichlet_bcs; + std::vector<std::unique_ptr<NeumannBcConfig> > _neumann_bc_configs; }; } // namespace ProcessLib