def test_vf_matrix_subset_calculation(params): """Check that the vf matrix subset is calculated correctly""" # Run in fast mode irradiance_model = HybridPerezOrdered() fast_mode_pvrow_index = 1 eng = PVEngine(params, irradiance_model=irradiance_model, fast_mode_pvrow_index=fast_mode_pvrow_index) timestamps = dt.datetime(2019, 6, 11, 11) DNI = 1000. DHI = 100. eng.fit(timestamps, DNI, DHI, params['solar_zenith'], params['solar_azimuth'], params['surface_tilt'], params['surface_azimuth'], params['rho_ground']) pvarray_fast = eng.run_timestep(0) vf_mat_fast = pvarray_fast.vf_matrix # Run in full mode irradiance_model = HybridPerezOrdered() eng = PVEngine(params, irradiance_model=irradiance_model) timestamps = dt.datetime(2019, 6, 11, 11) DNI = 1000. DHI = 100. eng.fit(timestamps, DNI, DHI, params['solar_zenith'], params['solar_azimuth'], params['surface_tilt'], params['surface_azimuth'], params['rho_ground']) pvarray_full = eng.run_timestep(0) vf_mat_full = pvarray_full.vf_matrix index_of_back_side_surface = 13 np.testing.assert_array_almost_equal( vf_mat_fast, vf_mat_full[[index_of_back_side_surface], :])
def test_pvengine_float_inputs_perez(params): """Test that PV engine works for float inputs""" irradiance_model = HybridPerezOrdered() eng = PVEngine(params, irradiance_model=irradiance_model) # Irradiance inputs timestamps = dt.datetime(2019, 6, 11, 11) DNI = 1000. DHI = 100. # Fit engine eng.fit(timestamps, DNI, DHI, params['solar_zenith'], params['solar_azimuth'], params['surface_tilt'], params['surface_azimuth'], params['rho_ground']) # Checks np.testing.assert_almost_equal(eng.irradiance.direct['front_pvrow'], DNI) # Run timestep pvarray = eng.run_timestep(0) # Checks assert isinstance(pvarray, OrderedPVArray) np.testing.assert_almost_equal( pvarray.pvrows[0].front.get_param_weighted('qinc'), 1110.1164773159298) np.testing.assert_almost_equal( pvarray.pvrows[1].front.get_param_weighted('qinc'), 1110.595903991) np.testing.assert_almost_equal( pvarray.pvrows[2].front.get_param_weighted('qinc'), 1112.37717553) np.testing.assert_almost_equal( pvarray.pvrows[1].back.get_param_weighted('qinc'), 116.49050349491208)
def test_pvengine_float_inputs_iso(params): """Test that PV engine works for float inputs""" irradiance_model = IsotropicOrdered() eng = PVEngine(params, irradiance_model=irradiance_model) # Irradiance inputs timestamps = dt.datetime(2019, 6, 11, 11) DNI = 1000. DHI = 100. # Fit engine eng.fit(timestamps, DNI, DHI, params['solar_zenith'], params['solar_azimuth'], params['surface_tilt'], params['surface_azimuth'], params['rho_ground']) # Checks np.testing.assert_almost_equal(eng.irradiance.direct['front_pvrow'], DNI) # Run timestep pvarray = eng.run_timestep(0) # Checks assert isinstance(pvarray, OrderedPVArray) np.testing.assert_almost_equal( pvarray.pvrows[0].front.get_param_weighted('qinc'), 1099.22245374) np.testing.assert_almost_equal( pvarray.pvrows[1].front.get_param_weighted('qinc'), 1099.6948573) np.testing.assert_almost_equal( pvarray.pvrows[2].front.get_param_weighted('qinc'), 1102.76149246)
def test_fast_pvengine_float_inputs_perez(params): """Test that PV engine works for float inputs""" # Prepare some engine inputs irradiance_model = HybridPerezOrdered() fast_mode_pvrow_index = 1 # Create engine object eng = PVEngine(params, irradiance_model=irradiance_model, fast_mode_pvrow_index=fast_mode_pvrow_index) # Irradiance inputs timestamps = dt.datetime(2019, 6, 11, 11) DNI = 1000. DHI = 100. # Fit engine eng.fit(timestamps, DNI, DHI, params['solar_zenith'], params['solar_azimuth'], params['surface_tilt'], params['surface_azimuth'], params['rho_ground']) # Checks np.testing.assert_almost_equal(eng.irradiance.direct['front_pvrow'], DNI) # Run timestep pvarray = eng.run_timestep(0) # Checks assert isinstance(pvarray, OrderedPVArray) np.testing.assert_almost_equal( pvarray.pvrows[1].back.get_param_weighted('qinc'), 123.7087347744459)