diff --git a/ProcessLib/Output/CreateOutput.cpp b/ProcessLib/Output/CreateOutput.cpp index 2e0555aefa9de61051e7fb8d35e5592dbe42976b..44e7c5ae5faab3267a532417c878277544b3275e 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 9313ba9ffe644960c22334763f9c167c9d25b403..c015f4ecd0f91f7f19380f529390723f6a1e5a08 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 d45d39135c7a08c099e2a71eff9b626cf82f6d2b..43c8f671d77bb264b5c9ce06c99496555b5a195e 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; };