Closed AugustVan closed 3 months ago
in theory noting, if your EPW is in the right format for EPWs. IF it is giving an error that means some of the columns or formating is not the standard, check the documentation for EPW on the EnergyPlus webiste.
The function expects an EPW with extension EPW.
if you want to specify other formats, we currently support on hte main branch: source : str To help identify different types of .csv files. If None, it assumes it is a TMY3-style formated data. Current options: 'TMY3', 'solargis', 'EPW'
And the development branch has 'sam' (psm3 format) and NSRDB data input as well.
S.
I don't think i'm using the wrong file because it's an epw file, I just think it's my lack of programming skills. Would it be possible to show the lines of code it takes to use my own epw files?
sure, you can either share it here, or to my email silvana.ovaitt@nrel.gov, or we can have a short meeting to iron it out (couple 30 mins spot open today and tomorrow but more on wednesday)
This is the code I have at the moment.
import os from pathlib import Path from bifacial_radiance import * import numpy as np import pandas as pd
testfolder = str(Path().resolve().parent.parent / 'bifacial_radiance' / 'TEMP' / 'August') if not os.path.exists(testfolder): os.makedirs(testfolder)
testopstelling = RadianceObj('x',str(testfolder))
testopstelling.setGround() albedo = 0.7 testopstelling.setGround(albedo)
epwfile = testopstelling.getEPW(lat = 37.5, lon = -77.6) metdata = testopstelling.readWeatherFile(epwfile, coerce_year=2001) fullYear = True if fullYear: testopstelling.genCumSky() # entire year. else: timeindex = metdata.datetime.index(pd.to_datetime('2001-06-17 12:0:0 -7')) testopstelling.gendaylit(timeindex) # Noon, June 17th (timepoint # 4020)
moduletype = 'test-module'
num_panels = 1 x = 0 y = 0 x_gap = 0.20 y_gap = 0.10 z_gap = 0
num_cells_x = 12 num_cells_y = 24 x_cell = 0.17283 y_cell = 0.08692 x_cell_gap = 0.002 y_cell_gap = 0.002
cellLevelModuleParams = {'numcellsx': num_cells_y, 'numcellsy': num_cells_x, 'xcell': y_cell, 'ycell': x_cell, 'xcellgap': y_cell_gap, 'ycellgap': x_cell_gap}
module = testopstelling.makeModule(name=moduletype, x=x, y=y, numpanels=num_panels, xgap=x_gap, ygap=y_gap, cellModule=cellLevelModuleParams)
pitch = 9 # m albedo = 0.22 # 'grass' # ground albedo hub_height = 1.9 # m nMods = 6 # six modules per row. nRows = 3 # 3 row azimuth_ang = 270 # Facing west tilt = 90 # tilt.
sceneDict = {'tilt': tilt, 'pitch': pitch, 'hub_height': hub_height, 'azimuth': azimuth_ang, 'nMods': nMods, 'nRows': nRows}
scene = testopstelling.makeScene(module=moduletype, sceneDict=sceneDict)
torquetubelength = 14.036 postheight = 0.05 postwidth = 0.03
post_x = -2.285 z_step = 1.148 y_step = 9
y = 9.127
for i in range(3): post_z = 2.9 for j in range(3): name = 'Post{}{}'.format(i, j) text = '! genbox Metal_Aluminum_Anodized torquetube_row2 {} {} {} | xform -t {} -0.2 0.15 | xform -t {} {} {} ' \ '| ' \ 'xform -rz 90'.format( torquetubelength, postheight, postwidth, (-torquetubelength + module.sceney) / 2.0, post_x, y, post_z) customObject = testopstelling.makeCustomObject(name, text) testopstelling.appendtoScene(radfile=scene.radfiles, customObject=customObject, text="!xform -rz 0") post_z -= z_step
y -= y_step
pileheight = 3.05 pilewidth = 0.05 piledepth = 0.05
x_offset = - 0.1 y_step = 2.15
x_value = -9 for i in range(3): y_value = -8.23 for j in range(7): name_string = 'pile{}{}'.format(i, j) text = ('! genbox Metal_Grey pile{}row{} '.format(i, j) + '{} {} {} '.format(pilewidth, piledepth, pileheight)
'| xform -t {} {} {}'.format(x_value, y_value, 0)) customObject = testopstelling.makeCustomObject(name_string, text) testopstelling.appendtoScene(scene.radfiles, customObject, '!xform -rz 0') y_value += 2.331
x_value += 9
testopstelling.scene.showScene()
octfile = testopstelling.makeOct(testopstelling.getfilelist())
analysis = AnalysisObj(octfile, testopstelling.basename)
frontscan, backscan = analysis.moduleAnalysis(scene)
results = analysis.analysis(octfile, testopstelling.basename, frontscan, backscan)
load.read1Result('results\irr_x.csv')
bifacialityfactor = 0.9 print('Annual bifacial ratio: %0.2f ' %( np.mean(analysis.Wm2Back) * bifacialityfactor / np.mean(analysis.Wm2Front)) )
scene.saveImage() analysis.makeImage('side.vp') analysis.makeFalseColor('side.vp')
Hi AugustVan
So, if you have an epw file you have to pass the file name/direction here:
epwfile= r'C:/Users/AugustVan/Documents/LocationEPWfile.epw
metdata = testopstelling.readWeatherFile(epwfile)
Let me know if this doesnt work
Hh I forgot the r' ', thanks alot!
yeah python has weird things like that. lmk other questions through here or email
S.
Closing this as solved.
What do I have to change in this piece of code to be able to use my own epw weather files?