Skip to main content

OpenNDM

Open Nodal Diffusion Method — a three-dimensional, multi-group nodal diffusion solver for reactor core analysis, with a C++17 core, a pybind11 Python API, and a group-constant generation path built natively on the OpenMC stack.

CI Documentation PyPI conda-forge License: MIT

OpenNDM is the second stage of a two-step lattice → core calculation scheme in which OpenMC performs the lattice-physics stage. Its distinguishing goal:

A user who already has an openmc.mgxs.Library object should be able to run a full-core nodal calculation without writing a single line of format-conversion code.

See docs/requirements.md for the full software requirements specification, and docs/status.md for exactly which of those requirements are implemented today.


Status

Pre-1.0 (v0.3.0). The static solver is verified against an analytic solution and the published IAEA-2D/3D and BIBLIS-2D benchmarks. Transients and steady thermal-hydraulic feedback are implemented; transients with feedback and pin power reconstruction are not. docs/status.md maps every requirement ID to its state — read it before assuming a feature exists.

Implemented and tested:

  • 3D Cartesian geometry on an abstract node/surface graph, non-uniform mesh, inactive core-map positions, per-face zero-flux / vacuum / reflective / albedo boundaries
  • Arbitrary group count with full G×G scattering including upscattering, assembly discontinuity factors with assembly rotation, branch-parameterised libraries with multilinear interpolation, and √T Doppler feedback
  • Three run-time-selectable kernels: FDM, polynomial nodal (NEM) and semi-analytic nodal (SANM), coupled through a nonlinear two-node CMFD iteration, with a one-node problem closing the boundary faces
  • Power iteration with Wielandt shift, ILU0-preconditioned BiCGSTAB inners, forward / adjoint / fixed-source modes, critical boron search
  • Control rod banks addressed by position, a cusping correction for a partially rodded node, and integral and differential worth curves
  • Transients: θ-weighted time integration with delayed precursors integrated in closed form
  • Thermal-hydraulic feedback at steady state: closed-channel energy balance with homogeneous equilibrium boiling, radial pin conduction and the effective Doppler temperature, IAPWS-IF97 water properties, and a Picard coupling that also drives a boron search against the coupled state. Any external solver can take the channel model's place through the ThermalSolver protocol
  • openndm.gc ingestion of openmc.mgxs.Library, mgxs.h5 files and statepoints, with OpenMC as an optional dependency, validated end to end against a real OpenMC run (C-1)
  • HDF5 statepoint output and an openndm.StatePoint reader, and VTK export for ParaView

Installation

pip install openndm      # wheels for Linux and macOS, Python 3.10 to 3.13

From a checkout, pip install . builds the extension with a C++17 compiler; CMake and ninja come from pip. CONTRIBUTING.md has the development setup.

OpenMC is optional and only needed for openndm.gc.

Examples

Four executed notebooks live in examples/. The one the package exists for is 02_openmc_to_openndm.ipynb: an OpenMC lattice calculation becomes a nodal core calculation with no format conversion written by hand. On the run committed there it reproduces OpenMC's k_inf to 12 pcm, 0.2σ.

docs/user-guide.md is the reference.

Quick start

import numpy as np
import openndm

# A 2-group, 3D quarter-core model.
lib = openndm.XSLibrary(n_groups=2, n_compositions=2)
lib.set_composition(
    0,                                                 # fuel
    D=[1.5, 0.4], absorption=[0.010, 0.085],
    nu_fission=[0.0, 0.135], kappa_fission=[0.0, 0.135],
    chi=[1.0, 0.0], scatter=[[0.0, 0.020], [0.0, 0.0]],
)
lib.set_composition(
    1,                                                 # reflector
    D=[2.0, 0.3], absorption=[0.0, 0.010],
    scatter=[[0.0, 0.040], [0.0, 0.0]],
)
lib.finalize()                                         # validates, returns warnings

core = np.zeros((10, 9, 9), dtype=int)
core[:, 8, :] = 1                                      # radial reflector
core[:, :, 8] = 1

geom = openndm.Geometry.from_lattice(
    core, pitch=(20.0, 20.0, 20.0),
    boundaries={"x_min": "reflective", "y_min": "reflective",
                "x_max": "zero_flux", "y_max": "zero_flux",
                "z_min": "vacuum", "z_max": "vacuum"},
)

model = openndm.Model(geom, lib, openndm.Settings(kernel="sanm", verbosity=0))
result = model.solve()

print(result.k_eff)              # 1.036855
print(result.radial_power())     # assembly-wise relative power, (9, 9)
print(result.f_q, result.f_dh)   # peaking factors

Verification

pytest tests/python runs the verification suite, and ctest --test-dir build the C++ one. The checks that pin down correctness:

  • V-1, analytic buckling. A bare homogeneous cuboid against k = νΣf / (Σa + D B²). The nodal kernels converge at fourth order and FDM at second; at 64 nodes per side the error is under 0.01 pcm nodal and 0.86 pcm FDM.
  • V-1, reflected slab. A core plus reflector against the transcendental criticality condition D₁B tan(B a) = D₂κ coth(κb), which exercises a material interface, a reflector and two boundary conditions at once.
  • Albedo boundary. Against its own analytic condition D B tan(B a) = γ across five albedo values, plus all three limits: β=1 is reflective, β=0 is vacuum, β=−1 is zero flux.
  • V-2, manufactured solutions. The full multi-group operator, scattering and fission included, against a solution chosen in advance, with the observed order of accuracy of each kernel.
  • V-3, kernel consistency. Coarse-mesh SANM and NEM against a refined FDM solution of the same problem. On the IAEA-2D core map SANM and NEM agree to the last digit printed from four nodes per assembly onward, and all three kernels converge to the same eigenvalue under refinement. This is the check that catches a wrong transverse leakage, a wrong discontinuity factor convention or a broken two-node closure; mesh refinement alone would not, because a kernel with any of those defects still converges smoothly, just to the wrong answer.
  • V-4, adjoint reciprocity. Forward and adjoint eigenvalues agree to under 1 pcm while the flux shapes differ.
  • V-4, perturbation theory. First-order adjoint-weighted reactivity against a direct re-solve. This tests the adjoint flux shape; eigenvalue equality alone only confirms the operator was transposed.
  • Neutron balance. Every node conserves neutrons to 3e-12, and the core-wide leakage-plus-absorption-equals-production identity closes to 1e-9.
  • Symmetry. A symmetric core map gives a symmetric power; rotating or mirroring a lopsided core is a pure relabelling.
  • Determinism. Bit-identical results on 1, 2, 4 and 8 threads.

OpenMC coupling

tests/validation/ runs the specification's coupling validation cases.

C-1 is a uniform infinite medium in OpenMC with continuous-energy physics, whose multi-group cross sections are then solved by OpenNDM. It isolates the translation path from every other source of error, and reproduces OpenMC's k_inf to 12 pcm, 1.2σ over 90M histories.

C-2 is a single reflected assembly, which must give discontinuity factors of exactly 1.0 when homogeneous and a thermal factor above 1.0 when it is a pin lattice. Measured: 1.0 to 1.2σ, and 1.045 thermal / 0.993 fast.

Between them these found three defects that stand-in test doubles could not have caught, two of which fail silently — see tests/validation/README.md.

Benchmarks

Deck Reference Result
Bare cuboid, analytic k = νΣf / (Σa + D B²) nodal kernels 0.01 pcm at 32 nodes/side
IAEA-2D PWR published k_eff = 1.02959 SANM +21.5 pcm at one node per assembly
IAEA-3D PWR published k_eff = 1.02903 SANM +69.2 pcm at a 20 cm axial mesh
BIBLIS-2D PWR published k_eff = 1.02511 SANM −1.4 pcm at one node per assembly
NEACRP rod ejection, initial states published critical boron within 3.5 ppm cold, 1.7 ppm coupled at full power
LMW transient none in the specification reported, not compared

All four static decks meet the specification's 100 pcm acceptance criterion. See benchmarks/README.md for the full convergence tables and for the two transcription errors the structural invariants now catch.

Documentation

The full documentation is at openndm.readthedocs.io, built with Sphinx using a theme provided by Read the Docs. The same material is readable as Markdown in this repository:

Document Contents
docs/user-guide.md How to drive the solver. Start here
examples/ Four executed notebooks, including OpenMC to OpenNDM end to end
docs/requirements.md The full specification
docs/status.md Requirement-by-requirement implementation state
docs/theory.md Every equation the code solves, with the discretisation written out
docs/architecture.md Module layout and the deviations from the specification, with rationale
CONTRIBUTING.md Build, test and style workflow, and how to get a change merged
SECURITY.md What counts as a vulnerability here, and how to report one

Author

OpenNDM was initiated and is developed by Rizki Oktavian, PhD (@rizkiokt).

If you would like to contribute, or want to discuss using OpenNDM in your own work, get in touch at rizkiokt@purdue.edu. Bug reports and feature requests are better filed as issues, and CONTRIBUTING.md describes the pull request workflow.

Citing

If OpenNDM contributes to published work, please cite it. GitHub renders CITATION.cff into BibTeX from the Cite this repository button in the sidebar.

License

MIT — see LICENSE.

OpenNDM is research software. It carries no nuclear quality assurance pedigree and is not qualified for licensing or safety analysis; see SECURITY.md.

Metadata

Release files for openndm 0.3.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 openndm 0.3.0
File Size Uploaded
openndm-0.3.0.tar.gz 620.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for openndm 0.3.0
File
openndm-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
openndm-0.3.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details
openndm-0.3.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
openndm-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
openndm-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
openndm-0.3.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
openndm-0.3.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
openndm-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
openndm-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
openndm-0.3.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
openndm-0.3.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
openndm-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
openndm-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
openndm-0.3.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details
openndm-0.3.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
openndm-0.3.0-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details

Total release size: 7.0 MB

Release files / openndm-0.3.0.tar.gz

Download URL openndm-0.3.0.tar.gz
Size 620.9 kB
Tags Source
SHA-256 checksum
How to use checksums
ee2618d2d236cb10626dc72d34d4889888b9a5ce0b4fd44aa8f4a0752bf0f3e8
BLAKE2b-256 checksum
How to use checksums
b17cb16a11b5784baa8ccfa9ee5ea42a86c834481148d76ba563973f7268ea09
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL openndm-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 484.6 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5fa75b70cec80ded1f8009e02ae8b9ef2f47bd3f6dbba2845cbb4009775c4db9
BLAKE2b-256 checksum
How to use checksums
e875ab4821393ba822e3d27a0c6efa15300e107cd8ff919aa406e9cad083587d
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL openndm-0.3.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 453.7 kB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
3109db10c6270e5c20ab9d79182fab9973d35229bf9a184b53b01828a86b8efa
BLAKE2b-256 checksum
How to use checksums
77b2cec292f39a1e3cc07e1c227e67a9a104a0fea6f184c3cb5c5da299510310
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL openndm-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Size 318.5 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9dd88ce51633fc479c1135ad51550eaf8c0d34b848ac5f84a32cc949dba7a09a
BLAKE2b-256 checksum
How to use checksums
ab69bd085b9869c1e81a72d546c2cb28ac61b6e267796d8af34bf0e719c3143f
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl

Download URL openndm-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl
Size 346.8 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
71c2b392595861eda1f6aefe679c108c266e74048eef9e0197318fca92ecc229
BLAKE2b-256 checksum
How to use checksums
85c510a7725e00b579bde0860fc6bda25fc3c325371e3077694bef0d80956791
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL openndm-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 484.5 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
bea734170e939a975481d6133e9833d14a51797c379cf065fefe6d2efad62ebd
BLAKE2b-256 checksum
How to use checksums
db149778156e89787055305ce4ad7fe90c0d0896d7600948cbef05e20f24d2c7
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL openndm-0.3.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 453.6 kB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c638d39f8f926ea1fd332e46428b0b977229e85af1e48d3d3d423c3b85afe5da
BLAKE2b-256 checksum
How to use checksums
9754ec43ed79881f54e9ffa550812d5a0e910c98bc00f364e8c6194e3e28f0d5
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL openndm-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Size 318.4 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4cb20e3f5400ab0e08ffd9a9d370a00b4decc634ea8c15b73ce9977d8e56ae35
BLAKE2b-256 checksum
How to use checksums
b3fce5d051375dd1325fd72f4ddcb549be75346904f666ff2faa2ec327156ecc
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl

Download URL openndm-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl
Size 346.8 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
0bdf9634f2ba6743ce1bcb5e133776fb5d991360cb519e59a2628ecd45e492df
BLAKE2b-256 checksum
How to use checksums
e54556c44e36cdb00036b69f1056595947638e8194b273bddb5b810c8334f65d
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL openndm-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 483.4 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
524e139ebe87d12cd4ce24d4bfa6e91eb1cecde7fdd823438891aecfba68b051
BLAKE2b-256 checksum
How to use checksums
ad1266d8208d1421aa70581e86fcc8924d60f368ac501baecc780a1dae46babc
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL openndm-0.3.0-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 454.2 kB
Tags CPython 3.11 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
b27608f637d1b672453773bb614e24d3d58e69f12efca78e86b95d4ee6684998
BLAKE2b-256 checksum
How to use checksums
140a615ea0dfbe1655d69381cf8ca031b1538cdb8ffeaf6282e7542e0bb18610
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL openndm-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Size 316.2 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
167f9e36bfee363e67ee6f01cfa78c3930a863b03009767400d41cd64f2699fb
BLAKE2b-256 checksum
How to use checksums
a82a2d864463c96aa99afa009b3a2b6090d01a9d9567ec75dd460fc95544017f
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl

Download URL openndm-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl
Size 341.6 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
f492b9953431f7b3e7d9498c005cc11ace2f57e433c36244b4a640b433ef7fcf
BLAKE2b-256 checksum
How to use checksums
2d5dcc84c2c37bd0e5a32b22234f66a2667879f5bcffe67c3b99edfc09df0c28
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL openndm-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 482.1 kB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
cc3c71fcd51db89a1610032d95d9955be19896d294043ddc91bb073dd18fc76f
BLAKE2b-256 checksum
How to use checksums
602e880005ffcd51a6e74d136924dff856cf71a97053f1d34fa00a7e7b0540dd
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL openndm-0.3.0-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 453.3 kB
Tags CPython 3.10 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
3ccce2d3c8a38d654ddefa4aaa3b489a600f1225794494f0d7195eac76018173
BLAKE2b-256 checksum
How to use checksums
4222f99953d40bd9596fba2a774f86dd951e8118dd4495f36defedf68d3b24ed
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL openndm-0.3.0-cp310-cp310-macosx_11_0_arm64.whl
Size 314.8 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a70e8b5d5e2922cc219b0a396261b0fc64790281a8f2e9eec482b30f799a4ecf
BLAKE2b-256 checksum
How to use checksums
c72baddec9e0a43501aaef7ca54cdf66ed33ce72fd39a7e85f5f0ca53b5cc46e
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 Oct 2, 2026.

Transparency log

Release files / openndm-0.3.0-cp310-cp310-macosx_10_9_x86_64.whl

Download URL openndm-0.3.0-cp310-cp310-macosx_10_9_x86_64.whl
Size 340.3 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
b1d035d39d13737e6012adc453d78b7859dd32490c351059f28f9d26d5f5caa3
BLAKE2b-256 checksum
How to use checksums
a2855746004fc6592b6f067ba8538f3dc5632a7528d492c6756b8e88e9df4458
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 Oct 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

17 release files

0.2.0

17 release files

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