wip vertical panel sim
This commit is contained in:
parent
2504b4e5fc
commit
a88449175c
@ -7,7 +7,6 @@ import matplotlib.pyplot as pl
|
|||||||
import pvlib
|
import pvlib
|
||||||
from pvfactors.geometry import OrderedPVArray
|
from pvfactors.geometry import OrderedPVArray
|
||||||
from pvfactors.engine import PVEngine
|
from pvfactors.engine import PVEngine
|
||||||
import matplotlib.animation as animation
|
|
||||||
|
|
||||||
from Utilities.Processes import calculate_no_of_panels, calculate_required_system_size
|
from Utilities.Processes import calculate_no_of_panels, calculate_required_system_size
|
||||||
|
|
||||||
@ -32,8 +31,8 @@ def define_grid_layout(c, panel_tilt):
|
|||||||
# calculate pitch
|
# calculate pitch
|
||||||
pitch = c["array"]["spacing"]
|
pitch = c["array"]["spacing"]
|
||||||
# calculate minimum pitch if we don't want panel overlap at all
|
# calculate minimum pitch if we don't want panel overlap at all
|
||||||
min_pitch = c["panel"]["dimensions"]["length"] * math.cos(
|
min_pitch = np.round(
|
||||||
panel_tilt / 180 * math.pi
|
c["panel"]["dimensions"]["length"] * math.cos(panel_tilt / 180 * math.pi), 1
|
||||||
)
|
)
|
||||||
if pitch < min_pitch:
|
if pitch < min_pitch:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
@ -203,41 +202,29 @@ def calculate_energy_production(c, orientation):
|
|||||||
|
|
||||||
pvarray = engine.run_full_mode(fn_build_report=lambda pvarray: pvarray)
|
pvarray = engine.run_full_mode(fn_build_report=lambda pvarray: pvarray)
|
||||||
|
|
||||||
f, ax = pl.subplots(figsize=(10, 3))
|
|
||||||
|
|
||||||
def update(frame):
|
|
||||||
ax.clear()
|
|
||||||
pvarray.plot_at_idx(frame, ax, with_surface_index=True)
|
|
||||||
ax.set_title(inputs.index[frame])
|
|
||||||
return ax
|
|
||||||
|
|
||||||
ani = animation.FuncAnimation(
|
|
||||||
f, update, frames=len(inputs.index), interval=100, repeat=True
|
|
||||||
)
|
|
||||||
pl.show()
|
|
||||||
gamma_pdc = c["panel"]["temperature_coefficient"]
|
gamma_pdc = c["panel"]["temperature_coefficient"]
|
||||||
temp_cell = c["panel"]["nominal_operating_cell_temperature"]
|
temp_cell = c["panel"]["nominal_operating_cell_temperature"]
|
||||||
p_row = no_of_panels_in_row * c["panel"]["peak_power"]
|
p_row = no_of_panels_in_row * c["panel"]["peak_power"]
|
||||||
p_middle_rows = (no_of_panels - 2 * no_of_panels_in_row) * c["panel"]["peak_power"]
|
p_middle_rows = (no_of_panels - 2 * no_of_panels_in_row) * c["panel"]["peak_power"]
|
||||||
pdc_first_row = pvlib.pvsystem.pvwatts_dc(
|
pdc_first_row_front = pvlib.pvsystem.pvwatts_dc(
|
||||||
pdc0=p_row,
|
pdc0=p_row,
|
||||||
gamma_pdc=gamma_pdc,
|
gamma_pdc=gamma_pdc,
|
||||||
temp_cell=temp_cell,
|
temp_cell=temp_cell,
|
||||||
g_poa_effective=POA_data.at[0],
|
g_poa_effective=pvarray.ts_pvrows[0].front.get_param_weighted("qinc"),
|
||||||
)
|
)
|
||||||
pdc_last_row = pvlib.pvsystem.pvwatts_dc(
|
pdc_last_row_front = pvlib.pvsystem.pvwatts_dc(
|
||||||
pdc0=p_row,
|
pdc0=p_row,
|
||||||
gamma_pdc=gamma_pdc,
|
gamma_pdc=gamma_pdc,
|
||||||
temp_cell=temp_cell,
|
temp_cell=temp_cell,
|
||||||
g_poa_effective=POA_data.at[2],
|
g_poa_effective=pvarray.ts_pvrows[2].front.get_param_weighted("qinc"),
|
||||||
)
|
)
|
||||||
pdc_middle_rows = pvlib.pvsystem.pvwatts_dc(
|
pdc_middle_rows_front = pvlib.pvsystem.pvwatts_dc(
|
||||||
pdc0=p_middle_rows,
|
pdc0=p_middle_rows,
|
||||||
gamma_pdc=gamma_pdc,
|
gamma_pdc=gamma_pdc,
|
||||||
temp_cell=temp_cell,
|
temp_cell=temp_cell,
|
||||||
g_poa_effective=POA_data.at[1],
|
g_poa_effective=pvarray.ts_pvrows[1].front.get_param_weighted("qinc"),
|
||||||
)
|
)
|
||||||
pdc = pdc_first_row + pdc_last_row + pdc_middle_rows
|
pdc_front = pdc_first_row_front + pdc_last_row_front + pdc_middle_rows_front
|
||||||
|
|
||||||
total_hourly_energy = pdc * 15 / 60 / 1e3 # convert to kWh
|
total_hourly_energy = pdc * 15 / 60 / 1e3 # convert to kWh
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user