Skip to main content

ADMESH meshing Delaware Bay through three stages: initialized point cloud, DistMesh truss-solver relaxation, then FEM smoothing; element color tracks quality from magenta (poor) to cyan (equilateral).

An ADvanced, automatic unstructured MESH generator for 2D shallow-water models
Automatic unstructured mesh generation for shallow-water models, in Python and MATLAB

Dominik Mattioli1†, Colton Conroy, Dustin West, Ethan Kubatko2
†Corresponding author | 1Unaffiliated | 2Ohio State University (CHIL)

Latest release, including pre-releases Python 3.10+ Tests Open issues DOI License

Lineage: Two branches of ADMESH descend from the 2012 original by Conroy et al.. The original group's current MATLAB line is ADMESH+ v3 (OSU-CHIL/ADMESH; archived at 10.5281/zenodo.10242565). Younghun Kang maintains it with Ethan Kubatko. It adds constraint extraction for coupled 1D–2D hydrodynamic models, a revised medial-axis method, and GUI components (Kang & Kubatko, 2024). This repository is the parallel branch. It holds the 2012 library in Python, with the MATLAB source alongside at src/matlab/.


Table of Contents

  1. Status & Roadmap
  2. One call turns a coastline into an ADCIRC-ready triangular mesh
  3. Installation
  4. Quick start
  5. Public API
  6. Pipeline
  7. Performance
  8. Limitations
  9. Citation
  10. Documentation, Contributing, License

1. Status & Roadmap

Current release: 1.0.0 (October 2026). The public API (admesh.__all__, listed in Public API) is fixed for 1.x. The admesh.<stage> compatibility modules stay through 1.x and are removed no earlier than 2.0; the canonical path is admesh._stages.<stage>. CHANGELOG.md lists earlier releases.

New in 1.0:

  1. triangulate_batch runs 5.1× faster on 8 workers (see Batch meshing).
  2. The domain registry reads Valence manifest schemas 0.3 and 0.4.
  3. triangulate takes an opt-in medial_method: "grid", "octree" or "vdt". "vdt" is the vector distance transform of Kang & Kubatko (2024). benchmarks/medial_vdt.md records why "vdt" stays opt-in.
  4. A browser app at admesh.domattioli.com runs the ADMESH package in the page through Pyodide. Files stay on the user's computer. The documentation is at admesh.domattioli.com/docs.
  • Now: address open issues; 1D–2D internal-constraint extraction from Kang & Kubatko (2024) (#186).
  • Next: single-mesh parallelization (#216); pre- and post-processing for quality improvement; native kernels for the remaining hot stages.
  • Future: 3D ADMESH (#220); then formal integration within a unified ecosystem with QuADMESH PyPI version (quads), CHILmesh PyPI version (mesh data structure and smoothing).

2. One call turns a coastline into an ADCIRC-ready triangular mesh

triangulate() takes a domain and two edge-length bounds and returns a validated mesh. Boundary treatment and relaxation follow from the geometry. The caller composes the size field. Without one, the size is uniform at h_max.

  • Physics-based sizing is opt-in. Stage modules compute edge length from four inputs: boundary curvature, channel width (medial axis), bathymetric gradient, and dominant tidal wavelength. A min stack composes them. compose_size_field adds custom callables. triangulate leaves the stack off by default (see Limitations). Graded sizing needs a size_field, user_contribs, or background="octree".
  • Four domain sources. triangulate() accepts a Domain, a TOML or JSON polygon file, an existing fort.14, or a registry slug. To re-mesh a legacy grid, use Domain.from_mesh(read_fort14(...)).
  • Native ADCIRC and Gmsh I/O. The package reads and writes fort.14 with node ids, IBTYPE codes, and 6-decimal coordinates (precision= is configurable). It also reads and writes .msh (Gmsh 2.2 ASCII) for non-ADCIRC solvers.
  • Adaptive background grid for multiscale domains. background="octree" evaluates the size field on a 2:1-balanced quadtree instead of a uniform grid. The quadtree is vectorized and refines where medial-axis and channel widths demand it. On a flat size field, the result equals the uniform-grid result. On a graded field, refinement concentrates where the field changes.
  • Python and MATLAB agree. The 13 numerical stages exist in both languages. The pytest suite pins the Python stages to MATLAB reference fixtures where the exported .npz is present. Domain, Mesh, and BoundarySegment are frozen, typed dataclasses. A Numba-JIT solver replaces the original C MEX, so installation needs no compile step.

3. Installation

pip install admesh2D                 # core: NumPy, SciPy, Numba, Shapely
pip install "admesh2D[viz]"          # + chilmesh for mesh.plot() / plot_quality() / plot_layers()
pip install "admesh2D[registry]"     # + huggingface_hub for on-demand registry downloads

The PyPI distribution is admesh2D. The import name is admesh. pip install admesh installs an unrelated C library for STL repair. That build fails without admesh/stl.h.

Requires Python 3.10 or newer. From source:

git clone https://github.com/domattioli/ADMESH.git
cd ADMESH && pip install -e ".[dev]"

4. Quick start

import admesh
from admesh import domains

# 1. Built-in domain, uniform sizing at h_max (h_min bounds any supplied size field).
mesh = admesh.triangulate(domains.NOTCHED_RECTANGLE, h_max=0.2, h_min=0.02)
mesh.to_fort14("notched.14")           # or mesh.to_msh("notched.msh")

# 2. Re-mesh an existing ADCIRC grid at a new resolution.
old = admesh.read_fort14("legacy.14")
mesh = admesh.triangulate(admesh.Domain.from_mesh(old), h_min=50.0, h_max=2000.0)

# 3. Mesh a registry domain with the adaptive background grid.
mesh = admesh.triangulate(
    admesh.load_domain_from_registry("BaranjaHill"),
    h_max=0.1, h_min=0.01, background="octree",
)
print(mesh.n_nodes, mesh.n_elements, mesh.quality.mean())

# 4. Mesh many domains at once on a process pool. Output order and results
#    match a serial loop exactly.
meshes = admesh.triangulate_batch(
    ["coast_a.json", "coast_b.json", "coast_c.json"], n_jobs=3, h_max=0.1, h_min=0.01,
)

mesh is a frozen Mesh dataclass. Its fields are nodes, elements, boundaries (each a BoundarySegment with a BoundaryType code), optional bathymetry, and per-element quality. BoundaryType is an IntEnum over ADCIRC IBTYPE codes (OPEN=0, MAINLAND=1, ISLAND=11, MAINLAND_FLUX=20). Paired-edge and weir codes (3/4/13/24) pass through as plain int. Only the first node id of each record is kept. The paired-node and weir-height columns are dropped. Built-in domains: UNIT_SQUARE, UNIT_DISK, L_SHAPE, ANNULUS, NOTCHED_RECTANGLE.

5. Public API

triangulate() is the entry point. The package also ships the surrounding workflow. Every name below is exported in admesh.__all__.

Need Call Notes
Size control h_min, h_max, size_field=, user_contribs=, combine=, medial_method= The default is uniform at h_max. compose_size_field composes stage-module contributions (curvature, medial axis, bathymetry, tide) and custom callables that map (N, 2) points to edge length. medial_method is None by default. It adds a channel-width contribution from one of three medial-axis methods: "grid", "octree" or "vdt".
Multiscale domains background="octree" Evaluates the size field on a quadtree with leaf-graph gradient limiting. The default is "uniform".
Reproducibility seed=, initial_points=, max_iter=, ttol=, dptol= Warm-start from a previous point set. Iteration stops at max_iter, dptol, or an empty edge set.
Many meshes triangulate_batch(domains, n_jobs=None, **kwargs) Runs triangulate on a process pool and returns meshes in input order, identical to a serial loop. Parallel runs need picklable domains: paths, registry slugs, or a Domain with a module-level SDF. n_jobs=1 runs in-process.
Quality gate quality_gate=(min_q, mean_q) The default is (0.30, 0.60). A mesh below it raises ValueError. Pass (0.0, 0.0) to disable.
ADCIRC I/O read_fort14, write_fort14, Mesh.to_fort14 Round-trips nodes, elements, and boundary segments. Fort14ParseError reports line, expected, actual.
Gmsh I/O read_msh, write_msh, Mesh.to_msh Gmsh 2.2 ASCII. Boundary labels map to BoundaryType. GmshParseError reports malformed input.
Domain sources load_domain_from_{toml,json,fort14,registry}, list_available_domains A path or slug may also be passed to triangulate() directly. Formats in docs/DOMAIN_IO.md.
Quality metrics mesh_quality, right_iso_quality Equilateral and right-isosceles targets.
Valence balancing balance_valence_triangles, compute_valence, get_valence_report Edge flipping toward degree-6 interior nodes, quality-guarded.
Quad preparation smooth_for_quadrangulation Right-isosceles smoother for downstream tri-to-quad fusion (CHILmesh, OceanMesh2D, ADCIRC v55+).
Plotting ([viz]) Mesh.plot, Mesh.plot_quality, Mesh.plot_layers Delegates to CHILmesh. Returns a Matplotlib axis.

Block-O domain, 2811 nodes: input triangulation (right-isosceles quality 0.498), after smooth_for_quadrangulation with unchanged connectivity (0.672), and after Delaunay re-triangulation (0.672).
smooth_for_quadrangulation on the Block-O fixture (2,811 nodes): right-isosceles quality rises from 0.498 to 0.672 with connectivity unchanged.

6. Pipeline

triangulate() composes the stage modules below. With a Domain input, it drives the distmesh relaxation directly and applies the size field the caller supplied. The stage modules under admesh/_stages/ match the MATLAB library one to one. They are locked. The public API composes them and never modifies them.

flowchart LR
    A["Domain<br>(SDF / polygon file / fort.14 / registry)"] --> B["Background grid<br>(uniform or octree)"]
    B --> C["Size field<br>(curvature + medial axis<br>+ bathymetry + tide, min-stacked)"]
    C --> D["distmesh2d<br>(truss equilibrium, Numba)"]
    D --> E["Mesh<br>(quality, boundaries, fort.14 / .msh)"]

7. Numba kernels yield a 26.6× end-to-end speedup on the Western North Atlantic benchmark

The Numba-JIT signed-distance kernel and the solve_iter smoother cut end-to-end generation from 1257.5 s (v0.2.1) to 47.2 s (v0.5.0) at hmin=0.05, g=0.10, niter=120. Mean element quality moved from 0.963 to 0.962.

v0.2.1 v0.5.0 (Numba)
total 1257.5 s 47.2 s
nodes / elements 49 377 / 93 655 49 377 / 93 642
mean element quality 0.963 0.962

An experimental C++ distmesh kernel (unreleased, src/admesh/_cpp/) runs the same case in 29.1 s in the in-repo harness. That figure is a development measurement of unreleased code. The per-stage breakdown and the version-comparison harness are in benchmarks/. The benchmark standard going forward is the ENPAC 2003 tidal database (272,913 nodes).

Reproduce or extend the benchmark with one --ref <git-ref>=<label> per column. The 0.2.1 and 0.5.0 tags are not published on this remote. Compare v0.5.1 against the working tree, or pass commit hashes:

python benchmarks/compare_versions.py --hist \
    --ref v0.5.1=v0.5.1 --ref current=dev \
    --mesh tests/fixtures/fort14/adcirc_examples/wnat_test.14 \
    --domain benchmarks/data/wnat_onur_boundary.json \
    --hmin 0.05 --g 0.10 --niter 120

Batch meshing runs 5.1× faster on 8 workers

triangulate_batch meshes several domains in parallel. The test used 8 Western North Atlantic meshes (94,777 nodes each, h_min=0.05, h_max=0.10, max_iter=120). 8 workers cut wall time from 218 s to 43 s, a 5.09× speedup. The figure is the median of 3 runs on a 10-core Apple Silicon machine (4 performance and 6 efficiency cores). Every batch mesh is bit-identical to the serial result: same nodes, elements, and quality.

workers wall time, 8 meshes speedup seconds per mesh
1 (serial loop) 218 s 1.00× 27.3
2 133 s 1.65× 16.6
4 80 s 2.74× 10.0
8 43 s 5.09× 5.4

Each worker process needs about 0.5 s to start, so small meshes gain less. 8 meshes of about 6,900 nodes reach 2.0×. 32 meshes reach 3.8×. For a few small meshes, a plain loop is faster.

Batch speedup on WNAT compared with small meshes, with parity and quality checks

PYTHONPATH=src python scripts/bench_batch.py --wnat    # P2 gate: >= 4.0x at 8 workers, about 25 min

8. Limitations

  • Triangles only, in 2-D. The package does not generate quads, 3-D meshes, or anisotropic elements. For quads: QuADMESH PyPI version. For 3-D or anisotropy, use Gmsh.
  • Two mesh formats. The package supports ADCIRC fort.14 and Gmsh 2.2 ASCII .msh. It does not support SMS 2dm, Gmsh 4.x binary, or netCDF.
  • The 2012 algorithm as published. The 13 stage modules implement the 2012 method, including its medial-axis step. The vector-distance-transform medial axis of Kang & Kubatko (2024) is available as the opt-in medial_method="vdt". It was written from the article text. It is not the default, and benchmarks/medial_vdt.md records why. The 1D–2D constraint extraction of that article is not implemented.
  • Quality is parameter-driven. h_min, h_max, and the grading rate set what the truss solver can reach. Large h_max/h_min ratios lower minimum quality. quality_gate is a post-hoc check that raises ValueError. The solver does not enforce it. Loosen the gate when the parameters legitimately lower quality.
  • Default sizing is uniform. With only h_min/h_max, triangulate meshes at h_max everywhere. The curvature, medial-axis, bathymetry, and tide contributions exist as stage modules. They are not wired in as the default (issue #65). The caller composes them or selects background="octree".
  • Generated meshes carry no bathymetry. Mesh.bathymetry is None after triangulate. Domain.from_mesh re-derives boundary rings and does not preserve the source labels. The fort.14 domain loader uses the first land segment only.
  • fort.14 fidelity is structural. Coordinates are written to 6 decimals. IBTYPE 3/4/13/24 paired-node and weir columns are not preserved.
  • No oscillation or stagnation detection. The triangulate relaxation loop exits on max_iter, dptol, or an empty edge set.
  • The octree grid is opt-in and adds build cost on small uniform domains. On a flat size field, it reproduces the uniform result at higher cost. The benefit appears on multiscale fields.
  • One process per mesh, CPU only. Numba accelerates the SDF kernel and the size-field solver. The distmesh relaxation dominates wall-clock time on large domains. It is not parallelized.
  • The graphical interface is a browser app. It runs at admesh.domattioli.com, without Numba or the C++ accelerator. The documentation is at admesh.domattioli.com/docs.

9. Citation

Algorithm (cite the original paper):

Conroy, C.J., Kubatko, E.J. & West, D.W. (2012). ADMESH: an advanced, automatic unstructured mesh generator for shallow water models. Ocean Dynamics 62, 1503–1517. https://doi.org/10.1007/s10236-012-0574-0

This software (cite the archived release):

Mattioli, D.O., Conroy, C.J., West, D.W., Kubatko, E.J. (2026). ADMESH: automatic unstructured triangular mesh generator for 2D shallow-water models (Python). Zenodo. https://doi.org/10.5281/zenodo.20264085

Upstream MATLAB line (ADMESH+, if you use or compare against it):

Kang, Y. & Kubatko, E.J. (2024). An automatic mesh generator for coupled 1D–2D hydrodynamic models. Geoscientific Model Development 17, 1603–1625. https://doi.org/10.5194/gmd-17-1603-2024

Kang, Y., Kubatko, E.J., Conroy, C.J. & West, D.W. (2023). Younghun-Kang/ADMESH: v3.0.1. Zenodo. https://doi.org/10.5281/zenodo.10242565

A CITATION.cff feeds GitHub's "Cite this repository" button. Version-specific DOIs are on the Zenodo record.

10. Documentation, Contributing, License

Documentation. The API reference is in the docstrings (triangulate, Domain, Mesh, BoundarySegment, the I/O functions, the 13 stage modules) and under docs/api/. The workflow guides are docs/quickstart.md and docs/DOMAIN_IO.md (TOML, JSON, fort.14 domain formats, registry). The design notes and the porting log are docs/PORTING_NOTES.md and docs/adr/. Rendered examples are in docs/gallery/.

Contributing. Issues and pull requests are accepted on GitHub. See CONTRIBUTING.md.

Acknowledgement. Code added after the original MATLAB port was written using AI coding tools built on Anthropic and OpenAI models. The 13 ported stages are checked against the MATLAB reference tests.

License. Apache 2.0, see LICENSE.

Metadata

Release files for admesh2D 1.0.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 admesh2D 1.0.0
File Size Uploaded
admesh2d-1.0.0.tar.gz 137.6 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for admesh2D 1.0.0
File
admesh2d-1.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
admesh2d-1.0.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
admesh2d-1.0.0-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
admesh2d-1.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
admesh2d-1.0.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
admesh2d-1.0.0-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
admesh2d-1.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
admesh2d-1.0.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
admesh2d-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
admesh2d-1.0.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details
admesh2d-1.0.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
admesh2d-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details

Total release size: 3.0 MB

Release files / admesh2d-1.0.0.tar.gz

Download URL admesh2d-1.0.0.tar.gz
Size 137.6 kB
Tags Source
SHA-256 checksum
How to use checksums
010078ca18764da2d8a7f3b466b8a103dd881d014ec2c7730e99c332631dd96b
BLAKE2b-256 checksum
How to use checksums
de89bfdaeea28d85a99fc5b880eb9c2f288994eee1cbaef9944c4889a525deb4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / admesh2d-1.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL admesh2d-1.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 245.2 kB
Tags CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d47808fba6f94fdde37455efc97f3fb36cb3c01b42ed047a3d9a8d21d4ba951a
BLAKE2b-256 checksum
How to use checksums
99f238332da652b7c38d1a7efe38165bc263fd42bb0299735a7357cac6490752
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / admesh2d-1.0.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL admesh2d-1.0.0-cp313-cp313-macosx_11_0_arm64.whl
Size 231.1 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8145d9e1f377868e3bd74b436575335da57a6067f6412df3dd52d58203308c80
BLAKE2b-256 checksum
How to use checksums
17c3509b886c66a7ca9823d1c874474e00a92e3907d39f6c40fd9d5ae3d9a374
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / admesh2d-1.0.0-cp313-cp313-macosx_10_13_x86_64.whl

Download URL admesh2d-1.0.0-cp313-cp313-macosx_10_13_x86_64.whl
Size 235.7 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
db262840a76528e2c886e03b71543d755aca26499eec2c3364830be553346fec
BLAKE2b-256 checksum
How to use checksums
b831c000489737baea218057cf6f9942a4854e7da20fb9dc5bc2a3dc3d296ab6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / admesh2d-1.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL admesh2d-1.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 245.2 kB
Tags CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
69e70f230f9013e5d6d1d841c455763908ce3b7ecbe5bd3715a6d905d2493f3a
BLAKE2b-256 checksum
How to use checksums
06ca968b13a46c0724eef92aa54392f1c807dd1cf20becfd04d39ce9fa1dd709
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / admesh2d-1.0.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL admesh2d-1.0.0-cp312-cp312-macosx_11_0_arm64.whl
Size 231.1 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ed3081757d7311887e38ad414e180e89588033b4c13265108d755184cd37fd73
BLAKE2b-256 checksum
How to use checksums
279d9c6393e50f1bc7dfc33379b7159d72200f8ee7aeae060a4d34d56e231264
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / admesh2d-1.0.0-cp312-cp312-macosx_10_13_x86_64.whl

Download URL admesh2d-1.0.0-cp312-cp312-macosx_10_13_x86_64.whl
Size 235.6 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
dca3fc643f6455a831c06fcbf4d021d43cb938e1fd19b94d74deea114acba644
BLAKE2b-256 checksum
How to use checksums
7927f9e0e93bd30b060377f3d0e6963a2ae8941009a2890cf8d6f954b5f61f96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / admesh2d-1.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL admesh2d-1.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 244.0 kB
Tags CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
afa358328afa02efae698bc62a42182a5140ec9e81a43ef9683b9b9d601ba226
BLAKE2b-256 checksum
How to use checksums
815084b4a7381c55147dbfef815056f74c0548f78d236661ee45ea0b782905cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / admesh2d-1.0.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL admesh2d-1.0.0-cp311-cp311-macosx_11_0_arm64.whl
Size 229.5 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bb02e6192aee6b4c82fef27ebb6599d33fd6b6ff4664b8514609ebaeb59f2353
BLAKE2b-256 checksum
How to use checksums
509da97827bc1891749deac7e45eaf47d28a56ecbd25265b608d0514345101c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / admesh2d-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl

Download URL admesh2d-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl
Size 233.8 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
4056677099c424f9ad96be9c643629a111503960ca0ab1811fac3a83e1290e31
BLAKE2b-256 checksum
How to use checksums
025f2fc0bb8db5dc204c18fb2097639fd2f105c9650b17b70a2d39fe14ad66e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / admesh2d-1.0.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL admesh2d-1.0.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 242.9 kB
Tags CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
33b3934f48be200369b5cc5001fa85e2a58ec20831d1580a9fcbc1ad0754818c
BLAKE2b-256 checksum
How to use checksums
6d16358688c8268a55ab8492f71c0ab9950fcf5af36294a73d5f7d9f17a05b38
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / admesh2d-1.0.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL admesh2d-1.0.0-cp310-cp310-macosx_11_0_arm64.whl
Size 228.2 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8e6c4e683310d2a6bb8b5ebc39b327eeff4f621cb3af83bbea00c95ef8fa1a1d
BLAKE2b-256 checksum
How to use checksums
3f7c380976eb144f7047fab4822ba8bcb6b3d701b3ea3ae77c7de816266b6797
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / admesh2d-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl

Download URL admesh2d-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl
Size 232.4 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
23165dfca4f5ba34b731fab3c4905536d2e167a20255158a8c6e181675d571be
BLAKE2b-256 checksum
How to use checksums
7cb51cee28a716db4d1170a20117c46b63087f03a487682df4434a24f43a9d12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release history Release notifications | RSS feed

This release

1.0.0 This release

13 release files

0.5.1

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 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