From c34b8b0a6825aa6209f4212983380e768514d2bd Mon Sep 17 00:00:00 2001 From: Dmitri Naumov <github@naumov.de> Date: Tue, 12 Sep 2023 20:51:47 +0200 Subject: [PATCH] [PL] Reduce constructor's argument list Both time steps are created from the timestepper, so this construction is moved inside the ProcessData. This resolves the warning about the time step not being passed by reference, are removes the unnecessary std::move in the caller for the time step. --- ProcessLib/CreateProcessData.cpp | 14 ++++---------- ProcessLib/ProcessData.h | 9 ++++----- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/ProcessLib/CreateProcessData.cpp b/ProcessLib/CreateProcessData.cpp index cde92a31db7..921784342fa 100644 --- a/ProcessLib/CreateProcessData.cpp +++ b/ProcessLib/CreateProcessData.cpp @@ -30,9 +30,6 @@ static std::unique_ptr<ProcessData> makeProcessData( { using Tag = NumLib::NonlinearSolverTag; - NumLib::TimeStep previous_timestep(timestepper->begin()); - NumLib::TimeStep current_timestep(previous_timestep); - if (auto* nonlinear_solver_picard = dynamic_cast<NumLib::NonlinearSolver<Tag::Picard>*>( &nonlinear_solver)) @@ -40,9 +37,8 @@ static std::unique_ptr<ProcessData> makeProcessData( nonlinear_solver_picard->compensateNonEquilibriumInitialResiduum( compensate_non_equilibrium_initial_residuum); return std::make_unique<ProcessData>( - previous_timestep, current_timestep, std::move(timestepper), - Tag::Picard, *nonlinear_solver_picard, std::move(conv_crit), - std::move(time_disc), process_id, process); + std::move(timestepper), Tag::Picard, *nonlinear_solver_picard, + std::move(conv_crit), std::move(time_disc), process_id, process); } if (auto* nonlinear_solver_newton = dynamic_cast<NumLib::NonlinearSolver<Tag::Newton>*>( @@ -51,7 +47,6 @@ static std::unique_ptr<ProcessData> makeProcessData( nonlinear_solver_newton->compensateNonEquilibriumInitialResiduum( compensate_non_equilibrium_initial_residuum); return std::make_unique<ProcessData>( - std::move(previous_timestep), std::move(current_timestep), std::move(timestepper), Tag::Newton, *nonlinear_solver_newton, std::move(conv_crit), std::move(time_disc), process_id, process); } @@ -60,9 +55,8 @@ static std::unique_ptr<ProcessData> makeProcessData( dynamic_cast<NumLib::PETScNonlinearSolver*>(&nonlinear_solver)) { return std::make_unique<ProcessData>( - previous_timestep, current_timestep, std::move(timestepper), - Tag::Newton, *nonlinear_solver_petsc, std::move(conv_crit), - std::move(time_disc), process_id, process); + std::move(timestepper), Tag::Newton, *nonlinear_solver_petsc, + std::move(conv_crit), std::move(time_disc), process_id, process); } #endif // USE_PETSC diff --git a/ProcessLib/ProcessData.h b/ProcessLib/ProcessData.h index f88d79228a8..876c0be9233 100644 --- a/ProcessLib/ProcessData.h +++ b/ProcessLib/ProcessData.h @@ -23,16 +23,15 @@ namespace ProcessLib struct ProcessData { ProcessData( - NumLib::TimeStep timestep_previous_, NumLib::TimeStep timestep_current_, std::unique_ptr<NumLib::TimeStepAlgorithm>&& timestep_algorithm_, NumLib::NonlinearSolverTag const nonlinear_solver_tag_, NumLib::NonlinearSolverBase& nonlinear_solver_, std::unique_ptr<NumLib::ConvergenceCriterion>&& conv_crit_, std::unique_ptr<NumLib::TimeDiscretization>&& time_disc_, int const process_id_, Process& process_) - : timestep_previous(timestep_previous_), - timestep_current(timestep_current_), - timestep_algorithm(std::move(timestep_algorithm_)), + : timestep_algorithm(std::move(timestep_algorithm_)), + timestep_previous(timestep_algorithm->begin()), + timestep_current(timestep_previous), nonlinear_solver_tag(nonlinear_solver_tag_), nonlinear_solver(nonlinear_solver_), nonlinear_solver_status{true, 0}, @@ -47,9 +46,9 @@ struct ProcessData ProcessData& operator=(ProcessData const& pd) = delete; ProcessData& operator=(ProcessData&& pd) = delete; + std::unique_ptr<NumLib::TimeStepAlgorithm> timestep_algorithm; NumLib::TimeStep timestep_previous; NumLib::TimeStep timestep_current; - std::unique_ptr<NumLib::TimeStepAlgorithm> timestep_algorithm; //! Tag containing the missing type information necessary to cast the //! other members of this struct to their concrety types. -- GitLab