Skip to main content

PyCoSim

Features

  • Importing an FMU file, getting information of the model description and running a single FMU simulation,
  • Importing a system configuration, configuring output logging and scenario, running co-simulation and retrieving the results,
  • Creating a system configuration, adding fmus, connections, initial values

Install

pip install pycosim

How to use

Creating the simulation instance using the given files

In the case that you already have all the configuration files and fmu files ready for the simulation, you can just import files to create the simulation instance. From the simulation instance, use run_simulation method to run simulation. It returns the output instance which contains logging, error and result. The result is a dict of names of components as keys and time-series outputs as data.

import os
from pycosim.osp_command_line import LoggingLevel
from pycosim.simulation import FMU, SimulationConfiguration
import pandas

pandas.options.plotting.backend = "plotly"

path_to_osp_system_strucuture_file = os.path.join("..", "test_data", "OspSystemStructureTest.xml")
path_to_dir = os.path.dirname(path_to_osp_system_strucuture_file)

simulation_config = SimulationConfiguration(
    system_structure=path_to_osp_system_strucuture_file,
    path_to_fmu=path_to_dir
)

Note that the path to the directories that contain all the relevant FMUs should be provided together with the source for the system structure file. When the system is configured, you can run the simulation for a given simulation time with default settings:

simulation_output = simulation_config.run_simulation(
    duration=10,
    logging_level=LoggingLevel.info
)
print(f"Logging: {simulation_output.log}")
print(f"Error: {simulation_output.error}")

for name, output in simulation_output.result.items():
    fig = output.plot(title=name)
    fig.write_image(os.path.join("..", "resources", f"{name}_0.png"))
Logging: Output csv files will be saved in the following directory: C:\Users\keviny\AppData\Local\Temp\pycosim_tmp\sim_0bb5ed62-1e64-45a4-8e23-0f05dcfab787\
Simulation will run until {10} seconds.
Running simulation.
info: Using cache directory: "C:\\Users\\keviny\\AppData\\Local\\cosim"
info: [FMI Library: FMILIB] Loading 'win64' binary with 'default' platform types
info: [FMI Library: FMILIB] Loading 'win64' binary with 'default' platform types
info: [FMI Library: FMILIB] Loading 'win64' binary with 'default' platform types
info: 10% complete, t=1.000000
info: 20% complete, t=2.000000
info: 30% complete, t=3.000000
info: 40% complete, t=4.000000
info: 50% complete, t=5.000000
info: 60% complete, t=6.000000
info: 70% complete, t=7.000000
info: 80% complete, t=8.000000
info: 90% complete, t=9.000000
info: 100% complete, t=10.000000


Error: 

Chassis-Plot Chassis-Plot Chassis-Plot

Default setting for the simulation is: - No scenario - No logging configuration (All variables will be logged at each time step.) - The system structure and output files are saved in the same directory as the temporary one where FMUs are deployed. - Only warning from simulation setting up and progress messages are logged.

Scenario configuration

A scenario is a collection of events that override / bias / reset a variable of components in the target system. A scenario can be created as follows:

from pyOSPParser.scenario import OSPScenario, OSPEvent

simulation_end_time = 10
simulation_config.scenario = OSPScenario(name='test_scenario', end=simulation_end_time)

# Adding an event to the scenario
simulation_config.scenario.add_event(OSPEvent(
    time=5,  # Time when the event happens
    model='chassis',  # Name_of_the_component
    variable='C.mChassis', # name_of_the_variable,
    action=OSPEvent.OVERRIDE, # Type of actions among OVERRIDE, BIAS, RESET
    value=19.4 # Value (only for OVERRIDE and BIAS)
))
<pyOSPParser.scenario.OSPEvent at 0x1fe02485c40>

Logging configuration

A logging configuration specifies which variables will be logged as output of the simulation. A logging configuration can be defined using OspLoggingConfiguration class:

from pyOSPParser.logging_configuration import OspVariableForLogging, OspSimulatorForLogging, OspLoggingConfiguration

# Create a variable object for logging
variables = [OspVariableForLogging(name="zChassis"), OspVariableForLogging(name="p.e")]

# Create a logging configuration of a component
name_of_component = 'chassis'
logging_config_comp = OspSimulatorForLogging(
    name=name_of_component,
    decimation_factor=10, # Relative period of how often the logging is made. 10 means once every ten time steps
    variables=variables
)

# Create a logging configuration instance for the system
simulation_config.logging_config = OspLoggingConfiguration(simulators=[logging_config_comp])

You can set the logging level for the messages during setting up and running a simulation. You can do that by passing the LoggingLevel member when running the simulation. If not specified, it will be ‘warning’ by default.

Let’s run the simulation again and see how the new configuration affected the outputs.

from pycosim.simulation import LoggingLevel

simulation_output = simulation_config.run_simulation(
    duration=simulation_end_time,
    logging_level=LoggingLevel.warning
)

print(f"Logging: {simulation_output.log}")
print(f"Error: {simulation_output.error}")

for name, output in simulation_output.result.items():
    fig = output.plot(title=name)
    fig.write_image(os.path.join("..", "resources", f"{name}_1.png"))

chassis-plot chassis-plot chassis-plot

Metadata

Release files for pycosim 0.6.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pycosim 0.6.5
File Size Uploaded Provenance Actions
pycosim-0.6.5.tar.gz 47.5 MB Without provenance Details for pycosim-0.6.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pycosim 0.6.5
File Interpreter ABI Platform Actions
pycosim-0.6.5-py3-none-any.whl Python 3 none any Details for pycosim-0.6.5-py3-none-any.whl

Total release size: 95.0 MB

Release files / pycosim-0.6.5.tar.gz

Download URL pycosim-0.6.5.tar.gz
Size 47.5 MB
Tags Source
SHA-256 checksum
How to use checksums
3dab58051d3c369cefef6ae235aa10f276a6f255fe81d16dda8faec67c65d819
BLAKE2b-256 checksum
How to use checksums
5c8a0a6a6ab1c75671198aefa159f49009e3833f6fdf5a49a99e5305f74682e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.1

Release files / pycosim-0.6.5-py3-none-any.whl

Download URL pycosim-0.6.5-py3-none-any.whl
Size 47.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
1347b75144a224dca0bd2b52594c60d975721bb69d830682880c92f328ae7852
BLAKE2b-256 checksum
How to use checksums
829ff2dbae8ebc067aecc7c43daa2d91613815dfe91272ed61b6affece1bec9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.1

Security for pycosim 0.6.5

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page