diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp index d995718043a40a508a712c0fac17c2836757987c..faa16291ef1d36d57afa619b3ee2ae668a389fe3 100644 --- a/Applications/ApplicationsLib/ProjectData.cpp +++ b/Applications/ApplicationsLib/ProjectData.cpp @@ -688,7 +688,7 @@ void ProjectData::parseTimeLoop(BaseLib::ConfigTree const& config, DBUG("Reading time loop configuration."); _time_loop = ProcessLib::createUncoupledProcessesTimeLoop( - config, output_directory, _processes, _nonlinear_solvers); + config, output_directory, _processes, _nonlinear_solvers, _mesh_vec); if (!_time_loop) { diff --git a/ProcessLib/Output/CreateOutput.cpp b/ProcessLib/Output/CreateOutput.cpp index 44e7c5ae5faab3267a532417c878277544b3275e..0526dbd8d66381d222d75d021d56bd635b628b9f 100644 --- a/ProcessLib/Output/CreateOutput.cpp +++ b/ProcessLib/Output/CreateOutput.cpp @@ -17,12 +17,16 @@ #include "BaseLib/ConfigTree.h" #include "BaseLib/FileTools.h" +#include "MeshLib/Mesh.h" + #include "Output.h" namespace ProcessLib { -std::unique_ptr<Output> createOutput(const BaseLib::ConfigTree& config, - std::string const& output_directory) +std::unique_ptr<Output> createOutput( + const BaseLib::ConfigTree& config, + std::string const& output_directory, + std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes) { DBUG("Parse output configuration:"); @@ -127,12 +131,11 @@ std::unique_ptr<Output> createOutput(const BaseLib::ConfigTree& config, //! \ogs_file_param{prj__time_loop__output__output_iteration_results} config.getConfigParameter<bool>("output_iteration_results", false); - return std::make_unique<Output>(output_directory, prefix, compress_output, - data_mode, output_iteration_results, - std::move(repeats_each_steps), - std::move(fixed_output_times), - std::move(process_output), - std::move(mesh_names_for_output)); + return std::make_unique<Output>( + output_directory, prefix, compress_output, data_mode, + output_iteration_results, std::move(repeats_each_steps), + std::move(fixed_output_times), std::move(process_output), + std::move(mesh_names_for_output), meshes); } } // namespace ProcessLib diff --git a/ProcessLib/Output/CreateOutput.h b/ProcessLib/Output/CreateOutput.h index 34847b5e4ed9420531657a295d66d1348793487e..8504a9bc7512a54fddaf3940242e60ffc04584ec 100644 --- a/ProcessLib/Output/CreateOutput.h +++ b/ProcessLib/Output/CreateOutput.h @@ -11,12 +11,18 @@ #include <memory> #include <string> +#include <vector> namespace BaseLib { class ConfigTree; } +namespace MeshLib +{ +class Mesh; +} + namespace ProcessLib { class Process; @@ -25,7 +31,9 @@ class Output; namespace ProcessLib { -std::unique_ptr<Output> createOutput(const BaseLib::ConfigTree& config, - const std::string& output_directory); +std::unique_ptr<Output> createOutput( + const BaseLib::ConfigTree& config, + const std::string& output_directory, + std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes); } // namespace ProcessLib diff --git a/ProcessLib/Output/Output.cpp b/ProcessLib/Output/Output.cpp index c015f4ecd0f91f7f19380f529390723f6a1e5a08..cf4301f07564677fa2a1db7eb01d197e4a692ba4 100644 --- a/ProcessLib/Output/Output.cpp +++ b/ProcessLib/Output/Output.cpp @@ -87,7 +87,8 @@ Output::Output(std::string output_directory, std::string prefix, std::vector<PairRepeatEachSteps> repeats_each_steps, std::vector<double>&& fixed_output_times, ProcessOutput&& process_output, - std::vector<std::string>&& mesh_names_for_output) + std::vector<std::string>&& mesh_names_for_output, + std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes) : _output_directory(std::move(output_directory)), _output_file_prefix(std::move(prefix)), _output_file_compression(compress_output), @@ -96,7 +97,8 @@ Output::Output(std::string output_directory, std::string prefix, _repeats_each_steps(std::move(repeats_each_steps)), _fixed_output_times(std::move(fixed_output_times)), _process_output(std::move(process_output)), - _mesh_names_for_output(mesh_names_for_output) + _mesh_names_for_output(mesh_names_for_output), + _meshes(meshes) { } diff --git a/ProcessLib/Output/Output.h b/ProcessLib/Output/Output.h index 43c8f671d77bb264b5c9ce06c99496555b5a195e..bff89a0bcc8ab48ad29575ae624ad75b34d69979 100644 --- a/ProcessLib/Output/Output.h +++ b/ProcessLib/Output/Output.h @@ -45,7 +45,8 @@ public: std::vector<PairRepeatEachSteps> repeats_each_steps, std::vector<double>&& fixed_output_times, ProcessOutput&& process_output, - std::vector<std::string>&& mesh_names_for_output); + std::vector<std::string>&& mesh_names_for_output, + std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes); //! TODO doc. Opens a PVD file for each process. void addProcess(ProcessLib::Process const& process, const int process_id); @@ -120,6 +121,7 @@ private: ProcessOutput const _process_output; std::vector<std::string> const _mesh_names_for_output; + std::vector<std::unique_ptr<MeshLib::Mesh>> const& _meshes; }; diff --git a/ProcessLib/UncoupledProcessesTimeLoop.cpp b/ProcessLib/UncoupledProcessesTimeLoop.cpp index 92ab2a3054e1dae771c65dbadbdd2796f2f55526..e0f1acff175e513a10b7e7fc8aec0ead6e67394f 100644 --- a/ProcessLib/UncoupledProcessesTimeLoop.cpp +++ b/ProcessLib/UncoupledProcessesTimeLoop.cpp @@ -118,7 +118,8 @@ std::unique_ptr<UncoupledProcessesTimeLoop> createUncoupledProcessesTimeLoop( BaseLib::ConfigTree const& config, std::string const& output_directory, const std::map<std::string, std::unique_ptr<Process>>& processes, const std::map<std::string, std::unique_ptr<NumLib::NonlinearSolverBase>>& - nonlinear_solvers) + nonlinear_solvers, + std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes) { auto const& coupling_config //! \ogs_file_param{prj__time_loop__global_process_coupling} @@ -151,7 +152,8 @@ std::unique_ptr<UncoupledProcessesTimeLoop> createUncoupledProcessesTimeLoop( auto output = //! \ogs_file_param{prj__time_loop__output} - createOutput(config.getConfigSubtree("output"), output_directory); + createOutput(config.getConfigSubtree("output"), output_directory, + meshes); auto per_process_data = createPerProcessData( //! \ogs_file_param{prj__time_loop__processes} diff --git a/ProcessLib/UncoupledProcessesTimeLoop.h b/ProcessLib/UncoupledProcessesTimeLoop.h index 308b809f9659d682e45c39b134a354153199897d..0f4a8af9949e8653434ba6ffca4722290ce21d3f 100644 --- a/ProcessLib/UncoupledProcessesTimeLoop.h +++ b/ProcessLib/UncoupledProcessesTimeLoop.h @@ -141,6 +141,7 @@ std::unique_ptr<UncoupledProcessesTimeLoop> createUncoupledProcessesTimeLoop( BaseLib::ConfigTree const& config, std::string const& output_directory, std::map<std::string, std::unique_ptr<Process>> const& processes, std::map<std::string, std::unique_ptr<NumLib::NonlinearSolverBase>> const& - nonlinear_solvers); + nonlinear_solvers, + std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes); } // namespace ProcessLib