Class: PvPerformanceCharacterization
- Inherits:
-
Object
- Object
- PvPerformanceCharacterization
- 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
-
#fifth_point_current ⇒ Object
(also: #ixx)
Ixx.
-
#fourth_point_current ⇒ Object
(also: #ix)
Ix.
-
#initialize(pv_module, absolute_air_mass, angle_of_incidence, beam_irradiance, ground_irradiance, sky_diffuse_irradiance, estimated_cell_temperature) ⇒ PvPerformanceCharacterization
constructor
A new instance of PvPerformanceCharacterization.
-
#maximum_power_point_current ⇒ Object
(also: #imp)
Imp.
-
#maximum_power_point_voltage ⇒ Object
(also: #vmp)
Vmp.
-
#open_circuit_voltage ⇒ Object
(also: #voc)
Voc.
-
#short_circuit_current ⇒ Object
(also: #isc)
Isc.
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_current ⇒ Object 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_current ⇒ Object 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_current ⇒ Object 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_voltage ⇒ Object 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_voltage ⇒ Object 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_current ⇒ Object 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 |