diff --git a/ProcessLib/CreateProcessData.cpp b/ProcessLib/CreateProcessData.cpp index cde92a31db7d93dc50ad631247380a49f2267053..921784342fa434fba84a5cc8edcc642997da80ba 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 f88d79228a875e375aaabce4aaf211b9ab7ad63e..876c0be9233201411181d3e14a57cf20f3f9968f 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.