Add additional idfobjects, keys, and cleaned up syntax

This commit is contained in:
Koa Wells 2023-11-24 14:45:27 -05:00
parent 227685695a
commit 898f364e28

View File

@ -56,10 +56,12 @@ class Idf:
_SIMPLE = 'Simple' _SIMPLE = 'Simple'
_EQUIPMENT_CONNECTIONS = 'ZONEHVAC:EQUIPMENTCONNECTIONS' _EQUIPMENT_CONNECTIONS = 'ZONEHVAC:EQUIPMENTCONNECTIONS'
_NODE_LIST = 'NODELIST' _NODE_LIST = 'NODELIST'
_BASEBOARD ='ZONEHVAC:BASEBOARD:CONVECTIVE:ELECTRIC' _BASEBOARD = 'ZONEHVAC:BASEBOARD:CONVECTIVE:ELECTRIC'
_AIR_TERMINAL_NO_REHEAT= 'AIRTERMINAL:SINGLEDUCT:CONSTANTVOLUME:NOREHEAT' _AIR_TERMINAL_NO_REHEAT = 'AIRTERMINAL:SINGLEDUCT:CONSTANTVOLUME:NOREHEAT'
_AIR_DISTRIBUTION='ZONEHVAC:AIRDISTRIBUTIONUNIT' _AIR_DISTRIBUTION = 'ZONEHVAC:AIRDISTRIBUTIONUNIT'
_EQUIPMENT_LIST='ZONEHVAC:EQUIPMENTLIST' _EQUIPMENT_LIST = 'ZONEHVAC:EQUIPMENTLIST'
_SIZING_ZONE = 'SIZING:ZONE'
_DESIGN_SPECIFICATION_OUTDOOR_AIR = 'DESIGNSPECIFICATION:OUTDOORAIR'
idf_surfaces = { idf_surfaces = {
cte.WALL: 'wall', cte.WALL: 'wall',
@ -400,7 +402,9 @@ class Idf:
Zone_Return_Air_Node_or_NodeList_Name=f'{zone_name} Return Node List') Zone_Return_Air_Node_or_NodeList_Name=f'{zone_name} Return Node List')
def _add_nodelist_system(self, thermal_zone, zone_name): def _add_nodelist_system(self, thermal_zone, zone_name):
self._idf.newidfobject(self._NODE_LIST, Name=f'{zone_name} Inlet Node List',Node_1_Name='Node 1') self._idf.newidfobject(self._NODE_LIST,
Name=f'{zone_name} Inlet Node List',
Node_1_Name='Node 2')
self._idf.newidfobject(self._NODE_LIST, self._idf.newidfobject(self._NODE_LIST,
Name=f'{zone_name} Return Node List', Name=f'{zone_name} Return Node List',
Node_1_Name='Node 3') Node_1_Name='Node 3')
@ -418,8 +422,8 @@ class Idf:
self._idf.newidfobject(self._AIR_TERMINAL_NO_REHEAT, Name=f'Diffuser', self._idf.newidfobject(self._AIR_TERMINAL_NO_REHEAT, Name=f'Diffuser',
Availability_Schedule_Name='HVAC AVAIL', Availability_Schedule_Name='HVAC AVAIL',
Air_Inlet_Node_Name='Node 4', Air_Inlet_Node_Name='Node 4',
Air_Outlet_Node_Name='Node 2') Air_Outlet_Node_Name='Node 2',
Maximum_Air_Flow_Rate='AutoSize')
def _add_air_distribution_system(self, thermal_zone, zone_name): def _add_air_distribution_system(self, thermal_zone, zone_name):
for air_distribution in self._idf.idfobjects[self._AIR_DISTRIBUTION]: for air_distribution in self._idf.idfobjects[self._AIR_DISTRIBUTION]:
@ -430,6 +434,7 @@ class Idf:
Air_Distribution_Unit_Outlet_Node_Name='Node 2', Air_Distribution_Unit_Outlet_Node_Name='Node 2',
Air_Terminal_Object_Type='AirTerminal:SingleDuct:ConstantVolume:NoReheat', Air_Terminal_Object_Type='AirTerminal:SingleDuct:ConstantVolume:NoReheat',
Air_Terminal_Name='Diffuser') Air_Terminal_Name='Diffuser')
def _add_equipment_list_system(self, thermal_zone, zone_name): def _add_equipment_list_system(self, thermal_zone, zone_name):
for air_distribution in self._idf.idfobjects[self._EQUIPMENT_LIST]: for air_distribution in self._idf.idfobjects[self._EQUIPMENT_LIST]:
if air_distribution.Zone_Name == zone_name: if air_distribution.Zone_Name == zone_name:
@ -439,9 +444,27 @@ class Idf:
Load_Distribution_Scheme='SequentialLoad', Load_Distribution_Scheme='SequentialLoad',
Zone_Equipment_1_Object_Type='ZoneHVAC:Baseboard:Convective:Electric', Zone_Equipment_1_Object_Type='ZoneHVAC:Baseboard:Convective:Electric',
Zone_Equipment_1_Name='Elec Baseboard', Zone_Equipment_1_Name='Elec Baseboard',
Zone_Equipment_1_Cooling_Sequence='1',
Zone_Equipment_1_Heating_or_NoLoad_Sequence='1', Zone_Equipment_1_Heating_or_NoLoad_Sequence='1',
Zone_Equipment_2_Object_Type='ZoneHVAC:AirDistributionUnit', Zone_Equipment_2_Object_Type='ZoneHVAC:AirDistributionUnit',
Zone_Equipment_2_Name ='ADU Diffuser') Zone_Equipment_2_Name='ADU Diffuser',
Zone_Equipment_2_Cooling_Sequence='2',
Zone_Equipment_2_Heating_or_NoLoad_Sequence='2'
)
def _add_sizing_zone(self, thermal_zone, zone_name):
koa=self._idf.newidfobject(self._SIZING_ZONE,
Zone_or_ZoneList_Name=f'{zone_name}',
Zone_Cooling_Design_Supply_Air_Humidity_Ratio='0.0085',
Zone_Heating_Design_Supply_Air_Humidity_Ratio='0.008'
)
def _add_outdoor_air_design_specification(self, thermal_zone, zone_name):
self._idf.newidfobject(self._DESIGN_SPECIFICATION_OUTDOOR_AIR,
Name='MidriseApartment Apartment Ventilation',
Outdoor_Air_Method='Sum',
Outdoor_Air_Flow_per_Person='0.0169901079552')
def _add_occupancy(self, thermal_zone, zone_name): def _add_occupancy(self, thermal_zone, zone_name):
number_of_people = thermal_zone.occupancy.occupancy_density * thermal_zone.total_floor_area number_of_people = thermal_zone.occupancy.occupancy_density * thermal_zone.total_floor_area
fraction_radiant = 0 fraction_radiant = 0
@ -607,6 +630,10 @@ class Idf:
self._add_air_terminal_system(thermal_zone, building.name) self._add_air_terminal_system(thermal_zone, building.name)
self._add_air_distribution_system(thermal_zone, building.name) self._add_air_distribution_system(thermal_zone, building.name)
self._add_equipment_list_system(thermal_zone, building.name) self._add_equipment_list_system(thermal_zone, building.name)
self._add_sizing_zone(thermal_zone, building.name)
self._add_outdoor_air_design_specification(thermal_zone, building.name)
self._add_infiltration(thermal_zone, building.name) self._add_infiltration(thermal_zone, building.name)
self._add_ventilation(thermal_zone, building.name) self._add_ventilation(thermal_zone, building.name)
self._add_occupancy(thermal_zone, building.name) self._add_occupancy(thermal_zone, building.name)