From c41f1c247fd8053378af330b0d73c075234f4bb6 Mon Sep 17 00:00:00 2001 From: Thomas Fischer <thomas.fischer@ufz.de> Date: Tue, 27 Nov 2018 13:17:56 +0100 Subject: [PATCH] [PL/Out] Read multiple domains/meshes for output. --- ProcessLib/Output/CreateOutput.cpp | 17 ++++++++++++++++- ProcessLib/Output/Output.cpp | 6 ++++-- ProcessLib/Output/Output.h | 4 +++- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/ProcessLib/Output/CreateOutput.cpp b/ProcessLib/Output/CreateOutput.cpp index 2e0555aefa9..44e7c5ae5fa 100644 --- a/ProcessLib/Output/CreateOutput.cpp +++ b/ProcessLib/Output/CreateOutput.cpp @@ -98,6 +98,20 @@ std::unique_ptr<Output> createOutput(const BaseLib::ConfigTree& config, ProcessOutput process_output{output_variables, output_residuals}; + std::vector<std::string> mesh_names_for_output; + //! \ogs_file_param{prj__time_loop__output__meshes} + if (auto const meshes_config = config.getConfigSubtreeOptional("meshes")) + { + //! \ogs_file_param{prj__time_loop__output__meshes__mesh} + for (auto mesh_config : meshes_config->getConfigParameterList("mesh")) + { + mesh_names_for_output.push_back( + mesh_config.getValue<std::string>()); + INFO("Configure mesh '%s' for output.", + mesh_names_for_output.back().c_str()); + } + } + auto fixed_output_times_ptr = //! \ogs_file_param{prj__time_loop__output__fixed_output_times} config.getConfigParameterOptional<std::vector<double>>( @@ -117,7 +131,8 @@ std::unique_ptr<Output> createOutput(const BaseLib::ConfigTree& config, data_mode, output_iteration_results, std::move(repeats_each_steps), std::move(fixed_output_times), - std::move(process_output)); + std::move(process_output), + std::move(mesh_names_for_output)); } } // namespace ProcessLib diff --git a/ProcessLib/Output/Output.cpp b/ProcessLib/Output/Output.cpp index 9313ba9ffe6..c015f4ecd0f 100644 --- a/ProcessLib/Output/Output.cpp +++ b/ProcessLib/Output/Output.cpp @@ -86,7 +86,8 @@ Output::Output(std::string output_directory, std::string prefix, bool const output_nonlinear_iteration_results, std::vector<PairRepeatEachSteps> repeats_each_steps, std::vector<double>&& fixed_output_times, - ProcessOutput&& process_output) + ProcessOutput&& process_output, + std::vector<std::string>&& mesh_names_for_output) : _output_directory(std::move(output_directory)), _output_file_prefix(std::move(prefix)), _output_file_compression(compress_output), @@ -94,7 +95,8 @@ Output::Output(std::string output_directory, std::string prefix, _output_nonlinear_iteration_results(output_nonlinear_iteration_results), _repeats_each_steps(std::move(repeats_each_steps)), _fixed_output_times(std::move(fixed_output_times)), - _process_output(std::move(process_output)) + _process_output(std::move(process_output)), + _mesh_names_for_output(mesh_names_for_output) { } diff --git a/ProcessLib/Output/Output.h b/ProcessLib/Output/Output.h index d45d39135c7..43c8f671d77 100644 --- a/ProcessLib/Output/Output.h +++ b/ProcessLib/Output/Output.h @@ -44,7 +44,8 @@ public: bool const output_nonlinear_iteration_results, std::vector<PairRepeatEachSteps> repeats_each_steps, std::vector<double>&& fixed_output_times, - ProcessOutput&& process_output); + ProcessOutput&& process_output, + std::vector<std::string>&& mesh_names_for_output); //! TODO doc. Opens a PVD file for each process. void addProcess(ProcessLib::Process const& process, const int process_id); @@ -118,6 +119,7 @@ private: bool shallDoOutput(unsigned timestep, double const t); ProcessOutput const _process_output; + std::vector<std::string> const _mesh_names_for_output; }; -- GitLab