Skip to content

Commit d34ec4e

Browse files
committed
fix(loads): Move ventilation effectiveness to be towards start
1 parent dd4db7c commit d34ec4e

8 files changed

Lines changed: 45 additions & 45 deletions
-2 Bytes
Loading
-2 Bytes
Loading
Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,50 @@
11
{
2+
"version": "1.10.2",
3+
"description": "Convert infiltration flow measured at a particular blower door pressure to flow\nmeasured at a typical building pressure.\n_\nThe formulas used by this component work the same whether the input infiltration\nflow is per unit area [m3/s/m2] or total flow in ACH or [m3/s].\n_\nThis is accomplished by computing a normalized-area air mass flow coefficient that\nis derived the power law relationship between pressure and air flow.\n Cqa = Qblow / dPblow^n\nAnd then using the coefficient to approximate air flow at typical building pressure.\n Qbldg = Cqa * dPbldg^n\n.\nwhere:\n Cqa: Air mass flow coefficient at 1 Pa [kg/m2/s/P^n or kg/s/P^n]\n Qblow: Blower-induced volumetric air flow rate [m3/s/m2 or m3/s or ACH].\n dPblow: Blower-induced change in pressure across building envelope orifice [Pa]\n Qbldg: Typical building volumetric air flow rate [m3/s/m2 or m3/s or ACH]\n dPbldg: Typical building change in pressure across building envelope orifice [Pa]\n d: Air density [1.2041 kg/m3]\n n: Air mass flow exponent [0.65]\n-",
24
"nickname": "BlowerPressure",
5+
"category": "HB-Energy",
36
"inputs": [
47
{
5-
"name": "_blower_infilt",
6-
"type": "double",
78
"default": null,
9+
"access": "item",
810
"description": "A numerical value for the air flow induced by blower pressure.\nThis value can be infiltration flow per unit area of exterior\nsurface [m3/s/m2] or total flow in ACH or [m3/s]. The units input\nhere will match those of the infilt output at building pressure.",
9-
"access": "item"
11+
"type": "double",
12+
"name": "_blower_infilt"
1013
},
1114
{
12-
"name": "_blower_pressure_",
13-
"type": "double",
1415
"default": null,
16+
"access": "item",
1517
"description": "A number representing the pressure differential in Pascals (Pa)\nbetween indoors/outdoors at which the specified _blower_infilt\noccurs. Typical pressures induced by blower doors are 75 Pa and\n50 Pa. (Default: 75).",
16-
"access": "item"
18+
"type": "double",
19+
"name": "_blower_pressure_"
1720
},
1821
{
19-
"name": "_bldg_pressure_",
20-
"type": "double",
2122
"default": null,
23+
"access": "item",
2224
"description": "The reference air pressure difference across building envelope\nunder typical conditions in Pascals. (Default: 4).",
23-
"access": "item"
25+
"type": "double",
26+
"name": "_bldg_pressure_"
2427
}
2528
],
2629
"outputs": [
2730
[
2831
{
29-
"name": "infilt",
30-
"type": null,
3132
"default": null,
33+
"access": "None",
3234
"description": "The flow rate of infiltration at the input _bldg_pressure_. The units\nof this output match those of the input _blower_infilt.",
33-
"access": "None"
35+
"type": null,
36+
"name": "infilt"
3437
},
3538
{
36-
"name": "C_qa",
37-
"type": null,
3839
"default": null,
40+
"access": "None",
3941
"description": "Air mass flow coefficient per square meter at 1 Pa [kg/m2/s/P^n].",
40-
"access": "None"
42+
"type": null,
43+
"name": "C_qa"
4144
}
4245
]
4346
],
4447
"name": "HB Blower Pressure Converter",
45-
"description": "Convert infiltration flow measured at a particular blower door pressure to flow\nmeasured at a typical building pressure.\n_\nThe formulas used by this component work the same whether the input infiltration\nflow is per unit area [m3/s/m2] or total flow in ACH or [m3/s].\n_\nThis is accomplished by computing a normalized-area air mass flow coefficient that\nis derived the power law relationship between pressure and air flow.\n Cqa = Qblow / dPblow^n\nAnd then using the coefficient to approximate air flow at typical building pressure.\n Qbldg = Cqa * dPbldg^n\n.\nwhere:\n Cqa: Air mass flow coefficient at 1 Pa [kg/m2/s/P^n or kg/s/P^n]\n Qblow: Blower-induced volumetric air flow rate [m3/s/m2 or m3/s or ACH].\n dPblow: Blower-induced change in pressure across building envelope orifice [Pa]\n Qbldg: Typical building volumetric air flow rate [m3/s/m2 or m3/s or ACH]\n dPbldg: Typical building change in pressure across building envelope orifice [Pa]\n d: Air density [1.2041 kg/m3]\n n: Air mass flow exponent [0.65]\n-",
4648
"code": "\ntry:\n from honeybee_energy.properties.room import RoomEnergyProperties\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee_energy:\\n\\t{}'.format(e))\n\ntry:\n from ladybug_{{cad}}.{{plugin}} import all_required_inputs\nexcept ImportError as e:\n raise ImportError('\\nFailed to import ladybug_{{cad}}:\\n\\t{}'.format(e))\n\n\nif all_required_inputs(ghenv.Component):\n # set default values\n _blower_pressure_ = 75 if _blower_pressure_ is None else _blower_pressure_\n _bldg_pressure_ = 4 if _bldg_pressure_ is None else _bldg_pressure_\n\n # compute coeffiecient and airflow\n C_qa = RoomEnergyProperties.solve_norm_area_flow_coefficient(\n _blower_infilt, air_density=1, delta_pressure=_blower_pressure_)\n infilt = C_qa * (_bldg_pressure_ ** 0.65)\n",
47-
"subcategory": "3 :: Loads",
48-
"category": "HB-Energy",
49-
"version": "1.10.1"
49+
"subcategory": "3 :: Loads"
5050
}
Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,57 @@
11
{
2+
"version": "1.10.1",
3+
"description": "Adjust ventilation properties that impact how minimum outdoor air requirements\nare computed for rooms.\n_\nThis includes whether or not the different types of outdoor air flow rates\nare summed together (the default) or the maximum is taken across the flow rates.\n_\nIt also includes terms for the ventilation distribution effectivness, which\ncan raise the outdoor air requirements if a given system configuration does not\nevenly distribute air througout the room. It can also lower the outdoor air\nrequirement if a system configuration is particularly good at delivering\nair to the breathing zone of the room.\n-",
24
"nickname": "VentDistrib",
5+
"category": "HB-Energy",
36
"inputs": [
47
{
5-
"name": "_room_or_program",
6-
"type": "System.Object",
78
"default": null,
9+
"access": "list",
810
"description": "Honeybee Rooms or ProgramType objects which will have ventilation\nproperties changed. This can also be the identifier of a ProgramType\nto be looked up in the program type library. This can also be a\nHoneybee Model for which all Rooms will have their ventilation\nproperties changed.",
9-
"access": "list"
11+
"type": "System.Object",
12+
"name": "_room_or_program"
1013
},
1114
{
12-
"name": "use_max_flow_",
13-
"type": "bool",
1415
"default": null,
16+
"access": "list",
1517
"description": "Set to \"True\" to use the maximum flow rate across the the different\ntypes of outdoor air criteria instead of summing them together (the default).\nSumming together ventilation per-person and per-floor-area is how\nstandards like ASHRAE 62.1 are written but other standards may\nuse the maximum across specified criteria.",
16-
"access": "list"
18+
"type": "bool",
19+
"name": "use_max_flow_"
1720
},
1821
{
19-
"name": "effectiveness_cool_",
20-
"type": "double",
2122
"default": null,
23+
"access": "list",
2224
"description": "A positive number to note the air distribution effectiveness\nof the ventilation system when it operates in cooling mode\n(or how well the system is able to mix the air when cooling).\nA value of 1 means that air is well mixed and specified air flows are not\nadjusted in the course of simulation. Values less than 1 indicate systems\nthat do not mix the air as well and so the specified airflows are increased.\nValues greater than 1 indicate systems that are particularly good at\ndelivering outdoor air to the breathing zone of a room and so the\nspecified airflows can be reduced. (Default: 1).",
23-
"access": "list"
25+
"type": "double",
26+
"name": "effectiveness_cool_"
2427
},
2528
{
26-
"name": "effectiveness_heat_",
27-
"type": "double",
2829
"default": null,
30+
"access": "list",
2931
"description": "A positive number to note the air distribution effectiveness\nof the ventilation system when it operates in heating mode\n(or how well the system is able to mix the air when heating).\nA value of 1 means that air is well mixed and specified air flows are not\nadjusted in the course of simulation. Values less than 1 indicate systems\nthat do not mix the air as well and so the specified airflows are increased.\nValues greater than 1 indicate systems that are particularly good at\ndelivering outdoor air to the breathing zone of a room and so the\nspecified airflows can be reduced. (Default: 1).",
30-
"access": "list"
32+
"type": "double",
33+
"name": "effectiveness_heat_"
3134
},
3235
{
33-
"name": "secondary_recirc_",
34-
"type": "double",
3536
"default": null,
37+
"access": "list",
3638
"description": "A number that is greater than or equal to zero, which notes\nthe fraction of a zone's recirculation air that does not directly\nmix with the outdoor air. Used in cases where a central ventilation\nsystem supplies several zones and the return air is not collected\nthrough ducts back to the central air handler (eg. a plenum return\nsystem is used). This means unused outdoor ventilation air from other\nzones in the central system can be credited to the room. (Default: 0).",
37-
"access": "list"
39+
"type": "double",
40+
"name": "secondary_recirc_"
3841
}
3942
],
4043
"outputs": [
4144
[
4245
{
43-
"name": "mod_obj",
44-
"type": null,
4546
"default": null,
47+
"access": "None",
4648
"description": "The input Rooms or ProgramTypes with ventilation properties adjusted.",
47-
"access": "None"
49+
"type": null,
50+
"name": "mod_obj"
4851
}
4952
]
5053
],
5154
"name": "HB Ventilation Distribution",
52-
"description": "Adjust ventilation properties that impact how minimum outdoor air requirements\nare computed for rooms.\n_\nThis includes whether or not the different types of outdoor air flow rates\nare summed together (the default) or the maximum is taken across the flow rates.\n_\nIt also includes terms for the ventilation distribution effectivness, which\ncan raise the outdoor air requirements if a given system configuration does not\nevenly distribute air througout the room. It can also lower the outdoor air\nrequirement if a system configuration is particularly good at delivering\nair to the breathing zone of the room.\n-",
5355
"code": "\nimport uuid\n\ntry:\n from honeybee.model import Model\n from honeybee.room import Room\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee:\\n\\t{}'.format(e))\n\ntry:\n from honeybee_energy.load.ventilation import Ventilation\n from honeybee_energy.lib.programtypes import program_type_by_identifier, \\\n building_program_type_by_identifier\n from honeybee_energy.programtype import ProgramType\nexcept ImportError as e:\n raise ImportError('\\nFailed to import honeybee_energy:\\n\\t{}'.format(e))\n\ntry:\n from ladybug_{{cad}}.{{plugin}} import all_required_inputs, longest_list\nexcept ImportError as e:\n raise ImportError('\\nFailed to import ladybug_{{cad}}:\\n\\t{}'.format(e))\n\n\ndef dup_load(hb_obj, object_name, object_class):\n \"\"\"Duplicate a load object assigned to a Room or ProgramType.\"\"\"\n # try to get the load object assgined to the Room or ProgramType\n try: # assume it's a Room\n load_obj = hb_obj.properties\n for attribute in ('energy', object_name):\n load_obj = getattr(load_obj, attribute)\n except AttributeError: # it's a ProgramType\n load_obj = getattr(hb_obj, object_name)\n\n load_id = '{}_{}'.format(hb_obj.identifier, object_name)\n try: # duplicate the load object\n dup_load = load_obj.duplicate()\n dup_load.identifier = load_id\n return dup_load\n except AttributeError: # create a new object\n return object_class(load_id)\n\n\ndef duplicate_and_id_program(program):\n \"\"\"Duplicate a program and give it a new unique ID.\"\"\"\n new_prog = program.duplicate()\n new_prog.identifier = '{}_{}'.format(program.identifier, str(uuid.uuid4())[:8])\n return new_prog\n\n\nif all_required_inputs(ghenv.Component):\n # duplicate the initial objects\n mod_obj, edit_objs = [], []\n for obj in _room_or_program:\n if isinstance(obj, Room):\n new_obj = obj.duplicate()\n mod_obj.append(new_obj)\n edit_objs.append(new_obj)\n elif isinstance(obj, Model):\n new_obj = obj.duplicate()\n mod_obj.append(new_obj)\n edit_objs.extend(new_obj.rooms)\n elif isinstance(obj, ProgramType):\n new_obj = duplicate_and_id_program(obj)\n mod_obj.append(new_obj)\n edit_objs.append(new_obj)\n elif isinstance(obj, str):\n try:\n program = building_program_type_by_identifier(obj)\n except ValueError:\n program = program_type_by_identifier(obj)\n new_obj = duplicate_and_id_program(program)\n mod_obj.append(new_obj)\n edit_objs.append(new_obj)\n else:\n raise TypeError('Expected Honeybee Room, Model or ProgramType. '\n 'Got {}.'.format(type(obj)))\n\n # set default values and check the inputs\n use_max_flow_ = [False] if len(use_max_flow_) == 0 else use_max_flow_\n effectiveness_cool_ = [1] if len(effectiveness_cool_) == 0 else effectiveness_cool_\n effectiveness_heat_ = [1] if len(effectiveness_heat_) == 0 else effectiveness_heat_\n secondary_recirc_ = [0] if len(secondary_recirc_) == 0 else secondary_recirc_\n\n # assign the ventilation criteria\n for i, obj in enumerate(edit_objs):\n vent = dup_load(obj, 'ventilation', Ventilation)\n if longest_list(use_max_flow_, i):\n vent.method = 'Max'\n else:\n vent.method = 'Sum'\n vent.effectiveness_cooling = longest_list(effectiveness_cool_, i)\n vent.effectiveness_heating = longest_list(effectiveness_heat_, i)\n vent.secondary_recirculation = longest_list(secondary_recirc_, i)\n try: # assume it's a Room\n obj.properties.energy.ventilation = vent\n except AttributeError: # it's a ProgramType\n obj.ventilation = vent\n",
54-
"subcategory": "3 :: Loads",
55-
"category": "HB-Energy",
56-
"version": "1.10.0"
56+
"subcategory": "3 :: Loads"
5757
}

honeybee_grasshopper_energy/src/HB Blower Pressure Converter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@
5050

5151
ghenv.Component.Name = 'HB Blower Pressure Converter'
5252
ghenv.Component.NickName = 'BlowerPressure'
53-
ghenv.Component.Message = '1.10.1'
53+
ghenv.Component.Message = '1.10.2'
5454
ghenv.Component.Category = 'HB-Energy'
5555
ghenv.Component.SubCategory = '3 :: Loads'
56-
ghenv.Component.AdditionalHelpFromDocStrings = '4'
56+
ghenv.Component.AdditionalHelpFromDocStrings = '2'
5757

5858
try:
5959
from honeybee_energy.properties.room import RoomEnergyProperties

honeybee_grasshopper_energy/src/HB Ventilation Distribution.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@
6565

6666
ghenv.Component.Name = 'HB Ventilation Distribution'
6767
ghenv.Component.NickName = 'VentDistrib'
68-
ghenv.Component.Message = '1.10.0'
68+
ghenv.Component.Message = '1.10.1'
6969
ghenv.Component.Category = 'HB-Energy'
7070
ghenv.Component.SubCategory = '3 :: Loads'
71-
ghenv.Component.AdditionalHelpFromDocStrings = '4'
71+
ghenv.Component.AdditionalHelpFromDocStrings = '2'
7272

7373
import uuid
7474

Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)