Skip to main content

Performance pOlar Exchange forMat

Project description

POEM

Performance pOlar Exchange forMat

C++ library and exchange format for performance polar in marine engineering, wind assisted vessels performance prediction, weather routing optimisation, embedded control systems, training simulators.

Links

Introduction

  • what is a VPP
  • what is a digital twin
  • what is a performance polar
  • the different type of polars
  • how a polar is used

POEM in a nuttshel

  • why poem
  • what is poem
  • is poem for me

Python interface

The pypoem package that wraps poem is pypoem. It does not currently give acces to the whole C++ API but feature are progressively ported to Python.

Requirements

pypoem is tested with Python version >= 3.9.

Install from Pypi

pypoem is available on Pypi, so it can be installed as:

$ pip install pypoem

Install from sources

pypoem relies on scikit-build-core for the packaging. Source installation is realised by running the following command int the repository root directory:

$ pip install .

Basic usage

Here is a simple example of the creation of a MPPP Polar with one PolarTable and its writing to a netCDF file compliant with POEM file format thanks the of POEM library.

from pypoem import pypoem
import numpy as np

# Declaring three dimensions
STW = pypoem.make_dimension("STW", "kt", "Speed Through Water")
TWS = pypoem.make_dimension("TWS", "kt", "True Wind Speed")
TWA = pypoem.make_dimension("TWA", "deg", "True Wind Angle")

# Creating a DimensionSet
dimension_set = pypoem.make_dimension_set((STW, TWS, TWA))

# Creating a DImensionGrid and filling the dimensions with values
dimension_grid = pypoem.make_dimension_grid(dimension_set)
dimension_grid.set_values("STW", np.linspace(8, 20, 13))
dimension_grid.set_values("TWS", np.linspace(0, 40, 9))
dimension_grid.set_values("TWA", np.linspace(0, 180, 13))

# Creating a Polar of type MPPP (Motor only Power Prediction)
polar_MPPP = pypoem.make_polar("MPPP", pypoem.MPPP, dimension_grid)

# Creating a PolarTable from the MPPP Polar
BrakePower = polar_MPPP.create_polar_table_double("BrakePower", "kW", "Brake Power", 
                                                  pypoem.POEM_DOUBLE)

# Generating a dummy NDArray with ones and the same shape as the DimensionGrid
# Note that NDArrays must be arranged in a row major order with respect the DimensionSet
# of the DimensionGrid. If you think in terms of nested for loop with Dimensions, 
# the last Dimension (here TWA) is moving fastest (most inner loop).
brake_power_data = np.ones(dimension_grid.shape())

# Setting the BrakePower PolarTable with the array
BrakePower.set_values(brake_power_data)
assert(np.all(brake_power_data == BrakePower.array()))

# Writing to netCDF
pypoem.to_netcdf(polar_MPPP, "polar_basic.nc")
  • Reading a POEM file
  • More complex example

Work In Progress

Integrating the C++ library

Work In Progress

Requirements

Work In Progress

CMake

Work In Progress

Basic usage

Work In Progress

Current limitations

POEM has been primarily developed under Linux OS. Port to other platforms is expected to come in the future but is not a current top priority. Contributors for a Windows port are welcome :)

Latest standard is available at: https://dice-poem.readthedocs.io/en/latest/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pypoem-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pypoem-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pypoem-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pypoem-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pypoem-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

Details for the file pypoem-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypoem-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cf21a3f6a97630febec8d2dfc82cd99cd9135eafa3a626d6f3cbd3486ba9423d
MD5 840421cbf24c8ea8a03fe62e633ac84d
BLAKE2b-256 19011f7d8c6914436cfc502c7d725dbe0b163b430d2c78c3be3a837a4f90126d

See more details on using hashes here.

File details

Details for the file pypoem-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypoem-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3f100b3010a4ee1d7c0b707531a7af2ca51a563be2090182de2faab61990bae3
MD5 507e1caa1156e43f8cb45874458d7e6e
BLAKE2b-256 8eebad173f619156b959b19c9cc1c6b5a07239caa8373ea94ed26b3a47a73216

See more details on using hashes here.

File details

Details for the file pypoem-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypoem-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e595d1877be3b0468de95bc58e67c4758d925dca455c8438a5eeb2e207b52a4a
MD5 62f34ac3d45a605139f620a4e0496652
BLAKE2b-256 5a1de0e68a36e989bb385d212daf047ec3c3e2426bc55a675cb3fed204e73dca

See more details on using hashes here.

File details

Details for the file pypoem-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypoem-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 916da1642c08db25f7259dd47546fd080f76e0e592dfd9c5d44fd0df026e8a11
MD5 d279cb9bf3f8aa76208d23bd8ba45d4d
BLAKE2b-256 02194c2906795d51a19ef86f72744d51d0ca7244c4adec073873c293bda62162

See more details on using hashes here.

File details

Details for the file pypoem-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pypoem-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 33f8ecb15cab5a38e4d820e827227c47b602c2007081213d5012333fb7616ea8
MD5 691dd319221e8d8bb571211917d5a995
BLAKE2b-256 61b7eeeaffaed480d69f16a0291c5bcfa6bc501f832e3222c4605fde42764bc1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page