В настоящее время я столкнулся с проблемой с VTK, C ++ и ParaView.
Я пытаюсь записать параллельный VTS-файл (.pvts
) в самописной симуляции.Мне удалось записать каждый .vts
-файл, используя vtkXMLPStructuredGridWriter
.Этот писатель генерирует .vts
-файл для каждого процесса, запущенного с MPI.Эти файлы названы как <timestep>_<mpi_rank>.vts
.Если я открою все эти файлы в ParaView, они будут расположены правильно, и я смогу использовать фильтры для них.
К сожалению, когда я открываю .pvts-файл, ParaView что-то портит с координатами.Чтобы прояснить, что я имею в виду, я добавил скриншот отрендеренного файла .pvts
-файла в ParaView. ( 1 ) Как видите, диагональные линии кажутся неправильными.Я также добавил другое изображение с правильно отрендеренными отдельными файлами.( 2 )
Я также добавил содержимое моего .pvts
-файла.
<?xml version="1.0"?>
<VTKFile type="PStructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64">
<PStructuredGrid WholeExtent="0 203 0 203 0 203" GhostLevel="4">
<PPointData>
<PDataArray type="Float64" Name="phi"/>
<PDataArray type="Float64" Name="psi"/>
<PDataArray type="Float64" Name="L"/>
<PDataArray type="Float64" Name="R"/>
</PPointData>
<PPoints>
<PDataArray type="Float32" Name="Points" NumberOfComponents="3"/>
</PPoints>
<Piece Extent="0 103 0 103 0 103" Source="0_000000_0.vts"/>
<Piece Extent="0 103 0 103 100 203" Source="0_000000_1.vts"/>
<Piece Extent="0 103 100 203 0 103" Source="0_000000_2.vts"/>
<Piece Extent="0 103 100 203 100 203" Source="0_000000_3.vts"/>
<Piece Extent="100 203 0 103 0 103" Source="0_000000_4.vts"/>
<Piece Extent="100 203 0 103 100 203" Source="0_000000_5.vts"/>
<Piece Extent="100 203 100 203 0 103" Source="0_000000_6.vts"/>
<Piece Extent="100 203 100 203 100 203" Source="0_000000_7.vts"/>
</PStructuredGrid>
</VTKFile>
Есть ли у кого-нибудь опыт написания .pvts
-файлов на C ++а MPI?Я также сжал восемь файлов .vts
для вас, чтобы вы могли проверить это в ParaView. Скачать
Спасибо!