Skip to content

Commit 2a3ddb5

Browse files
committed
Update calls to generate spectra, including adding inputs for min and
max wavelength
1 parent e157096 commit 2a3ddb5

2 files changed

Lines changed: 16 additions & 12 deletions

File tree

bifacial_radiance/main.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,7 +1097,7 @@ def _correctMetaKeys(m):
10971097
# put correct keys on m = metadata dict
10981098

10991099
m['altitude'] = _firstlist([m.get('altitude'), m.get('elevation')])
1100-
m['TZ'] = _firstlist([m.get('TZ'), m.get('Time Zone'), m.get('timezone')])
1100+
m['TZ'] = _firstlist([m.get('TZ'), m.get('Time Zone'), m.get('timezone'), m.get('tz')])
11011101

11021102
if not m.get('city'):
11031103
try:
@@ -3146,12 +3146,12 @@ def _printRow(analysisobj, key):
31463146

31473147

31483148
def generate_spectra(self, metdata=None, simulation_path=None, ground_material=None, scale_spectra=False,
3149-
scale_albedo=False, scale_albedo_nonspectral_sim=False, scale_upper_bound=2500):
3149+
scale_albedo=False, scale_albedo_nonspectral_sim=False, scale_upper_bound=2500, min_wavelength=280, max_wavelength=4000):
31503150
'''
31513151
Generate spectral irradiance files for spectral simulations using pySMARTS
31523152
Or
31533153
Generate an hourly albedo weighted by pySMARTS spectral irradiances
3154-
3154+
#
31553155
Parameters
31563156
----------
31573157
metdata : radianceObject.metdata, optional
@@ -3209,14 +3209,15 @@ def generate_spectra(self, metdata=None, simulation_path=None, ground_material=N
32093209
scale_spectra=scale_spectra,
32103210
scale_albedo=scale_albedo,
32113211
scale_albedo_nonspectral_sim=scale_albedo_nonspectral_sim,
3212-
scale_upper_bound=scale_upper_bound)
3212+
scale_upper_bound=scale_upper_bound,
3213+
min_wavelength=min_wavelength, max_wavelength=max_wavelength)
32133214

32143215
if scale_albedo_nonspectral_sim:
32153216
self.metdata.albedo = weighted_alb.values
32163217
return (spectral_alb, spectral_dni, spectral_dhi, weighted_alb)
32173218

3218-
def generate_spectral_tmys(self, wavelengths, weather_file, location_name, spectra_folder=None,
3219-
output_folder=None):
3219+
def generate_spectral_tmys(self, wavelengths, location_name, spectra_folder=None,
3220+
output_folder=None, source="TMY"):
32203221
"""
32213222
Generate a series of TMY-like files with per-wavelength irradiance. There will be one file
32223223
per wavelength. These are necessary to run a spectral simulation with gencumsky
@@ -3245,13 +3246,13 @@ def generate_spectral_tmys(self, wavelengths, weather_file, location_name, spect
32453246
if not os.path.exists(output_folder):
32463247
os.makedirs(output_folder, exist_ok=True)
32473248

3248-
metdata, metadata = self.readWeatherFile(weatherFile=weather_file)
3249+
32493250

32503251
su.generate_spectral_tmys(wavelengths=wavelengths, spectra_folder=spectra_folder,
32513252
metdata=self.metdata, location_name=location_name,
32523253
output_folder=output_folder)
32533254

3254-
def integrated_spectrum(self,weather_file, spectra_folder):
3255+
def integrated_spectrum(self, spectra_folder):
32553256
"""
32563257
Generate integrated sum of spectrum from SMARTS generated spectra for use in normalization equations
32573258
@@ -3273,7 +3274,7 @@ def integrated_spectrum(self,weather_file, spectra_folder):
32733274
if spectra_folder is None:
32743275
spectra_folder = 'spectra'
32753276

3276-
metdata, metadata = self.readWeatherFile(weatherFile=weather_file)
3277+
32773278

32783279
spectrum = su.integrated_spectrum(spectra_folder=spectra_folder,
32793280
metdata=self.metdata)

bifacial_radiance/spectral_utils.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ def spectral_albedo_smarts_SRRL(YEAR, MONTH, DAY, HOUR, ZONE,
238238

239239

240240
def generate_spectra(metdata, simulation_path, ground_material='Gravel', spectra_folder=None, scale_spectra=False,
241-
scale_albedo=False, scale_albedo_nonspectral_sim=False, scale_upper_bound=2500):
241+
scale_albedo=False, scale_albedo_nonspectral_sim=False, scale_upper_bound=2500, min_wavelength=280, max_wavelength=4000):
242242
"""
243243
generate spectral curve for particular material. Requires pySMARTS
244244
@@ -296,7 +296,10 @@ def generate_spectra(metdata, simulation_path, ground_material='Gravel', spectra
296296
dni = metdata.dni[idx]
297297
dhi = metdata.dhi[idx]
298298
ghi = metdata.ghi[idx]
299-
alb = metdata.albedo[idx]
299+
if metdata.albedo is not None:
300+
alb = metdata.albedo[idx]
301+
else:
302+
alb = 0.2
300303
solpos = metdata.solpos.iloc[idx]
301304
zen = float(solpos.zenith)
302305
azm = float(solpos.azimuth) - 180
@@ -311,7 +314,7 @@ def generate_spectra(metdata, simulation_path, ground_material='Gravel', spectra
311314

312315
# generate the base spectra
313316
try:
314-
spectral_dni, spectral_dhi, spectral_ghi = spectral_irradiance_smarts(zen, azm, min_wavelength=280)
317+
spectral_dni, spectral_dhi, spectral_ghi = spectral_irradiance_smarts(zen, azm, min_wavelength=min_wavelength, max_wavelength=max_wavelength)
315318
except:
316319
if scale_albedo_nonspectral_sim:
317320
walb[dt] = 0.0

0 commit comments

Comments
 (0)