コード例 #1
0
def test_deprecated_08():
    # explicit system creation call because fail_on_pvlib_version
    # does not support decorators.
    # does not matter what the parameters are, just fake it until we make it
    module_parameters = {'R_sh_ref': 1, 'a_ref': 1, 'I_o_ref': 1,
                         'alpha_sc': 1, 'I_L_ref': 1, 'R_s': 1}
    # do not assign PVSystem.temperature_model_parameters
    system = PVSystem(module_parameters=module_parameters)
    with pytest.warns(pvlibDeprecationWarning):
        ModelChain(system, location,
                   dc_model='desoto',
                   aoi_model='no_loss', spectral_model='no_loss',
                   temp_model='sapm',
                   ac_model='snlinverter')
    system = PVSystem(module_parameters=module_parameters)
    with pytest.warns(pvlibDeprecationWarning):
        ModelChain(system, location,
                   dc_model='desoto',
                   aoi_model='no_loss', spectral_model='no_loss',
                   temperature_model='sapm',
                   temp_model='sapm',
                   ac_model='snlinverter')
    system = PVSystem(module_parameters=module_parameters)
    with pytest.raises(ValueError):
        ModelChain(system, location,
                   dc_model='desoto',
                   aoi_model='no_loss', spectral_model='no_loss',
                   temperature_model='pvsyst',
                   temp_model='sapm',
                   ac_model='snlinverter')
コード例 #2
0
def pvwatts_dc_snl_ac_system(sam_data):
    module_parameters = {'pdc0': 220, 'gamma_pdc': -0.003}
    inverters = sam_data['cecinverter']
    inverter = inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'].copy()
    system = PVSystem(module_parameters=module_parameters,
                      inverter_parameters=inverter)
    return system
コード例 #3
0
def pvwatts_dc_snl_ac_system(cec_inverter_parameters):
    module_parameters = {'pdc0': 220, 'gamma_pdc': -0.003}
    system = PVSystem(surface_tilt=32.2,
                      surface_azimuth=180,
                      module_parameters=module_parameters,
                      inverter_parameters=cec_inverter_parameters)
    return system
コード例 #4
0
ファイル: pvmodel.py プロジェクト: cooldil/PVForecast
    def _init_CEC(self):
        """Configure PV system based on actual components available in pvlib CEC database"""

        try:
            moduleName = self.config[self._cfg].get('ModuleName')
            inverterName = self.config[self._cfg].get('InverterName')
            tempModel = self.config[self._cfg].get('TemperatureModel')
            self._pvsystem = PVSystem(
                surface_tilt=self.config[self._cfg].getfloat('Tilt'),
                surface_azimuth=self.config[self._cfg].getfloat('Azimuth'),
                module_parameters=pvlib.pvsystem.retrieve_sam(
                    'cecmod')[moduleName],
                inverter_parameters=pvlib.pvsystem.retrieve_sam(
                    'cecinverter')[inverterName],
                strings_per_inverter=self.config[self._cfg].getint(
                    'NumStrings'),
                modules_per_string=self.config[self._cfg].getint('NumPanels'),
                temperature_model_parameters=TEMPERATURE_MODEL_PARAMETERS[
                    'sapm'][tempModel])
            self._mc = ModelChain(self._pvsystem,
                                  self._location,
                                  aoi_model='physical',
                                  spectral_model='no_loss')
            self.pv_model = 'CEC'
        except Exception as e:
            print("init_CEC: " + str(e))
            sys.exit(1)
コード例 #5
0
def pvwatts_dc_pvwatts_ac_system(sam_data):
    module_parameters = {'pdc0': 220, 'gamma_pdc': -0.003}
    inverter_parameters = {'eta_inv_nom': 0.95}
    system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
                      module_parameters=module_parameters,
                      inverter_parameters=inverter_parameters)
    return system
コード例 #6
0
def test_deprecated_08():
    # explicit system creation call because fail_on_pvlib_version
    # does not support decorators.
    # does not matter what the parameters are, just fake it until we make it
    module_parameters = {'R_sh_ref': 1, 'a_ref': 1, 'I_o_ref': 1,
                         'alpha_sc': 1, 'I_L_ref': 1, 'R_s': 1}
    # do not assign PVSystem.temperature_model_parameters
    # leave out PVSystem.racking_model and PVSystem.module_type
    system = PVSystem(module_parameters=module_parameters)
    # deprecated temp_model kwarg
    warn_txt = 'temp_model keyword argument is deprecated'
    with pytest.warns(pvlibDeprecationWarning, match=warn_txt):
        ModelChain(system, location, dc_model='desoto', aoi_model='no_loss',
                   spectral_model='no_loss', ac_model='sandia',
                   temp_model='sapm')
    # provide both temp_model and temperature_model kwargs
    warn_txt = 'Provide only one of temperature_model'
    with pytest.warns(pvlibDeprecationWarning, match=warn_txt):
        ModelChain(system, location, dc_model='desoto', aoi_model='no_loss',
                   spectral_model='no_loss', ac_model='sandia',
                   temperature_model='sapm', temp_model='sapm')
    # conflicting temp_model and temperature_model kwargs
    exc_text = 'Conflicting temperature_model'
    with pytest.raises(ValueError, match=exc_text):
        ModelChain(system, location, dc_model='desoto', aoi_model='no_loss',
                   spectral_model='no_loss', ac_model='sandia',
                   temperature_model='pvsyst', temp_model='sapm')
コード例 #7
0
def cec_dc_native_snl_ac_system(cec_module_cs5p_220m, cec_inverter_parameters):
    module_parameters = cec_module_cs5p_220m.copy()
    system = PVSystem(surface_tilt=32.2,
                      surface_azimuth=180,
                      module=module_parameters['Name'],
                      module_parameters=module_parameters,
                      inverter_parameters=cec_inverter_parameters)
    return system
コード例 #8
0
def system(sam_data):
    modules = sam_data['sandiamod']
    module_parameters = modules['Canadian_Solar_CS5P_220M___2009_'].copy()
    inverters = sam_data['cecinverter']
    inverter = inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'].copy()
    system = PVSystem(module_parameters=module_parameters,
                      inverter_parameters=inverter)
    return system
コード例 #9
0
def pvwatts_dc_pvwatts_ac_system(sapm_temperature_cs5p_220m):
    module_parameters = {'pdc0': 220, 'gamma_pdc': -0.003}
    temp_model_params = sapm_temperature_cs5p_220m.copy()
    inverter_parameters = {'pdc0': 220, 'eta_inv_nom': 0.95}
    system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
                      module_parameters=module_parameters,
                      temperature_model_parameters=temp_model_params,
                      inverter_parameters=inverter_parameters)
    return system
コード例 #10
0
def get_pv_feedin(filename='data/Lifuka_weather_2005.csv'):
    """ This function converts the FeedinWeather object built in Scrip_Merra2 into a feed-in-timeseries (PV_feedin)
    of a PV module with the help of PVLib's ModelChain, Location, PVSystem

    parameters:
    filename        as string (including the full path of the Merra2- FeedinWeather object)

    out/res:
    PV_feedin       as Pandas.Series [W/Wp]

    """
    weather = pd.read_csv(filename)
    weather.rename(columns={'v_wind': 'wind_speed'}, inplace=True)
    weather.set_index(pd.to_datetime(weather['timestamp']), inplace=True)

    times = weather.index

    # Initialize PV Module
    sandia_modules = pvlib.pvsystem.retrieve_sam('SandiaMod')
    sapm_inverters = pvlib.pvsystem.retrieve_sam('sandiainverter')

    # own module parameters
    invertername = 'ABB__MICRO_0_25_I_OUTD_US_240_240V__CEC_2014_'

    yingli230 = {
        'module_parameters':
        sandia_modules['Yingli_Solar_YL230_29b_Module__2009__E__'],
        'inverter_parameters':
        sapm_inverters[invertername],
        'surface_azimuth':
        0,
        'surface_tilt':
        25,
        'albedo':
        0.2
    }

    location = {
        'latitude': -20,
        'longitude': -174.375,
        'tz': 'Pacific/Tongatapu',
        'altitude': 9.90,
        'name': 'Lifuka'
    }

    mc = ModelChain(PVSystem(**yingli230),
                    Location(**location),
                    orientation_strategy='south_at_latitude_tilt')
    mc.complete_irradiance(times=times, weather=weather)
    mc.run_model()
    nominal_module_capacity = 230

    res = pd.DataFrame()

    res['pv'] = mc.dc.p_mp.fillna(0) / nominal_module_capacity

    return res
コード例 #11
0
    def power_output(self):
        """calculates the power output of PV

        Returns:
            df -- power output
        """

        if self.multiplier == 0:
            data = np.zeros(8760)
            df = pd.Series(data)
            return df

        location = Location(latitude=self.latitude, longitude=self.longitude)

        system = PVSystem(surface_tilt=self.surface_tilt,
                          surface_azimuth=self.surface_azimuth,
                          module_parameters=self.module,
                          inverter_parameters=self.inverter)

        mc = ModelChain(system, location)
        weather = self.weather_data()

        weather.index = pd.date_range(start='01/01/2017',
                                      end='01/01/2018',
                                      freq='1h',
                                      tz='Europe/London',
                                      closed='left')
        # times = naive_times.tz_localize('Europe/London')
        # print weather
        # weather = pd.DataFrame(
        #     [[1050, 1000, 100, 30, 5]],
        #     columns=['ghi', 'dni', 'dhi', 'temp_air', 'wind_speed'],
        #     index=[pd.Timestamp('20170401 1200', tz='Europe/London')])

        mc.run_model(weather=weather)
        # multiply by system losses
        # also multiply by correction factor
        power = (mc.ac.fillna(value=0).round(2) * self.multiplier * 0.001 *
                 0.85 * 0.85)
        # remove negative values
        power[power < 0] = 0
        # multiply by monthly correction factors
        # for correcting MEERA solar data set
        cf = [
            1.042785944, 1.059859907, 1.037299072, 0.984286745, 0.995849527,
            0.973795815, 1.003315908, 1.014427134, 1.046833, 1.091837017,
            1.039504694, 0.95520793
        ]

        # multiply by correction factor for each hour
        for hour in range(8760):
            month = int(math.floor(hour / 730))
            power[hour] = power[hour] * cf[month]

        power = power.reset_index(drop=True)

        return power
コード例 #12
0
def pvwatts_dc_pvwatts_ac_faiman_temp_system():
    module_parameters = {'pdc0': 220, 'gamma_pdc': -0.003}
    temp_model_params = {'u0': 25.0, 'u1': 6.84}
    inverter_parameters = {'pdc0': 220, 'eta_inv_nom': 0.95}
    system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
                      module_parameters=module_parameters,
                      temperature_model_parameters=temp_model_params,
                      inverter_parameters=inverter_parameters)
    return system
コード例 #13
0
def system_no_temp(cec_module_cs5p_220m, cec_inverter_parameters):
    module_parameters = cec_module_cs5p_220m.copy()
    module_parameters['EgRef'] = 1.121
    module_parameters['dEgdT'] = -0.0002677
    inverter_parameters = cec_inverter_parameters.copy()
    system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
                      module_parameters=module_parameters,
                      inverter_parameters=inverter_parameters)
    return system
コード例 #14
0
def pvwatts_dc_pvwatts_ac_fuentes_temp_system():
    module_parameters = {'pdc0': 220, 'gamma_pdc': -0.003}
    temp_model_params = {'noct_installed': 45}
    inverter_parameters = {'pdc0': 220, 'eta_inv_nom': 0.95}
    system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
                      module_parameters=module_parameters,
                      temperature_model_parameters=temp_model_params,
                      inverter_parameters=inverter_parameters)
    return system
コード例 #15
0
def pvsyst_dc_snl_ac_system(pvsyst_module_params, cec_inverter_parameters):
    module = 'PVsyst test module'
    module_parameters = pvsyst_module_params
    module_parameters['b'] = 0.05
    system = PVSystem(surface_tilt=32.2,
                      surface_azimuth=180,
                      module=module,
                      module_parameters=module_parameters,
                      inverter_parameters=cec_inverter_parameters)
    return system
コード例 #16
0
def cec_dc_native_snl_ac_system(sam_data):
    module = 'Canadian_Solar_CS5P_220M'
    module_parameters = sam_data['cecmod'][module].copy()
    inverters = sam_data['cecinverter']
    inverter = inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'].copy()
    system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
                      module=module,
                      module_parameters=module_parameters,
                      inverter_parameters=inverter)
    return system
コード例 #17
0
def pvwatts_dc_pvwatts_ac_pvsyst_temp_system():
    module_parameters = {'pdc0': 220, 'gamma_pdc': -0.003}
    temp_model_params = {'u_c': 29.0, 'u_v': 0.0, 'eta_m': 0.1,
                         'alpha_absorption': 0.9}
    inverter_parameters = {'pdc0': 220, 'eta_inv_nom': 0.95}
    system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
                      module_parameters=module_parameters,
                      temperature_model_parameters=temp_model_params,
                      inverter_parameters=inverter_parameters)
    return system
コード例 #18
0
def system(sam_data, cec_inverter_parameters):
    modules = sam_data['sandiamod']
    module = 'Canadian_Solar_CS5P_220M___2009_'
    module_parameters = modules[module].copy()
    system = PVSystem(surface_tilt=32.2,
                      surface_azimuth=180,
                      module=module,
                      module_parameters=module_parameters,
                      inverter_parameters=cec_inverter_parameters)
    return system
コード例 #19
0
def run_orientation_strategy(strategy, expected):
    system = PVSystem()
    location = Location(32.2, -111, altitude=700)

    mc = ModelChain(system, location, orientation_strategy=strategy)

    # the || accounts for the coercion of 'None' to None
    assert (mc.orientation_strategy == strategy or
            mc.orientation_strategy == None)
    assert system.surface_tilt == expected[0]
    assert system.surface_azimuth == expected[1]
コード例 #20
0
def cec_dc_snl_ac_system(sam_data):
    modules = sam_data['cecmod']
    module_parameters = modules['Canadian_Solar_CS5P_220M'].copy()
    module_parameters['b'] = 0.05
    module_parameters['EgRef'] = 1.121
    module_parameters['dEgdT'] = -0.0002677
    inverters = sam_data['cecinverter']
    inverter = inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'].copy()
    system = PVSystem(module_parameters=module_parameters,
                      inverter_parameters=inverter)
    return system
コード例 #21
0
def system(sam_data, cec_inverter_parameters, sapm_temperature_cs5p_220m):
    modules = sam_data['sandiamod']
    module = 'Canadian_Solar_CS5P_220M___2009_'
    module_parameters = modules[module].copy()
    temp_model_params = sapm_temperature_cs5p_220m.copy()
    system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
                      module=module,
                      module_parameters=module_parameters,
                      temperature_model_parameters=temp_model_params,
                      inverter_parameters=cec_inverter_parameters)
    return system
コード例 #22
0
def system(sam_data):
    modules = sam_data['sandiamod']
    module = 'Canadian_Solar_CS5P_220M___2009_'
    module_parameters = modules[module].copy()
    inverters = sam_data['cecinverter']
    inverter = inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'].copy()
    system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
                      module=module,
                      module_parameters=module_parameters,
                      inverter_parameters=inverter)
    return system
コード例 #23
0
def pvsyst_dc_snl_ac_system(sam_data):
    module = 'PVsyst test module'
    module_parameters = pvsyst_module_params()
    module_parameters['b'] = 0.05
    inverters = sam_data['cecinverter']
    inverter = inverters['ABB__MICRO_0_25_I_OUTD_US_208_208V__CEC_2014_'].copy()
    system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
                      module=module,
                      module_parameters=module_parameters,
                      inverter_parameters=inverter)
    return system
コード例 #24
0
def cec_dc_adr_ac_system(sam_data):
    modules = sam_data['cecmod']
    module_parameters = modules['Canadian_Solar_CS5P_220M'].copy()
    module_parameters['b'] = 0.05
    module_parameters['EgRef'] = 1.121
    module_parameters['dEgdT'] = -0.0002677
    inverters = sam_data['adrinverter']
    inverter = inverters['Zigor__Sunzet_3_TL_US_240V__CEC_2011_'].copy()
    system = PVSystem(module_parameters=module_parameters,
                      inverter_parameters=inverter)
    return system
コード例 #25
0
def cec_dc_snl_ac_system(cec_module_cs5p_220m, cec_inverter_parameters):
    module_parameters = cec_module_cs5p_220m.copy()
    module_parameters['b'] = 0.05
    module_parameters['EgRef'] = 1.121
    module_parameters['dEgdT'] = -0.0002677
    system = PVSystem(surface_tilt=32.2,
                      surface_azimuth=180,
                      module=module_parameters['Name'],
                      module_parameters=module_parameters,
                      inverter_parameters=cec_inverter_parameters)
    return system
コード例 #26
0
def pvsyst_dc_snl_ac_system(pvsyst_module_params, cec_inverter_parameters,
                            sapm_temperature_cs5p_220m):
    module = 'PVsyst test module'
    module_parameters = pvsyst_module_params
    module_parameters['b'] = 0.05
    temp_model_params = sapm_temperature_cs5p_220m.copy()
    system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
                      module=module,
                      module_parameters=module_parameters,
                      temperature_model_parameters=temp_model_params,
                      inverter_parameters=cec_inverter_parameters)
    return system
コード例 #27
0
def test_deprecated_07():
    # explicit system creation call because fail_on_pvlib_version
    # does not support decorators.
    # does not matter what the parameters are, just fake it until we make it
    module_parameters = {'R_sh_ref': 1, 'a_ref': 1, 'I_o_ref': 1,
                         'alpha_sc': 1, 'I_L_ref': 1, 'R_s': 1}
    system = PVSystem(module_parameters=module_parameters)
    with pytest.warns(pvlibDeprecationWarning):
        mc = ModelChain(system, location,
                        dc_model='singlediode',  # this should fail after 0.7
                        aoi_model='no_loss', spectral_model='no_loss',
                        ac_model='snlinverter')
コード例 #28
0
def system_no_aoi(cec_module_cs5p_220m, sapm_temperature_cs5p_220m,
                  cec_inverter_parameters):
    module_parameters = cec_module_cs5p_220m.copy()
    module_parameters['EgRef'] = 1.121
    module_parameters['dEgdT'] = -0.0002677
    temp_model_params = sapm_temperature_cs5p_220m.copy()
    inverter_parameters = cec_inverter_parameters.copy()
    system = PVSystem(surface_tilt=32.2, surface_azimuth=180,
                      module_parameters=module_parameters,
                      temperature_model_parameters=temp_model_params,
                      inverter_parameters=inverter_parameters)
    return system
コード例 #29
0
def cec_dc_adr_ac_system(sam_data, cec_module_cs5p_220m):
    module_parameters = cec_module_cs5p_220m.copy()
    module_parameters['b'] = 0.05
    module_parameters['EgRef'] = 1.121
    module_parameters['dEgdT'] = -0.0002677
    inverters = sam_data['adrinverter']
    inverter = inverters['Zigor__Sunzet_3_TL_US_240V__CEC_2011_'].copy()
    system = PVSystem(surface_tilt=32.2,
                      surface_azimuth=180,
                      module=module_parameters['Name'],
                      module_parameters=module_parameters,
                      inverter_parameters=inverter)
    return system
コード例 #30
0
def test_ModelChain___repr__():
    system = PVSystem()
    location = Location(32.2, -111, altitude=700)
    strategy = 'south_at_latitude_tilt'

    mc = ModelChain(system, location, orientation_strategy=strategy)

    # the || accounts for the coercion of 'None' to None
    assert mc.__repr__() == (
        'ModelChain for: PVSystem with tilt:32.2 and ' +
        'azimuth: 180 with Module: None and Inverter: None ' +
        'orientation_startegy: south_at_latitude_tilt clearsky_model: ' +
        'ineichentransposition_model: haydavies solar_position_method: ' +
        'nrel_numpyairmass_model: kastenyoung1989')