From 018ff84a32e2880a12fa8b256ecf457aca5e7eef Mon Sep 17 00:00:00 2001 From: Christoph Lehmann <christoph.lehmann@ufz.de> Date: Tue, 10 Jan 2023 09:30:09 +0100 Subject: [PATCH] [PL] Added submesh residuum output to createTimeLoop() --- ProcessLib/CreateTimeLoop.cpp | 32 ++++++++++++++++++++++++++++++++ ProcessLib/CreateTimeLoop.h | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/ProcessLib/CreateTimeLoop.cpp b/ProcessLib/CreateTimeLoop.cpp index 2e3bd214184..1c9944eb692 100644 --- a/ProcessLib/CreateTimeLoop.cpp +++ b/ProcessLib/CreateTimeLoop.cpp @@ -16,6 +16,7 @@ #include "ProcessLib/CreateProcessData.h" #include "ProcessLib/Output/CreateOutput.h" #include "ProcessLib/Output/Output.h" +#include "ProcessLib/Output/SubmeshResiduumOutputConfig.h" #include "TimeLoop.h" namespace ProcessLib @@ -70,6 +71,37 @@ std::unique_ptr<TimeLoop> createTimeLoop( : createOutputs(config.getConfigSubtree("outputs"), output_directory, meshes); + if (auto const submesh_residuum_output_config_tree = + //! \ogs_file_param{prj__time_loop__submesh_residuum_output} + config.getConfigSubtreeOptional("submesh_residuum_output"); + submesh_residuum_output_config_tree) + { + auto smroc = createSubmeshResiduumOutputConfig( + *submesh_residuum_output_config_tree, output_directory, meshes); + + for (auto& process : processes) + { + auto const& residuum_vector_names = + process->initializeAssemblyOnSubmeshes(smroc.meshes); + + for (auto& name : residuum_vector_names) + { + smroc.output.doNotProjectFromBulkMeshToSubmeshes( + name, MeshLib::MeshItemType::Node); + } + } + + outputs.push_back(std::move(smroc.output)); + } + else + { + // Submesh assembly must always be initialized. + for (auto& process : processes) + { + process->initializeAssemblyOnSubmeshes({}); + } + } + auto per_process_data = createPerProcessData( //! \ogs_file_param{prj__time_loop__processes} config.getConfigSubtree("processes"), processes, nonlinear_solvers, diff --git a/ProcessLib/CreateTimeLoop.h b/ProcessLib/CreateTimeLoop.h index 2e4e86ae472..130afb61b0d 100644 --- a/ProcessLib/CreateTimeLoop.h +++ b/ProcessLib/CreateTimeLoop.h @@ -34,7 +34,7 @@ namespace ProcessLib { class TimeLoop; class Process; -} +} // namespace ProcessLib namespace ProcessLib { -- GitLab