Metadata-Version: 2.1
Name: mosaik-fmi
Version: 1.0
Summary: Adapter for FMUs (ME or CS) in mosaik
Home-page: https://mosaik.offis.de
Author: Cornelius Steinbrink
Author-email: mosaik@offis.de
License: UNKNOWN
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: English
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Libraries :: Python Modules
License-File: LICENSE
License-File: AUTHORS.txt
Requires-Dist: mosaik-api (>=2.0)
Requires-Dist: fmipp
Requires-Dist: mosaik
Requires-Dist: pytest

==========
mosaik-fmi
==========

This mosaik-fmi adapter allows to couple FMUs, which are based on the FMI standard (https://fmi-standard.org) with mosaik.

Installation
============

* mosaik-fmi is based on the FMI++ library, which can be found at https://fmipp.sourceforge.io/
* The FMI++ python interface is used, which can be found at https://github.com/AIT-IES/py-fmipp. See this page also for details about installation and requirements of the python interface.

Test
====

The FMUs for the test is based on https://github.com/modelica/Reference-FMUs.

How to Use
==========
Specify simulator configurations within your scenario script::

    sim_config = {
        'FMI': {
            'python': 'mosaik_fmi.mosaik_fmi:FmuAdapter',
        },
        ...
    }

Initialize the FMU Simulator::

    fmu_sim = world.start('FMI',
                        integrator='integratorCK',
                        work_dir='path/to/the/fmu/directory',
                        fmu_name='FMU_name',
                        fmi_version='2',
                        fmi_type='cs',
                        logging_on=False,
                        instance_name='FMU_name',
                        step_size=60*60)

Instantiate FMU model entity::

    fmu_entity = fmu_sim.FMU_name.create(1,
                                 input_1=1.0,          #  FMU input variable
                                 input_2=2.0,          #  All variables are listed in modelDescription.xml
                                 ...
                                 )

Connect FMU output to another simulator's input::

    world.connect(fmu_entity[0], other_simulator,'fmu_output_1', 'simulator_input_1')

Selecting integrator

Refer to https://fmipp.readthedocs.io/projects/py-fmipp/en/latest/getting-started/model-exchange.html#classes-fmumodelexchangev1-and-fmumodelexchangev2 for choosing different integration algorithms


Getting help
============

If you need help, please visit the `mosaik-users mailing list`__ .

__ https://mosaik.offis.de/mailinglist


Changelog
=========

1.0 – 2023-06-14
----------------

- New: add test cases to test FMI v1 and v2
- Fix: model identifier parsing fixed for FMI v1
- Update: use fmipp.export.fmippex instead of fmipp

0.2 – 2022-02-23
----------------

- Fix: FMI model identifier instead of model name needed to create FMU using fmipp

0.1 – 2020-08-14
----------------

- Initial release




Authors
=======

The adapter was initially developed by Cornelius Steinbrink and updated and extended by Thomas Raub,
 Jan Sören Schwarz, Sharaf Alsharif and Annika Ofenloch.

