Class: PvPerformanceCharacterization

Inherits:
Object
  • Object
show all
Defined in:
lib/PVLIB_Ruby/pv_performance_characterization.rb

Overview

This class uses Sandia PV Array Performance Model, which is based on: King, D. et al, 2004, “Sandia Photovoltaic Array Performance Model”, SAND Report 3535, Sandia National Laboratories, Albuquerque, NM Other models are realized by subclasses.

Constant Summary collapse

REFERECE_SOLAR_IRRADIANCE =

E0 [W/m^2]

BigDecimal('1000')
REFERECE_CELL_TEMPERATURE =

T0 [ºC]

BigDecimal('25')
BOLTZMANN_CONSTANT =

k [J/K]

BigDecimal('1.38066E-23')
ELEMENTARY_CHARGE =

q [C(coulomb)]

BigDecimal('1.60218E-19')

Instance Method Summary collapse

Constructor Details

#initialize(pv_module, absolute_air_mass, angle_of_incidence, beam_irradiance, ground_irradiance, sky_diffuse_irradiance, estimated_cell_temperature) ⇒ PvPerformanceCharacterization

Returns a new instance of PvPerformanceCharacterization.



14
15
16
17
18
# File 'lib/PVLIB_Ruby/pv_performance_characterization.rb', line 14

def initialize(pv_module, absolute_air_mass, angle_of_incidence, beam_irradiance, ground_irradiance, sky_diffuse_irradiance, estimated_cell_temperature)
  @pv_module = pv_module
  @effective_solar_irradiance = empirical_effective_solar_irradiance(absolute_air_mass, angle_of_incidence, beam_irradiance, ground_irradiance, sky_diffuse_irradiance)
  @estimated_cell_temperature = estimated_cell_temperature
end

Instance Method Details

#fifth_point_currentObject Also known as: ixx

Ixx



61
62
63
64
# File 'lib/PVLIB_Ruby/pv_performance_characterization.rb', line 61

def fifth_point_current
  @pv_module.fifth_point_current_0 * (@pv_module.performance_coefficients[6] * @effective_solar_irradiance + @pv_module.performance_coefficients[7] * @effective_solar_irradiance.power(2)) * 
  (1 + @pv_module.normalized_temperature_coefficient_for_maximum_power_point_current * (@estimated_cell_temperature - REFERECE_CELL_TEMPERATURE))
end

#fourth_point_currentObject Also known as: ix

Ix



53
54
55
56
# File 'lib/PVLIB_Ruby/pv_performance_characterization.rb', line 53

def fourth_point_current
  @pv_module.fourth_point_current_0 * (@pv_module.performance_coefficients[4] * @effective_solar_irradiance + @pv_module.performance_coefficients[5] * @effective_solar_irradiance.power(2)) * 
  (1 + @pv_module.normalized_temperature_coefficient_for_short_circuit_current * (@estimated_cell_temperature - REFERECE_CELL_TEMPERATURE))
end

#maximum_power_point_currentObject Also known as: imp

Imp



28
29
30
31
# File 'lib/PVLIB_Ruby/pv_performance_characterization.rb', line 28

def maximum_power_point_current
  @pv_module.maximum_power_point_current_0 * (@pv_module.performance_coefficients[0] * @effective_solar_irradiance + @pv_module.performance_coefficients[1] * @effective_solar_irradiance.power(2)) * 
  (1 + @pv_module.normalized_temperature_coefficient_for_maximum_power_point_current * (@estimated_cell_temperature - REFERECE_CELL_TEMPERATURE))
end

#maximum_power_point_voltageObject Also known as: vmp

Vmp



44
45
46
47
48
# File 'lib/PVLIB_Ruby/pv_performance_characterization.rb', line 44

def maximum_power_point_voltage
  @pv_module.maximum_power_point_voltage_0 + @pv_module.performance_coefficients[2] * @pv_module.number_of_cells_in_series * thermal_voltage_per_cell * BigMath.log(@effective_solar_irradiance, 4) + 
  @pv_module.performance_coefficients[3] * @pv_module.number_of_cells_in_series * (thermal_voltage_per_cell * BigMath.log(@effective_solar_irradiance, 4)).power(2) + 
  temperature_coefficient_for_maximum_power_point_voltage * (@estimated_cell_temperature - REFERECE_CELL_TEMPERATURE)
end

#open_circuit_voltageObject Also known as: voc

Voc



36
37
38
39
# File 'lib/PVLIB_Ruby/pv_performance_characterization.rb', line 36

def open_circuit_voltage
  @pv_module.open_circuit_voltage_0 + @pv_module.number_of_cells_in_series * thermal_voltage_per_cell * BigMath.log(@effective_solar_irradiance, 4) +
  temperature_coefficient_for_open_circuit_voltage * (@estimated_cell_temperature - REFERECE_CELL_TEMPERATURE)
end

#short_circuit_currentObject Also known as: isc

Isc



21
22
23
# File 'lib/PVLIB_Ruby/pv_performance_characterization.rb', line 21

def short_circuit_current
  @pv_module.short_circuit_current_0 * @effective_solar_irradiance * (1 + @pv_module.normalized_temperature_coefficient_for_short_circuit_current * (@estimated_cell_temperature - REFERECE_CELL_TEMPERATURE))
end