Skip to content

Releases: dnv-opensource/component-model

v0.3.2

02 Feb 08:52
0aac44e

Choose a tag to compare

Added

  • Added new module unit.py, containing class Unit, a helper class to store and manage units and display units. One Unit object represents one scalar variable.
  • Added new module range.py, containing class Range, a utility class to store and handle the variable range of a single-valued variable.
  • Sphinx documentation:
    • Added docs for modules variable_naming.py, unit.py, range.py, enums.py and analytic.py
  • Added Visual Studio Code settings

Removed

  • Removed module plotter.py

Changed

  • Updated code base with latest changes in python_project_template v0.2.6
  • pyproject.toml:
    • Updated supported Python versions to 3.11, 3.12, 3.13, 3.14
    • Updated required Python version to ">= 3.11"
    • Renamed optional dependency group 'tests' to 'test' to make it uniform with crane-fmu (there also 'test' is used).
  • ruff.toml:
    • Updated target Python version to "py311"
  • .sourcery.yaml:
    • Updated the lowest Python version the project supports to '3.11'
  • GitHub workflow _test.yml:
    • Updated Python versions in test matrix to 3.11, 3.12, 3.13, 3.14
  • GitHub workflow _test_future.yml:
    • Updated Python version in test_future to 3.15.0-alpha - 3.15.0
  • GitHub workflow _build_and_publish_documentation.yml:
    • Changed 'uv sync --upgrade' to 'uv sync --frozen' to avoid unintentional package upgrades.
  • Sphinx documentation:
    • Updated toctree
    • conf.py: Updated, and removed ruff rule exception on file level

Dependencies

  • Updated to ruff>=0.14.3 (from ruff>=0.6.3)
  • Updated to pyright>=1.1.407 (from pyright>=1.1.378)
  • Updated to sourcery>=1.40 (from sourcery>=1.22)
  • Updated to numpy>=2.3 (from numpy>=2.0)
  • Updated to scipy>=1.16 (from scipy>=1.15.1)
  • Updated to matplotlib>=3.10 (from matplotlib>=3.9.1)
  • Updated to plotly>=6.3 (from plotly>=6.0.1)
  • Updated to pytest>=8.4 (from pytest>=8.3)
  • Updated to pytest-cov>=7.0 (from pytest-cov>=5.0)
  • Updated to Sphinx>=8.2 (from Sphinx>=8.0)
  • Updated to sphinx-argparse-cli>=1.20 (from sphinx-argparse-cli>=1.17)
  • Updated to sphinx-autodoc-typehints>=3.5 (from sphinx-autodoc-typehints>=2.2)
  • Updated to furo>=2025.9 (from furo>=2024.8)
  • Updated to pre-commit>=4.3 (from pre-commit>=3.8)
  • Updated to mypy>=1.18 (from mypy>=1.11.1)
  • Updated to checkout@v5 (from checkout@v4)
  • Updated to setup-python@v6 (from setup-python@v5)
  • Updated to setup-uv@v7 (from setup-uv@v2)
  • Updated to upload-artifact@v5 (from upload-artifact@v4)
  • Updated to download-artifact@v5 (from download-artifact@v4)

v0.3.1

17 Dec 09:50

Choose a tag to compare

What's Changed

  • Address breaking changes with PythonFMU's latest changes to setup_experiment() function.

v0.3.0: ECCO Support

15 Dec 08:47

Choose a tag to compare

Added

  • Added the documentation file component-development-process.rst, outlining the recommended FMU development workflow, best practices, and the role of virtual derivatives.
  • Added the example XML structures BouncingBallStructure.xml and ForcedOscillator6D.xml to showcase richer algorithm and ECCO configuration sections together with clarified causality definitions.

Changed

  • Refined the existing FMU XML examples with explicit algorithm sections, ECCO configuration, and clearer variable linkage descriptions.
  • Updated driving_force_fmu.py to support vectorized amplitudes, frequencies, and frequency sweeps, while improving type annotations and initialization semantics.
  • Changed the upper bound for the height variable in bouncing_ball_3d.py to inches to align with the rest of the example unit system.

GitHub workflows

  • Added Python 3.13 to the main CI matrix to ensure compatibility with the current stable release.
  • Updated the future/experimental workflow to track Python 3.14 instead of 3.13 for forward-looking coverage.

v0.2.0

30 Apr 11:25

Choose a tag to compare

What's New: Structured Variables

Introducing structured variables to component-model according to FMI standard v.2 and 3.

Key Benefits:

  • Hierarchical Variable Organization: Variables can now be organized in a tree structure using dot notation (e.g., vehicle.engine.speed)
  • Automatic Derivative Handling: Define interface variables that represent derivatives (like speeds) of base variables without explicitly defining them in the underlying model
  • Simplified Complex System Modeling: Models can expose a more intuitive interface while abstracting internal complexity

Technical Improvements:

  • New variable naming conventions: flat and structured
  • Support for derivative notation: der(variable) and der(variable,n)
  • Enhanced parent-child relationship handling for nested components
  • Improved array indexing with structured notation

v0.1.0

08 Nov 11:41
2ee3760

Choose a tag to compare

Changed

  • Changed from pip/tox to uv as package manager
  • README.rst : Completely rewrote section "Development Setup", introducing uv as package manager.
  • Changed publishing workflow to use OpenID Connect (Trusted Publisher Management) when publishing to PyPI

GitHub workflows

  • (all workflows): Adapted to use uv as package manager
  • _test_future.yml : updated Python version to 3.13.0-alpha - 3.13.0
  • _test_future.yml : updated name of test job to 'test313'

v0.0.2b3

08 Nov 10:12
a1c0896

Choose a tag to compare

v0.0.2b3 Pre-release
Pre-release

GitHub workflow publish_release.yml Test no. 3

v0.0.2b2

08 Nov 09:46
8160734

Choose a tag to compare

v0.0.2b2 Pre-release
Pre-release

GitHub workflow _publish_package.yml Test no. 2

v0.0.2b1

05 Nov 15:04

Choose a tag to compare

v0.0.2b1 Pre-release
Pre-release

GitHub workflow _publish_package.yml Test no. 1

First release

27 Sep 08:38

Choose a tag to compare

This is the first release of the Component Model package, designed to extend the capabilities of the PythonFMU framework. The package allows for the seamless creation and simulation of component models adhering to the FMI, OSP, and DNV-RP-0513 standards. It focuses on efficient model-to-FMU translation and supports vector-based variable manipulation, unit definitions, and range checking. The package also enhances the Assurance of Simulation Models, with a particular focus on DNV-RP-0513 compliance.

Key Features:

Model-to-FMU Conversion:
Efficiently convert Python-based models to FMU (Functional Mock-up Units) with minimal code overhead.

  • Vector Variable Support: Seamless handling of vector variables using numpy, enabling 3D model simulations and unit-based calculations.

  • Unit and Display Unit Management: Full support for defining units and display units of variables, ensuring consistency in model representation.

  • Range Checking for Variables: Built-in support for validating variables against specified ranges, enhancing model integrity and reducing runtime errors.