Repository navigation
Conversation
The PARAVIEW writer produces a single .vtu with one piece, which ParaView loads on one process: a large case does not fit in the memory of one process, and reading, filtering and rendering are serial. Users work around this by converting the output to .pvtu by hand. Add PARAVIEW_PARALLEL and SURFACE_PARAVIEW_PARALLEL, which write a .pvtu file listing one .vtu piece per rank, in a folder next to it. Every rank writes its own piece with no collective call, so the writing is also the fastest of the formats. A piece must be self-contained, so each rank collects the points used by its elements and asks the ranks that own them for their data (one all-to-all exchange). The connectivity is loaded without sorting, i.e. each rank writes the elements of its own partition, which are next to each other, so only the points on the partition boundary are duplicated: on a 1.9M element mesh the pieces hold 3% more points than the mesh on 4 ranks and 8% more on 16 ranks (the sorted partition would give +122% and +225%). The precision follows VOLUME_OUTPUT_PRECISION, and the connectivity uses Int64 when a piece needs it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LEL91DW5WPbPwgFtCvHga6
The flat plate solution is written with PARAVIEW_PARALLEL and SURFACE_PARAVIEW_PARALLEL on 2 ranks, and the .pvtu files are compared with reference files (su2code/TestCases, output_writers/). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L7oxzVir4zENrpy3K3W6Fm
…stCases Temporary, for the reference files of the TestCases PR. To be reverted to develop before merging. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L7oxzVir4zENrpy3K3W6Fm
This was referenced Oct 14, 2026
- The point data is passive: exchange it with the passive MPI wrapper, the AD wrapper treated the buffers as su2double and overran them. - Create the folder of the pieces with the one-argument mkdir on MinGW, as CPhysicalGeometry does. - Exchange the data one field at a time, so that the MPI counts are numbers of points and cannot overflow an int with many fields. - Write each array to the file as soon as it is built, instead of building the whole piece in memory first. - Decide Int32 or Int64 for the connectivity once for all pieces, so that the pieces and the .pvtu file declare the same type. - Fix a typo and the author of the new files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L7oxzVir4zENrpy3K3W6Fm
Create the files with owner read/write and group/others read permissions instead of fopen (0666 before the umask), and use size_t for the field counters, which are compared with the number of fields. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L7oxzVir4zENrpy3K3W6Fm
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed Changes
PARAVIEWalready writes in parallel: all ranks write into one shared.vtufile with MPI-IO. But that file has only one piece, so ParaView reads it on one process, even when ParaView runs with many processes (pvserver or pvbatch with MPI). A large case may not fit in the memory of that process, and reading, filtering and rendering are serial.This PR adds two output formats that ParaView can also read in parallel:
PARAVIEW_PARALLELSURFACE_PARAVIEW_PARALLELThey write a
.pvtufile plus a folder with one.vtupiece per MPI rank:VOLUME_OUTPUT_PRECISION. The connectivity uses Int64 when a piece needs it.PARAVIEWPARAVIEW_PARALLEL.vtu.pvtu+ one.vtuper rankPARAVIEWis not changed. Use it for small cases and when one file is easier to handle.Test case
New regression test
pvtu_writer/pvtu_surface_writer(parallel, 2 ranks),TestCases/output_writers/pvtu_output.cfg. It writes the flat plate solution with both new formats and compares the.pvtufiles with reference files. The pieces are binary, so the test harness cannot compare them.I checked the pieces by hand on a wing mesh (1.1M cells, 4 ranks), loaded in ParaView 5.13:
flow.pvtuhas the same 1 086 181 cells asflow.vtufromPARAVIEW.flow.vtu(max difference 0).surface_flow.pvtuloads correctly. 2 of its 4 pieces are empty because those ranks have no surface elements..pvtufile and folder (flow_00000.pvtu,flow_00000/, ...), with the same names asPARAVIEW. ParaView loadsflow_*.pvtuas one time series.Related Work
.github/workflows/regression.ymluses theparaviewParallelOutputbranch of TestCases until Reference files for the Paraview parallel writer test TestCases#213 is merged. I will set it back todevelopbefore merging.PR Checklist
pre-commit run --allto format old commits.🤖 Generated with Claude Code
https://claude.ai/code/session_01L7oxzVir4zENrpy3K3W6Fm