Skip to main content

Plot3D Utilities

A python plot3D library for reading, writing, finding connectivity, and post processing for Plot3D data files.

Install Instructions

To install simply do a pip install plot3d

Link to documentation

Building the docs

  1. From the repo root, run pip install uv (if you don't already have uv) then uv sync --extra docs (and commit the refreshed uv.lock) to capture the new Sphinx dependencies.
  2. Build locally with uv run sphinx-build -b html docs docs/_build/html or use uv run sphinx-autobuild for live previews.
  3. Push the branch to main, then enable GitHub Pages (Settings → Pages → “GitHub Actions”) so the new workflow can deploy your merged Sphinx docs automatically.

Metis

Metis is used to group the blocks to be evaluated. So say you have 1000 blocks and 8 CPU. The blocks are split up and sent to the CPU or GPU. The split is done with weighting to block size and connectivity this way each processor is evaluating similar number of nodes. Plot3D Library will work without metis but metis functionality wont be available.

Partitioning is backed by metis-rs, a pure Rust reimplementation of METIS with Python bindings. It ships as a prebuilt wheel, so pip install plot3d (which pulls in metis-rs) is all that's needed on Linux, Mac, and Windows — no separate METIS install, no compiler, and no METIS_DLL/LD_LIBRARY_PATH setup required.

Tutorials

Reading Writing and Viewing Plot3D files

Read/Write File Formats (Binary, ASCII, Fortran, Endianness)

Periodicity with axially rotated and copied blocks

Translated periodicity

Merging Blocks

Flatten a mesh into a finite-volume graph, and solve on it: a converging-diverging duct

Cross-plane connectivity: why some face matches need more than lb/ub

Learning Python with VSCode

Learning Bash for Automating Tasks

Tips

Never use jupyter notebook unless you are done with your .py file and want to demo code. Jupyter is painful for debugging.

Useful VS Code Extensions

Contributors

Name Position Dates Contribution
Paht Juangphanich Owner 2021- Creator https://github.com/pjuangph
David Rigby Advisor Fall 2021 Block splitting help
Christopher Keokot Intern Fall 2021 Plot3D ReactJS GUI
Tim Beach Advisor Fall 2021 Block splitting help

Connectivity & Orientation

connectivity_fast() finds matching faces between blocks and returns orientation data for each match. When two faces lie on different constant planes (e.g., a K-face connects to a J-face), the varying axes differ and an axis swap may be needed. This is encoded as a permutation_index (0–7) using 3 bits:

Bit Flag Meaning
0 u_reversed Flip first varying axis
1 v_reversed Flip second varying axis
2 swapped Transpose u and v axes

Each face match includes an orientation dict:

face_matches, outer_faces = connectivity_fast(blocks)
# Each match in face_matches has:
#   match['orientation'] = {
#       'permutation_index': int,   # 0-7
#       'plane': str,               # 'in-plane' or 'cross-plane'
#       'permutation_matrix': list  # 2x2 signed permutation matrix
#   }

The 8 permutation matrices are also available as plot3d.PERMUTATION_MATRICES.

Documentation

Rust Version

The rust version is available here. This version of the code is useful for creating CFD solvers in rust Plot3D-RS It has most of the functionality of the python version except for some of the GlennHT pre-processing code.

Funding

The development of this library was supported by NASA AATT (Advance Air Transport Technology). The development is supported by NASA Glenn LTE Branch. Anyone is welcome to contribute by submitting a pull request.

License

NASA Open Source Agreement

Release files for plot3d 1.12.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for plot3d 1.12.0
File Size Uploaded
plot3d-1.12.0.tar.gz 77.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for plot3d 1.12.0
File Interpreter ABI Platform
plot3d-1.12.0-py3-none-any.whl Python 3 none any Details

Total release size: 77.2 MB

Release files / plot3d-1.12.0.tar.gz

Download URL plot3d-1.12.0.tar.gz
Size 77.0 MB
Tags Source
SHA-256 checksum
How to use checksums
3cde1a9b504ce65603581bc58172efa03c8e4c65a73bee6a1a85b8ed1e82718a
BLAKE2b-256 checksum
How to use checksums
60cca265f34c7f45753351c3cfeda5430a5e010316534f8914e4a36fd19cf8c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.

Transparency log

Release files / plot3d-1.12.0-py3-none-any.whl

Download URL plot3d-1.12.0-py3-none-any.whl
Size 186.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
426dc8741fe07aa574cd1b559ca04e4b8cceed5ea515473415dbdd6810c39b35
BLAKE2b-256 checksum
How to use checksums
7007c317dc50be4900fe3a7d1a986009dd4144c41447360907ede3b24dd8faff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.

Transparency log

Release history Release notifications | RSS feed

1.13.0

2 release files

This release

1.12.0 This release

2 release files

1.10.1

2 release files

1.10.0

2 release files

1.9.5

2 release files

1.9.4

2 release files

1.9.3

2 release files

1.9.2

2 release files

1.9.1

2 release files

1.9.0

2 release files

1.8.2

2 release files

1.8.1

2 release files

1.8.0

2 release files

1.7.14

2 release files

1.7.13

2 release files

1.7.12

2 release files

1.7.10

2 release files

1.7.9

2 release files

1.7.8

2 release files

1.7.7

2 release files

1.7.6

2 release files

1.7.5

2 release files

1.7.4

2 release files

1.7.3

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.9

2 release files

1.6.8

2 release files

1.6.7

2 release files

1.6.6

1 release file

1.6.5

2 release files

1.6.4

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.16

2 release files

1.5.15

2 release files

1.5.14

2 release files

1.5.13

2 release files

1.5.12

2 release files

1.5.11

2 release files

1.5.10

2 release files

1.5.8

2 release files

1.5.7

2 release files

1.5.6

2 release files

1.5.5

2 release files

1.5.4

2 release files

1.5.3

2 release files

1.5.2

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.9

2 release files

1.4.8

2 release files

1.4.7

2 release files

1.4.6

2 release files

1.4.5

2 release files

1.4.4

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.3.9

2 release files

1.3.8

2 release files

1.3.7

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

0.1.5

1 release file

0.1.4

1 release file

0.1.3

2 release files

0.1.2

1 release file

0.1.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page