示例#1
0
def test_pvengine_ts_inputs_perez(params_serial, df_inputs_serial_calculation,
                                  fn_report_example):
    """Test that PV engine works for timeseries inputs"""

    # Break up inputs
    (timestamps, surface_tilt, surface_azimuth, solar_zenith, solar_azimuth,
     dni, dhi) = breakup_df_inputs(df_inputs_serial_calculation)
    albedo = params_serial['rho_ground']

    # Create engine
    irradiance_model = HybridPerezOrdered()
    eng = PVEngine(params_serial, irradiance_model=irradiance_model)

    # Fit engine
    eng.fit(timestamps, dni, dhi, solar_zenith, solar_azimuth, surface_tilt,
            surface_azimuth, albedo)

    # Run all timesteps
    report = eng.run_all_timesteps(fn_build_report=fn_report_example)

    # Check values
    np.testing.assert_array_almost_equal(report['qinc_front'],
                                         [1066.272392, 1065.979824])
    np.testing.assert_array_almost_equal(report['qinc_back'],
                                         [135.897106, 136.01297])
    np.testing.assert_array_almost_equal(report['iso_front'],
                                         [42.816637, 42.780206])
    np.testing.assert_array_almost_equal(report['iso_back'],
                                         [1.727308, 1.726535])
def pv_engine_run(data, pvarray_parameters, parallel=0):
    if parallel > 0:
        report = run_parallel_engine(MyReportBuilder,
                                     pvarray_parameters,
                                     data.index,
                                     data.dni,
                                     data.dhi,
                                     data.zenith,
                                     data.azimuth,
                                     data.surface_tilt,
                                     data.surface_azimuth,
                                     data.albedo,
                                     n_processes=6)
    else:
        rb = MyReportBuilder()
        engine = PVEngine(pvarray_parameters)
        engine.fit(data.index, data.dni, data.dhi, data.zenith, data.azimuth,
                   data.surface_tilt, data.surface_azimuth, data.albedo)
        report = engine.run_all_timesteps(rb.build)

    df_report = pd.DataFrame(report, index=data.index).fillna(0)
    return df_report