{"id":19834,"name":"welib","description":"Wind energy library, Python and matlab tools for wind turbines analyses.","url":"https://github.com/ebranlard/welib","last_synced_at":"2026-05-18T04:01:27.109Z","repository":{"id":42175864,"uuid":"153533129","full_name":"ebranlard/welib","owner":"ebranlard","description":"Wind energy library, python and matlab tools for wind turbines analyses","archived":false,"fork":false,"pushed_at":"2026-02-17T01:08:33.000Z","size":14178,"stargazers_count":114,"open_issues_count":3,"forks_count":41,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-05-14T02:03:08.640Z","etag":null,"topics":["modeling","wind-energy"],"latest_commit_sha":null,"homepage":"","language":"Python","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/ebranlard.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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-10-17T22:47:46.000Z","updated_at":"2026-05-05T14:31:47.000Z","dependencies_parsed_at":"2024-06-13T03:41:36.564Z","dependency_job_id":"11ead6d1-e586-49a0-b829-02e89579214c","html_url":"https://github.com/ebranlard/welib","commit_stats":{"total_commits":490,"total_committers":3,"mean_commits":"163.33333333333334","dds":0.01224489795918371,"last_synced_commit":"3486e87c6348e9580099fe5c360138e762ab3ea9"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ebranlard/welib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebranlard","download_url":"https://codeload.github.com/ebranlard/welib/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/sbom","scorecard":{"id":364785,"data":{"date":"2025-08-11","repo":{"name":"github.com/ebranlard/welib","commit":"6c8f155c1b7f4fb3fb7da6273f3b9509f177995e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.9,"checks":[{"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/tests.yml:1","Info: no jobLevel write permissions found"],"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":"Maintained","score":3,"reason":"2 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 3","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/1 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":"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":"Binary-Artifacts","score":8,"reason":"binaries present in source code","details":["Warn: binary detected: welib/airfoils/matlab/KarmanTrefftzGeometry:1","Warn: binary detected: welib/wt_theory/matlab/OptimalCirculation/v01/fGoldsteinFactor.mexa64:1"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/ebranlard/welib/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/ebranlard/welib/tests.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:57","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:58","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:62","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 pipCommand dependencies pinned"],"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":"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.TXT:0","Info: FSF or OSI recognized license: MIT License: LICENSE.TXT:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"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":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"Vulnerabilities","score":0,"reason":"12 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: PYSEC-2020-73","Warn: Project is vulnerable to: PYSEC-2019-156 / GHSA-xp76-357g-9wqq","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: PYSEC-2022-42991 / GHSA-v3c5-jqr6-7qm8"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T11:37:06.411Z","repository_id":42175864,"created_at":"2025-08-18T11:37:06.411Z","updated_at":"2025-08-18T11:37:06.411Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33164672,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T22:39:12.733Z","status":"online","status_checked_at":"2026-05-18T02:00:06.436Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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"}},"owner":{"login":"ebranlard","name":"E. Branlard","uuid":"1318316","kind":"user","description":null,"email":"","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1318316?u=27dc541e04be1cb664eb7585c09ce76466a54a4e\u0026v=4","repositories_count":63,"last_synced_at":"2026-04-06T11:03:16.784Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ebranlard","funding_links":[],"total_stars":847,"followers":167,"following":5,"created_at":"2022-11-04T17:20:38.038Z","updated_at":"2026-04-06T11:03:16.784Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebranlard","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebranlard/repositories"},"packages":[{"id":11729524,"name":"github.com/ebranlard/welib","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/ebranlard/welib","keywords_array":[],"namespace":null,"versions_count":3,"first_release_published_at":"2023-06-16T00:39:35.000Z","latest_release_published_at":"2026-02-17T01:02:40.000Z","latest_release_number":"v4.2.0+incompatible","last_synced_at":"2026-05-16T03:02:04.460Z","created_at":"2025-06-04T10:54:57.789Z","updated_at":"2026-05-16T03:02:04.461Z","registry_url":"https://pkg.go.dev/github.com/ebranlard/welib","install_command":"go get github.com/ebranlard/welib","documentation_url":"https://pkg.go.dev/github.com/ebranlard/welib#section-documentation","metadata":{},"repo_metadata":{"id":42175864,"uuid":"153533129","full_name":"ebranlard/welib","owner":"ebranlard","description":"Wind energy library, python and matlab tools for wind turbines analyses","archived":false,"fork":false,"pushed_at":"2025-10-07T22:27:34.000Z","size":12757,"stargazers_count":98,"open_issues_count":2,"forks_count":35,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-10-29T08:08:17.562Z","etag":null,"topics":["modeling","wind-energy"],"latest_commit_sha":null,"homepage":"","language":"Python","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/ebranlard.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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-10-17T22:47:46.000Z","updated_at":"2025-10-27T11:36:58.000Z","dependencies_parsed_at":"2024-06-13T03:41:36.564Z","dependency_job_id":"11ead6d1-e586-49a0-b829-02e89579214c","html_url":"https://github.com/ebranlard/welib","commit_stats":{"total_commits":490,"total_committers":3,"mean_commits":"163.33333333333334","dds":0.01224489795918371,"last_synced_commit":"3486e87c6348e9580099fe5c360138e762ab3ea9"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/ebranlard/welib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebranlard","download_url":"https://codeload.github.com/ebranlard/welib/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/sbom","scorecard":{"id":364785,"data":{"date":"2025-08-11","repo":{"name":"github.com/ebranlard/welib","commit":"6c8f155c1b7f4fb3fb7da6273f3b9509f177995e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.9,"checks":[{"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/tests.yml:1","Info: no jobLevel write permissions found"],"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":"Maintained","score":3,"reason":"2 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 3","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/1 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":"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":"Binary-Artifacts","score":8,"reason":"binaries present in source code","details":["Warn: binary detected: welib/airfoils/matlab/KarmanTrefftzGeometry:1","Warn: binary detected: welib/wt_theory/matlab/OptimalCirculation/v01/fGoldsteinFactor.mexa64:1"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/ebranlard/welib/tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/ebranlard/welib/tests.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:57","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:58","Warn: pipCommand not pinned by hash: .github/workflows/tests.yml:62","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 pipCommand dependencies pinned"],"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":"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.TXT:0","Info: FSF or OSI recognized license: MIT License: LICENSE.TXT:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"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":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"Vulnerabilities","score":0,"reason":"12 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: PYSEC-2020-73","Warn: Project is vulnerable to: PYSEC-2019-156 / GHSA-xp76-357g-9wqq","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: PYSEC-2022-42991 / GHSA-v3c5-jqr6-7qm8"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T11:37:06.411Z","repository_id":42175864,"created_at":"2025-08-18T11:37:06.411Z","updated_at":"2025-08-18T11:37:06.411Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281625164,"owners_count":26533338,"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","status":"online","status_checked_at":"2025-10-29T02:00:06.901Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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"},"owner_record":{"login":"ebranlard","name":"E. Branlard","uuid":"1318316","kind":"user","description":null,"email":"","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1318316?u=27dc541e04be1cb664eb7585c09ce76466a54a4e\u0026v=4","repositories_count":61,"last_synced_at":"2025-10-12T00:49:57.143Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ebranlard","funding_links":[],"total_stars":818,"followers":163,"following":6,"created_at":"2022-11-04T17:20:38.038Z","updated_at":"2025-10-12T00:49:57.143Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebranlard","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebranlard/repositories"},"tags":[{"name":"v3.5.0","sha":"6c8f155c1b7f4fb3fb7da6273f3b9509f177995e","kind":"tag","published_at":"2025-06-07T17:45:10.000Z","download_url":"https://codeload.github.com/ebranlard/welib/tar.gz/v3.5.0","html_url":"https://github.com/ebranlard/welib/releases/tag/v3.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ebranlard/welib@v3.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/tags/v3.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/tags/v3.5.0/manifests"},{"name":"v1.0.0","sha":"39338fa1a27c69e668c2f161e71b614384cdaf21","kind":"tag","published_at":"2023-06-16T20:34:53.000Z","download_url":"https://codeload.github.com/ebranlard/welib/tar.gz/v1.0.0","html_url":"https://github.com/ebranlard/welib/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/ebranlard/welib@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/tags/v1.0.0/manifests"}]},"repo_metadata_updated_at":"2025-10-29T12:58:53.330Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":5.764254255794306,"dependent_packages_count":5.401293307900869,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":5.582773781847587},"purl":"pkg:golang/github.com/ebranlard/welib","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/ebranlard/welib","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/ebranlard/welib","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/ebranlard/welib/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2025-09-29T01:34:43.284Z","issues_count":4,"pull_requests_count":10,"avg_time_to_close_issue":1183362.0,"avg_time_to_close_pull_request":751004.1,"issues_closed_count":1,"pull_requests_closed_count":10,"pull_request_authors_count":4,"issue_authors_count":4,"avg_comments_per_issue":0.25,"avg_comments_per_pull_request":0.5,"merged_pull_requests_count":10,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":3,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":325.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/issues","maintainers":[{"login":"ebranlard","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ebranlard"}],"active_maintainers":[{"login":"ebranlard","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ebranlard"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Febranlard%2Fwelib/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Febranlard%2Fwelib/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Febranlard%2Fwelib/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Febranlard%2Fwelib/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Febranlard%2Fwelib/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Febranlard%2Fwelib/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2142536,"maintainers_count":0,"namespaces_count":782439,"keywords_count":112823,"github":"golang","metadata":{"funded_packages_count":53495},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-19T05:14:45.920Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":2969510,"name":"welib","ecosystem":"pypi","description":"Wind Energy Library","homepage":"http://github.com/ebranlard/welib/","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/ebranlard/welib","keywords_array":[],"namespace":null,"versions_count":5,"first_release_published_at":"2021-12-19T03:12:12.000Z","latest_release_published_at":"2026-02-17T01:13:07.000Z","latest_release_number":"4.2.0","last_synced_at":"2026-05-16T03:02:08.060Z","created_at":"2022-04-10T13:03:56.475Z","updated_at":"2026-05-16T03:02:08.061Z","registry_url":"https://pypi.org/project/welib/","install_command":"pip install welib --index-url https://pypi.org/simple","documentation_url":"https://welib.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 5 - Production/Stable","Environment :: Console","Intended Audience :: Developers","Intended Audience :: Education","Intended Audience :: End Users/Desktop","Intended Audience :: Science/Research","License :: OSI Approved :: MIT License","Operating System :: MacOS :: MacOS X","Operating System :: Microsoft :: Windows","Operating System :: POSIX","Operating System :: Unix","Programming Language :: Python","Topic :: Scientific/Engineering","Topic :: Scientific/Engineering :: Atmospheric Science","Topic :: Scientific/Engineering :: Hydrology","Topic :: Scientific/Engineering :: Mathematics","Topic :: Scientific/Engineering :: Physics"],"normalized_name":"welib","project_status":null},"repo_metadata":{"id":42175864,"uuid":"153533129","full_name":"ebranlard/welib","owner":"ebranlard","description":"Wind energy library, python and matlab tools for wind turbines analyses","archived":false,"fork":false,"pushed_at":"2024-09-27T16:25:21.000Z","size":11720,"stargazers_count":67,"open_issues_count":0,"forks_count":31,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-10-29T19:58:13.565Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","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/ebranlard.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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-17T22:47:46.000Z","updated_at":"2024-10-17T19:46:25.000Z","dependencies_parsed_at":"2024-06-13T03:41:36.564Z","dependency_job_id":"11ead6d1-e586-49a0-b829-02e89579214c","html_url":"https://github.com/ebranlard/welib","commit_stats":{"total_commits":490,"total_committers":3,"mean_commits":"163.33333333333334","dds":0.01224489795918371,"last_synced_commit":"3486e87c6348e9580099fe5c360138e762ab3ea9"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebranlard","download_url":"https://codeload.github.com/ebranlard/welib/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222119788,"owners_count":16934949,"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"},"owner_record":{"login":"ebranlard","name":"E. Branlard","uuid":"1318316","kind":"user","description":null,"email":"","website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1318316?u=27dc541e04be1cb664eb7585c09ce76466a54a4e\u0026v=4","repositories_count":54,"last_synced_at":"2024-06-11T15:53:28.169Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ebranlard","funding_links":[],"total_stars":635,"followers":129,"following":6,"created_at":"2022-11-04T17:20:38.038Z","updated_at":"2024-06-11T15:53:34.219Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebranlard","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebranlard/repositories"},"tags":[{"name":"v1.0.0","sha":"39338fa1a27c69e668c2f161e71b614384cdaf21","kind":"tag","published_at":"2023-06-16T20:34:53.000Z","download_url":"https://codeload.github.com/ebranlard/welib/tar.gz/v1.0.0","html_url":"https://github.com/ebranlard/welib/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/tags/v1.0.0/manifests"}]},"repo_metadata_updated_at":"2024-10-29T21:55:49.364Z","dependent_packages_count":0,"downloads":172,"downloads_period":"last-month","dependent_repos_count":1,"rankings":{"downloads":57.23202101895739,"dependent_repos_count":22.087784936889527,"dependent_packages_count":7.31012528119255,"stargazers_count":9.573993226179056,"forks_count":7.394819788954365,"docker_downloads_count":null,"average":20.719748850434577},"purl":"pkg:pypi/welib","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/welib","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/welib","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/welib/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2024-10-29T19:01:12.230Z","issues_count":1,"pull_requests_count":7,"avg_time_to_close_issue":1183362.0,"avg_time_to_close_pull_request":1070019.2857142857,"issues_closed_count":1,"pull_requests_closed_count":7,"pull_request_authors_count":4,"issue_authors_count":1,"avg_comments_per_issue":1.0,"avg_comments_per_pull_request":0.5714285714285714,"merged_pull_requests_count":7,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":3685039.0,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":2,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":0.5,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/issues","maintainers":[{"login":"ebranlard","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ebranlard"}],"active_maintainers":[{"login":"ebranlard","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ebranlard"}]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/welib/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/welib/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/welib/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/welib/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/welib/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/welib/codemeta","maintainers":[{"uuid":"ebranlard","login":"ebranlard","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://pypi.org/user/ebranlard/","role":null,"created_at":"2023-02-25T19:07:50.502Z","updated_at":"2023-02-25T19:07:50.502Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/ebranlard/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":866112,"maintainers_count":370148,"namespaces_count":0,"keywords_count":280639,"github":"pypi","metadata":{"funded_packages_count":53810},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2026-05-13T05:09:37.527Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}}],"commits":{"id":679888,"full_name":"ebranlard/welib","default_branch":"main","total_commits":626,"total_committers":6,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":104.33333333333333,"dds":0.04472843450479236,"past_year_total_commits":33,"past_year_total_committers":2,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":16.5,"past_year_dds":0.030303030303030276,"last_synced_at":"2026-05-17T17:46:12.595Z","last_synced_commit":"c4e30662c7e8354961c00e088ee0f210a2c1a6a0","created_at":"2023-03-09T10:49:42.711Z","updated_at":"2026-05-17T17:46:05.270Z","committers":[{"name":"Emmanuel Branlard","email":"emmanuel.branlard@nrel.gov","login":"ebranlard","count":598},{"name":"Emmanuel Branlard","email":"elmanuelito.github.@gmail.com","login":null,"count":20},{"name":"Branlard","email":"ebranlar@nrel.gov","login":null,"count":5},{"name":"SimonHH","email":"38310787+SimonHH","login":"SimonHH","count":1},{"name":"Jeffrey Harris","email":"clark115@gmail.com","login":"jcharris","count":1},{"name":"Veronica Liverud Krathe","email":"veronlk@ntnu.no","login":null,"count":1}],"past_year_committers":[{"name":"Emmanuel Branlard","email":"elmanuelito.github@gmail.com","login":"ebranlard","count":32},{"name":"Emmanuel Branlard","email":"elmanuelito.github.@gmail.com","login":null,"count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-18T00:00:12.307Z","repositories_count":6236237,"commits_count":884965281,"contributors_count":34916162,"owners_count":1154434,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"ebranlard/welib","html_url":"https://github.com/ebranlard/welib","last_synced_at":"2026-04-29T19:00:48.914Z","status":"error","issues_count":6,"pull_requests_count":10,"avg_time_to_close_issue":600468.0,"avg_time_to_close_pull_request":751004.1,"issues_closed_count":2,"pull_requests_closed_count":10,"pull_request_authors_count":4,"issue_authors_count":6,"avg_comments_per_issue":0.5,"avg_comments_per_pull_request":0.5,"merged_pull_requests_count":10,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":3,"past_year_pull_requests_count":2,"past_year_avg_time_to_close_issue":17574.0,"past_year_avg_time_to_close_pull_request":325.0,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":2,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":2,"created_at":"2023-05-09T10:39:51.217Z","updated_at":"2026-04-29T19:00:48.915Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebranlard%2Fwelib/issues","issue_labels_count":{},"pull_request_labels_count":{"bug":3,"enhancement":1},"issue_author_associations_count":{"NONE":6},"pull_request_author_associations_count":{"OWNER":6,"NONE":4},"issue_authors":{"s1291":1,"stefano2734":1,"Chiaraginko":1,"Antoine-HENRY-setec":1,"ravi0801":1,"verlivkra":1},"pull_request_authors":{"ebranlard":6,"jcharris":2,"verlivkra":1,"SimonHH":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-16T00:00:24.458Z","repositories_count":14608906,"issues_count":34175373,"pull_requests_count":111944541,"authors_count":11263705,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":3},"past_year_pull_request_author_associations_count":{"OWNER":2},"past_year_issue_authors":{"ravi0801":1,"s1291":1,"stefano2734":1},"past_year_pull_request_authors":{"ebranlard":2},"maintainers":[{"login":"ebranlard","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ebranlard"}],"active_maintainers":[{"login":"ebranlard","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ebranlard"}]},"events":{"total":{"ReleaseEvent":1,"PullRequestEvent":3,"ForkEvent":4,"IssuesEvent":4,"WatchEvent":28,"IssueCommentEvent":2,"PushEvent":43,"CreateEvent":2},"last_year":{"ReleaseEvent":1,"PullRequestEvent":3,"ForkEvent":1,"IssuesEvent":2,"WatchEvent":16,"IssueCommentEvent":2,"PushEvent":28,"CreateEvent":2}},"keywords":["modeling","wind-energy"],"dependencies":[{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-12T08:41:04.662Z","updated_at":"2022-08-12T08:41:04.662Z","repository_link":"https://github.com/ebranlard/welib/blob/main/requirements.txt","dependencies":[{"id":1304716745,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304716746,"package_name":"xlrd","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304716747,"package_name":"numpy","ecosystem":"pypi","requirements":"\u003e=1.16.5","direct":true,"kind":"runtime","optional":false},{"id":1304716748,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304716749,"package_name":"pandas","ecosystem":"pypi","requirements":"\u003e=1.0.1","direct":true,"kind":"runtime","optional":false},{"id":1304716750,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304716751,"package_name":"future","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304716752,"package_name":"chardet","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304716753,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304716754,"package_name":"sympy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-08-12T08:41:05.031Z","updated_at":"2022-08-12T08:41:05.031Z","repository_link":"https://github.com/ebranlard/welib/blob/main/setup.py","dependencies":[{"id":1304723791,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304723792,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304723793,"package_name":"scipy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304723794,"package_name":"future","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304723795,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304723796,"package_name":"sympy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304723797,"package_name":"xlrd","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304723798,"package_name":"chardet","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"welib/tools/requirements.txt","sha":null,"kind":"manifest","created_at":"2022-08-12T08:41:05.422Z","updated_at":"2022-08-12T08:41:05.422Z","repository_link":"https://github.com/ebranlard/welib/blob/main/welib/tools/requirements.txt","dependencies":[{"id":1304732929,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304732930,"package_name":"pandas","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304732931,"package_name":"future","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304732932,"package_name":"screeninfo","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304732933,"package_name":"deap","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":1304732934,"package_name":"matplotlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/tests.yml","sha":null,"kind":"manifest","created_at":"2023-02-04T04:19:07.138Z","updated_at":"2023-02-04T04:19:07.138Z","repository_link":"https://github.com/ebranlard/welib/blob/main/.github/workflows/tests.yml","dependencies":[{"id":7343693801,"package_name":"actions/checkout","ecosystem":"actions","requirements":"main","direct":true,"kind":"composite","optional":false},{"id":7343693802,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"pypi","filepath":"welib/tools/external/setup.py","sha":null,"kind":"manifest","created_at":"2023-11-20T23:27:57.769Z","updated_at":"2023-11-20T23:27:57.769Z","repository_link":"https://github.com/ebranlard/welib/blob/main/welib/tools/external/setup.py","dependencies":[]}],"score":11.71298870324034,"created_at":"2023-09-11T14:52:07.468Z","updated_at":"2026-05-18T04:01:27.132Z","avatar_url":"https://github.com/ebranlard.png","language":"Python","category":"Renewable Energy","sub_category":"Wind Energy","monthly_downloads":172,"total_dependent_repos":1,"total_dependent_packages":0,"readme":"��[![Build status](https://github.com/ebranlard/welib/workflows/Tests/badge.svg)](https://github.com/ebranlard/welib/actions?query=workflow%3A%22Tests%22)\r\n[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20me%20a%20coffee-FFDD00?logo=buy-me-a-coffee\u0026logoColor=black)](https://www.buymeacoffee.com/hTpOQGl)\r\n\r\n# Wind Energy Library - welib\r\n\r\nWind energy library: suite of python and matlab tools for aero-servo-hydro-elasticity (aerodynanmics, controls, hydrodynamics, structure/elasticity) and wind energy.\r\n\r\n# Installation and testing\r\nInstalling the latest release:\r\n```bash\r\npip install --upgrade welib\r\n```\r\nInstalling the latest dev version and running the unittests:\r\n```bash\r\ngit clone http://github.com/ebranlard/welib -b dev\r\ncd welib\r\npython -m pip install -r requirements.txt\r\npython -m pip install -e .\r\npytest\r\n```\r\n\r\n# Gallery of example scripts\r\n\r\nA sample of the figures generated by the examples in this repository are given below.\r\nAdditional examples can be found in the `examples` and `tests` folders of the different subpackages.\r\n\r\nClick on the links to access the corresponding scripts. \r\nClick on the figures to enlarge the figures.\r\n\r\n### airfoils: airfoil and polar applications\r\n\r\nExamples of applications:\r\n- Manipulation of airfoil curves, find slopes, interpolate (see [airfoils](welib/airfoils/examples/))\r\n- Run different dynamic stall models (e.g Oye or MHH/HGM model) (see [airfoils/DS](welib/airfoils/examples/))\r\n\r\nSample figures from examples:\r\n\r\n| | | | |  |\r\n| :-------------------------: | :-------------------------: | :-------------------------: | :-------------------------: | :-------------------------:  |\r\n| [Airfoils - 3D correction](/welib/airfoils/examples/correction3D.py) | [Airfoils - Karman-Trefftz Velocity Field](/welib/airfoils/examples/KarmanTrefftz.py) | [Airfoils - MGH dynamic stall model](/welib/airfoils/examples/dynamic_stall_mhh.py) | [Airfoils - Oye dynamic stall model](/welib/airfoils/examples/dynamic_stall_oye.py) | [Airfoils - Wagner function](/welib/airfoils/examples/wagner.py) |\r\n| ![Airfoils - 3D correction](/../figs/_figs/Airfoils-3DCorrection.png) | ![Airfoils - Karman-Trefftz Velocity Field](/../figs/_figs/Airfoils-Karman-TrefftzVelocityField.png) | ![Airfoils - MGH dynamic stall model](/../figs/_figs/Airfoils-MGHDynamicStallModel.png) | ![Airfoils - Oye dynamic stall model](/../figs/_figs/Airfoils-OyeDynamicStallModel.png) | ![Airfoils - Wagner function](/../figs/_figs/Airfoils-WagnerFunction.png) |\r\n\r\n\r\n### BEM: Blade Element Momentum Theory\r\n\r\nExamples of Blade Element Momentum (BEM) Theory applications.\r\n- Run steady state BEM simulations (see [BEM/steady 1-2](welib/BEM/examples)\r\n- Run unsteady BEM simulations (see [BEM/unsteady 1-2](welib/BEM/examples/)\r\n\r\nSample figures from examples:\r\n\r\n| | | | |  |\r\n| :-------------------------: | :-------------------------: | :-------------------------: | :-------------------------: | :-------------------------:  |\r\n| [BEM - Steady - CP-lambda-pitch ](/welib/BEM/examples/Example_BEM_CPLambdaPitch.py) | [BEM - Steady - High thrust correction](/welib/BEM/examples/Example_AxialInduction.py) | [BEM - Steady - Performance curve](/welib/BEM/examples/Example_BEM_2.py) | [BEM - Theory - Ideal rotor planform](/welib/BEM/examples/Example_IdealRotor.py) | [BEM - Unsteady - Prescribed surge motion](/welib/BEM/examples/Example_UnsteadyBEM_2_PrescribedMotion.py) |\r\n| ![BEM - Steady - CP-lambda-pitch ](/../figs/_figs/BEM-Steady-CP-lambda-pitch.png) | ![BEM - Steady - High thrust correction](/../figs/_figs/BEM-Steady-HighThrustCorrection.png) | ![BEM - Steady - Performance curve](/../figs/_figs/BEM-Steady-PerformanceCurve.png) | ![BEM - Theory - Ideal rotor planform](/../figs/_figs/BEM-Theory-IdealRotorPlanform.png) | ![BEM - Unsteady - Prescribed surge motion](/../figs/_figs/BEM-Unsteady-PrescribedSurgeMotion.png) |\r\n\r\n\r\n### beam: beam theory and numerical analyses\r\n\r\nSample figures from examples:\r\n\r\n| | | | |  |\r\n| :-------------------------: | :-------------------------: | :-------------------------: | :-------------------------: | :-------------------------:  |\r\n| [Beam - 1D - Analytical and numerical deflections](/welib/beams/examples/Cantilever1D_Deflection.py) | [Beam - 1D - Analytical and numerical modes](/welib/beams/examples/Cantilever1D_Modes.py) | [Beam - 2D - NREL5MW coupled blade modes](/welib/beams/examples/Cantilever2D_Modes.py) | [Beam - 2D - NREL5MW deflections](/welib/beams/examples/Cantilever2D_Deflection.py) | [Beam - Analytical mode shapes different BC](/welib/beams/examples/Ex2_BeamModesAllBC.py) |\r\n| ![Beam - 1D - Analytical and numerical deflections](/../figs/_figs/Beam-1D-AnalyticalAndNumericalDeflections.png) | ![Beam - 1D - Analytical and numerical modes](/../figs/_figs/Beam-1D-AnalyticalAndNumericalModes.png) | ![Beam - 2D - NREL5MW coupled blade modes](/../figs/_figs/Beam-2D-NREL5MWCoupledBladeModes.png) | ![Beam - 2D - NREL5MW deflections](/../figs/_figs/Beam-2D-NREL5MWDeflections.png) | ![Beam - Analytical mode shapes different BC](/../figs/_figs/Beam-AnalyticalModeShapesDifferentBC.png) |\r\n| [Beam - Analytical mode shapes of a beam](/welib/beams/examples/Ex1_BeamModes.py) |  |  |  |  |\r\n| ![Beam - Analytical mode shapes of a beam](/../figs/_figs/Beam-AnalyticalModeShapesOfABeam.png) |  |  |  |  |\r\n\r\n\r\n### dyninflow: dynamic inflow\r\n\r\nSample figures from examples:\r\n\r\n|  |\r\n| :-------------------------:  |\r\n| [Dynamic Inflow - Oye - induction step](/welib/dyninflow/examples/Ex1_StepUp.py) |\r\n| ![Dynamic Inflow - Oye - induction step](/../figs/_figs/DynamicInflow-Oye-InductionStep.png) |\r\n\r\n\r\n### fast: OpenFAST tools\r\n\r\nThis package led to the `openfast\\_toolbox`\r\nSample figures from examples:\r\n\r\n| |  |\r\n| :-------------------------: | :-------------------------:  |\r\n| [FAST - Average radial outputs](/welib/fast/examples/Example_RadialPostPro.py) | [FAST - interpolate radial time series](/welib/fast/examples/Example_RadialInterp.py) |\r\n| ![FAST - Average radial outputs](/../figs/_figs/FAST-AverageRadialOutputs.png) | ![FAST - interpolate radial time series](/../figs/_figs/FAST-InterpolateRadialTimeSeries.png) |\r\n\r\n\r\n### FEM: finite element method\r\n\r\nExamples of applications:\r\n- Perform 2d/3d FEM analyses using beam/frame elements (see [FEM](welib/FEM/examples))\r\n- Craig-Bampton / Guyan reduction of a structure (see [FEM](welib/FEM/examples))\r\n\r\nSample figures from examples:\r\n\r\n| |  |\r\n| :-------------------------: | :-------------------------:  |\r\n| [FEM - mode shapes of a beam](/welib/FEM/examples/Beam_ModeShapes_UniformBeamFrame3d.py) | [FEM - mode shapes of tower](/welib/FEM/examples/Beam_ModeShapes_Tower.py) |\r\n| ![FEM - mode shapes of a beam](/../figs/_figs/FEM-ModeShapesOfABeam.png) | ![FEM - mode shapes of tower](/../figs/_figs/FEM-ModeShapesOfTower.png) |\r\n\r\n\r\n### hydro: hydrodynamics applications\r\n\r\nExamples of applications:\r\n- Wave kinematics for linear waves (see [hydro/Ex1](welib/hydro/examples/Ex1_WaveKinematics.py))\r\n- Generation of wave time series from a given spectrum (see [hydro/Ex3](welib/hydro/examples/Ex3_WaveTimeSeries.py))\r\n- Computation of wave loads on a monopile (see [hydro/Ex4](welib/hydro/examples/Ex4_WaveLoads.py))\r\n\r\nSample figures from examples:\r\n\r\n| | | |  |\r\n| :-------------------------: | :-------------------------: | :-------------------------: | :-------------------------:  |\r\n| [Hydro - Jonswap spectrum](/welib/hydro/examples/Ex2_Jonswap_spectrum.py) | [Hydro - Morison loads on monopile](/welib/hydro/examples/Ex4_WaveLoads.py) | [Hydro - wave generation](/welib/hydro/examples/Ex3_WaveTimeSeries.py) | [Hydro - Wave kinematics](/welib/hydro/examples/Ex1_WaveKinematics.py) |\r\n| ![Hydro - Jonswap spectrum](/../figs/_figs/Hydro-JonswapSpectrum.png) | ![Hydro - Morison loads on monopile](/../figs/_figs/Hydro-MorisonLoadsOnMonopile.png) | ![Hydro - wave generation](/../figs/_figs/Hydro-WaveGeneration.png) | ![Hydro - Wave kinematics](/../figs/_figs/Hydro-WaveKinematics.png) |\r\n\r\n\r\n### standards\r\n\r\nSample figures from examples:\r\n\r\n| |  |\r\n| :-------------------------: | :-------------------------:  |\r\n| [IEC Standards - Extreme operating gusts](/welib/standards/examples/Ex2_EOG.py) | [IEC Standards - Turbulence classes](/welib/standards/examples/Ex1_TurbulenceClasses.py) |\r\n| ![IEC Standards - Extreme operating gusts](/../figs/_figs/IECStandards-ExtremeOperatingGusts.png) | ![IEC Standards - Turbulence classes](/../figs/_figs/IECStandards-TurbulenceClasses.png) |\r\n\r\n\r\n### partdyn: particle dynamics\r\n\r\nSample figures from examples:\r\n\r\n| |  |\r\n| :-------------------------: | :-------------------------:  |\r\n| [PartDyn - Gravitational and spring interactions](/welib/yams/partdyn/examples/ThreePart_Gravitation.py) | [PartDyn - Gravitational interaction - Moon Orbit](/welib/yams/partdyn/examples/TwoPart_Orbits.py) |\r\n| ![PartDyn - Gravitational and spring interactions](/../figs/_figs/PartDyn-GravitationalAndSpringInteractions.png) | ![PartDyn - Gravitational interaction - Moon Orbit](/../figs/_figs/PartDyn-GravitationalInteraction-MoonOrbit.png) |\r\n\r\n\r\n### plot\r\n\r\nSample figures from examples:\r\n\r\n|  |\r\n| :-------------------------:  |\r\n| [Plot - 3D blades](/welib/plot/examples/Plot_3D_blades.py) |\r\n| ![Plot - 3D blades](/../figs/_figs/Plot-3DBlades.png) |\r\n\r\n\r\n### stoch: stochasticity\r\n\r\nManipulate stochastic variables.\r\nSample figures from examples:\r\n\r\n| | |  |\r\n| :-------------------------: | :-------------------------: | :-------------------------:  |\r\n| [Stochastic - Correlated variables](/welib/stoch/examples/CorrelatedVars.py) | [Stochastic - Distributions](/welib/stoch/examples/Distributions.py) | [Stochastic - Independent and standardized](/welib/stoch/examples/ChangeOfVarVector.py) |\r\n| ![Stochastic - Correlated variables](/../figs/_figs/Stochastic-CorrelatedVariables.png) | ![Stochastic - Distributions](/../figs/_figs/Stochastic-Distributions.png) | ![Stochastic - Independent and standardized](/../figs/_figs/Stochastic-IndependentAndStandardized.png) |\r\n\r\n\r\n### system: system dynamics applications\r\n\r\nExamples of applications:\r\n- Linearize a non-linear system defined by a state and output equation (implicit or explicit) (see [system](welib/system/tests))\r\n- Perform time integration of mechanical systems (see [system](welib/system/examples))\r\n\r\nSample figures from examples:\r\n\r\n| | | | |  |\r\n| :-------------------------: | :-------------------------: | :-------------------------: | :-------------------------: | :-------------------------:  |\r\n| [System - 2nd order - forced vibrations](/welib/system/examples/MassSpringDamper_ForcedVibrations.py) | [System - 2nd order - Responses](/welib/system/examples/StepResponse.py) | [System - 3D pendulum - motion](/welib/system/examples/pendulum_3d.py) | [System -  LTI Bode plot - 2nd order mass spring damper](/welib/system/examples/MassSpringDamper_StateSpace_FreqDomain.py) | [System - Lorenz attractor](/welib/system/examples/Lorenz.py) |\r\n| ![System - 2nd order - forced vibrations](/../figs/_figs/System-2ndOrder-ForcedVibrations.png) | ![System - 2nd order - Responses](/../figs/_figs/System-2ndOrder-Responses.png) | ![System - 3D pendulum - motion](/../figs/_figs/System-3DPendulum-Motion.png) | ![System -  LTI Bode plot - 2nd order mass spring damper](/../figs/_figs/System-LTIBodePlot-2ndOrderMassSpringDamper.png) | ![System - Lorenz attractor](/../figs/_figs/System-LorenzAttractor.png) |\r\n\r\n\r\n### tools: misc tools\r\n\r\n-  Spectral analyses, signal processing, time integration, vector analyses\r\nSample figures from examples:\r\n\r\n| | |  |\r\n| :-------------------------: | :-------------------------: | :-------------------------:  |\r\n| [Tools - Fatigue - Sinusoids](/welib/tools/examples/Example_Fatigue.py) | [Tools - Signal - Correlation coefficient](/welib/tools/examples/ExampleCorrelation.py) | [Tools - Signal - FFT](/welib/tools/examples/Example_FFT.py) |\r\n| ![Tools - Fatigue - Sinusoids](/../figs/_figs/Tools-Fatigue-Sinusoids.png) | ![Tools - Signal - Correlation coefficient](/../figs/_figs/Tools-Signal-CorrelationCoefficient.png) | ![Tools - Signal - FFT](/../figs/_figs/Tools-Signal-FFT.png) |\r\n\r\n\r\n### vortilib: vortex dynamics, theory and methods\r\n\r\nSample figures from examples:\r\n\r\n| | | | |  |\r\n| :-------------------------: | :-------------------------: | :-------------------------: | :-------------------------: | :-------------------------:  |\r\n| [Vortilib - 2D vorticity patch discretized with vortex points](/welib/vortilib/elements/examples/VortexPoint2DDistribution.py) | [Vortilib - Elliptical Coordinates](/welib/vortilib/elements/examples/EllipticalCoordinates.py) | [Vortilib - Flow about a 2D point doublet](/welib/vortilib/elements/examples/DoubletPoint_Plots.py) | [Vortilib - Flow about a 2D point doublet - alt](/welib/vortilib/elements/examples/DoubletPoint_Plots.py) | [Vortilib - Flow about a 2D point source](/welib/vortilib/elements/examples/SourcePoint_Plots.py) |\r\n| ![Vortilib - 2D vorticity patch discretized with vortex points](/../figs/_figs/Vortilib-2DVorticityPatchDiscretizedWithVortexPoints.png) | ![Vortilib - Elliptical Coordinates](/../figs/_figs/Vortilib-EllipticalCoordinates.png) | ![Vortilib - Flow about a 2D point doublet](/../figs/_figs/Vortilib-FlowAboutA2DPointDoublet.png) | ![Vortilib - Flow about a 2D point doublet - alt](/../figs/_figs/Vortilib-FlowAboutA2DPointDoublet-Alt.png) | ![Vortilib - Flow about a 2D point source](/../figs/_figs/Vortilib-FlowAboutA2DPointSource.png) |\r\n| [Vortilib - Flow about a 2D point source - alt](/welib/vortilib/elements/examples/SourcePoint_Plots.py) | [Vortilib - Flow about a 2D point vortex](/welib/vortilib/elements/examples/VortexPoint_Plots.py) | [Vortilib - Flow about a 2D point vortex - alt](/welib/vortilib/elements/examples/VortexPoint_Plots.py) | [Vortilib - Flow about a 2D Rankine oval - alt](/welib/vortilib/elements/examples/RankineOval_Plots.py) | [Vortilib - Flow about a 2D vortex cylinder - Gamma=0.0](/welib/vortilib/elements/examples/Cylinder2D_Plots.py) |\r\n| ![Vortilib - Flow about a 2D point source - alt](/../figs/_figs/Vortilib-FlowAboutA2DPointSource-Alt.png) | ![Vortilib - Flow about a 2D point vortex](/../figs/_figs/Vortilib-FlowAboutA2DPointVortex.png) | ![Vortilib - Flow about a 2D point vortex - alt](/../figs/_figs/Vortilib-FlowAboutA2DPointVortex-Alt.png) | ![Vortilib - Flow about a 2D Rankine oval - alt](/../figs/_figs/Vortilib-FlowAboutA2DRankineOval-Alt.png) | ![Vortilib - Flow about a 2D vortex cylinder - Gamma=0.0](/../figs/_figs/Vortilib-FlowAboutA2DVortexCylinder-Gamma00.png) |\r\n| [Vortilib - Flow about a 2D vortex cylinder - Gamma=0.5](/welib/vortilib/elements/examples/Cylinder2D_Plots.py) | [Vortilib - Flow about a 2D vortex cylinder - Gamma=1.1](/welib/vortilib/elements/examples/Cylinder2D_Plots.py) | [Vortilib - Flow about an axisymmetric vorticity surface](/welib/vortilib/elements/examples/VortexSurfaceFlowField.py) | [Vortilib - Flow about an Ellipsoid](/welib/vortilib/elements/examples/SourceEllipsoid_Plots.py) | [Vortilib - Inviscid Vorticity Patch](/welib/vortilib/elements/examples/InviscidVortexPatch.py) |\r\n| ![Vortilib - Flow about a 2D vortex cylinder - Gamma=0.5](/../figs/_figs/Vortilib-FlowAboutA2DVortexCylinder-Gamma05.png) | ![Vortilib - Flow about a 2D vortex cylinder - Gamma=1.1](/../figs/_figs/Vortilib-FlowAboutA2DVortexCylinder-Gamma11.png) | ![Vortilib - Flow about an axisymmetric vorticity surface](/../figs/_figs/Vortilib-FlowAboutAnAxisymmetricVorticitySurface.png) | ![Vortilib - Flow about an Ellipsoid](/../figs/_figs/Vortilib-FlowAboutAnEllipsoid.png) | ![Vortilib - Inviscid Vorticity Patch](/../figs/_figs/Vortilib-InviscidVorticityPatch.png) |\r\n| [Vortilib - Rankine nose](/welib/vortilib/elements/examples/RankineNose_Plots.py) | [Vortilib - Vortex helix lifting line velocity](/welib/vortilib/elements/examples/VortexHelix.py) | [Vortilib - Vortex particle regularization](/welib/vortilib/elements/examples/VortexParticle_Regularization.py) | [Vortilib - Vortex segment regularization](/welib/vortilib/elements/examples/VortexSegment_Regularization.py) |  |\r\n| ![Vortilib - Rankine nose](/../figs/_figs/Vortilib-RankineNose.png) | ![Vortilib - Vortex helix lifting line velocity](/../figs/_figs/Vortilib-VortexHelixLiftingLineVelocity.png) | ![Vortilib - Vortex particle regularization](/../figs/_figs/Vortilib-VortexParticleRegularization.png) | ![Vortilib - Vortex segment regularization](/../figs/_figs/Vortilib-VortexSegmentRegularization.png) |  |\r\n\r\n\r\n### wt\\_theory: Analytical wind turbine solutions\r\n \r\nExamples of applications:\r\n- Theory of optimal circulation\r\n\r\nSample figures from examples:\r\n\r\n| | | |  |\r\n| :-------------------------: | :-------------------------: | :-------------------------: | :-------------------------:  |\r\n| [WT Theory - CP optimal](/welib/wt_theory/examples/OptimalCP.py) | [WT Theory - CP optimal](/welib/wt_theory/examples/OptimalCP.py) | [WT Theory - Induced velocity vs Wake length](/welib/wt_theory/examples/WakeLengthInducedVelocity.py) | [WT Theory - Wake Expansion Models](/welib/wt_theory/examples/WakeExpansion.py) |\r\n| ![WT Theory - CP optimal](/../figs/_figs/WTTheory-CPOptimal.png) | ![WT Theory - CP optimal](/../figs/_figs/WTTheory-CPOptimal.png) | ![WT Theory - Induced velocity vs Wake length](/../figs/_figs/WTTheory-InducedVelocityVsWakeLength.png) | ![WT Theory - Wake Expansion Models](/../figs/_figs/WTTheory-WakeExpansionModels.png) |\r\n\r\n\r\n### wind and welib/ws\\_estimator: wind generation and estimation\r\n\r\n- Generate stochastic [wind](welib/hydro/examples/Ex3_WaveTimeSeries.py) times series\r\n- Estimate wind speed (see 'welib\\ws\\_estimator`))\r\n\r\nSample figures from examples:\r\n\r\n|  |\r\n| :-------------------------:  |\r\n| [Wind - wind generation at point](/welib/wind/examples/WindGenerationAtPoint.py) |\r\n| ![Wind - wind generation at point](/../figs/_figs/Wind-WindGenerationAtPoint.png) |\r\n\r\n\r\n### ctrl: control\r\n\r\n\r\n\r\n\r\n### kalman: kalman\r\n\r\n- Run a kalman filter to estimate states of a system (see [kalman](welib/kalman/))\r\n\r\n\r\n\r\n### weio: Wind energy IO\r\n \r\n- Read and write common wind energy file formats (see [weio](welib/weio), a clone of [weio](http://github.com/ebranlard/weio/))\r\nSample figures from examples:\r\n\r\n\r\n\r\n### yams: Yet Another Multibody Solver\r\n \r\nSet of tools to work with structural dyanmics.\r\nExamples of applications:\r\n- Setup the equation of motions for a multibody system with flexible members analytically or numerically (see [yams](welib/yams/tests))\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n# Examples of application\r\n\r\n\r\nYou can have a look at the example gallery below for direct links to examples and associated plots.\r\n\r\n- Aerodynamic applications (package `airfoils`, `BEM`):\r\n    - Manipulation of airfoil curves, find slopes, interpolate (see [airfoils](welib/airfoils/examples/))\r\n    - Run different dynamic stall models (e.g Oye or MHH/HGM model) (see [airfoils/DS](welib/airfoils/examples/))\r\n\r\n- Hydrodynamics applications (package `hydro`):\r\n    - Wave kinematics for linear waves (see [hydro/Ex1](welib/hydro/examples/Ex1_WaveKinematics.py))\r\n    - Generation of wave time series from a given spectrum (see [hydro/Ex3](welib/hydro/examples/Ex3_WaveTimeSeries.py))\r\n    - Computation of wave loads on a monopile (see [hydro/Ex4](welib/hydro/examples/Ex4_WaveLoads.py))\r\n\r\n- Structural dynamics and system dynamics applications (packages `FEM`, `system`, `yams`):\r\n    - Setup the equation of motions for a multibody system with flexible members analytically or numerically (see [yams](welib/yams/tests))\r\n    - Linearize a non-linear system defined by a state and output equation (implicit or explicit) (see [system](welib/system/tests))\r\n    - Perform 2d/3d FEM analyses using beam/frame elements (see [FEM](welib/FEM/examples))\r\n    - Craig-Bampton / Guyan reduction of a structure (see [FEM](welib/FEM/examples))\r\n    - Perform time integration of mechanical systems (see [system](welib/system/examples))\r\n\r\n- Controls applications (packages `ctrl`, `kalman`):\r\n    - Run a kalman filter to estimate states of a system (see [kalman](welib/kalman/))\r\n\r\n- Wind energy applications:\r\n    - Run steady state BEM simulations (see [BEM/steady 1-2](welib/BEM/examples)\r\n    - Run unsteady BEM simulations (see [BEM/unsteady 1-2](welib/BEM/examples/)\r\n    - Read and write common wind energy file formats (see [weio](welib/weio), a clone of [weio](http://github.com/ebranlard/weio/))\r\n    - Generate stochastic wind and [waves](welib/hydro/examples/Ex3_WaveTimeSeries.py) times series\r\n    - Estimate wind speed (see 'welib\\ws\\_estimator`))\r\n    - Theory of optimal circulation\r\n    - Standards\r\n\r\n- Other (packages `tools`, `ode`):\r\n    -  Spectral analyses, signal processing, time integration, vector analyses\r\n\r\nSee also:\r\n\r\n- [pyDatView](http://github.com/ebranlard/pyDatView/): GUI to visualize files (supported by weio) and perform analyses on the data\r\n\r\n\r\n\r\n\r\n# Libraries\r\n\r\nThe repository contains a set of small packages, for aerodynamics, structure, control and more:\r\n\r\n- airfoils: polar manipulations, dynamic stall models\r\n- beams: analytical results for beams\r\n- BEM: steady and unsteady bem code\r\n- ctrl: control tools\r\n- dyninflow: dynamic inflow models\r\n- fastlib: tools to handle OpenFAST models (run simulations, postprocess, linear model)\r\n- FEM: Finite Element Method tools (beams)\r\n- hydro: hydrodynamic tools\r\n- kalman: kalman filter\r\n- mesh: meshing tools\r\n- ode: tools for time integration of ODE\r\n- standards: some formulae and scripts useful for the IEC standards\r\n- system: tools for dynamic systems (e.g. LTI, state space) and mechanical systems (M,C,K matrices), eigenvalue analysis, time integration\r\n- tools: mathematical tools, signal processing\r\n- weio: library to read and write files used in wind energy, clone of [weio](http://github.com/ebranlard/weio/) \r\n- wt\\_theory: scripts implementing some wind turbine aerodynamic theory \r\n- ws\\_estimator: wind speed estimator for wind energy based on tabulated Cp Ct\r\n- yams: multibody analyses\r\n\r\n\r\n# References and how to cite\r\nIf you find some of this repository useful and use it in your research, thank you for using the following citations.\r\n\r\n - General wind turbine scripts and aerodynamics:\r\n```bibtex\r\n@book{Branlard:book,\r\n    author = {E. Branlard},\r\n    title = {Wind Turbine Aerodynamics and Vorticity-Based Methods: Fundamentals and Recent Applications},\r\n    year = {2017},\r\n    publisher= {Springer International Publishing},\r\n    doi={10.1007/978-3-319-55164-7},\r\n    isbn={ 978-3-319-55163-0}\r\n}\r\n```\r\n - Structural dynamics:\r\n```bibtex\r\n@article{Branlard:2019,\r\n    title    = {{Flexible multibody dynamics using joint coordinates and the Rayleigh-Ritz approximation: The general framework behind and beyond Flex}},\r\n    author   = {E. Branlard},\r\n    journal  = {Wind Energy},\r\n    volume   = {22},\r\n    number   = {7},\r\n    pages    = {877-893},\r\n    year     = {2019},\r\n    doi      = {10.1002/we.2327}\r\n}\r\n```\r\n\r\n\r\n\r\n\r\n\r\n# Contributing\r\nAny contributions to this project are welcome! If you find this project useful, you can also buy me a coffee (donate a small amount) with the link below:\r\n\r\n\r\n\u003ca href=\"https://www.buymeacoffee.com/hTpOQGl\" rel=\"nofollow\"\u003e\u003cimg alt=\"Donate just a small amount, buy me a coffee!\" src=\"https://warehouse-camo.cmh1.psfhosted.org/1c939ba1227996b87bb03cf029c14821eab9ad91/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446f6e6174652d4275792532306d6525323061253230636f666665652d79656c6c6f77677265656e2e737667\"\u003e\u003c/a\u003e\r\n","funding_links":["https://www.buymeacoffee.com/hTpOQGl"],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["aeroelasticity","wind","wind-farm","wind-power","wind-turbine"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/19834","html_url":"https://ost.ecosyste.ms/projects/19834"}