These are new features and improvements of note in each release.
v0.4.1 (03 / 09 / 2022)#
Minor bug fix update
Input parameters changed in
Drop Python 3.6 support (it should still work though)
v0.4.0 (02 / 03 / 2022)#
Release of new version including new spectral property class, object-oriented ModuleObj class and other improvements for more seamless use with dask and paralellization.
Major usage changes include a ModuleObj output from makeModule, allowing updating geometry and adding module features (adding a torque tube, frame members, etc). This release also changes start and end time format to ‘YYYY-MM-DD_HHMM’ enabling multi-year and sub-hourly met file support.
set1axishas a new boolean input useMeasuredTrackerAngle. When set to True, it looks for manual tracker angle values in the weather file input with column name ‘Tracker Angle (degrees)’
Due to now allowing multiple years and subhourly files, timestamped files (octfiles, skyfiles, objects, results files) now are of YYYY-MM-DD_HHMM format.
readWeatherFilearguments starttime and endtime accept datetime and pd.TimeIndex inputs, as well as strings in either ‘MM_DD_HH’ or ‘MM_DD’ or ‘YYYY-MM-DD_HHMM’ format.
Removed the standalone RadianceObj.readEPW function. Use
gencumsky_metfilepointing to the auto-generated met data csv file.
set1axishas new argument
singleindexmust now take the format of ‘YYYY-MM-DD_HHMM’.
moduleAnalysisinput arguments added:
analysisfunction has boolean input
RGBto enable spectral simulations
AnalysisObjobjects now have an input argument for
hpcas boolean. hpc is true makes so that file reading waits longer to account for parallelization timing, and to not update to the central .json Module file while on parallelization.
spectral_utilsmodule includes classes and functions to interact with irradiance spectra from SMARTS.
Cell-specific module analysis. When a cell-level module is created, if sensorsy matches the number of cellsy the sensors will be positioned at the center of each solar cell.
sensorsycan now be passed a list or tuple of 2 values. The first value is the number of front sensors, the second one is the number of rear sensors. This affects
makeScene, so scenes do not overwrite with parallel processing.
The software now considers Year in variuos of the routines, like metdata reading, sky creation and saving of results. (GH250)
Sub-hourly weather files are now accepted in
makeModulefuction has additional input to specify the
makeModulefuction can create framed modules using the argument
frameParams. Dictionary inputs include frame_material, frame_thickness, frame_z, frame_z and nsides_frame.
makeModulefuction generates Omegas (frame offset elements) using the argument
omegaParams. Dictionary inputs include omega_material, x_omega1, mod_overlap, y_omega, omega_thickness, x_omega3 and inverted.
cellModulehas a new field option centerJB to reflect the distance betwen both sides of cell arrays in a center-junction box half-cell module. (still under development)
makeScenehas optional input parameter
radnameto give a custom name to the scene radfile.
AnalysisObjto analyze every module in the row.
readWeatherFileallows ‘source=solargis’ input option to read commercial weather files obtained from SolarGIS.com
For all weather files, night-time data (GHI <= 0) is removed when the MetObj is created. This has always been the case for tracked simulations, but is also now true for fixed-tilt simulations as well.
genCumSkykwargument epwfile has been removed. EPW files are no longer passed directly to genCumSky.
makeScene1axiskwarg moduletype is now module (GH338)
showModuleare removed. (GH338)
Removed hpc input from
analysis. Instead, pass
hpcas input to
AnalysisObjor manually set ``RadianceObj.hpc``=`True`
For data in TMY3 format but has a interval smaller than 1 HR, now the
readWeatherFile, function (which uses pvlib I/O function) fixes the timestamps from the already imported TMY3 data, with the column labeld ‘Time (HH:MM)’ (GH278)
runtimeWarnings are ignored in set1axis. Fixes pvlib tracker #260
Fixed bug on input file load that would rewrite
Weather data with zero length after filtering returns a more informative error (GH332)
Errors while generating octfiles in
makeOctare now printed instead of being muted.
HPC example scripts are now posted in \bifacial_radiance\HPCScripts. Knock yourself out.
JOSS Journal was published and is now referenced in documentation and READ.ME for citation, along with Zenodo DOIs.
Journal showing rear irradiance performance with and without white-pavers for ballasting the single axis trackers
AgriPV Journal improvements, and new Journal studying two crops with PV-module co-location
Example of running Spectral simulations with the use of dask.
Cleanup of journals and documentations throughout of coding comments.
v0.3.4 (05 / 26 / 2020)#
Release of new version including time-series albedo options, selecting if weather data is right, left or center labeled (averaged), and an updated module.json.
Starting this version, releases will have a Zenodo D.O.I for identification!
Deprecated support for Python 2.7. Stops support on this release. PVLib >= 0.7.0 is required for metdata file IO
module.jsonto be human readable and sorted. (GH230)
Albedo: TIME-Varying ALBEDO: now albedo can be given for every timepoint being modeled.
setGroundpulls albedo if readWeatherfile has already been run and no explicit albedo is provided.
setGroundaccepts lists and 3xN RGB arrays
Albedo: Unrealistic albedo values are constrained to [0:1] (GH227)
readTMY()now have an input
label, to mark if data is right-averaged, left-averaged, or center-averaged. Default is
label=Right, like TMY3 files: TMY3 data is right-labeled, so 11 AM data represents data from 10 to 11, and sun position is calculated at 10:30 AM. Sun position and tracker positions gets calculated according to the label chosen.
Input changed to
gendaylit, now making metdata an optional input.
Added pytesting to
All notebooks and tests updated for new
albedoin GroundObj functionality
Notebooks updated for
gendaylitmetdata optional input
Cleaned up journal explaining how to use
v0.3.3.2 (04 / 16 / 2020)#
Release of new version including fix to sensor orientation, increased py-testing, and glass in modules.
Glass in modules now supported. New Glass material included in ground.rad. Example of use in Glass Tutorials.
Source code for gencumulativesky is now included along with makefile instructions in
New Torquetube options added on
moduleAnalysis, to offer the ability of controling the offset in local z of the sensor locations from the module’s front and rear surface.
readTMYnow saves the temporal TMY files generated for daydate simulations with different titles to avoid overwriting in parallel simulations.
Input for daydate added to
analysis1axis, allowing to save cumulative files for daydate.
Sorted trackerdict keys on simulations that use trackerdict routines
Removed deprecation warning and inputs
Modified quickExample() to include testfolder as an input, and returned analysis results. Call to interactive directory selection called from main.py instead than being redefined inside the function. (GH201)
Removed HPCExample() function from main.py (added as a Tutorial Notebook)
Fix GUI load issue when None values passed
Set GUI default
readconfigurationinputfile.ini input files now use the key
Fixed sensor’s orientation error in scanning function calculation, mainly affecting high-tilt angle simulations (GH226)
Fix GUI to allow reading null values for
Modified pytest assertions for skies to avoid OS issues (skietc or skie//etc)
Added pytesting to
Added pytesting to sceneDict
Added pytesting for
Added pytest for
Added pytest for
Added pytest for
Added pytest for torque tubes
Added pytest to
Added pytest for
Updated bifacial_radiance D.O.E. reference citation on index. (GH213)
Added pip install options to Installation
Added intended audience to documentation and main Github Readme (GH192)
Platform and python-version updates throughout documentation (GH198)
Working Folder path fixed on Tutorial Journals for compatibility with other OS Systems (GH217)
Updated Youtube’s installation instructions to mention how to pip install bifacial_radiance, pip install pvlib, and comments for Linux/Mac OSX users to read the install guide on readthedocs.
v0.3.3.1 (10 / 16 / 2019)#
This is a minor release, a patch to fix a GUI error preventing the simulation from running.
v0.3.3 (10 / 14 / 2019)#
This is a major release that adds many power mismatch analysis features, GUI updates as well as documentation.
Deprecated support for Python 2.7. Will stop support on next release
readWeatherFileset as main function to read TMY and EPW files.
readWeatherFile(), in str format
gencumskystartdate and enddate options.
Fixed tilt simulations can now use the tracking workflow by passing a
set1axis. This has been implemented as the default for hourly simulations in the ModelChain and GUI.
Renamed many functions with a dash, to differentiate from functions called by user and helper-functions that are subfunctions or called by the main functions. (GH155)
Update internal paths to TESTDIR rather than os.cwd
gendaylit: update to use the sunposition automatically stored with
Corrected print statements for full year hourly simulations to reflect the exact number of datapoints considered in that ratio average.
Changed functionality of ModelChain for tracking: if
simulationParamsDict[dayDateSimulation]is False, default to full-year simulation even if
Added print statement for fixed tilt and tracking modelchain results.
Raise error if tracking modelchain is used with
daydatefunctionality: when starthour = endhour gives that hour of analysis.
Add filenotfound error checking for loading .ini file
Added analysis.py to modules loaded by bifacial_radiance as default.
Trackerdict now keeps track of hub_height (GH168)
Updated requirements for PVLib > 0.6.1 to avoid deprecation warnings (GH158)
GUI: GCR or Pitch independently read based on selection, so no need for values to match (GH143)
Fixed tracking daydate hourly (GH125)
Fix to avoid divide-by-zero errors in
Fix GUI tracking hourly by day, which was still reading enddate (GH136)
GUI: fixing automatically downloading getEPW when readEPW was selected.
Increase in pytesting, particularly for secondary modules in bifacial_radiance (other than main.py)
Tracking pytesting with coveralls
Rename test .ini files to avoid name confusion with test.py files
Add test for bad RadianceObj path
readtheDocs now connected. Moved all documentation to sphinx format.
Revamping of journals, with more explanations, images, and sorted by level of difficulty.
v0.3.0 (05 / 14 / 2019)#
This is a major release that includes the release of a new Visual Interface (GUI). We recommend all users to upgrade to this release as many internal geometry handling has been updated and made more accurate.
Dictionaries implemented as inputs to most functions.
Height deprecated as input, now functions expect clerance_height or hub_height.
New internal Geometry handling.
Modules get centered on X and Y.
Geometry of scenes gets constructed around (X,Y) (0,0), placing the center of the center module of the center row in that position
New/improved sensor locations.
Multiple Scene object capability for fixed scenes.
HPC friendly code.
More module creation options
cell Level model capability with dictionary input.
Axis of rotation around torque tube possible with axisofrotation parameter.
v0.2.4 (02 / 27 / 2019)#
Various improvements across the bifacial_radiance software.
Module orientation deprecated. Now module is defined by
x(dimension along rack) and
y(dimensio nin slant direction).
Module gap variables renamed to
sceneyvariables introduced which include torquetube and gap dimensions.
Py36 and cross-platform code compliance implemented
gendaylit()to be based on sun positions by default
gendaylit()now uses PVLib for calculating sun position angles instea dof using Radiance internal sun positoin calculations.
bifacial_radiance.AnalysisObj.makeFalseColor()routine for visualizing in falsecolor the octfile.
Moved existing and new load routines into
More torquetube options added (round, square, hexagonal and octagonal profiles)
custom spacing between modules in a row added,
Added accuracy input option for 1-axis scans
Update to sensor position on 1axistracking.
Module-select and module scan bug fixed
Updates to pytests.
v0.2.3 (11 / 14 / 2018)#
This release introduces the option to module torque tubes now added as part of makeModule.
Arbitrary length and position of module scans in makeScene.
Torquetube option to makeModule
Option to add module gaps
trackerdictalready mapped to
self.trackerdict, so no longer mapping on
v0.2.2 (08 / 29 / 2018)#
Negative 1 hour offset to TMY file inputs
v0.2.1 (05 / 21 / 2018)#
Allow TMY3 input files
Using a different EPW file reader.
v0.2.0 (03 / 21 / 2018)#
Critical 1-axis tracking update to fix geometry issues that were over-predicting 1-axis results
v0.1.1 (03 / 08 / 2018)#
Allow southern latitudes.
v0.1.0 (12 / 18 / 2017)#
1-axis bug fix and validation vs PVSyst and ViewFactor model.
v0.0.5 (12 / 13 / 2017)#
1-axis tracking draft.
-Gfiletype optoin for support of 1-axis tracking.
v0.0.4 (12 / 13 / 2017)#
Include configuration file module.json and custom module configuration.
v0.0.3 (12 / 13 / 2017)#
Arbitrary NxR number of modules and rows for
v0.0.2 (06 / 29/ 2017)#
azimuth angle other than 180.
v0.0.1 (05 / 24 / 2017)#
Initial stable release.