30 [[maybe_unused]]
const int num_partitions,
31 [[maybe_unused]]
const int rank)
35 ERR(
"VtuInterface::write(): No mesh specified.");
40 if (
_mesh->getProperties().existsPropertyVector<
unsigned char>(
56 vtkNew<MeshLib::VtkMappedMeshSource> vtkSource;
57 vtkSource->SetMesh(
_mesh);
60 vtkSmartPointer<UnstructuredGridWriter> vtuWriter =
61 vtkSmartPointer<UnstructuredGridWriter>::New();
64 vtuWriter->SetInputData(vtkSource->GetOutput());
68 vtuWriter->SetCompressorTypeToZLib();
72 vtuWriter->SetCompressorTypeToNone();
78 vtuWriter->SetEncodeAppendedData(1);
83 vtkSmartPointer<vtkUnstructuredGrid> tempGrid =
84 vtkSmartPointer<vtkUnstructuredGrid>::New();
85 tempGrid->DeepCopy(vtkSource->GetOutput());
86 vtuWriter->SetInputDataObject(tempGrid);
89 vtuWriter->SetFileName(file_name.c_str());
92 if constexpr (std::is_same_v<UnstructuredGridWriter,
93 vtkXMLPUnstructuredGridWriter>)
96 vtkSmartPointer<vtkMPICommunicator> vtk_comm =
97 vtkSmartPointer<vtkMPICommunicator>::New();
99 vtkMPICommunicatorOpaqueComm vtk_opaque_comm(&mpi_comm);
100 vtk_comm->InitializeExternal(&vtk_opaque_comm);
102 vtkSmartPointer<vtkMPIController> vtk_mpi_ctrl =
103 vtkSmartPointer<vtkMPIController>::New();
104 vtk_mpi_ctrl->SetCommunicator(vtk_comm);
106 vtuWriter->SetController(vtk_mpi_ctrl);
108 vtuWriter->SetGhostLevel(1);
109 vtuWriter->SetNumberOfPieces(num_partitions);
110 vtuWriter->SetStartPiece(rank);
111 vtuWriter->SetEndPiece(rank);
115#ifdef VTK_USE_64BIT_IDS
116 vtuWriter->SetHeaderTypeToUInt64();
120 return (vtuWriter->Write() > 0);