From dc16b31c5d120b126467c131a178b87e21e9fd6c Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Thu, 12 May 2022 09:25:25 +0200
Subject: [PATCH] Revert "[cli] Removed vtkMPIController dependency in cli."

This reverts commit 325168f0c9b826c9590ce1656c6510fcc7eaecf0.
---
 Applications/ApplicationsLib/Simulation.cpp | 12 +++++++++++-
 Applications/ApplicationsLib/Simulation.h   |  8 ++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/Applications/ApplicationsLib/Simulation.cpp b/Applications/ApplicationsLib/Simulation.cpp
index e59f96856ac..5886a5cb76c 100644
--- a/Applications/ApplicationsLib/Simulation.cpp
+++ b/Applications/ApplicationsLib/Simulation.cpp
@@ -25,9 +25,16 @@
 #include "ProcessLib/TimeLoop.h"
 
 Simulation::Simulation(int argc, char* argv[])
-    : linear_solver_library_setup(argc, argv), test_definition{std::nullopt}
+    : linear_solver_library_setup(argc, argv),
+#if defined(USE_PETSC)
+      controller(vtkSmartPointer<vtkMPIController>::New()),
+#endif
+      test_definition{std::nullopt}
 {
 #if defined(USE_PETSC)
+    controller->Initialize(&argc, &argv, 1);
+    vtkMPIController::SetGlobalController(controller);
+
     {  // Can be called only after MPI_INIT.
         int mpi_rank;
         MPI_Comm_rank(PETSC_COMM_WORLD, &mpi_rank);
@@ -161,4 +168,7 @@ Simulation::~Simulation()
         InSituLib::Finalize();
     }
 #endif
+#if defined(USE_PETSC)
+    controller->Finalize(1);
+#endif
 }
diff --git a/Applications/ApplicationsLib/Simulation.h b/Applications/ApplicationsLib/Simulation.h
index aff6ff254e6..de1ea40647a 100644
--- a/Applications/ApplicationsLib/Simulation.h
+++ b/Applications/ApplicationsLib/Simulation.h
@@ -10,6 +10,11 @@
  *
  */
 
+#ifdef USE_PETSC
+#include <vtkMPIController.h>
+#include <vtkSmartPointer.h>
+#endif
+
 #include "Applications/ApplicationsLib/LinearSolverLibrarySetup.h"
 #include "Applications/ApplicationsLib/TestDefinition.h"
 
@@ -39,6 +44,9 @@ public:
 
 private:
     ApplicationsLib::LinearSolverLibrarySetup linear_solver_library_setup;
+#if defined(USE_PETSC)
+    vtkSmartPointer<vtkMPIController> controller;
+#endif
     std::unique_ptr<ProjectData> project_data;
     std::optional<ApplicationsLib::TestDefinition> test_definition;
 };
-- 
GitLab