HullProd
Geometry-based producibility screening for ship hull surfaces.
HullProd computes a compact signature of double-curvature intensity, sign, and areal composition directly from native IGES/STEP BRep geometry or triangulated STL/OBJ/PLY surfaces. It also exports distributed fields, plots, validity, and representation provenance.
Installation
HullProd requires Python 3.10–3.12. The intended public installation command is:
pip install hullprod
One installation includes both the native OpenCascade and triangle-mesh backends; no separate CAD extra or system OpenCascade installation is required.
Quick start
Assess native CAD directly:
hullprod myvessel.iges
The same command works for a triangulated surface:
hullprod myvessel.stl
HullProd selects the backend from the file extension and writes a predictable
myvessel_hullprod/ result directory.
To supply the normalization length explicitly:
hullprod myvessel.iges --lref 200000
--lref uses the working length unit of the input geometry. For CAD imported
in millimetres, 200000 means 200000 mm, or 200 m. HullProd prints the source
unit, working unit, and interpreted value before integration and warns about a
large discrepancy from the automatic geometric span without changing the
supplied value.
See Getting started for output-directory controls and other normal options.
Recommended signature
HullProd 1.0 reports exactly:
[I_D, I_D_plus, I_D_minus,
a_C_flat, a_C_single, a_C_elliptic, a_C_saddle]
I_Dmeasures total normalized double-curvature intensity.I_D_plusandI_D_minusseparate elliptic/synclastic and saddle/reverse/anticlastic intensity.- The four
a_Cvalues are represented-valid-area fractions for flat, singly curved, elliptic, and saddle/reverse regions.
Together they describe intensity, sign, and areal extent. HullProd
does not combine them into a universal scalar producibility score. The default
quasi-zero factors are h_f = k_f = 1e-4; these are numerical classification
thresholds, not manufacturing limits. See Metrics for the
equations and interpretation.
What HullProd produces
A normal result directory contains:
signature.jsonandsignature.csvfor the recommended global signature;report.htmlfor a compact, static user report;validity.jsonandprovenance.jsonfor scientific interpretation and audit;plots/with developability-density and curvature-class maps; andfields/with ParaView-readable VTP and portable CSV surface fields.
The complete output contract and file roles are documented in Outputs.
Supported geometry
| Representation | Formats | Backend |
|---|---|---|
| Native BRep | .iges, .igs, .step, .stp |
Direct CAD derivatives and trimmed-domain quadrature |
| Triangle mesh | .stl, .obj, .ply |
Discrete curvature reconstruction on the supplied mesh |
Unsupported formats fail with an actionable error; HullProd does not silently convert a BRep to a mesh for canonical global evaluation or fit CAD to a mesh.
BRep and mesh realizations
Native BRep evaluation is the canonical realization when source CAD is available. Its global metrics come from direct surface derivatives and trimmed-domain integration, not from the display/export tessellation.
Mesh evaluation is supported when triangulated geometry is the available representation. Its derivative-based values are explicitly representation-sensitive and should be interpreted with the recorded mesh quality and refinement provenance. This distinction does not make mesh results invalid; it makes their represented geometry part of the result.
Without --lref, both backends use the same conceptual automatic convention: a
rigid-motion-invariant principal-axis projected span, with a deterministic
centroid-radial fallback for isotropic samples. It is recorded as
auto_principal_span and is never described as L_pp.
Python API
The Python API uses the same assessment pipeline as the CLI:
from hullprod import assess
result = assess("myvessel.iges")
print(result.signature)
See the Python API guide.
Documentation
- Getting started
- Recommended metrics
- Result files and field exports
- Validity and provenance
- Python API
- Experimental quantities
- Release history
README plus versioned Markdown under docs/ are the complete v1 documentation
system; no hosted documentation site is required.
Scientific scope and limitations
HullProd is a geometry-based early-design screening tool, not a fabrication-cost predictor. It does not directly predict labor, forming route, production schedule, or shipyard-specific performance. It does not perform panelization, seam placement, forming simulation, optimization, or geometry repair.
Auxiliary, mesh-diagnostic, and experimental quantities are kept separate from the recommended signature. Their status is explained in Experimental quantities.
Funding
Development of HullProd was supported by the U.S. Office of Naval Research (ONR), under Grant No. N00014-26-1-2164, as part of the BEAM project (Bayesian Exploration and Optimization for Hull-form Architecture and Producibility Modeling).
The views and conclusions expressed in this software and its documentation are those of the authors and do not necessarily reflect the views of the Office of Naval Research.
Citation
If you use HullProd in scientific work, please cite the archived software release:
Serani, A. (2026). HullProd: Geometry-Based Producibility Metrics for Ship Hull Forms (Version 1.0.0) [Computer software]. Zenodo. https://doi.org/10.5281/zenodo.22287357
Machine-readable citation metadata are provided in CITATION.cff. Please also cite the associated scientific publication once its final journal metadata are available.
Contributing
Bug reports, documentation corrections, reproducible analytical tests, and carefully scoped numerical improvements are welcome. See CONTRIBUTING.md before proposing changes to scientific definitions.
License
HullProd is distributed under the BSD-3-Clause license. The bundled analytical sphere fixtures are project-owned; restricted benchmark geometry is not redistributed.
Release files for hullprod 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hullprod-1.0.1.tar.gz | 127.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hullprod-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 230.8 kB
Release files / hullprod-1.0.1.tar.gz
| Download URL | hullprod-1.0.1.tar.gz |
|---|---|
| Size | 127.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
af8e6d8da1bf3247f1c92e06c01279ae0cb007662c0761dce99181831f24f00e
|
|
BLAKE2b-256 checksum How to use checksums |
62ce75480e6cf3781fe3de50f6136e4bd9876ab3f5f45ed97e0f1c90bce21dff
|
| 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 3, 2026.
Transparency logRelease files / hullprod-1.0.1-py3-none-any.whl
| Download URL | hullprod-1.0.1-py3-none-any.whl |
|---|---|
| Size | 103.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e6d65560792ff5e6b7bfd73ce494a7627ac1c9dcfe21a2e53c491fa1be695421
|
|
BLAKE2b-256 checksum How to use checksums |
c30a0f579c4a37ea4df9f04dc6a29c20f71f511aa2d62d615c436d65a9c5835d
|
| 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 3, 2026.
Transparency log