diff --git a/pvlib/pvsystem.py b/pvlib/pvsystem.py index bcf460221a..cae3488ec8 100644 --- a/pvlib/pvsystem.py +++ b/pvlib/pvsystem.py @@ -17,7 +17,7 @@ -def systemdef(tmy_meta, surftilt, surfaz, albedo, series_modules, +def systemdef(meta, surftilt, surfaz, albedo, series_modules, parallel_modules): ''' Generates a dict of system paramters used throughout a simulation. @@ -25,9 +25,9 @@ def systemdef(tmy_meta, surftilt, surfaz, albedo, series_modules, Parameters ---------- - tmy_meta : dict - meta file generated from a TMY file using pvl_readtmy2 or pvl_readtmy3. - It should contain at least the following fields: + meta : dict + meta dict either generated from a TMY file using readtmy2 or readtmy3, or + a dict containing at least the following fields: =============== ====== ==================== meta field format description @@ -73,8 +73,8 @@ def systemdef(tmy_meta, surftilt, surfaz, albedo, series_modules, * 'albedo' * 'series_modules' * 'parallel_modules' - * 'Lat' - * 'Long' + * 'latitude' + * 'longitude' * 'TZ' * 'name' * 'altitude' @@ -87,20 +87,20 @@ def systemdef(tmy_meta, surftilt, surfaz, albedo, series_modules, ''' try: - name = tmy_meta['Name'] + name = meta['Name'] except KeyError: - name = tmy_meta['City'] + name = meta['City'] system = {'surftilt':surftilt, 'surfaz':surfaz, 'albedo':albedo, 'series_modules':series_modules, 'parallel_modules':parallel_modules, - 'latitude':tmy_meta['latitude'], - 'longitude':tmy_meta['longitude'], - 'TZ':tmy_meta['TZ'], + 'latitude':meta['latitude'], + 'longitude':meta['longitude'], + 'TZ':meta['TZ'], 'name':name, - 'altitude':tmy_meta['altitude']} + 'altitude':meta['altitude']} return system @@ -1098,4 +1098,4 @@ def snlinverter(inverter, Vmp, Pmp): ACPower[ACPower > Paco] = Paco ACPower[ACPower < Pso] = - 1.0 * abs(Pnt) - return ACPower \ No newline at end of file + return ACPower diff --git a/pvlib/test/test_pvsystem.py b/pvlib/test/test_pvsystem.py index cde1dcb31b..0e4f41a217 100644 --- a/pvlib/test/test_pvsystem.py +++ b/pvlib/test/test_pvsystem.py @@ -24,6 +24,7 @@ irrad_data = clearsky.ineichen(times, tus, solarposition_method='pyephem') aoi = irradiance.aoi(0, 0, ephem_data['apparent_zenith'], ephem_data['apparent_azimuth']) am = atmosphere.relativeairmass(ephem_data.apparent_zenith) +meta = { 'latitude': 37.8, 'longitude': -122.3, 'altitude': 10, 'Name': 'Oakland', 'State': 'CA', 'TZ': -8} pvlib_abspath = os.path.dirname(os.path.abspath(inspect.getfile(tmy))) @@ -58,6 +59,19 @@ def test_systemdef_tmy2(): 'surfaz': 0, 'surftilt': 0} assert_equals(expected, pvsystem.systemdef(tmy2_metadata, 0, 0, .1, 5, 5)) + +def test_systemdef_dict(): + expected = {'TZ': -8, ## Note that TZ is float, but Location sets tz as string + 'albedo': 0.1, + 'altitude': 10, + 'latitude': 37.8, + 'longitude': -122.3, + 'name': 'Oakland', + 'parallel_modules': 5, + 'series_modules': 5, + 'surfaz': 0, + 'surftilt': 5} + assert_equals(expected, pvsystem.systemdef(meta, 5, 0, .1, 5, 5)) @@ -130,4 +144,4 @@ def test_snlinverter(): pdcs = idcs * vdcs pacs = pvsystem.snlinverter(inverters[testinv], vdcs, pdcs) - \ No newline at end of file +