There are a lot of improvements in this version 0.2.4,
new WIKI Section:
The software has grown enough that a good tutorial with colorful diagrams and insider tips was needed. You can always refer to the jupyter notebooks for code examples, but now the Wiki has some things we consider important of how the geometry is being created, and of some of the main questions we receive by e-mail.
Btw: If you have feedback, questions, etc., open an Issue so we can answer you and maybe the answer will be useful for others as well :)
Now to real updates:
Deprecating ORIENTATION
Orientation no longer shifts the module in x and y. There is no more orientaiton! Now, if you want your module in landscape, set your x > y, and in portrait, x < y, x and y being the module sizes. X will be the size of the module along the row (regardless of the row's azimuth)
![image](https://user-images.githubusercontent.com/22824806/53276781-e0380f80-36bd-11e9-94a0-f4a8839ceaea.png)
makeModule allows different torque tube shapes and materials:
On last release, makeModule was able to do a 1-up or 2-up configurations. Here is a schematic of the variables that it takes:
![image](https://user-images.githubusercontent.com/22824806/53277290-6190a180-36c0-11e9-94ab-957da3f103b7.png)
hub height or clearance height get defined on makeScene. makeScene1axis expects hub height, while makeScene (for fixed tilt) expects the clearance height). A new function _getTrackingGeometryTimeIndex calculates the clearance height in case you want to simulate just one point in time for a tracker.
RadianceObj.makeScene(module_name,sceneDict, nMods = 20, nRows = 7,sensorsy = 4, modwanted = 5, rowwanted = 2)
def makeModule(name=None,x=1,y=1,modulefile=None, text=None, customtext='',
torquetube=False, diameter=0.1, tubetype='Round', material='Metal_Grey', zgap=0.1, numpanels=1, ygap=0.0, rewriteModulefile=True, xgap=0.01):
Torque tube's material can now be defined (they must be pre-existing on the ground.rad material list). Also, there are different shapes to choose from: round, square, hex and octogonal tube.
![image](https://user-images.githubusercontent.com/22824806/52577537-8d1dad00-2ddf-11e9-907c-da50cd6cc19e.png)
a new 'customtext' variable has been added, in case user wants to add a replicable element to the unit-geometry (brackets, for example). This text must be in Radiance lingo, and it gets added after the geometry is created to the objects\MODULENAME.rad
Panel Spacing on 'X' , 'Y', and 'Z':
We had before gap between modules (panelgap) for 2-up configurations. This became ygap.
the distance between the torque tube (if included) and the modules is zgap.
And the new variable introduced is xgap, which allows the modules to be separated along the row.
You only need to pass this variables when making the module and they will get propagated to the scene. Here is an example of a 2-up landscape module with xgap = 0.5, zgap = 0.15, and ygap = 0.10 (all of this are meters)
![image](https://user-images.githubusercontent.com/22824806/53277259-3dcd5b80-36c0-11e9-85c4-d6c7f81ba16d.png)
![image](https://user-images.githubusercontent.com/22824806/53277333-969cf400-36c0-11e9-84f4-c47d6de22b78.png)
New Gendaylit
Gendaylit, still using the same metdata and timestamp inputs, now calls PVLib to calculate the sun position, and generate the sky model based on this values. The previous option to have Radiance calculate the sun position and generate the sky is still available (gendaylit_old), but we find using this new gendaylit more useful to be able to control at what point in time we are calculating the sun and tracker positions (Hint: for hourly TMY3, it is with a delta of 30 minutes before the hour stated in the EPW/TMY file).
And in case you want even more customization power, there is a gendaylit_manual option now. When using this, please remember that Radiance bases it's 0 degrees azimuth coordinate on the South (whereas bifacial_radiance and PVLib implementation consider North the 0 azimuth).
![image](https://user-images.githubusercontent.com/22824806/52578581-b3444c80-2de1-11e9-9913-5005e6d9540c.png)
gendaylit2manual(dni, dhi, sunalt, sunaz)
Accuracy of simulations
New accuracy input option for 1-axis scans.
'low' or 'high' - resolution option used during irrPlotNew and rtrace
analysis1axis(trackerdict=None, singleindex=None, accuracy='low', customname='my custom name for this simulation')
Higher accuracy takes more time. Since raytrace is a stochastic process, we suggest running several simulations (~10) in 'low' accuracy and averaging results. More on this topic to be potentially presented at EU PVSEC 2019.
let our inner geek rejoice: Py36 code compliance implemented, and cross-platform compatibility
It's a though world out there for non-PY36 compliante code. Bifacial_radiance is not in the wild-wild west anymore.
AND! Cross-platform compatibility implemented. This should all work in Linux now, but if you have any feedback please open an issue, we are keeping an eye out for those!
Bugs Catched:
Selection of module to be sampled was selecting one module over in the row instead of the desired module. Now it is fixed. For big-array simulations this does not impact results, but for smaller arrays, edge effects would have been noticeable.
![image](https://user-images.githubusercontent.com/22824806/52579769-1505b600-2de4-11e9-9238-323e23db39ed.png)
Also sensor position (and module sampled) is switched automatically when doing tracking, so the same relative-position module is added for the yearly simulations. The matterial type for this release will be misguiding, but you can check your geometry by adding custom objects on your sensor positions (follow the journal example of add Custom Object)
![image](https://user-images.githubusercontent.com/22824806/53277008-0a3e0180-36bf-11e9-85ea-f5ab002d3594.png)
((Star marks the first sensor location (so now they are being measured in the same direction))