diff --git a/ProcessLib/HeatConduction/HeatConductionProcess.cpp b/ProcessLib/HeatConduction/HeatConductionProcess.cpp index 94e61d257172fad85f1586acdc6bb599ea904a68..d341c30a4f9ab2476aa4209820f4b591b3e90821 100644 --- a/ProcessLib/HeatConduction/HeatConductionProcess.cpp +++ b/ProcessLib/HeatConduction/HeatConductionProcess.cpp @@ -47,9 +47,6 @@ void HeatConductionProcess::preTimestepConcreteProcess(GlobalVector const& x, auto& x0 = *_x_previous_timestep; MathLib::LinAlg::copy(x, x0); } - - auto& x0 = *_x_previous_timestep; - MathLib::LinAlg::setLocalAccessibleVector(x0); } void HeatConductionProcess::initializeConcreteProcess( diff --git a/ProcessLib/StaggeredCouplingTerm.cpp b/ProcessLib/StaggeredCouplingTerm.cpp index a6c7b0da65dcde82471730a9aaa7159c9c0a0fa6..7047b87f8298689a8a914c61379bfca67d243cfe 100644 --- a/ProcessLib/StaggeredCouplingTerm.cpp +++ b/ProcessLib/StaggeredCouplingTerm.cpp @@ -11,10 +11,40 @@ */ #include "StaggeredCouplingTerm.h" + +#include "MathLib/LinAlg/LinAlg.h" #include "Process.h" namespace ProcessLib { + +StaggeredCouplingTerm::StaggeredCouplingTerm( + std::unordered_map<std::type_index, Process const&> const& + coupled_processes_, + std::unordered_map<std::type_index, GlobalVector const&> const& coupled_xs_, + const double dt_, const bool empty_) + : coupled_processes(coupled_processes_), + coupled_xs(coupled_xs_), + dt(dt_), + empty(empty_) +{ + for (auto const& coupled_x_pair : coupled_xs) + { + auto const& coupled_x = coupled_x_pair.second; + MathLib::LinAlg::setLocalAccessibleVector(coupled_x); + } + + for (auto const& coupled_process_pair : coupled_processes) + { + auto const& coupled_pcs = coupled_process_pair.second; + auto const prevous_time_x = coupled_pcs.getPreviousTimeStepSolution(); + if (prevous_time_x) + { + MathLib::LinAlg::setLocalAccessibleVector(*prevous_time_x); + } + } +} + const StaggeredCouplingTerm createVoidStaggeredCouplingTerm() { std::unordered_map<std::type_index, Process const&> coupled_processes; diff --git a/ProcessLib/StaggeredCouplingTerm.h b/ProcessLib/StaggeredCouplingTerm.h index 8e362536a174a17e2f3df526815b912eda275757..6cbebcc99ab36eb0feaafacb63fdd8eca9df02d6 100644 --- a/ProcessLib/StaggeredCouplingTerm.h +++ b/ProcessLib/StaggeredCouplingTerm.h @@ -36,13 +36,7 @@ struct StaggeredCouplingTerm coupled_processes_, std::unordered_map<std::type_index, GlobalVector const&> const& coupled_xs_, - const double dt_, const bool empty_ = false) - : coupled_processes(coupled_processes_), - coupled_xs(coupled_xs_), - dt(dt_), - empty(empty_) - { - } + const double dt_, const bool empty_ = false); /// References to the coupled processes are distinguished by the keys of /// process types.