41 [[maybe_unused]]
const int num_partitions,
42 [[maybe_unused]]
const int rank)
46 ERR(
"VtuInterface::write(): No mesh specified.");
54 auto* ghost_cell_property =
57 if (ghost_cell_property)
61 ->is_for_output =
true;
70 vtkNew<MeshLib::VtkMappedMeshSource> vtkSource;
71 vtkSource->SetMesh(
_mesh);
73 vtkSmartPointer<UnstructuredGridWriter> vtuWriter =
74 vtkSmartPointer<UnstructuredGridWriter>::New();
77 vtuWriter->SetInputData(vtkSource->GetOutput());
81 vtuWriter->SetCompressorTypeToZLib();
85 vtuWriter->SetCompressorTypeToNone();
91 vtuWriter->SetEncodeAppendedData(1);
96 vtkSmartPointer<vtkUnstructuredGrid> tempGrid =
97 vtkSmartPointer<vtkUnstructuredGrid>::New();
98 tempGrid->DeepCopy(vtkSource->GetOutput());
99 vtuWriter->SetInputDataObject(tempGrid);
102 vtuWriter->SetFileName(file_name.c_str());
105 if constexpr (std::is_same_v<UnstructuredGridWriter,
106 vtkXMLPUnstructuredGridWriter>)
109 vtkSmartPointer<vtkMPICommunicator> vtk_comm =
110 vtkSmartPointer<vtkMPICommunicator>::New();
112 vtkMPICommunicatorOpaqueComm vtk_opaque_comm(&mpi_comm);
113 vtk_comm->InitializeExternal(&vtk_opaque_comm);
115 vtkSmartPointer<vtkMPIController> vtk_mpi_ctrl =
116 vtkSmartPointer<vtkMPIController>::New();
117 vtk_mpi_ctrl->SetCommunicator(vtk_comm);
119 vtuWriter->SetController(vtk_mpi_ctrl);
121 vtuWriter->SetGhostLevel(1);
122 vtuWriter->SetNumberOfPieces(num_partitions);
123 vtuWriter->SetStartPiece(rank);
124 vtuWriter->SetEndPiece(rank);
128#ifdef VTK_USE_64BIT_IDS
129 vtuWriter->SetHeaderTypeToUInt64();
133 return (vtuWriter->Write() > 0);