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