Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
df_inputs_back_surface = df_inputs.loc[sun_hitting_back_surface]
# Reverse the surface normal to switch to back-surface circumsolar calc
df_inputs_back_surface.loc[:, 'array_azimuth'] -= 180.
df_inputs_back_surface.loc[:, 'array_azimuth'] = np.mod(
df_inputs_back_surface.loc[:, 'array_azimuth'], 360.
)
df_inputs_back_surface.loc[:, 'array_tilt'] = (
180. - df_inputs_back_surface.array_tilt)
if df_inputs_back_surface.shape[0] > 0:
# Use recursion to calculate circumsolar luminance for back surface
df_inputs_back_surface = perez_diffuse_luminance(
df_inputs_back_surface)
# Calculate Perez diffuse components
diffuse_poa, components = irradiance.perez(df_inputs.array_tilt,
df_inputs.array_azimuth,
df_inputs.dhi, df_inputs.dni,
dni_et,
df_inputs.solar_zenith,
df_inputs.solar_azimuth,
am,
return_components=True)
# Calculate Perez view factors:
a = aoi_projection(df_inputs.array_tilt, df_inputs.array_azimuth,
df_inputs.solar_zenith, df_inputs.solar_azimuth)
a = np.maximum(a, 0)
b = cosd(df_inputs.solar_zenith)
b = np.maximum(b, cosd(85))
vf_perez = pd.DataFrame(
# Determine the extraterrestrial radiation
data['dni_extra'] = pvlib.irradiance.extraradiation(
datetime_or_doy=data.index.dayofyear)
# Determine the relative air mass
data['airmass'] = pvlib.atmosphere.relativeairmass(data['zenith'])
# Determine direct normal irradiation
data['dni'] = (data['dirhi']) / np.sin(np.radians(90 - data['zenith']))
# what for??
data['dni'][data['zenith'] > 88] = data['dirhi']
# Determine the sky diffuse irradiation in plane
# with model of Perez (modell switch would be good)
data['poa_sky_diffuse'] = pvlib.irradiance.perez(
surface_tilt=self.powerplant.tilt,
surface_azimuth=self.powerplant.azimuth,
dhi=data['dhi'],
dni=data['dni'],
dni_extra=data['dni_extra'],
solar_zenith=data['zenith'],
solar_azimuth=data['azimuth'],
airmass=data['airmass'])
# Set NaN values to zero
data['poa_sky_diffuse'][
pd.isnull(data['poa_sky_diffuse'])] = 0
# Determine the diffuse irradiation from ground reflection in plane
data['poa_ground_diffuse'] = pvlib.irradiance.grounddiffuse(
ghi=data['dirhi'] + data['dhi'],
# Reverse the surface normal to switch to back-surface circumsolar calc
df_inputs_back_surface.loc[:, 'surface_azimuth'] = (
df_inputs_back_surface.loc[:, 'surface_azimuth'] - 180.)
df_inputs_back_surface.loc[:, 'surface_azimuth'] = np.mod(
df_inputs_back_surface.loc[:, 'surface_azimuth'], 360.
)
df_inputs_back_surface.loc[:, 'surface_tilt'] = (
180. - df_inputs_back_surface.surface_tilt)
if df_inputs_back_surface.shape[0] > 0:
# Use recursion to calculate circumsolar luminance for back surface
df_inputs_back_surface = perez_diffuse_luminance(
*breakup_df_inputs(df_inputs_back_surface))
# Calculate Perez diffuse components
components = irradiance.perez(df_inputs.surface_tilt,
df_inputs.surface_azimuth,
df_inputs.dhi, df_inputs.dni,
dni_et,
df_inputs.solar_zenith,
df_inputs.solar_azimuth,
am,
return_components=True)
# Calculate Perez view factors:
a = aoi_projection(df_inputs.surface_tilt,
df_inputs.surface_azimuth, df_inputs.solar_zenith,
df_inputs.solar_azimuth)
a = np.maximum(a, 0)
b = cosd(df_inputs.solar_zenith)
b = np.maximum(b, cosd(85))
# Reverse the surface normal to switch to back-surface circumsolar calc
df_inputs_back_surface.loc[:, 'surface_azimuth'] = (
df_inputs_back_surface.loc[:, 'surface_azimuth'] - 180.)
df_inputs_back_surface.loc[:, 'surface_azimuth'] = np.mod(
df_inputs_back_surface.loc[:, 'surface_azimuth'], 360.
)
df_inputs_back_surface.loc[:, 'surface_tilt'] = (
180. - df_inputs_back_surface.surface_tilt)
if df_inputs_back_surface.shape[0] > 0:
# Use recursion to calculate circumsolar luminance for back surface
df_inputs_back_surface = perez_diffuse_luminance(
*breakup_df_inputs(df_inputs_back_surface))
# Calculate Perez diffuse components
components = irradiance.perez(df_inputs.surface_tilt,
df_inputs.surface_azimuth,
df_inputs.dhi, df_inputs.dni,
dni_et,
df_inputs.solar_zenith,
df_inputs.solar_azimuth,
am,
return_components=True)
# Calculate Perez view factors:
a = irradiance.aoi_projection(
df_inputs.surface_tilt,
df_inputs.surface_azimuth, df_inputs.solar_zenith,
df_inputs.solar_azimuth)
a = np.maximum(a, 0)
b = cosd(df_inputs.solar_zenith)
b = np.maximum(b, cosd(85))