Pylot
Pylot is a helper application for Capytaine and, in the future, other BEM solvers.
It helps to develop and maintain a library of hydrodynamic data for a single vessel spanning multiple drafts, grids, heel and trim.
The whole idea is a follows:
- define a base-shape for a vessel.
- create calculation meshes for different "floating conditions" by cutting the base-shape at the water-surface and meshing (automatic)
- run capytaine to obtain hydrodynamic data
- store in a sqlite database
then, on the consumer side:
- load the database
- get the best matching floating condition (using surface probes)
- convert into a mafredo hyddb1 for further use
to limit the python environment for the consumer side, the pylot package is split into pylot-db and pylot-bem.
run
uvx pylot-bem
pylot-bem
Write side of the hydrodynamic database: meshing, in-process Capytaine solving, assembly, a command line and a standalone application.
Pylot is a pylot_db.Library — it adds meshing and solving to the same
object, so a file written here opens as a plain Library on a machine with no
BEM solver installed. That split is the point, and a test enforces it.
Build a library
import numpy as np
from pylot_bem import Pylot, SolveSettings
d = Pylot.create_new("tanker.pylot", "tanker.stl", "stern, centerline, keel",
is_xz_symmetric=True)
condition = d.create_condition(z_origin=-12.0, condition_id="design")
mesh = d.create_mesh(condition, pct=2.0)
result = d.run_solve(mesh, SolveSettings(
omegas=[2 * np.pi / T for T in (12.0, 16.0, 20.0)],
wave_directions=[0.0, 45.0, 90.0, 135.0, 180.0],
))
print(d.validate() or "clean")
d.close()
Reading one back is pylot-db, which
this package depends on and which needs no solver.
The application
uv run pylot-bem
A window for building and inspecting libraries: the tree, a 3D view in
diffraction space, property panes, and tabs for Results, Databases, Inspect,
Match and Validation. docs/manual.md walks through it screen
by screen and assumes you already know Capytaine.
Filling a library overnight
Right-click the library → Batch…. A grid of drafts, heels and trims, and one
line per mesh saying which periods it carries:
z_origin -4.7 to -0.1 step 0.1 heel -1, 0, 1 trim -2, -1, 0, 1, 2
1 -> 1, 2, 3, 4
2 -> 5, 6, 7, 8, 9, 10, 12
705 conditions, 1410 meshes, 1410 solves — counted on screen before Start. A step that fails is logged and the run carries on, and starting the same job again resumes rather than duplicates, so a night that ended early needs no arithmetic to continue.
Save job… keeps the whole thing as a 29-line text file beside the library, so
it can be edited, kept and run again. pylot_bem.batch is the same feature
without a window.
Standalone executable
uv sync --group build
uv run pyinstaller packaging/pylot-bem.spec --noconfirm
Produces dist/pylot/pylot.exe — no Python install required on the target
machine. Zip the dist/pylot/ folder to distribute it.
What is where
docs/manual.md |
The application, screen by screen |
docs/api.md |
The reference: every public name, with its units |
examples/ |
Six runnable scripts, smallest first |
docs/README.md |
Where the specification lives and why it is not here |
Licence
MIT. Copyright 2026 Ruben de Bruin / DAVE Lab.
Metadata
Release files for pylot-bem 2026.8.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 | |
|---|---|---|---|
| pylot_bem-2026.8.1.tar.gz | 1.6 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pylot_bem-2026.8.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.8 MB
Release files / pylot_bem-2026.8.1.tar.gz
| Download URL | pylot_bem-2026.8.1.tar.gz |
|---|---|
| Size | 1.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
83a23f5fb11f3d2a2c271119619f8029b64334917c1fc05fd26fa09d8f1ef24e
|
|
BLAKE2b-256 checksum How to use checksums |
183f03569d38896d47f59cd00c6c9932fd6430652192487c95bd8a93026ed6e7
|
| 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 Aug 19, 2026.
Transparency logRelease files / pylot_bem-2026.8.1-py3-none-any.whl
| Download URL | pylot_bem-2026.8.1-py3-none-any.whl |
|---|---|
| Size | 189.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
25665e74e47618670f9c276f05a53599bc3913ccbe3a71fed6bc51be4b350cd5
|
|
BLAKE2b-256 checksum How to use checksums |
90d142289725fd4a0363d459d8f760b003195c93a6774f489766744fe1cb4f46
|
| 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 Aug 19, 2026.
Transparency log