diff --git a/MeshLib/IO/VtkIO/PVDFile.cpp b/MeshLib/IO/VtkIO/PVDFile.cpp index 2150b5caff9173fa0c4b39fdf80b02ffb014e08a..e8fa6b26faadbdc1659103043b40f04d97970db0 100644 --- a/MeshLib/IO/VtkIO/PVDFile.cpp +++ b/MeshLib/IO/VtkIO/PVDFile.cpp @@ -14,6 +14,10 @@ #include <iomanip> #include <limits> +#ifdef USE_PETSC +#include <mpi.h> +#endif + #include "BaseLib/Error.h" #include "MeshLib/IO/VtkIO/VtuInterface.h" @@ -24,10 +28,19 @@ namespace IO void PVDFile::addVTUFile(const std::string& vtu_fname, double timestep) { #ifdef USE_PETSC - auto const vtu_file_name = - getVtuFileNameForPetscOutputWithoutExtension(vtu_fname); + int mpi_size; + MPI_Comm_size(MPI_COMM_WORLD, &mpi_size); + if (mpi_size == 1) + { + _datasets.emplace_back(timestep, vtu_fname); + } + else + { + auto const vtu_file_name = + getVtuFileNameForPetscOutputWithoutExtension(vtu_fname); - _datasets.emplace_back(timestep, vtu_file_name + ".pvtu"); + _datasets.emplace_back(timestep, vtu_file_name + ".pvtu"); + } #else _datasets.emplace_back(timestep, vtu_fname); #endif diff --git a/MeshLib/IO/VtkIO/VtuInterface.cpp b/MeshLib/IO/VtkIO/VtuInterface.cpp index 9c8615ee1961d53b0a7ff177a9883661ad090563..56a3b98c8b3fe6fe64d2c1d4e7735671ea7fa596 100644 --- a/MeshLib/IO/VtkIO/VtuInterface.cpp +++ b/MeshLib/IO/VtkIO/VtuInterface.cpp @@ -142,12 +142,16 @@ bool VtuInterface::writeToFile(std::filesystem::path const& file_path) MPI_Initialized(&mpi_init); if (mpi_init == 1) { + int mpi_size; + MPI_Comm_size(MPI_COMM_WORLD, &mpi_size); + if (mpi_size == 1) + { + return writeVTU<vtkXMLUnstructuredGridWriter>(file_path.string()); + } auto const vtu_file_name = getVtuFileNameForPetscOutputWithoutExtension(file_path.string()); int rank; MPI_Comm_rank(MPI_COMM_WORLD, &rank); - int mpi_size; - MPI_Comm_size(MPI_COMM_WORLD, &mpi_size); return writeVTU<vtkXMLPUnstructuredGridWriter>(vtu_file_name + ".pvtu", mpi_size, rank); }