{"id":342285,"name":"bifacialvf","description":"Bifacial PV View Factor model for system performance calculation.","url":"https://github.com/natlabrockies/bifacialvf","last_synced_at":"2026-04-08T12:02:15.585Z","repository":{"id":29255740,"uuid":"114160149","full_name":"NatLabRockies/bifacialvf","owner":"NatLabRockies","description":"Bifacial PV View Factor model for system performance calculation","archived":false,"fork":false,"pushed_at":"2024-08-26T19:16:35.000Z","size":40884,"stargazers_count":33,"open_issues_count":18,"forks_count":27,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-03-27T17:38:44.117Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://bifacialvf.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NatLabRockies.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-13T19:23:14.000Z","updated_at":"2025-10-09T22:04:49.000Z","dependencies_parsed_at":"2024-01-13T07:24:29.523Z","dependency_job_id":"3896b62d-553c-4a9d-8788-f94fd047e393","html_url":"https://github.com/NatLabRockies/bifacialvf","commit_stats":{"total_commits":177,"total_committers":6,"mean_commits":29.5,"dds":0.536723163841808,"last_synced_commit":"107a7775cc263bfd641b369c01ad0dbd61a409f0"},"previous_names":["natlabrockies/bifacialvf"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/NatLabRockies/bifacialvf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLabRockies%2Fbifacialvf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLabRockies%2Fbifacialvf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLabRockies%2Fbifacialvf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLabRockies%2Fbifacialvf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NatLabRockies","download_url":"https://codeload.github.com/NatLabRockies/bifacialvf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NatLabRockies%2Fbifacialvf/sbom","scorecard":{"id":98297,"data":{"date":"2025-08-11","repo":{"name":"github.com/NREL/bifacialvf","commit":"107a7775cc263bfd641b369c01ad0dbd61a409f0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 1/12 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":"Maintained","score":0,"reason":"0 commit(s) and 1 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":"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/deploy.yaml:1","Warn: no topLevel permission defined: .github/workflows/pytest.yaml: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":"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":"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":"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":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"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":"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/deploy.yaml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/NREL/bifacialvf/deploy.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yaml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/NREL/bifacialvf/deploy.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yaml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/NREL/bifacialvf/deploy.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pytest.yaml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/NREL/bifacialvf/pytest.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pytest.yaml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/NREL/bifacialvf/pytest.yaml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/deploy.yaml:20","Warn: pipCommand not pinned by hash: .github/workflows/deploy.yaml:21","Warn: pipCommand not pinned by hash: .github/workflows/pytest.yaml:32","Warn: pipCommand not pinned by hash: .github/workflows/pytest.yaml:33","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 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":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-42969"],"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 20 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-15T09:34:14.211Z","repository_id":29255740,"created_at":"2025-08-15T09:34:14.211Z","updated_at":"2025-08-15T09:34:14.211Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31228492,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-31T08:35:14.124Z","status":"ssl_error","status_checked_at":"2026-03-31T08:34:00.887Z","response_time":111,"last_error":"SSL_read: 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"}},"owner":{"login":"NatLabRockies","name":"National Laboratory of the Rockies","uuid":"1906800","kind":"organization","description":"","email":null,"website":"http://www.nrel.gov","location":"Golden, CO","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/1906800?v=4","repositories_count":599,"last_synced_at":"2026-01-22T09:57:55.744Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/NatLabRockies","funding_links":[],"total_stars":9633,"followers":1309,"following":0,"created_at":"2022-11-02T20:42:15.539Z","updated_at":"2026-01-22T09:57:55.745Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NatLabRockies","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NatLabRockies/repositories"},"packages":[],"commits":{"id":11615141,"full_name":"natlabrockies/bifacialvf","default_branch":"master","total_commits":177,"total_committers":6,"total_bot_commits":5,"total_bot_committers":1,"mean_commits":29.5,"dds":0.536723163841808,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-04-07T12:00:56.771Z","last_synced_commit":"107a7775cc263bfd641b369c01ad0dbd61a409f0","created_at":"2026-01-22T00:00:51.593Z","updated_at":"2026-04-07T12:00:40.630Z","committers":[{"name":"cdeline","email":"chris.deline@nrel.gov","login":"cdeline","count":82},{"name":"Silvana Ayala","email":"silvana.ayala@nrel.gov","login":"shirubana","count":70},{"name":"Mark Mikofski","email":"bwana.marko@yahoo.com","login":"mikofski","count":16},{"name":"dependabot[bot]","email":"49699333+dependabot[bot]","login":"dependabot[bot]","count":5},{"name":"Ayala","email":"sayala@nrel.gov","login":null,"count":3},{"name":"Nick DiOrio","email":"nadiorio@gmail.com","login":"nickdiorio","count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/natlabrockies%2Fbifacialvf/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-08T00:00:24.542Z","repositories_count":6212003,"commits_count":915261574,"contributors_count":35379632,"owners_count":1143022,"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":null,"events":{"total":{},"last_year":{}},"keywords":[],"dependencies":[{"ecosystem":"pypi","filepath":"requirements.txt","sha":null,"kind":"manifest","created_at":"2022-09-17T04:01:20.850Z","updated_at":"2022-09-17T04:01:20.850Z","repository_link":"https://github.com/NatLabRockies/bifacialvf/blob/main/requirements.txt","dependencies":[{"id":5118357938,"package_name":"cycler","ecosystem":"pypi","requirements":"==0.10.0","direct":true,"kind":"runtime","optional":false},{"id":5118357939,"package_name":"kiwisolver","ecosystem":"pypi","requirements":"==1.2.0","direct":true,"kind":"runtime","optional":false},{"id":5118357940,"package_name":"matplotlib","ecosystem":"pypi","requirements":"==3.2.1","direct":true,"kind":"runtime","optional":false},{"id":5118357941,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.21.0","direct":true,"kind":"runtime","optional":false},{"id":5118357942,"package_name":"pvlib","ecosystem":"pypi","requirements":"==0.7.0","direct":true,"kind":"runtime","optional":false},{"id":5118357943,"package_name":"pandas","ecosystem":"pypi","requirements":"==0.25.2","direct":true,"kind":"runtime","optional":false},{"id":5118357944,"package_name":"pvmismatch","ecosystem":"pypi","requirements":"==4.1","direct":true,"kind":"runtime","optional":false},{"id":5118357945,"package_name":"py","ecosystem":"pypi","requirements":"==1.10.0","direct":true,"kind":"runtime","optional":false},{"id":5118357946,"package_name":"pyparsing","ecosystem":"pypi","requirements":"==2.4.7","direct":true,"kind":"runtime","optional":false},{"id":5118357947,"package_name":"pytest","ecosystem":"pypi","requirements":"==5.4.1","direct":true,"kind":"runtime","optional":false},{"id":5118357948,"package_name":"pytest-cov","ecosystem":"pypi","requirements":"==2.8.1","direct":true,"kind":"runtime","optional":false},{"id":5118357949,"package_name":"python-dateutil","ecosystem":"pypi","requirements":"==2.8.0","direct":true,"kind":"runtime","optional":false},{"id":5118357950,"package_name":"pytz","ecosystem":"pypi","requirements":"==2019.1","direct":true,"kind":"runtime","optional":false},{"id":5118357951,"package_name":"six","ecosystem":"pypi","requirements":"==1.14.0","direct":true,"kind":"runtime","optional":false},{"id":5118357952,"package_name":"tqdm","ecosystem":"pypi","requirements":"==4.45.0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2022-09-17T04:01:20.952Z","updated_at":"2022-09-17T04:01:20.952Z","repository_link":"https://github.com/NatLabRockies/bifacialvf/blob/main/setup.py","dependencies":[{"id":5118358002,"package_name":"numpy","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5118358003,"package_name":"pvlib","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5118358004,"package_name":"pvmismatch","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":5118358005,"package_name":"tqdm","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/pytest.yaml","sha":null,"kind":"manifest","created_at":"2023-01-14T14:45:50.902Z","updated_at":"2023-01-14T14:45:50.902Z","repository_link":"https://github.com/NatLabRockies/bifacialvf/blob/main/.github/workflows/pytest.yaml","dependencies":[{"id":6899221216,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":6899221217,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false}]}],"score":5.723585101952381,"created_at":"2026-01-22T00:00:42.782Z","updated_at":"2026-04-08T12:02:15.588Z","avatar_url":"https://github.com/NatLabRockies.png","language":"Python","category":"Renewable Energy","sub_category":"Photovoltaics and Solar Energy","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"![logo](docs/images_wiki/bifacialVF.png)\n\n# Bifacial PV View Factor model\n[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)\n[![Build Status](https://travis-ci.org/NREL/bifacialvf.svg?branch=main)](https://travis-ci.org/NREL/bifacialvf)\n[![DOI](https://zenodo.org/badge/114160149.svg)](https://zenodo.org/badge/latestdoi/114160149)\n\nkeywords: python, configuration factor model, electrical model mismatch for bifacial modules.\n\n## Introduction\n\nbifacialvf is a self-contained view factor (or configuration factor) model which\nreplicates a 5-row PV system of infinite extent perpendicular to the module\nrows. The function returns the irradiance profile along the middle (interior)\nrow by default, but user interface options include `'first'`, `'interior'`,\n`'last'`, and `'single'`. Single-axis tracking is supported, and hourly output\nfiles based on TMY inputs are saved. Spatial nonuniformity is reported, with\nmultiple rear-facing irradiances collected on the back of each module row.\n\nBilinear interpolation code add-on to bifacialvf (description below) to pre-generate IV arrays and bifacial coefficients, and to examine the energy production with back side irradiance mismatch for either a portrait or landscape module.   \nIncluded are IV curves and bifacial info for a Yingli (standard) module. \n\n## Pre-requisites\nThis software is written for Python 2 or 3. NREL recommends [Anaconda Python](https://www.anaconda.com/download/).\n\n## Install using pip\n[bifacialvf](https://pypi.org/project/bifacialvf/) is at the Python Package Index (PyPI). Use pip to install the latest release in your conda environment or virtualenv:\n\n    (myenv)$ pip install bifacialvf\n\n### Install development mode from GitHub\nFor those interested in contributing to bifacialvf:\n\n1. Clone the bifacialvf repository: `$ git clone https://github.com/NREL/bifacialvf.git bifacialvf-main`\n2. Navigate to the repository directory where `setup.py` is located: `$ cd bifacialvf-main`\n3. Install via pip in development mode: `$ pip install -e .`\n\n## Usage\n\nFor usage examples, see the Jupyter notebooks in \\docs\\\n\n## License\nbifacialvf open source code is copyrighted by the Alliance for Sustainable Energy and licensed with BSD-3-Clause terms, found here.\n\n## Citing bifacialVF\n\nIf you use bifacial_radiance in a published work, please cite:\n\n    Marion, B., MacAlpine, S., Deline, C., Asgharzadeh, A., Toor, F., Riley, D., … Hansen, C. (2017). A Practical Irradiance Model for Bifacial PV Modules: Preprint. In 44th IEEE Photovoltaic Specialists Conference. Washington, DC. https://www.nrel.gov/docs/fy17osti/67847.pdf. NREL/CP-5J00-67847\n\nPlease also cite the DOI corresponding to the specific version of bifacialVF that you used. bifacialvf DOIs are listed at [Zenodo.org](https://zenodo.org/search?page=1\u0026size=20\u0026q=conceptrecid:6369162\u0026all_versions\u0026sort=-version). \n\n    Silvana Ovaitt, Chris Deline, Mark Mikofski, \u0026 Nick DiOrio. (2022). NREL/bifacialvf: v0.1.8 Release (v0.1.8). Zenodo. https://doi.org/10.5281/zenodo.6369162\n\nBilinear Interpolation based on the publications:\n\n    De Soto, W., Klein, S. A., \u0026 Beckman, W. A. (2006). Improvement and validation of a model for photovoltaic array performance. Solar Energy, 80(1), 78–88. https://doi.org/10.1016/j.solener.2005.06.010\n\n    Marion, B., Rummel, S., \u0026 Anderberg, A. (2004). Current--voltage curve translation by bilinear interpolation. Progress in Photovoltaics: Research and Applications, 12(8), 593–607.\n\nbifacialvf: Original code by Bill Marion, Python translation by Silvana Ayala, Updates by Chris Deline \u0026 team\nOriginal bilinear interpolation code by Sara MacAlpine, Python translation \u0026 Updates by Silvana Ayala\nPVMismatch add-on: PVmismatch code from [PVMismatch](https://github.com/SUNPower/PVMismatch), by Sunpower\n\n\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.5281/zenodo.6369162","https://doi.org/10.1016/j.solener.2005.06.010"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["photovoltaic","renewable-energy","renewables","solar-energy","bifacial","radiance","circular-economy","circularity","circularity-metrics","lifetime"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/342285","html_url":"https://ost.ecosyste.ms/projects/342285"}