{"id":13721487,"url":"https://github.com/powsybl/powsybl-core","last_synced_at":"2025-05-15T07:06:04.542Z","repository":{"id":37406216,"uuid":"105284146","full_name":"powsybl/powsybl-core","owner":"powsybl","description":"A framework to build power system oriented software","archived":false,"fork":false,"pushed_at":"2025-05-13T15:28:39.000Z","size":56242,"stargazers_count":134,"open_issues_count":320,"forks_count":45,"subscribers_count":22,"default_branch":"main","last_synced_at":"2025-05-13T15:47:49.982Z","etag":null,"topics":["cim","energy-system","extensible","groovy","java","modular","power-system-simulation","power-systems","powsybl"],"latest_commit_sha":null,"homepage":"https://www.powsybl.org","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/powsybl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"security-analysis/pom.xml","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-09-29T14:51:18.000Z","updated_at":"2025-05-13T09:22:32.000Z","dependencies_parsed_at":"2023-10-04T03:11:09.188Z","dependency_job_id":"60763c0e-c991-49a6-8f1c-953a08a9a3c6","html_url":"https://github.com/powsybl/powsybl-core","commit_stats":{"total_commits":2823,"total_committers":113,"mean_commits":24.98230088495575,"dds":0.7927736450584485,"last_synced_commit":"fa2b1434bc56ab9bb4ecd5fb932339f4b61a6bc1"},"previous_names":[],"tags_count":125,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/powsybl%2Fpowsybl-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/powsybl%2Fpowsybl-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/powsybl%2Fpowsybl-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/powsybl%2Fpowsybl-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/powsybl","download_url":"https://codeload.github.com/powsybl/powsybl-core/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254043215,"owners_count":22004911,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cim","energy-system","extensible","groovy","java","modular","power-system-simulation","power-systems","powsybl"],"created_at":"2024-08-03T01:01:17.699Z","updated_at":"2025-05-15T07:06:04.536Z","avatar_url":"https://github.com/powsybl.png","language":"Java","funding_links":[],"categories":["Energy Systems","Energy System Assessment","Energy and Electricity"],"sub_categories":["Energy System Modeling Frameworks","Analysis"],"readme":"# PowSyBl Core\n\n\n[![Actions Status](https://github.com/powsybl/powsybl-core/actions/workflows/maven.yml/badge.svg?branch=main)](https://github.com/powsybl/powsybl-core/actions)\n[![Coverage Status](https://sonarcloud.io/api/project_badges/measure?project=com.powsybl%3Apowsybl-core\u0026metric=coverage)](https://sonarcloud.io/component_measures?id=com.powsybl%3Apowsybl-core\u0026metric=coverage)\n[![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=com.powsybl%3Apowsybl-core\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=com.powsybl%3Apowsybl-core)\n\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4795/badge)](https://bestpractices.coreinfrastructure.org/projects/4795)\n[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/powsybl/powsybl-core/badge)](https://securityscorecards.dev/viewer/?uri=github.com/powsybl/powsybl-core)\n\n[![MPL-2.0 License](https://img.shields.io/badge/license-MPL_2.0-blue.svg)](https://www.mozilla.org/en-US/MPL/2.0/)\n[![Javadocs](https://www.javadoc.io/badge/com.powsybl/powsybl-core.svg?color=blue)](https://www.javadoc.io/doc/com.powsybl/powsybl-core)\n[![Slack](https://img.shields.io/badge/slack-powsybl-blueviolet.svg?logo=slack)](https://join.slack.com/t/powsybl/shared_invite/zt-rzvbuzjk-nxi0boim1RKPS5PjieI0rA)\n\nPowSyBl (**Pow**er **Sy**stem **Bl**ocks) is an open source framework written in Java, that makes it easy to write complex\nsoftware for power systems’ simulations and analysis. Its modular approach allows developers to extend or customize its\nfeatures.\n\nPowSyBl is part of the LF Energy Foundation, a project of The Linux Foundation that supports open source innovation projects\nwithin the energy and electricity sectors.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/powsybl/powsybl-gse/main/gse-spi/src/main/resources/images/logo_lfe_powsybl.svg?sanitize=true\" alt=\"PowSyBl Logo\" width=\"50%\"/\u003e\n\u003c/p\u003e\n\nRead more at https://www.powsybl.org !\n\nThis project and everyone participating in it is governed by the [PowSyBl Code of Conduct](https://github.com/powsybl/.github/blob/main/CODE_OF_CONDUCT.md).\nBy participating, you are expected to uphold this code. Please report unacceptable behavior to [powsybl-tsc@lists.lfenergy.org](mailto:powsybl-tsc@lists.lfenergy.org).\n\n## PowSyBl vs PowSyBl Core\n\nThis document describes how to build the code of PowSyBl Core. If you just want to run PowSyBl demos, please visit\nhttps://www.powsybl.org/ where downloads will be available soon. If you want guidance on how to start building your own\napplication based on PowSyBl, please visit the [tutorials](https://powsybl.readthedocs.io/projects/powsybl-tutorials/) page.\n\nThe PowSyBl Core project is not a standalone project. Read on to learn how to modify the core code, be it for fun, for\ndiagnosing bugs, for improving your understanding of the framework, or for preparing pull requests to suggest improvements!\nPowSyBl Core provides library code to build all kinds of applications for power systems: a complete and extendable grid\nmodel, support for common exchange formats, APIs for power simulations an analysis, and support for local or distributed\ncomputations. For deployment, powsybl-core also provides iTools, a tool to build cross-platform integrated command-line\napplications. To build cross-platform graphical applications, please visit the PowSyBl GSE repository\nhttps://github.com/powsybl/powsybl-gse page.\n\n## Environment requirements\n\nPowsybl-core project is fully written in Java, so you only need few requirements:\n- JDK *(17 or greater)*\n- Maven *(3.8.1 or greater)* - you could use the embedded maven wrapper instead if you prefer (see [Using Maven Wrapper](#using-maven-wrapper))\n\nTo run all the tests, simply launch the following command from the root of the repository:\n```\n$\u003e mvn package\n```\n\nModify some existing tests or create your own new tests to experiment with the framework! If it suits you better, import\nthe project in an IDE and use the IDE to launch your own main classes. If you know java and maven and want to do things\nmanually, you can also use maven directly to compute the classpath of all the project jars and run anything you want with it.\n\nRead [Contributing.md](https://github.com/powsybl/.github/blob/main/CONTRIBUTING.md) for more in-depth explanations\non how to run code.\n\nRead [Install](#install) to generate an installed iTools distribution, a standalone external folder that contains all\nthe built objects required to run powsybl programs.\n\n## Build the documentation\nTo locally build the readthedocs documentation follow the instructions in the [documentation README](https://github.com/powsybl/powsybl-core/blob/main/docs/README.md) page.\n\n## Install\nAn iTools distribution can be generated and installed. The installation is a standalone external folder that contains all\nthe built objects required to run powsybl programs through the itools command-line interface. This repository contains\nthe `install.sh` script to do so easily. By default, the `install.sh` will compile code and copy the resulting iTools\ndistribution to the install folder.\n```\n$\u003e ./install.sh\n```\n\nA more detailled description of the install.sh script options follows:\n\n### Targets\n\n| Target | Description |\n| ------ | ----------- |\n| clean | Clean modules |\n| compile | Compile modules |\n| package | Compile modules and create a distributable package |\n| __install__ | __Compile modules and install it__ |\n| docs | Generate the documentation (Javadoc) |\n| help | Display this help |\n\n### Options\n\nThe install.sh script options are saved in the *install.cfg* configuration file. This configuration file is loaded and\nupdated each time you use the `install.sh` script.\n\n#### Global options\n\n| Option | Description | Default value |\n| ------ | ----------- | ------------- |\n| --help | Display this help | |\n| --prefix | Set the installation directory | $HOME/powsybl |\n| --mvn | Set the maven command to use | mvn | \n\n### Default configuration file\n```\n#  -- Global options --\npowsybl_prefix=$HOME/powsybl\npowsybl_mvn=mvn\n```\n\n## Using Maven Wrapper\nIf you don't have a proper Maven installed, you could use the [Apache Maven Wrapper](https://maven.apache.org/wrapper/)\nscripts provided. They will download a compatible maven distribution and use it automatically.\n\n### Configuration\n#### Configure the access to the maven distributions\nIn order to work properly, Maven Wrapper needs to download 2 artifacts: the maven distribution and the maven wrapper\ndistribution. By default, these are downloaded from the online Maven repository, but you could use an internal repository instead.\n\n##### Using a Maven Repository Manager\nIf you prefer to use an internal Maven Repository Manager instead of retrieving the artefacts from the internet, you should define the following variable in your environment:\n- `MVNW_REPOURL`: the URL to your repository manager (for instance `https://my_server/repository/maven-public`)\n\nNote that if you need to use this variable, it must be set for **each maven command**. Else, the Maven Wrapper will try to\nretrieve the maven distribution from the online Maven repository (even if one was already downloaded from another location).\n\n##### Using a proxy to access the Internet\nIf you don't use an internal Maven Repository, and need to use a proxy to access the Internet, you should:\n1. configure the proxy in your terminal (on Linux/MacOS, you can do it via the `http_proxy` and `https_proxy` environment variables).\nThis is needed to download the Maven Wrapper distribution ;\n\n2. execute **at least once** the following command:\n```shell\n./mvnw -DproxyHost=XXX -DproxyPort=XXX -Dhttp.proxyUser=XXX -Dhttp.proxyPassword=XXX -Djdk.http.auth.tunneling.disabledSchemes= clean\n```\nNotes:\n- The 4 `XXX` occurrences should be replaced with your configuration;\n- The `-Djdk.http.auth.tunneling.disabledSchemes=` option should be left empty;\n- Windows users should use `mvnw.cmd` instead of `./mvnw`.\n\nThis second step is required to download the Maven distribution.\n\nOnce both distributions are retrieved, the proxy configuration isn't needed anymore to use `./mvnw` or `mvnw.cmd` commands.\n\n\n##### Checking your access configuration\nYou could check your configuration with the following command:\n```shell\n./mvnw -version\n```\n\nIf you encounter any problem, you could specify `MVNW_VERBOSE=true` and relaunch the command to have\nfurther information.\n\n#### Configuring `install.sh` to use maven wrapper\nTo indicate `install.sh` to use Maven Wrapper, you need to configure it with the `--mvn` option:\n```shell\n./install.sh clean --mvn ./mvnw\n```\n\nYou can revert this configuration with the following command:\n```shell\n./install.sh clean --mvn mvn\n```\n\n### Usage\nOnce the configuration is done, you just need to use `./mvnw` instead of `mvn` in your commands.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpowsybl%2Fpowsybl-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpowsybl%2Fpowsybl-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpowsybl%2Fpowsybl-core/lists"}