Source code for honeybee_openstudio.generator
# coding=utf-8
"""OpenStudio photovoltaic and generator translators."""
from __future__ import division
from honeybee_openstudio.openstudio import OSGeneratorPVWatts, \
OSElectricLoadCenterDistribution, OSElectricLoadCenterInverterPVWatts
[docs]
def pv_properties_to_openstudio(pv_properties, os_shade, os_model):
"""Convert Honeybee PVProperties to OpenStudio GeneratorPVWatts.
Args:
pv_properties: The Honeybee PVProperties object to be translated
to OpenStudio.
os_shade: The OpenStudio ShadingSurface object to which the GeneratorPVWatts
is being assigned.
os_model: The OpenStudio model to which the GeneratorPVWatts
will be added.
"""
# compte the system capacity
rated_watts = pv_properties.rated_efficiency * 1000 # 1000W/m2 of solar irradiance
sys_cap = int(os_shade.netArea() * pv_properties.active_area_fraction * rated_watts)
# create the PVWatts generator and set all of the properties
os_gen = OSGeneratorPVWatts(os_model, os_shade, sys_cap)
os_gen.setName('{}..{}'.format(pv_properties.identifier, os_shade.nameString()))
os_gen.setModuleType(pv_properties.module_type)
os_gen.setArrayType(pv_properties.mounting_type)
os_gen.setSystemLosses(pv_properties.system_loss_fraction)
os_gen.setGroundCoverageRatio(pv_properties.tracking_ground_coverage_ratio)
return os_gen
[docs]
def electric_load_center_to_openstudio(load_center, os_gen_objects, os_model):
"""Convert Honeybee ElectricLoadCenter to OpenStudio ElectricLoadCenterDistribution.
Args:
load_center: The Honeybee ElectricLoadCenter object to be translated
to OpenStudio.
os_gen_objects: A list of the OpenStudio Generators objects that are
controlled by the ElectricLoadCenter.
os_model: The OpenStudio model to which the ElectricLoadCenterDistribution
will be added.
"""
# create the ElectricLoadCenter:Distribution and add the generators
os_load_center = OSElectricLoadCenterDistribution(os_model)
os_load_center.setName('Model Load Center Distribution')
for os_gen in os_gen_objects:
os_load_center.addGenerator(os_gen)
os_load_center.setGeneratorOperationSchemeType('Baseload')
os_load_center.setElectricalBussType('DirectCurrentWithInverter')
# create the inverter and assign it
inverter = OSElectricLoadCenterInverterPVWatts(os_model)
inverter.setDCToACSizeRatio(load_center.inverter_dc_to_ac_size_ratio)
inverter.setInverterEfficiency(load_center.inverter_efficiency)
os_load_center.setInverter(inverter)
return os_load_center