Merge remote-tracking branch 'origin/systems_catalog_improvement' into systems_catalog_improvement
# Conflicts: # hub/catalog_factories/data_models/energy_systems/electrical_storage_system.py # hub/catalog_factories/data_models/energy_systems/energy_storage_system.py # hub/catalog_factories/data_models/energy_systems/thermal_storage_system.py
This commit is contained in:
commit
b1d42ee00b
@ -56,3 +56,5 @@ class Archetype:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return content
|
return content
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,11 +69,4 @@ class Content:
|
|||||||
|
|
||||||
return content
|
return content
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
"""Print content"""
|
|
||||||
_archetypes = []
|
|
||||||
for _archetype in self.archetypes:
|
|
||||||
_archetypes.append(_archetype.to_dictionary())
|
|
||||||
content = {'Archetypes': _archetypes}
|
|
||||||
|
|
||||||
return str(content)
|
|
||||||
|
@ -14,8 +14,9 @@ class PerformanceCurves:
|
|||||||
Parameter function class
|
Parameter function class
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, curve_type, parameters, coefficients):
|
def __init__(self, curve_type, dependant_variable, parameters, coefficients):
|
||||||
self._curve_type = curve_type
|
self._curve_type = curve_type
|
||||||
|
self._dependant_variable = dependant_variable
|
||||||
self._parameters = parameters
|
self._parameters = parameters
|
||||||
self._coefficients = coefficients
|
self._coefficients = coefficients
|
||||||
|
|
||||||
@ -35,11 +36,12 @@ class PerformanceCurves:
|
|||||||
return self._curve_type
|
return self._curve_type
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def function(self):
|
def dependant_variable(self):
|
||||||
"""
|
"""
|
||||||
y (e.g. COP in COP = a*source temperature**2... )
|
y (e.g. COP in COP = a*source temperature**2 + b*source temperature + c*source temperature*supply temperature +
|
||||||
|
d*supply temperature + e*supply temperature**2 + f)
|
||||||
"""
|
"""
|
||||||
return self._function
|
return self._dependant_variable
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def parameters(self):
|
def parameters(self):
|
||||||
@ -62,7 +64,8 @@ class PerformanceCurves:
|
|||||||
"""Class content to dictionary"""
|
"""Class content to dictionary"""
|
||||||
content = {'Parameter Function': {
|
content = {'Parameter Function': {
|
||||||
'curve type': self.curve_type,
|
'curve type': self.curve_type,
|
||||||
'parameters': self.parameters,
|
'dependant variable': self.dependant_variable,
|
||||||
|
'parameter(s)': self.parameters,
|
||||||
'coefficients': self.coefficients,
|
'coefficients': self.coefficients,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ class System:
|
|||||||
self._emission_system = emission_system
|
self._emission_system = emission_system
|
||||||
self._generation_systems = generation_systems
|
self._generation_systems = generation_systems
|
||||||
self._energy_storage_systems = energy_storage_systems
|
self._energy_storage_systems = energy_storage_systems
|
||||||
self._configuration = configuration
|
# self._configuration = configuration
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def lod(self):
|
def lod(self):
|
||||||
@ -79,7 +79,7 @@ class System:
|
|||||||
return self._generation_systems
|
return self._generation_systems
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def distribution_system(self) -> Union[None, DistributionSystem]:
|
def distribution_system(self) -> Union[None, List[DistributionSystem]]:
|
||||||
"""
|
"""
|
||||||
Get distribution system
|
Get distribution system
|
||||||
:return: DistributionSystem
|
:return: DistributionSystem
|
||||||
@ -87,7 +87,7 @@ class System:
|
|||||||
return self._distribution_system
|
return self._distribution_system
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def emission_system(self) -> Union[None, EmissionSystem]:
|
def emission_system(self) -> Union[None, List[EmissionSystem]]:
|
||||||
"""
|
"""
|
||||||
Get emission system
|
Get emission system
|
||||||
:return: EmissionSystem
|
:return: EmissionSystem
|
||||||
@ -107,12 +107,10 @@ class System:
|
|||||||
_generation_systems = []
|
_generation_systems = []
|
||||||
for _generation in self.generation_systems:
|
for _generation in self.generation_systems:
|
||||||
_generation_systems.append(_generation.to_dictionary())
|
_generation_systems.append(_generation.to_dictionary())
|
||||||
_distribution_system = None
|
_distribution_system = [_distribution.to_dictionary() for _distribution in
|
||||||
if self.distribution_system is not None:
|
self.distribution_system] if self.distribution_system is not None else None
|
||||||
_distribution_system = self.distribution_system.to_dictionary()
|
_emission_system = [_emission.to_dictionary() for _emission in
|
||||||
_emission_system = None
|
self.emission_system] if self.emission_system is not None else None
|
||||||
if self.emission_system is not None:
|
|
||||||
_emission_system = self.emission_system.to_dictionary()
|
|
||||||
_storage_system = [_storage.to_dictionary() for _storage in
|
_storage_system = [_storage.to_dictionary() for _storage in
|
||||||
self.energy_storage_system] if self.energy_storage_system is not None else None
|
self.energy_storage_system] if self.energy_storage_system is not None else None
|
||||||
|
|
||||||
@ -120,10 +118,10 @@ class System:
|
|||||||
'name': self.name,
|
'name': self.name,
|
||||||
'level of detail': self.lod,
|
'level of detail': self.lod,
|
||||||
'demand types': self.demand_types,
|
'demand types': self.demand_types,
|
||||||
'Generation system(s)': _generation_systems,
|
'generation system(s)': _generation_systems,
|
||||||
'distribution system': _distribution_system,
|
'distribution system(s)': _distribution_system,
|
||||||
'emission system': _emission_system,
|
'emission system(s)': _emission_system,
|
||||||
'energy storage system': _storage_system,
|
'energy storage system(s)': _storage_system,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return content
|
return content
|
||||||
|
@ -6,14 +6,13 @@ Project Coder Saeed Ranjbar saeed.ranjbar@concordia.ca
|
|||||||
Code contributors: Pilar Monsalvete Alvarez de Uribarri pilar.monsalvete@concordia.ca
|
Code contributors: Pilar Monsalvete Alvarez de Uribarri pilar.monsalvete@concordia.ca
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
import xmltodict
|
import xmltodict
|
||||||
from hub.catalog_factories.catalog import Catalog
|
from hub.catalog_factories.catalog import Catalog
|
||||||
from hub.catalog_factories.data_models.energy_systems.system import System
|
from hub.catalog_factories.data_models.energy_systems.system import System
|
||||||
from hub.catalog_factories.data_models.energy_systems.content import Content
|
from hub.catalog_factories.data_models.energy_systems.content import Content
|
||||||
from hub.catalog_factories.data_models.energy_systems.generation_system import GenerationSystem
|
from hub.catalog_factories.data_models.energy_systems.generation_system import GenerationSystem
|
||||||
from hub.catalog_factories.data_models.energy_systems.pv_generation_system import PvGenerationSystem
|
from hub.catalog_factories.data_models.energy_systems.pv_generation_system import PvGenerationSystem
|
||||||
from hub.catalog_factories.data_models.energy_systems.energy_storage_system import EnergyStorageSystem
|
from hub.catalog_factories.data_models.energy_systems.thermal_storage_system import ThermalStorageSystem
|
||||||
from hub.catalog_factories.data_models.energy_systems.performance_curves import PerformanceCurves
|
from hub.catalog_factories.data_models.energy_systems.performance_curves import PerformanceCurves
|
||||||
from hub.catalog_factories.data_models.energy_systems.archetype import Archetype
|
from hub.catalog_factories.data_models.energy_systems.archetype import Archetype
|
||||||
from hub.catalog_factories.data_models.construction.material import Material
|
from hub.catalog_factories.data_models.construction.material import Material
|
||||||
@ -40,7 +39,6 @@ class NorthAmericaEnergySystemCatalog(Catalog):
|
|||||||
None,
|
None,
|
||||||
self._storage_components)
|
self._storage_components)
|
||||||
print(self._content)
|
print(self._content)
|
||||||
|
|
||||||
def _load_generation_components(self):
|
def _load_generation_components(self):
|
||||||
generation_components = []
|
generation_components = []
|
||||||
boilers = self._archetypes['EnergySystemCatalog']['energy_generation_components']['boilers']
|
boilers = self._archetypes['EnergySystemCatalog']['energy_generation_components']['boilers']
|
||||||
@ -55,7 +53,8 @@ class NorthAmericaEnergySystemCatalog(Catalog):
|
|||||||
system_type = 'boiler'
|
system_type = 'boiler'
|
||||||
boiler_fuel_type = boiler['@fuel']
|
boiler_fuel_type = boiler['@fuel']
|
||||||
boiler_nominal_thermal_output = float(boiler['@installedThermalPower'])
|
boiler_nominal_thermal_output = float(boiler['@installedThermalPower'])
|
||||||
boiler_maximum_heat_output = float(boiler['@modulationRange'])
|
boiler_maximum_heat_output = float(boiler['@maximumHeatOutput'])
|
||||||
|
boiler_minimum_heat_output = float(boiler['@minimumHeatOutput'])
|
||||||
boiler_heat_efficiency = float(boiler['@nominalEfficiency'])
|
boiler_heat_efficiency = float(boiler['@nominalEfficiency'])
|
||||||
|
|
||||||
boiler_component = GenerationSystem(boiler_id,
|
boiler_component = GenerationSystem(boiler_id,
|
||||||
@ -65,8 +64,8 @@ class NorthAmericaEnergySystemCatalog(Catalog):
|
|||||||
system_type,
|
system_type,
|
||||||
boiler_fuel_type,
|
boiler_fuel_type,
|
||||||
boiler_nominal_thermal_output,
|
boiler_nominal_thermal_output,
|
||||||
None,
|
boiler_maximum_heat_output,
|
||||||
None,
|
boiler_minimum_heat_output,
|
||||||
None,
|
None,
|
||||||
None,
|
None,
|
||||||
boiler_heat_efficiency,
|
boiler_heat_efficiency,
|
||||||
@ -99,18 +98,20 @@ class NorthAmericaEnergySystemCatalog(Catalog):
|
|||||||
system_type = 'heat pump'
|
system_type = 'heat pump'
|
||||||
heat_pump_fuel_type = heat_pump['@fuel']
|
heat_pump_fuel_type = heat_pump['@fuel']
|
||||||
heat_pump_nominal_thermal_output = float(heat_pump['@installedThermalPower'])
|
heat_pump_nominal_thermal_output = float(heat_pump['@installedThermalPower'])
|
||||||
heat_pump_modulation_range = float(heat_pump['@modulationRange'])
|
heat_pump_maximum_heat_output = float(heat_pump['@maximumHeatOutput'])
|
||||||
heat_pump_source_type = heat_pump['@heatSource']
|
heat_pump_minimum_heat_output = float(heat_pump['@minimumHeatOutput'])
|
||||||
|
heat_pump_source_medium = heat_pump['@heatSource']
|
||||||
heat_pump_supply_medium = heat_pump['@supply_medium']
|
heat_pump_supply_medium = heat_pump['@supply_medium']
|
||||||
heat_pump_nominal_cop = float(heat_pump['@nominalCOP'])
|
heat_pump_nominal_cop = float(heat_pump['@nominalCOP'])
|
||||||
heat_pump_maximum_heating_temperature = float(heat_pump['@maxHeatingSupTemperature'])
|
heat_pump_maximum_heat_supply_temperature = float(heat_pump['@maxHeatingSupTemperature'])
|
||||||
heat_pump_minimum_heating_temperature = float(heat_pump['@minHeatingSupTemperature'])
|
heat_pump_minimum_heat_supply_temperature = float(heat_pump['@minHeatingSupTemperature'])
|
||||||
heat_pump_maximum_cooling_temperature = float(heat_pump['@maxCoolingSupTemperature'])
|
heat_pump_maximum_cooling_supply_temperature = float(heat_pump['@maxCoolingSupTemperature'])
|
||||||
heat_pump_minimum_cooling_temperature = float(heat_pump['@minCoolingSupTemperature'])
|
heat_pump_minimum_cooling_supply_temperature = float(heat_pump['@minCoolingSupTemperature'])
|
||||||
cop_curve_type = heat_pump['performance_curve']['@curve_type']
|
cop_curve_type = heat_pump['performance_curve']['@curve_type']
|
||||||
|
dependant_variable = heat_pump['performance_curve']['dependant_variable']
|
||||||
parameters = heat_pump['performance_curve']['parameters']
|
parameters = heat_pump['performance_curve']['parameters']
|
||||||
coefficients = list(heat_pump['performance_curve']['coefficients'].values())
|
coefficients = list(heat_pump['performance_curve']['coefficients'].values())
|
||||||
cop_curve = PerformanceCurves(cop_curve_type, parameters, coefficients)
|
cop_curve = PerformanceCurves(cop_curve_type, dependant_variable, parameters, coefficients)
|
||||||
|
|
||||||
heat_pump_component = GenerationSystem(heat_pump_id,
|
heat_pump_component = GenerationSystem(heat_pump_id,
|
||||||
heat_pump_name,
|
heat_pump_name,
|
||||||
@ -119,9 +120,9 @@ class NorthAmericaEnergySystemCatalog(Catalog):
|
|||||||
system_type,
|
system_type,
|
||||||
heat_pump_fuel_type,
|
heat_pump_fuel_type,
|
||||||
heat_pump_nominal_thermal_output,
|
heat_pump_nominal_thermal_output,
|
||||||
None,
|
heat_pump_maximum_heat_output,
|
||||||
None,
|
heat_pump_minimum_heat_output,
|
||||||
heat_pump_source_type,
|
heat_pump_source_medium,
|
||||||
heat_pump_supply_medium,
|
heat_pump_supply_medium,
|
||||||
heat_pump_nominal_cop,
|
heat_pump_nominal_cop,
|
||||||
None,
|
None,
|
||||||
@ -132,10 +133,10 @@ class NorthAmericaEnergySystemCatalog(Catalog):
|
|||||||
None,
|
None,
|
||||||
None,
|
None,
|
||||||
None,
|
None,
|
||||||
heat_pump_maximum_heating_temperature,
|
heat_pump_maximum_heat_supply_temperature,
|
||||||
heat_pump_minimum_heating_temperature,
|
heat_pump_minimum_heat_supply_temperature,
|
||||||
heat_pump_maximum_cooling_temperature,
|
heat_pump_maximum_cooling_supply_temperature,
|
||||||
heat_pump_minimum_cooling_temperature,
|
heat_pump_minimum_cooling_supply_temperature,
|
||||||
None,
|
None,
|
||||||
None,
|
None,
|
||||||
cop_curve,
|
cop_curve,
|
||||||
@ -288,31 +289,27 @@ class NorthAmericaEnergySystemCatalog(Catalog):
|
|||||||
name = tes['@name']
|
name = tes['@name']
|
||||||
model_name = tes['@modelName']
|
model_name = tes['@modelName']
|
||||||
manufacturer = tes['@manufacturer']
|
manufacturer = tes['@manufacturer']
|
||||||
volume = tes['@volume']
|
storage_type = 'sensible'
|
||||||
height = tes['@height']
|
volume = tes['physical_characteristics']['@volume']
|
||||||
|
height = tes['physical_characteristics']['@height']
|
||||||
maximum_operating_temperature = tes['@maxTemp']
|
maximum_operating_temperature = tes['@maxTemp']
|
||||||
materials = self._load_materials()
|
materials = self._load_materials()
|
||||||
insulation_material_name = tes['@insulationMaterial']
|
insulation_material_id = tes['insulation']['@material_id']
|
||||||
insulation_material = self._search_material(materials, insulation_material_name)
|
insulation_material = self._search_material(materials, insulation_material_id)
|
||||||
material_name = tes['@tankMaterial']
|
material_id = tes['physical_characteristics']['@material_id']
|
||||||
tank_material = self._search_material(materials, material_name)
|
tank_material = self._search_material(materials, material_id)
|
||||||
thickness = float(tes['@insulationThickness']) / 100 # from cm to m
|
thickness = float(tes['insulation']['@insulationThickness']) / 100 # from cm to m
|
||||||
insulation_layer = Layer(None, 'insulation', insulation_material, thickness)
|
insulation_layer = Layer(None, 'insulation', insulation_material, thickness)
|
||||||
thickness = float(tes['@tankThickness']) / 100 # from cm to m
|
thickness = float(tes['physical_characteristics']['@tankThickness']) / 100 # from cm to m
|
||||||
tank_layer = Layer(None, 'insulation', tank_material, thickness)
|
tank_layer = Layer(None, 'tank', tank_material, thickness)
|
||||||
# the convention is from outside to inside
|
# the convention is from outside to inside
|
||||||
layers = [insulation_layer, tank_layer]
|
layers = [insulation_layer, tank_layer]
|
||||||
storage_component = EnergyStorageSystem(storage_id,
|
storage_component = ThermalStorageSystem(storage_id,
|
||||||
name,
|
name,
|
||||||
model_name,
|
model_name,
|
||||||
manufacturer,
|
manufacturer,
|
||||||
'thermal',
|
storage_type,
|
||||||
volume,
|
volume,
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
height,
|
height,
|
||||||
layers,
|
layers,
|
||||||
maximum_operating_temperature)
|
maximum_operating_temperature)
|
||||||
@ -321,30 +318,27 @@ class NorthAmericaEnergySystemCatalog(Catalog):
|
|||||||
for template in template_storages:
|
for template in template_storages:
|
||||||
storage_id = template['@storage_id']
|
storage_id = template['@storage_id']
|
||||||
name = template['@name']
|
name = template['@name']
|
||||||
|
storage_type = 'sensible'
|
||||||
maximum_temperature = template['@maxTemp']
|
maximum_temperature = template['@maxTemp']
|
||||||
|
height = template['physical_characteristics']['@height']
|
||||||
materials = self._load_materials()
|
materials = self._load_materials()
|
||||||
insulation_material_name = template['@insulationMaterial']
|
insulation_material_id = template['insulation']['@material_id']
|
||||||
insulation_material = self._search_material(materials, insulation_material_name)
|
insulation_material = self._search_material(materials, insulation_material_id)
|
||||||
material_name = template['@tankMaterial']
|
material_id = template['physical_characteristics']['@material_id']
|
||||||
tank_material = self._search_material(materials, material_name)
|
tank_material = self._search_material(materials, material_id)
|
||||||
thickness = float(template['@insulationThickness']) / 100 # from cm to m
|
thickness = float(template['insulation']['@insulationThickness']) / 100 # from cm to m
|
||||||
insulation_layer = Layer(None, 'insulation', insulation_material, thickness)
|
insulation_layer = Layer(None, 'insulation', insulation_material, thickness)
|
||||||
thickness = float(template['@tankThickness']) / 100 # from cm to m
|
thickness = float(template['physical_characteristics']['@tankThickness']) / 100 # from cm to m
|
||||||
tank_layer = Layer(None, 'insulation', tank_material, thickness)
|
tank_layer = Layer(None, 'tank', tank_material, thickness)
|
||||||
# the convention is from outside to inside
|
# the convention is from outside to inside
|
||||||
layers = [insulation_layer, tank_layer]
|
layers = [insulation_layer, tank_layer]
|
||||||
storage_component = EnergyStorageSystem(storage_id,
|
storage_component = ThermalStorageSystem(storage_id,
|
||||||
name,
|
name,
|
||||||
None,
|
None,
|
||||||
None,
|
None,
|
||||||
'thermal',
|
storage_type,
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
|
||||||
None,
|
None,
|
||||||
|
height,
|
||||||
layers,
|
layers,
|
||||||
maximum_temperature)
|
maximum_temperature)
|
||||||
storage_components.append(storage_component)
|
storage_components.append(storage_component)
|
||||||
@ -393,9 +387,10 @@ class NorthAmericaEnergySystemCatalog(Catalog):
|
|||||||
materials = []
|
materials = []
|
||||||
_materials = self._archetypes['EnergySystemCatalog']['materials']['material']
|
_materials = self._archetypes['EnergySystemCatalog']['materials']['material']
|
||||||
for _material in _materials:
|
for _material in _materials:
|
||||||
|
material_id = _material['@material_id']
|
||||||
name = _material['@name']
|
name = _material['@name']
|
||||||
thermal_conductivity = _material['@thermalConductivity']
|
thermal_conductivity = _material['@thermalConductivity']
|
||||||
material = Material(None,
|
material = Material(material_id,
|
||||||
name,
|
name,
|
||||||
None,
|
None,
|
||||||
None,
|
None,
|
||||||
@ -409,15 +404,15 @@ class NorthAmericaEnergySystemCatalog(Catalog):
|
|||||||
return materials
|
return materials
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _search_material(materials, material_name):
|
def _search_material(materials, material_id):
|
||||||
_material = None
|
_material = None
|
||||||
for material in materials:
|
for material in materials:
|
||||||
if material.name == material_name:
|
if int(material.id) == int(material_id):
|
||||||
_material = material
|
_material = material
|
||||||
return _material
|
return _material
|
||||||
|
|
||||||
if _material is None:
|
if _material is None:
|
||||||
raise ValueError(f'Material not found in catalog [{material_name}]')
|
raise ValueError(f'Material with the id = [{material_id}] not found in catalog ')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _search_generation_equipment(generation_systems, generation_id):
|
def _search_generation_equipment(generation_systems, generation_id):
|
||||||
|
@ -5,37 +5,37 @@
|
|||||||
<media media_id="1" media_name="Water" density="981.0" heatCapacity="4180.0" evaporationTemperature="100.0"/>
|
<media media_id="1" media_name="Water" density="981.0" heatCapacity="4180.0" evaporationTemperature="100.0"/>
|
||||||
</medias>
|
</medias>
|
||||||
<energy_generation_components>
|
<energy_generation_components>
|
||||||
<boilers generation_id="1" name="Natural-Gas Boiler" modelName="ALP080B" manufacturer="Alpine" installedThermalPower="21.0" modulationRange="0.88" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
<boilers generation_id="1" name="Natural-Gas Boiler" modelName="ALP080B" manufacturer="Alpine" installedThermalPower="21.0" minimumHeatOutput="4.7" maximumHeatOutput="23.5" modulationRange="0.88" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
||||||
<boilers generation_id="2" name="Natural-Gas Boiler" modelName="ALP105B" manufacturer="Alpine" installedThermalPower="28.0" modulationRange="0.88" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
<boilers generation_id="2" name="Natural-Gas Boiler" modelName="ALP105B" manufacturer="Alpine" installedThermalPower="28.0" minimumHeatOutput="6.15" maximumHeatOutput="30.8" modulationRange="0.88" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
||||||
<boilers generation_id="3" name="Natural-Gas Boiler" modelName="ALP150B" manufacturer="Alpine" installedThermalPower="40.0" modulationRange="0.88" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
<boilers generation_id="3" name="Natural-Gas Boiler" modelName="ALP150B" manufacturer="Alpine" installedThermalPower="40.0" minimumHeatOutput="8.8" maximumHeatOutput="44" modulationRange="0.88" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
||||||
<boilers generation_id="4" name="Natural-Gas Boiler" modelName="ALP210B" manufacturer="Alpine" installedThermalPower="57.0" modulationRange="0.87" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
<boilers generation_id="4" name="Natural-Gas Boiler" modelName="ALP210B" manufacturer="Alpine" installedThermalPower="57.0" minimumHeatOutput="12.3" maximumHeatOutput="61.5" modulationRange="0.87" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
||||||
<boilers generation_id="5" name="Natural-Gas Boiler" modelName="ALTAC-136" manufacturer="Alta" installedThermalPower="33.0" modulationRange="0.95" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
<boilers generation_id="5" name="Natural-Gas Boiler" modelName="ALTAC-136" manufacturer="Alta" installedThermalPower="33.0" minimumHeatOutput="4.0" maximumHeatOutput="35.2" modulationRange="0.95" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
||||||
<boilers generation_id="6" name="Natural-Gas Boiler" modelName="ALTA-120" manufacturer="Alta" installedThermalPower="33.0" modulationRange="0.95" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
<boilers generation_id="6" name="Natural-Gas Boiler" modelName="ALTA-120" manufacturer="Alta" installedThermalPower="33.0" minimumHeatOutput="4.0" maximumHeatOutput="35.2" modulationRange="0.95" nominalEfficiency="0.95" combi="false" fuel="natural gas"/>
|
||||||
<boilers generation_id="7" name="Natural-Gas Boiler" modelName="ASPN-085" manufacturer="Aspen" installedThermalPower="23.15" modulationRange="0.97" nominalEfficiency="0.96" fuel="natural gas"/>
|
<boilers generation_id="7" name="Natural-Gas Boiler" modelName="ASPN-085" manufacturer="Aspen" installedThermalPower="23.15" minimumHeatOutput="2.5" maximumHeatOutput="25.0" modulationRange="0.97" nominalEfficiency="0.96" fuel="natural gas"/>
|
||||||
<boilers generation_id="8" name="Natural-Gas Boiler" modelName="ASPN-110" manufacturer="Aspen" installedThermalPower="30.19" modulationRange="0.96" nominalEfficiency="0.96" fuel="natural gas"/>
|
<boilers generation_id="8" name="Natural-Gas Boiler" modelName="ASPN-110" manufacturer="Aspen" installedThermalPower="30.19" minimumHeatOutput="3.2" maximumHeatOutput="32.0" modulationRange="0.96" nominalEfficiency="0.96" fuel="natural gas"/>
|
||||||
<boilers generation_id="9" name="Natural-Gas Boiler" modelName="ASPNC-155" manufacturer="Aspen" installedThermalPower="42.5" modulationRange="0.96" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
<boilers generation_id="9" name="Natural-Gas Boiler" modelName="ASPNC-155" manufacturer="Aspen" installedThermalPower="42.5" minimumHeatOutput="4.5" maximumHeatOutput="45.0" modulationRange="0.96" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
||||||
<boilers generation_id="10" name="Natural-Gas Boiler" modelName="K2WTC-135B" manufacturer="K2" installedThermalPower="32.8" modulationRange="0.96" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
<boilers generation_id="10" name="Natural-Gas Boiler" modelName="K2WTC-135B" manufacturer="K2" installedThermalPower="32.8" minimumHeatOutput="3.5" maximumHeatOutput="35.0" modulationRange="0.96" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
||||||
<boilers generation_id="11" name="Natural-Gas Boiler" modelName="K2WTC-180B" manufacturer="K2" installedThermalPower="49.5" modulationRange="0.96" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
<boilers generation_id="11" name="Natural-Gas Boiler" modelName="K2WTC-180B" manufacturer="K2" installedThermalPower="49.5" minimumHeatOutput="5.3" maximumHeatOutput="53.0" modulationRange="0.96" nominalEfficiency="0.95" combi="true" fuel="natural gas"/>
|
||||||
<photovoltaicModules generation_id="12" name="Photovoltaic Module" modelName="445MS" manufacturer="Canadian Solar" nominalPower="334.0" nominalEfficiency="0.201" nominalRadiation="800.0" STCRadiation="1000.0" nominalCellTemperature="41.0" STCCellTemperature="26.0" nominalAmbientTemperature="20.0" STCMaxPower="445.0" CellTemperatureCoefficient="-0.0034" height="1.048" width="2.01"/>
|
<photovoltaicModules generation_id="12" name="Photovoltaic Module" modelName="445MS" manufacturer="Canadian Solar" nominalPower="334.0" nominalEfficiency="0.201" nominalRadiation="800.0" STCRadiation="1000.0" nominalCellTemperature="41.0" STCCellTemperature="26.0" nominalAmbientTemperature="20.0" STCMaxPower="445.0" CellTemperatureCoefficient="-0.0034" height="1.048" width="2.01"/>
|
||||||
<heatPumps generation_id="13" name="Air-to-Water Heat Pump" modelName="CMAA 012" description="A second degree equation is used in form of A*T_source^2 + B*T_source + C*T_source*T_sup + D*T_sup + E*T_sup^2 + F" manufacturer="TRANE" installedThermalPower="51.7" modulationRange="0.0" fuel="Electricity" heatSource="Air" nominalCOP="3.32" maxHeatingSupTemperature="55.0" minHeatingSupTemperature="6.0" maxCoolingSupTemperature="30.0" minCoolingSupTemperature="11.0" supply_medium="water">
|
<heatPumps generation_id="13" name="Air-to-Water Heat Pump" modelName="CMAA 012" description="A second degree equation is used in form of A*T_source^2 + B*T_source + C*T_source*T_sup + D*T_sup + E*T_sup^2 + F" manufacturer="TRANE" installedThermalPower="51.7" minimumHeatOutput="0" maximumHeatOutput="51.7" modulationRange="0.0" fuel="Electricity" heatSource="Air" nominalCOP="3.32" maxHeatingSupTemperature="55.0" minHeatingSupTemperature="6.0" maxCoolingSupTemperature="30.0" minCoolingSupTemperature="11.0" supply_medium="water">
|
||||||
<performance_curve curve_type="second degree multivariable function">
|
<performance_curve curve_type="second degree multivariable function">
|
||||||
<parameters>COP</parameters>
|
<dependant_variable>COP</dependant_variable>
|
||||||
<parameters>source_temperature</parameters>
|
<parameters>source_temperature</parameters>
|
||||||
<parameters>supply_temperature</parameters>
|
<parameters>supply_temperature</parameters>
|
||||||
<coefficients a="9.5E-4" b="0.177" c="-0.00242" d="-0.155" e="9.3E-4" f="8.044"/>
|
<coefficients a="9.5E-4" b="0.177" c="-0.00242" d="-0.155" e="9.3E-4" f="8.044"/>
|
||||||
</performance_curve>
|
</performance_curve>
|
||||||
</heatPumps>
|
</heatPumps>
|
||||||
<heatPumps generation_id="14" name="Air-to-Water Heat Pump" modelName="CMAA 70" description="A second degree equation is used in form of A*T_source^2 + B*T_source + C*T_source*T_sup + D*T_sup + E*T_sup^2 + F" manufacturer="TRANE" installedThermalPower="279.3" modulationRange="0.0" fuel="Electricity" heatSource="Air" nominalCOP="3.07" maxHeatingSupTemperature="55.0" minHeatingSupTemperature="6.0" maxCoolingSupTemperature="30.0" minCoolingSupTemperature="11.0" supply_medium="water">
|
<heatPumps generation_id="14" name="Air-to-Water Heat Pump" modelName="CMAA 70" description="A second degree equation is used in form of A*T_source^2 + B*T_source + C*T_source*T_sup + D*T_sup + E*T_sup^2 + F" manufacturer="TRANE" installedThermalPower="279.3" minimumHeatOutput="0" maximumHeatOutput="279.3" modulationRange="0.0" fuel="Electricity" heatSource="Air" nominalCOP="3.07" maxHeatingSupTemperature="55.0" minHeatingSupTemperature="6.0" maxCoolingSupTemperature="30.0" minCoolingSupTemperature="11.0" supply_medium="water">
|
||||||
<performance_curve curve_type="second degree multivariable function">
|
<performance_curve curve_type="second degree multivariable function">
|
||||||
<parameters>COP</parameters>
|
<dependant_variable>COP</dependant_variable>
|
||||||
<parameters>source_temperature</parameters>
|
<parameters>source_temperature</parameters>
|
||||||
<parameters>supply_temperature</parameters>
|
<parameters>supply_temperature</parameters>
|
||||||
<coefficients a="0.0011" b="0.207" c="-0.00292" d="-0.187" e="0.00121" f="8.95"/>
|
<coefficients a="0.0011" b="0.207" c="-0.00292" d="-0.187" e="0.00121" f="8.95"/>
|
||||||
</performance_curve>
|
</performance_curve>
|
||||||
</heatPumps>
|
</heatPumps>
|
||||||
<heatPumps generation_id="15" name="Air-to-Water Heat Pump" modelName="CMAA 140" description="A second degree equation is used in form of A*T_source^2 + B*T_source + C*T_source*T_sup + D*T_sup + E*T_sup^2 + F" manufacturer="TRANE" installedThermalPower="279.3" modulationRange="0.0" fuel="Electricity" heatSource="Air" nominalCOP="3.46" maxHeatingSupTemperature="55.0" minHeatingSupTemperature="6.0" maxCoolingSupTemperature="30.0" minCoolingSupTemperature="11.0" supply_medium="water">
|
<heatPumps generation_id="15" name="Air-to-Water Heat Pump" modelName="CMAA 140" description="A second degree equation is used in form of A*T_source^2 + B*T_source + C*T_source*T_sup + D*T_sup + E*T_sup^2 + F" manufacturer="TRANE" installedThermalPower="557" minimumHeatOutput="0" maximumHeatOutput="557" modulationRange="0.0" fuel="Electricity" heatSource="Air" nominalCOP="3.46" maxHeatingSupTemperature="55.0" minHeatingSupTemperature="6.0" maxCoolingSupTemperature="30.0" minCoolingSupTemperature="11.0" supply_medium="water">
|
||||||
<performance_curve curve_type="second degree multivariable function">
|
<performance_curve curve_type="second degree multivariable function">
|
||||||
<parameters>COP</parameters>
|
<dependant_variable>COP</dependant_variable>
|
||||||
<parameters>source_temperature</parameters>
|
<parameters>source_temperature</parameters>
|
||||||
<parameters>supply_temperature</parameters>
|
<parameters>supply_temperature</parameters>
|
||||||
<coefficients a="0.00109" b="0.209" c="-0.00291" d="-0.172" e="0.00102" f="8.95"/>
|
<coefficients a="0.00109" b="0.209" c="-0.00291" d="-0.172" e="0.00102" f="8.95"/>
|
||||||
@ -55,13 +55,36 @@
|
|||||||
<manufacturers manufacturer_id="6" name="Canadian Solar" country="Canada" product="Photovoltaic Module"/>
|
<manufacturers manufacturer_id="6" name="Canadian Solar" country="Canada" product="Photovoltaic Module"/>
|
||||||
</energy_generation_components>
|
</energy_generation_components>
|
||||||
<energy_storage_components>
|
<energy_storage_components>
|
||||||
<thermalStorages storage_id="1" name="Hot Water Storage Tank" modelName="HF 200" manufacturer="reflex" volume="0.5" maxTemp="95.0" insulationThickness="90.0" tankThickness="0" usesMedium="Water" insulationMaterial="Polyurethane" height="1.5" tankMaterial="Steel"/>
|
<thermalStorages storage_id="1" name="Hot Water Storage Tank" modelName="HF 200" manufacturer="reflex" maxTemp="95.0">
|
||||||
<thermalStorages storage_id="2" name="Hot Water Storage Tank" modelName="HF 300" manufacturer="reflex" volume="0.6" maxTemp="95.0" insulationThickness="90.0" tankThickness="0" usesMedium="Water" insulationMaterial="Polyurethane" height="1.3" tankMaterial="Steel"/>
|
<insulation material_id="1" insulationMaterial="Polyurethane" insulationThickness="90.0"/>
|
||||||
<thermalStorages storage_id="3" name="Hot Water Storage Tank" modelName="HF 500" manufacturer="reflex" volume="0.5" maxTemp="95.0" insulationThickness="90.0" tankThickness="0" usesMedium="Water" insulationMaterial="Polyurethane" height="1.5" tankMaterial="Steel"/>
|
<physical_characteristics material_id="2" tankThickness="0" height="1.5" tankMaterial="Steel" volume="0.5"/>
|
||||||
<thermalStorages storage_id="4" name="Hot Water Storage Tank" modelName="HF 200" manufacturer="reflex" volume="0.5" maxTemp="95.0" insulationThickness="90.0" tankThickness="0" usesMedium="Water" insulationMaterial="Polyurethane" height="1.5" tankMaterial="Steel"/>
|
<medium media_id="1" usesMedium="Water"/>
|
||||||
<thermalStorages storage_id="5" name="Hot Water Storage Tank" modelName="HF 200" manufacturer="reflex" volume="0.5" maxTemp="95.0" insulationThickness="90.0" tankThickness="0" usesMedium="Water" insulationMaterial="Polyurethane" height="1.5" tankMaterial="Steel"/>
|
</thermalStorages>
|
||||||
<templateStorages storage_id="6" name="template Hot Water Storage Tank" maxTemp="95.0" insulationThickness="90.0" tankThickness="0" usesMedium="Water" insulationMaterial="Polyurethane" tankMaterial="Steel"/>
|
<thermalStorages storage_id="2" name="Hot Water Storage Tank" modelName="HF 300" manufacturer="reflex" maxTemp="95.0">
|
||||||
<powerStorages/>
|
<insulation material_id="1" insulationMaterial="Polyurethane" insulationThickness="90.0"/>
|
||||||
|
<physical_characteristics material_id="2" tankThickness="0" height="1.5" tankMaterial="Steel" volume="0.6"/>
|
||||||
|
<medium media_id="1" usesMedium="Water"/>
|
||||||
|
</thermalStorages>
|
||||||
|
<thermalStorages storage_id="3" name="Hot Water Storage Tank" modelName="HF 500" manufacturer="reflex" maxTemp="95.0">
|
||||||
|
<insulation material_id="1" insulationMaterial="Polyurethane" insulationThickness="90.0"/>
|
||||||
|
<physical_characteristics material_id="2" tankThickness="0" height="1.5" tankMaterial="Steel" volume="0.5"/>
|
||||||
|
<medium media_id="1" usesMedium="Water"/>
|
||||||
|
</thermalStorages>
|
||||||
|
<thermalStorages storage_id="4" name="Hot Water Storage Tank" modelName="HF 200" manufacturer="reflex" maxTemp="95.0">
|
||||||
|
<insulation material_id="1" insulationMaterial="Polyurethane" insulationThickness="90.0"/>
|
||||||
|
<physical_characteristics material_id="2" tankThickness="0" height="1.5" tankMaterial="Steel" volume="0.5"/>
|
||||||
|
<medium media_id="1" usesMedium="Water"/>
|
||||||
|
</thermalStorages>
|
||||||
|
<thermalStorages storage_id="5" name="Hot Water Storage Tank" modelName="HF 200" manufacturer="reflex" maxTemp="95.0">
|
||||||
|
<insulation material_id="1" insulationMaterial="Polyurethane" insulationThickness="90.0"/>
|
||||||
|
<physical_characteristics material_id="2" tankThickness="0" height="1.5" tankMaterial="Steel" volume="0.5"/>
|
||||||
|
<medium media_id="1" usesMedium="Water"/>
|
||||||
|
</thermalStorages>
|
||||||
|
<templateStorages storage_id="6" name="template Hot Water Storage Tank" maxTemp="95.0">
|
||||||
|
<insulation material_id="1" insulationMaterial="Polyurethane" insulationThickness="90.0"/>
|
||||||
|
<physical_characteristics material_id="2" tankThickness="0" height="1.5" tankMaterial="Steel"/>
|
||||||
|
<medium media_id="1" usesMedium="Water"/>
|
||||||
|
</templateStorages>
|
||||||
<manufacturers manufacturer_id="1" name="reflex" product="Storage Tank"/>
|
<manufacturers manufacturer_id="1" name="reflex" product="Storage Tank"/>
|
||||||
</energy_storage_components>
|
</energy_storage_components>
|
||||||
<materials>
|
<materials>
|
||||||
|
@ -38,5 +38,7 @@ class TestSystemsCatalog(TestCase):
|
|||||||
def test_north_america_systems_catalog(self):
|
def test_north_america_systems_catalog(self):
|
||||||
catalog = EnergySystemsCatalogFactory('north_america').catalog
|
catalog = EnergySystemsCatalogFactory('north_america').catalog
|
||||||
|
|
||||||
def test_montreal_catalog(self):
|
|
||||||
catalog = EnergySystemsCatalogFactory('montreal_custom').catalog
|
|
||||||
|
# def test_montreal_catalog(self):
|
||||||
|
# catalog = EnergySystemsCatalogFactory('montreal_custom').catalog
|
||||||
|
Loading…
Reference in New Issue
Block a user