{"id":43368744,"url":"https://github.com/changgang/steps","last_synced_at":"2026-02-02T05:07:33.158Z","repository":{"id":57471436,"uuid":"204152345","full_name":"changgang/steps","owner":"changgang","description":"Simulation Toolkit for Electrical Power Systems","archived":false,"fork":false,"pushed_at":"2024-04-17T05:31:50.000Z","size":19255,"stargazers_count":57,"open_issues_count":1,"forks_count":18,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-08-21T10:47:53.896Z","etag":null,"topics":["cpp","dynamic","power-flow","power-system","python","simulation-toolkit"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/changgang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-08-24T12:09:47.000Z","updated_at":"2025-07-22T08:43:37.000Z","dependencies_parsed_at":"2022-09-26T17:40:26.752Z","dependency_job_id":"3ac864ef-ed4e-4712-9c2c-8119c99ce9c6","html_url":"https://github.com/changgang/steps","commit_stats":{"total_commits":552,"total_committers":4,"mean_commits":138.0,"dds":0.07065217391304346,"last_synced_commit":"5fccff93e15f203ad559906a84441a69537f7e1d"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/changgang/steps","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/changgang%2Fsteps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/changgang%2Fsteps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/changgang%2Fsteps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/changgang%2Fsteps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/changgang","download_url":"https://codeload.github.com/changgang/steps/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/changgang%2Fsteps/sbom","scorecard":{"id":273541,"data":{"date":"2025-08-11","repo":{"name":"github.com/changgang/steps","commit":"e5579d206045a97ef144e238673d6007138c05b4"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v2.0.0 not signed: https://api.github.com/repos/changgang/steps/releases/125221297","Warn: release artifact 1.3 not signed: https://api.github.com/repos/changgang/steps/releases/25751193","Warn: release artifact v1.1 not signed: https://api.github.com/repos/changgang/steps/releases/24326100","Warn: release artifact v2.0.0 does not have provenance: https://api.github.com/repos/changgang/steps/releases/125221297","Warn: release artifact 1.3 does not have provenance: https://api.github.com/repos/changgang/steps/releases/25751193","Warn: release artifact v1.1 does not have provenance: https://api.github.com/repos/changgang/steps/releases/24326100"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: CVE-2022-31567"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T13:56:22.145Z","repository_id":57471436,"created_at":"2025-08-17T13:56:22.145Z","updated_at":"2025-08-17T13:56:22.145Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29006081,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-02T04:25:24.522Z","status":"ssl_error","status_checked_at":"2026-02-02T04:24:51.069Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cpp","dynamic","power-flow","power-system","python","simulation-toolkit"],"created_at":"2026-02-02T05:07:28.730Z","updated_at":"2026-02-02T05:07:33.152Z","avatar_url":"https://github.com/changgang.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simulation Toolkit for Electrical Power Systems\n- Maintainer: Changgang Li \u003clichgang@sdu.edu.cn\u003e from School of Electrical Engineering, Shandong University.\n- Trust the following repositories or other credible duplications:\n  * STEPS: https://gitee.com/lichgang/steps/ and https://github.com/changgang/steps\n  * stepspy: https://pypi.org/project/stepspy/\n  * Documentation: https://github.com/changgang/steps/wiki/\n- Reminder of major repository:\n  * The github repository may lag behind the gitee repository due to some GIT PUSH issues. So, use gitee repository first.\n  * The 'dev' branch is constantly updating while the 'main' branch is updated when major functions are added. Use 'main' branch for stable applications, and try 'dev' branch for new features.\n- Date of Readme: Feb 1, 2026\n\n# Reference\nPlease cite STEPS with the following papers:  \n```[1] Changgang Li, Yue Wu, Hengxu Zhang, Hua Ye, Yutian Liu, Yilu Liu. \"STEPS: A Portable Numerical Simulation Toolkit for Electrical Power System Dynamic Studies,\" in IEEE Transactions on Power Systems, vol. 36, no. 4, pp. 3216-3226, July 2021, doi: 10.1109/TPWRS.2020.3045102.```  \n```[2] Changgang Li, Yun Hang, Yutian Liu, Vladimir Terzija. \"Uneven Internal Time-Step Adjustment for Fast Power System Dynamic Simulations based on Trapezoidal Integration of Elementary Transfer Function Blocks,\" in International Journal of Electrical Power \u0026 Energy Systems, vol. 155, Part A, 109509, January 2024, doi: 10.1016/j.ijepes.2023.109509```\n```[3] Jian Wang, Changgang Li, Junjun Yang, Hang Qi, Wen Hua, Wei Dong, Lin Ye, Vladimir Terzija. \"Open-Source Short-Circuit Current Solver for Power Systems with Renewable Energy Sources and HVDC Links,\" in International Journal of Electrical Power \u0026 Energy Systems, vol. 167, 110651, June 2025, doi: 10.1016/j.ijepes.2025.110651```\n\nSee: https://ieeexplore.ieee.org/document/9295409, https://www.sciencedirect.com/science/article/pii/S0142061523005665, https://www.sciencedirect.com/science/article/pii/S0142061525002029\n\n## Major functions\nSimulation Toolkit for Electrical Power Systems (STEPS) is an open source power system simulator designed for balanced large-scale AC-DC hybrid power system analysis.  \nCurrently, it supports powerflow solution, short circuit analysis, and dynamic simulation.  \nThe data format of STEPS is improved based on PSS/E raw, seq, and dyr data format. \nYou are encouraged to join us for further development.\n\n## Major versions\n- v2.3.0. Significant changes are made in this version. Add new devices of SV_SOURCE and MT_HVDC. Add new grid-following and grid-forming models for WT_GENERATOR, PV_UNIT, and ENERGY_STORAGE. Update short-circuit solver. Add support of load voltage sensor and lcc_hvdc2t model degrading in dynamic simulation for better convergence. Reorganize interfaces for building meters. Optimize codes for higher powerflow and dynamic simulation performance. Add CMakeFiles.txt for compilation with CMake. stepspy is also updated and pushed to pypi.\n- v2.2.0. Add function to change dynamic simulation time step manually. stepspy is also updated however not pushed to pypi due to token issue. please use python/stepspy-current/stepspy.\n- v2.1.0. Add function to check if NAN is detected in powerflow solver. stepspy is also updated. Compile option '-ffast-math' is disabled. \n- v2.0.0. Major version. (1) Short circuit functions added. Short circuit analysis with direct solution is supported. APIs are added to stepspy. Short circuit analysis with iterative solution is implemented in C++, and APIs will be added in later version.  (2) Two toolkit functions added: Correct Three Winding Transformer Impedance Logic and Blockwise Automatic Large Step Logic. If the 'Correct' logic is enabled, zero impedance winding of 3-winding transformer can be automatically fixed to avoid NaN error. If the 'Blockwise' logic is enabled, dynamic simulation time step can be increased for fast simulation (See Reference Paper [2]). The 'Blockwise' logic is implemented with changes of dynamic blocks of first order, differential, and lead-lag. (3) Option 'libsteps_file' is added to stepspy when creating STEPS() object when dynamic library with name different from 'libSTEPS' is used. (4) Some wind turbine model bugs are fixed. (5) stepspy module is also upgraded to v2.0.0.\n- v1.6.0. Add VSC HVDC for powerflow and dynamic simulation. stepspy also updated. Released on April 13, 2022.\n- v1.5.4. Update to improve performance. Released on Oct. 20, 2021.\n- v1.5.2. Add new APIs to get generator related model internal variables. Start to add linearization codes. Released on March. 24, 2021.\n- v1.5.1. Add new option export_full to functions of save_network_Y_matrix and APIs. stepspy is also updated. Start to add sequential parameters to STEPS. Released on Feb. 2, 2021.\n- v1.5.0. Add new function to get basic and user meter value in STEPS kernel and stepspy. Add additional parameter vbase to bus_name2number in case multi buses have the same bus name. Released on Dec. 22, 2020.\n- v1.4.1. Fix clear toolkit when reloading new powerflow data. Enable build initial zero Y matrix. Fix access violation in jacobian builder when updating seperate jacobian matrix. Add check of LU factorization failure. Special log file named 'blackhole' is supported to disable all log. Released on Dec. 7, 2020.\n- v1.4. add function to add default GENCLS model for generators without sync generator model when checking missing models. Fix bug in IEEEG1 in case T1 or T2 is not 0. Released on Sep. 27, 2020.\n- v1.3.1: Fix minor bug in IEEEG1 when T1 or T2 is non-zero. Released on Sep. 13, 2020. \n- v1.3: Fix minor bug in building Z matrix. Released on April 22, 2020. This version is available for better compatibility.\n- v1.1: Improved performance version on March 8, 2020. About 20~30% improvement comparing to v1.0.\n- v1.0: Improved performance version on Feb. 12, 2020. Support synchronous generator, wind turbine generator, (basic) PV unit, HVDC, static and dynamic loads.\n- v0.0: Initialize project on March 21, 2018\n\n## Dependency\nSTEPS depends on CSparse, CXSparse, CppTest, and RapidJSON. The CXSparse is modified to avoid confliction between CSparse and CXSparse by changing prefix cs_ and CS_ to cxs_ and CSX_ .\nThough BLAS, CBLAS, and other SuiteSparse codes are included in the package, they will be removed in future.\n\n## How to build\n1. Build STEPS kernel: https://github.com/changgang/steps/wiki/How-to-build-STEPS-kernel\n2. Install stepspy module to Python: https://github.com/changgang/steps/wiki/How-to-install-stepspy-in-Python","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchanggang%2Fsteps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchanggang%2Fsteps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchanggang%2Fsteps/lists"}