equipconn = idf.newidfobject("ZoneHVAC:EquipmentConnections".upper()) equipconn.Zone_Name = zone fldname = "Zone_Conditioning_Equipment_List_Name" equipconn[fldname] = "%s equip list" % (zone, ) fldname = "Zone_Air_Inlet_Node_or_NodeList_Name" equipconn[fldname] = "%s Inlet Node" % (zone, ) fldname = "Zone_Air_Node_Name" equipconn[fldname] = "%s Node" % (zone, ) fldname = "Zone_Return_Air_Node_Name" equipconn[fldname] = "%s Outlet Node" % (zone, ) # make ZoneHVAC:EquipmentList for zone in dloop: z_equiplst = idf.newidfobject("ZoneHVAC:EquipmentList".upper()) z_equipconn = modeleditor.getobjects(idf.idfobjects, idf.model, idf.idd_info, "ZoneHVAC:EquipmentConnections".upper(), #places=7, **dict(Zone_Name=zone))[0] z_equiplst.Name = z_equipconn.Zone_Conditioning_Equipment_List_Name fld = "Zone_Equipment_1_Object_Type" z_equiplst[fld] = "AirTerminal:SingleDuct:Uncontrolled" z_equiplst.Zone_Equipment_1_Name = "%sDirectAir" % (zone, ) z_equiplst.Zone_Equipment_1_Cooling_Sequence = 1 z_equiplst.Zone_Equipment_1_Heating_or_NoLoad_Sequence = 1 # make AirTerminal:SingleDuct:Uncontrolled for zone in dloop: z_equipconn = modeleditor.getobjects(idf.idfobjects, idf.model, idf.idd_info, "ZoneHVAC:EquipmentConnections".upper(), #places=7, **dict(Zone_Name=zone))[0] key = "AirTerminal:SingleDuct:Uncontrolled".upper()
def makeairloop(idf, loopname, sloop, dloop): """make an airloop""" newairloop = idf.newidfobject("AirLoopHVAC".upper(), loopname) fields = SomeFields.a_fields # for use in bunch flnames = [field.replace(' ', '_') for field in fields] # TODO : check if these change too. # simplify naming a_fields = ['Branch List Name', 'Connector List Name', 'Supply Side Inlet Node Name', 'Demand Side Outlet Node Name', 'Demand Side Inlet Node Names', 'Supply Side Outlet Node Names'] # changesnames to # from # ['Branch List Name', # 'Connector List Name', # 'Supply Side Inlet Node Name', # 'Demand Side Outlet Node Name', # 'Demand Side Inlet Node Names', # 'Supply Side Outlet Node Names'] # to (airloop=a_loop) # ['Branches', # 'Connectors', # 'Supply Inlet', # 'Demand Outlet', # 'Demand Inlet', # 'Supply Outlet'] fields1 = ['Branches', 'Connectors', 'Supply Inlet', 'Demand Outlet', 'Demand Inlet', 'Supply Outlet'] # old TODO : pop connectors if no parallel branches # make fieldnames in the air loop fieldnames = ['%s %s' % (loopname, field) for field in fields1] for fieldname, thefield in zip(fieldnames, flnames): newairloop[thefield] = fieldname # make the branch lists for this air loop sbranchlist = idf.newidfobject("BRANCHLIST", newairloop[flnames[0]]) # not needed in airloop # dbranchlist = idf.newidfobject("BRANCHLIST", # newcondenserloop.Condenser_Demand_Side_Branch_List_Name) # add branch names to the branchlist sbranchnames = flattencopy(sloop) # sbranchnames = sloop[1] for branchname in sbranchnames: sbranchlist.obj.append(branchname) # dbranchnames = flattencopy(dloop) # # dbranchnames = dloop[1] # for branchname in dloop[1]: # dbranchlist.obj.append(branchname) # # # make a duct branch for all branches in the loop # # supply side sbranchs = [] for bname in sbranchnames: branch = makeductbranch(idf, bname) sbranchs.append(branch) # rename inlet outlet of endpoints of loop anode = "Component_1_Inlet_Node_Name" sameinnode = "Supply_Side_Inlet_Node_Name" # TODO : change ? sbranchs[0][anode] = newairloop[sameinnode] anode = "Component_1_Outlet_Node_Name" sameoutnode = "Supply_Side_Outlet_Node_Names" # TODO : change ? sbranchs[-1][anode] = newairloop[sameoutnode] # rename inlet outlet of endpoints of loop - rename in pipe dname = sbranchs[0]['Component_1_Name'] # get the duct name aduct = idf.getobject('duct'.upper(), dname) # get duct aduct.Inlet_Node_Name = newairloop[sameinnode] dname = sbranchs[-1]['Component_1_Name'] # get the duct name aduct = idf.getobject('duct'.upper(), dname) # get duct aduct.Outlet_Node_Name = newairloop[sameoutnode] # # # demand side # dbranchs = [] # for bname in dbranchnames: # branch = makepipebranch(idf, bname) # dbranchs.append(branch) # # rename inlet outlet of endpoints of loop - rename in branch # anode = "Component_1_Inlet_Node_Name" # sameinnode = "Demand_Side_Inlet_Node_Name" # TODO : change ? # dbranchs[0][anode] = newcondenserloop[sameinnode] # anode = "Component_1_Outlet_Node_Name" # sameoutnode = "Demand_Side_Outlet_Node_Name" # TODO : change ? # dbranchs[-1][anode] = newcondenserloop[sameoutnode] # # rename inlet outlet of endpoints of loop - rename in pipe # pname = dbranchs[0]['Component_1_Name'] # get the pipe name # apipe = idf.getobject('Pipe:Adiabatic'.upper(), pname) # get pipe # apipe.Inlet_Node_Name = newcondenserloop[sameinnode] # pname = dbranchs[-1]['Component_1_Name'] # get the pipe name # apipe = idf.getobject('Pipe:Adiabatic'.upper(), pname) # get pipe # apipe.Outlet_Node_Name = newcondenserloop[sameoutnode] # # # # TODO : test if there are parallel branches # make the connectorlist an fill fields sconnlist = idf.newidfobject("CONNECTORLIST", newairloop.Connector_List_Name) sconnlist.Connector_1_Object_Type = "Connector:Splitter" sconnlist.Connector_1_Name = "%s_supply_splitter" % (loopname, ) sconnlist.Connector_2_Object_Type = "Connector:Mixer" sconnlist.Connector_2_Name = "%s_supply_mixer" % (loopname, ) # dconnlist = idf.newidfobject("CONNECTORLIST", # newcondenserloop.Condenser_Demand_Side_Connector_List_Name) # dconnlist.Connector_1_Object_Type = "Connector:Splitter" # dconnlist.Connector_1_Name = "%s_demand_splitter" % (loopname, ) # dconnlist.Connector_2_Object_Type = "Connector:Mixer" # dconnlist.Connector_2_Name = "%s_demand_mixer" % (loopname, ) # # make splitters and mixers s_splitter = idf.newidfobject("CONNECTOR:SPLITTER", sconnlist.Connector_1_Name) s_splitter.obj.extend([sloop[0]] + sloop[1]) s_mixer = idf.newidfobject("CONNECTOR:MIXER", sconnlist.Connector_2_Name) s_mixer.obj.extend([sloop[-1]] + sloop[1]) # # - # d_splitter = idf.newidfobject("CONNECTOR:SPLITTER", # dconnlist.Connector_1_Name) # d_splitter.obj.extend([dloop[0]] + dloop[1]) # d_mixer = idf.newidfobject("CONNECTOR:MIXER", # dconnlist.Connector_2_Name) # d_mixer.obj.extend([dloop[-1]] + dloop[1]) # return newcondenserloop # demand side loop for airloop is made below #ZoneHVAC:EquipmentConnections for zone in dloop: equipconn = idf.newidfobject("ZoneHVAC:EquipmentConnections".upper()) equipconn.Zone_Name = zone fldname = "Zone_Conditioning_Equipment_List_Name" equipconn[fldname] = "%s equip list" % (zone, ) fldname = "Zone_Air_Inlet_Node_or_NodeList_Name" equipconn[fldname] = "%s Inlet Node" % (zone, ) fldname = "Zone_Air_Node_Name" equipconn[fldname] = "%s Node" % (zone, ) fldname = "Zone_Return_Air_Node_Name" equipconn[fldname] = "%s Outlet Node" % (zone, ) # make ZoneHVAC:EquipmentList for zone in dloop: z_equiplst = idf.newidfobject("ZoneHVAC:EquipmentList".upper()) z_equipconn = modeleditor.getobjects(idf.idfobjects, idf.model, idf.idd_info, "ZoneHVAC:EquipmentConnections".upper(), #places=7, **dict(Zone_Name=zone))[0] z_equiplst.Name = z_equipconn.Zone_Conditioning_Equipment_List_Name fld = "Zone_Equipment_1_Object_Type" z_equiplst[fld] = "AirTerminal:SingleDuct:Uncontrolled" z_equiplst.Zone_Equipment_1_Name = "%sDirectAir" % (zone, ) z_equiplst.Zone_Equipment_1_Cooling_Sequence = 1 z_equiplst.Zone_Equipment_1_Heating_or_NoLoad_Sequence = 1 # make AirTerminal:SingleDuct:Uncontrolled for zone in dloop: z_equipconn = modeleditor.getobjects(idf.idfobjects, idf.model, idf.idd_info, "ZoneHVAC:EquipmentConnections".upper(), #places=7, **dict(Zone_Name=zone))[0] key = "AirTerminal:SingleDuct:Uncontrolled".upper() z_airterm = idf.newidfobject(key) z_airterm.Name = "%sDirectAir" % (zone, ) fld1 = "Zone_Supply_Air_Node_Name" fld2 = "Zone_Air_Inlet_Node_or_NodeList_Name" z_airterm[fld1] = z_equipconn[fld2] z_airterm.Maximum_Air_Flow_Rate = 'autosize' # MAKE AirLoopHVAC:ZoneSplitter # zone = dloop[0] key = "AirLoopHVAC:ZoneSplitter".upper() z_splitter = idf.newidfobject(key) z_splitter.Name = "%s Demand Side Splitter" % (loopname, ) z_splitter.Inlet_Node_Name = newairloop.Demand_Side_Inlet_Node_Names for i, zone in enumerate(dloop): z_equipconn = modeleditor.getobjects(idf.idfobjects, idf.model, idf.idd_info, "ZoneHVAC:EquipmentConnections".upper(), #places=7, **dict(Zone_Name=zone))[0] fld = "Outlet_%s_Node_Name" % (i + 1, ) z_splitter[fld] = z_equipconn.Zone_Air_Inlet_Node_or_NodeList_Name # make AirLoopHVAC:SupplyPath key = "AirLoopHVAC:SupplyPath".upper() z_supplypth = idf.newidfobject(key) z_supplypth.Name = "%sSupplyPath" % (loopname, ) fld1 = "Supply_Air_Path_Inlet_Node_Name" fld2 = "Demand_Side_Inlet_Node_Names" z_supplypth[fld1] = newairloop[fld2] z_supplypth.Component_1_Object_Type = "AirLoopHVAC:ZoneSplitter" z_supplypth.Component_1_Name = z_splitter.Name # make AirLoopHVAC:ZoneMixer key = "AirLoopHVAC:ZoneMixer".upper() z_mixer = idf.newidfobject(key) z_mixer.Name = "%s Demand Side Mixer" % (loopname, ) z_mixer.Outlet_Node_Name = newairloop.Demand_Side_Outlet_Node_Name for i, zone in enumerate(dloop): z_equipconn = modeleditor.getobjects(idf.idfobjects, idf.model, idf.idd_info, "ZoneHVAC:EquipmentConnections".upper(), #places=7, **dict(Zone_Name=zone))[0] fld = "Inlet_%s_Node_Name" % (i + 1, ) z_mixer[fld] = z_equipconn.Zone_Return_Air_Node_Name # make AirLoopHVAC:ReturnPath key = "AirLoopHVAC:ReturnPath".upper() z_returnpth = idf.newidfobject(key) z_returnpth.Name = "%sReturnPath" % (loopname, ) z_returnpth.Return_Air_Path_Outlet_Node_Name = newairloop.Demand_Side_Outlet_Node_Name z_returnpth.Component_1_Object_Type = "AirLoopHVAC:ZoneMixer" z_returnpth.Component_1_Name = z_mixer.Name