Skip to main content

Bifacial PV system evaluation using view factor method

Project description

License Build Status

bifacialvf - Bifacial PV View Factor model

python, configuration factor model

Original code by Bill Marion Python translation by Silvana Ayala Updates by Chris Deline

Based on the publication: "A Practical Irradiance Model for Bifacial PV Modules" B. Marion, S. MacAlpine, C. Deline, A. Asgharzadeh, F. Toor, D. Riley, J. Stein, C. Hansen 2017 IEEE Photovoltaic Specialists Conference, Washington DC, 2017 URL:


bifacialvf is a self-contained view factor (or configuration factor) model which replicates a 5-row PV system of infinite extent perpendicular to the module rows. The function returns the irradiance profile along the middle (interior) row by default, but user interface options include 'first', 'interior', 'last', and 'single'. Single-axis tracking is supported, and hourly output files based on TMY inputs are saved. Spatial nonuniformity is reported, with multiple rear-facing irradiances collected on the back of each module row.


This software is written for Python 2 or 3. NREL recommends Anaconda Python.

Install using pip

bifacialvf is at the Python Package Index (PyPI). Use pip to install the latest release in your conda environment or virtualenv:

(myenv)$ pip install bifacialvf

Install development mode from GitHub

For those interested in contributing to bifacialvf:

  1. Clone the bifacialvf repository: $ git clone bifacialvf-master
  2. Navigate to the repository directory where is located: $ cd bifacialvf-master
  3. Install via pip in development mode: $ pip install -e .


import bifacialvf

bifacialvf.simulate(inputTMY, outputfile, tilt, azm, clearance, rowspacing)
(data, metadata) = bifacialvf.loadVFresults(outputfile)

For more usage examples, see the Jupyter notebooks in \docs\


Main Functions

    TMYtoread, writefiletitle,  beta, sazm, C=1, D=0.5,
    rowType = 'interior', transFactor=0.01, cellRows=6,
    PVfrontSurface='glass', PVbackSurface='glass',  albedo=0.62,
    tracking=False, backtrack=False, r2r=1.5, Cv=0.05, offset=0)

This is the main runfile. Hourly TMY3 inputs are read, and an outputfile is saved with a number of irradiance points along the module chord specified by cellRows.


read in saved file from bifacialvf.simulate. If no filename is passed, a tkinter GUI opens for file selection

Subroutines Solar position and irradiance-related helper files including hrSolarPos, perezComp, solarPos, and sunIncident View Factor helper files to help with configuration-factor calculation 1-axis tracking and self-shading calculation. Subroutines include: getBackSurfaceIrradiances, getFrontSurfaceIrradiances, getGroundShadeFactors, getSkyConfigurationFactors, trackingBFvaluescalculator, rowSpacing

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for bifacialvf, version 0.1.7
Filename, size File type Python version Upload date Hashes
Filename, size bifacialvf-0.1.7-py3-none-any.whl (957.1 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size bifacialvf-0.1.7.tar.gz (34.8 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page