Metadata-Version: 2.4
Name: gemseo-sysml
Version: 0.0.1
Summary: A GEMSEO connector to SysML v2
Author-email: GEMSEO developers <contact@gemseo.org>
License-Expression: LGPL-3.0
Project-URL: Homepage, https://gemseo.org
Project-URL: Source, https://gitlab.com/gemseo/dev/gemseo-sysml
Project-URL: Issues, https://gitlab.com/gemseo/dev/gemseo-sysml/-/issues
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: <3.14,>=3.12
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: gemseo[all]<7,>=6
Requires-Dist: jinja2<=3.1.6,>=3.1
Requires-Dist: streamlit<=1.60.0
Requires-Dist: textual<=8.2.8
Requires-Dist: typer<=0.27.0
Requires-Dist: syside<=0.10.3,>=0.8
Requires-Dist: sysand<=0.1.7,>=0.1.7
Dynamic: license-file

<!--
Copyright 2021 IRT Saint Exupéry, https://www.irt-saintexupery.com

This work is licensed under the Creative Commons Attribution-ShareAlike 4.0
International License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative
Commons, PO Box 1866, Mountain View, CA 94042, USA.
-->

# gemseo-sysml

[![PyPI - License](https://img.shields.io/pypi/l/gemseo-sysml)](https://www.gnu.org/licenses/lgpl-3.0.en.html)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/gemseo-sysml)](https://pypi.org/project/gemseo-sysml/)
[![PyPI](https://img.shields.io/pypi/v/gemseo-sysml)](https://pypi.org/project/gemseo-sysml/)
[![Codecov branch](https://img.shields.io/codecov/c/gitlab/gemseo:dev/gemseo-sysml/develop)](https://app.codecov.io/gl/gemseo:dev/gemseo-sysml)

## Overview

`gemseo-sysml` is a [GEMSEO](https://www.gemseo.org) connector to SysML v2.
It parses a set of [ODE4HERA](https://www.ode4hera.eu) SysML v2 models,
based on the ODE4HERA ontology,
and enables to set up a GEMSEO MDO problem from a SysML v2 MDAO model.

Currently, the following features can be extracted from the MDAO model:

- the disciplines
- the design space
- the objective function
- the constraints

Also,
the plugin enables to update the input model with the optimization results.
It also enables to check the requirement coverage, based on the constraint results.

## Scope and limitations

Version 0.0.1 is a **preliminary release**: the API, the SysML v2 constructs
that are read and the output that is written may all change in later versions,
with no backward compatibility guaranteed yet.

`gemseo-sysml` is **not a general-purpose SysML v2 connector**.
It is tightly coupled to the [ODE4HERA](https://www.ode4hera.eu) ontology:
the reader and the writer look for the specific parts, actions, attributes and
metadata tags defined by the ODE4HERA metamodels,
and identify them through those metamodels' semantic prefixes
(`#discipline`, `#designSpace`, `#contX`, `#evalOut`, …).
A SysML v2 model that does not specialize these metamodels cannot be read,
even if it is otherwise valid SysML v2.

As a consequence, the plugin is currently usable in a **limited context**:

- only models built on version 1.0 of the ODE4HERA ontology;
- only a subset of MDAO problems — a single objective,
  continuous design variables only,
  and the MDF, IDF and BiLevel formulations.

The exact list of what is read, ignored and rejected is given on the
[Supported SysML v2 constructs](user_guide/supported_constructs.md) page.
The role of the ontology is described on the
[ODE4HERA ontology](user_guide/ode4hera_ontology.md) page.

## Requirements

Syside Automator, being distributed as a compiled extension module,
constrains the platforms and the Python versions on which the plugin can run.
The plugin is supported on Windows and Linux, each with a minimum version:

| | Requirement |
|---|---|
| Syside Automator | from **0.8** up to **0.10.3** (`>=0.8,<=0.10.3`) — that is the newest version tested, later ones are not supported yet |
| Windows | 10 or later, x64 or arm64 (earlier versions need the Windows UCRT installed) |
| Linux | x64 with GNU C Library `glibc >= 2.31` (Alpine and Chimera are not supported, as they do not provide glibc) |
| Python | **3.12 minimum**, 64-bit — this plugin supports 3.12 and 3.13 |

Installing the plugin with `pip` pulls in a compatible Syside version,
but an environment that already has one outside that range may fail.

The Python floor of 3.12 comes from Syside, not from GEMSEO,
which itself supports Python 3.10 and later.

Syside imposes further constraints of its own, in particular on licensing
(offline licenses are available for networks from which the Sensmetry licensing
servers cannot be reached).
Refer to the Sensmetry documentation for the authoritative and up-to-date details:
[installation and system requirements](https://docs.sensmetry.com/automator/install.html#automator-install)
and [licensing](https://docs.sensmetry.com/resources/licensing.html).

## Installation

Install the latest version with `pip install gemseo-sysml`.

See [pip](https://pip.pypa.io/en/stable/getting-started/) for more information.

The plugin relies on Syside Automator from [Sensmetry](https://sensmetry.com),
to read/write data from/to textual SysML v2 models, for which a license is required.

The required SysML v2 metamodels from ODE4HERA project are available
on the [Sysand](https://sysand.com) package index: *Simulation and Analysis*,
*SPDM*, *Architecture Design* and *Requirements Management*.
The plugin is compatible with version 1.0 of the ODE4HERA ontology only.
These packages can be downloaded using the `sysand` command-line tool,
which requires a Sysand account and an API token
(see the related section of the [ODE4HERA Ontology](user_guide/ode4hera_ontology.md#how-to-obtain-the-ontology) page).

## Bugs and questions

Please use the [gitlab issue tracker](https://gitlab.com/gemseo/dev/gemseo-sysml/-/issues)
to submit bugs or questions.

You can also contact the authors using our [Discourse channel](https://gemseo.discourse.group).

## Contributing

See the [contributing section of GEMSEO](https://gemseo.readthedocs.io/en/stable/software/developing.html#dev).

## Contributors

- Jean-Christophe Giret (IRT Saint Exupéry)
- Jean-Marie Gauthier (IRT Saint Exupéry)
- Sylvain Béchet (IRT Saint Exupéry)

The funding comes from European Union [Clean Aviation](https://www.clean-aviation.eu)
project [ODE4HERA](https://www.ode4hera.eu), co-funded by the European Union
under GA no. 101140510.
