Giter Club home page Giter Club logo

cimpy's Introduction

CIMpy

The CIMpy package enables the import, modification and export of grid data in the format of XML/RDF documents based on the Common Information Model (CIM) specified by the IEC61970 standard.

The processing of grid data is based on CIM compatible Python classes. The codebase for the CIM compatible Python classes was generated in an automated way. A separate tool allows for an easy adaption of CIMpy and its underlying codebase.

The focus of CIMpy is on the support of the Common Grid Model Exchange Standard (CGMES) specified by the European Network of Transmission System Operators for Electricity (ENTSO-E). However, the CIMpy package can readily support further as well as new CIM versions if required.

Documentation

CIMpy's documentation you can find here. The documentation provides instructions on CIMpy's installation, getting started examples and the possibility to browse through the supported CIM class codebases.

License

This project is released under the terms of the Apache License 2.0.

Publication

If you are using CIMpy for your research, please cite the following paper in your publications:

Dinkelbach, J., Razik, L., Mirz, M., Benigni, A., Monti, A.: Template-based generation of programming language specific code for smart grid modelling compliant with CIM and CGMES. J. Eng. 2023, 1โ€“13 (2022). https://doi.org/10.1049/tje2.12208

cimpy's People

Contributors

dinkelbachjan avatar jounathaen avatar m-mirz avatar martinmoraga avatar richardmarston avatar schmocker avatar simongrimmacs avatar stv0g avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

cimpy's Issues

TypeError Exception when importing dynamic data of Synchronous Machines

The parameter inertia of the class RotatingMachineDynamics is initialized in the contructor as an integer (see here).

When importing dynamic data, cimimport is converting the values of the cim files using the default value of the cimpy classes. That means, that cimimport tries to read the parameter inertia fro the CIM files as an integer and not as a float which traslante into an exception when reading dynamic data of cim topologies (see here)

The same bahaviour can be observed in the class SynchronousMachineTimeConstantReactance. The parameters tpdo, tppdo, tpqo, tppqo, tc should be initialized as floats in the contructor of the class.

Recursion Error in __str__ implementation

To reproduce, in importCIGREMV.py, add:

o = import_result['topology']['_f71dc9cf-458e-4b79-9c3b-6e3a9b5cd398']
print(str(o))

Result: RecursionError: maximum recursion depth exceeded while getting the str of an object

Can also occur with Terminal objects (where I first noticed it), ConformLoad objects, SvPowerFlow objects and possibly others.

Update FEIN link

The FEIN website is still pointing to the gitlab repo and needs to be updated.

Create GitHub Actions CI pipeline to update generated code via CIMgen

It would be a neat addition to automatically trigger a workflow in the cimpy (and possibly also CIMpp) repos whenever a new CIMgen version has been released.

This workflow should then use the updated CIMgen version to regenerated the Python classes in the cimpy.cgmes_* packages.

This workflow could be triggered automatically from a corresponding release workflow in the CIMgen repo.

This workflow can commit and push the updated generated code to this repo and bump its version.

entsoe:TopologicalNode.fromEndName not loaded

Describe the bug
Given the following xml code (from EntsoE boundary files):

<cim:TopologicalNode rdf:ID="some_number">
<cim:TopologicalNode.BaseVoltage rdf:resource="#some_number2"/>
<cim:TopologicalNode.ConnectivityNodeContainer rdf:resource="#some_number3"/>
<cim:IdentifiedObject.name>label</cim:IdentifiedObject.name>
<entsoe:IdentifiedObject.shortName>label</entsoe:IdentifiedObject.shortName>
<entsoe:TopologicalNode.fromEndName>Tunita</entsoe:TopologicalNode.fromEndName>
<entsoe:TopologicalNode.fromEndNameTso>STEG</entsoe:TopologicalNode.fromEndNameTso>
<entsoe:TopologicalNode.fromEndIsoCode>TN</entsoe:TopologicalNode.fromEndIsoCode>
<entsoe:TopologicalNode.toEndName>Montalto</entsoe:TopologicalNode.toEndName>
<entsoe:TopologicalNode.toEndNameTso>Terna</entsoe:TopologicalNode.toEndNameTso>
<entsoe:TopologicalNode.toEndIsoCode>IT</entsoe:TopologicalNode.toEndIsoCode>
<entsoe:TopologicalNode.boundaryPoint>true</entsoe:TopologicalNode.boundaryPoint>
</cim:TopologicalNode>

it seems that the fields starting with the prefix "entsoe" are not loaded into the TopologicalNode object

To Reproduce

res['topology']['some_number'].__dict__
{'DiagramObjects': 'list', 'mRID': 'some_number', 'name': '....', 'description': '...', 'energyIdentCodeEic': '', 'shortName': '', 'SvInjection': None, 'SvVoltage': <cimpy.cgmes_v2_4_15.SvVoltage.SvVoltage object at 0x000002127B5DF850>, 'AngleRefTopologicalIsland': None, 'TopologicalIsland': None, 'BaseVoltage': <cimpy.cgmes_v2_4_15.BaseVoltage.BaseVoltage object at 0x000002127B709BE0>, 'ConnectivityNodes': 'list', 'ConnectivityNodeContainer': <cimpy.cgmes_v2_4_15.Line.Line object at 0x000002127B6FED30>, 'ReportingGroup': None, 'Terminal': [<cimpy.cgmes_v2_4_15.Terminal.Terminal object at 0x000002127AE99490>, <cimpy.cgmes_v2_4_15.Terminal.Terminal object at 0x000002127B10E220>]}

Expected behavior
The fields e.g. "fromEndIsoCode" should appear inside the TopologicalNode

Many cgmes_v2_4_15 classes are missing when installed with pip.

Describe the bug

When installing CIMPY using pip, not all the cgmes_v2 classes are present. However using the install script in the repo yields the correct files.

Steps to reproduce

pip install cimpy

Expected behavior

All cgmes_v2 classes are present under the cimpy/cgmes_v2_4_15 folder , in /usr/local/lib/python3.7/site-packages

Screenshots

grafik
grafik

Setup

Using a python:3.7 docker container under WSL on a windows operating system.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.