diff --git a/Applications/ApplicationsLib/Simulation.cpp b/Applications/ApplicationsLib/Simulation.cpp index e59f96856acff7e8f2a74742745c4ec9b94bd5db..5886a5cb76ceaef1d45a6bcad9efbc09d329e0a8 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 aff6ff254e6f31fd4c6b7205fdcecb69d12e47c6..de1ea40647acc52a9f0f004b8aa03d915273a23f 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; };