Class: OpenStudio::Model::AirTerminalSingleDuctVAVReheat

Inherits:
Object
  • Object
show all
Defined in:
lib/openstudio-standards/hvac_sizing/HVACSizing.AirTerminalSingleDuctVAVNoReheat.rb,
lib/openstudio-standards/hvac_sizing/HVACSizing.AirTerminalSingleDuctVAVReheat.rb,
lib/openstudio-standards/prototypes/Prototype.AirTerminalSingleDuctVAVReheat.rb,
lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb

Overview

open the class to add methods to return sizing values

Instance Method Summary collapse

Instance Method Details

#applySizingValuesObject

Takes the values calculated by the EnergyPlus sizing routines and puts them into this object model in place of the autosized fields. Must have previously completed a run with sql output for this to work.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/openstudio-standards/hvac_sizing/HVACSizing.AirTerminalSingleDuctVAVNoReheat.rb', line 13

def applySizingValues
     
  rated_flow_rate = self.autosizedMaximumAirFlowRate
  if rated_flow_rate.is_initialized
    self.setMaximumAirFlowRate(rated_flow_rate.get) 
  end
  
  maximum_hot_water_or_steam_flow_rate = self.autosizedMaximumHotWaterOrSteamFlowRate
  if maximum_hot_water_or_steam_flow_rate.is_initialized
    self.setMaximumHotWaterOrSteamFlowRate(maximum_hot_water_or_steam_flow_rate.get)
  end
  
  maximum_flow_per_zone_floor_area_during_reheat = self.autosizedMaximumFlowPerZoneFloorAreaDuringReheat
  if maximum_flow_per_zone_floor_area_during_reheat.is_initialized
    self.setMaximumFlowPerZoneFloorAreaDuringReheat(maximum_flow_per_zone_floor_area_during_reheat.get) 
  end
  
  maximum_flow_fraction_during_reheat = self.autosizedMaximumFlowFractionDuringReheat
  if maximum_flow_fraction_during_reheat.is_initialized
    self.setMaximumFlowFractionDuringReheat(maximum_flow_fraction_during_reheat.get)
  end

end

#autosizeObject

Sets all auto-sizeable fields to autosize



6
7
8
# File 'lib/openstudio-standards/hvac_sizing/HVACSizing.AirTerminalSingleDuctVAVNoReheat.rb', line 6

def autosize
  OpenStudio::logFree(OpenStudio::Warn, "openstudio.sizing.AirTerminalSingleDuctVAVReheat", ".autosize not yet implemented for #{self.iddObject.type.valueDescription}.")
end

#autosizedMaximumAirFlowRateObject

returns the autosized maximum air flow rate as an optional double



38
39
40
41
42
# File 'lib/openstudio-standards/hvac_sizing/HVACSizing.AirTerminalSingleDuctVAVNoReheat.rb', line 38

def autosizedMaximumAirFlowRate

  return self.model.getAutosizedValue(self, 'Design Size Maximum Air Flow Rate', 'm3/s')
  
end

#autosizedMaximumFlowFractionDuringReheatObject

returns the autosized maximum flow fraction during reheat as an optional double



59
60
61
62
63
# File 'lib/openstudio-standards/hvac_sizing/HVACSizing.AirTerminalSingleDuctVAVNoReheat.rb', line 59

def autosizedMaximumFlowFractionDuringReheat

  return self.model.getAutosizedValue(self, 'Design Size Maximum Flow Fraction during Reheat', '')
  
end

#autosizedMaximumFlowPerZoneFloorAreaDuringReheatObject

returns the autosized maximum flow per zone floor area during reheat as an optional double



52
53
54
55
56
# File 'lib/openstudio-standards/hvac_sizing/HVACSizing.AirTerminalSingleDuctVAVNoReheat.rb', line 52

def autosizedMaximumFlowPerZoneFloorAreaDuringReheat

  return self.model.getAutosizedValue(self, 'Design Size Maximum Flow per Zone Floor Area during Reheat', 'm3/s-m2')
     
end

#autosizedMaximumHotWaterOrSteamFlowRateObject

returns the autosized rated power consumption as an optional double



45
46
47
48
49
# File 'lib/openstudio-standards/hvac_sizing/HVACSizing.AirTerminalSingleDuctVAVNoReheat.rb', line 45

def autosizedMaximumHotWaterOrSteamFlowRate

  return self.model.getAutosizedValue(self, 'Design Size Maximum Reheat Water Flow Rate', 'm3/s')
  
end

#set_initial_prototype_damper_position(building_vintage, zone_oa_per_area) ⇒ Bool

TODO:

remove exception where older vintages don’t have minimum positions adjusted.

Set the initial minimum damper position based on OA rate of the space and the building vintage. Zones with low OA per area get lower initial guesses. Final position will be adjusted upward as necessary by Standards.AirLoopHVAC.set_minimum_vav_damper_positions

Parameters:

  • building_vintage (String)

    the building vintage

  • zone_oa_per_area (Double)

    the zone outdoor air per area, m^3/s

Returns:

  • (Bool)

    returns true if successful, false if not



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/openstudio-standards/prototypes/Prototype.AirTerminalSingleDuctVAVReheat.rb', line 13

def set_initial_prototype_damper_position(building_vintage, zone_oa_per_area)
 
  # Minimum damper position is based on prototype
  # assumptions, which are not clearly documented.
  min_damper_position = nil
  case building_vintage       
  when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004', '90.1-2004'
    min_damper_position = 0.3
  when '90.1-2007'
    min_damper_position = 0.3
  when '90.1-2010', '90.1-2013'
    min_damper_position = 0.2
  end
  
  # TODO remove the template conditional; doesn't make sense
  # Determine whether or not to use the high minimum guess.
  # Cutoff was determined by correlating apparent minimum guesses
  # to OA rates in prototypes since not well documented in papers.
  if zone_oa_per_area > 0.001 # 0.001 m^3/s*m^2 = .196 cfm/ft2
    case building_vintage 
    when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
      self.setConstantMinimumAirFlowFraction(min_damper_position)
    else
      # High OA zones
      self.setConstantMinimumAirFlowFraction(0.7)
    end
  else
    # Low OA zones
    self.setConstantMinimumAirFlowFraction(min_damper_position)
  end

  return true

end

#set_minimum_damper_position(building_vintage, zone_oa_per_area, has_ddc = true) ⇒ Bool

TODO:

remove exception where older vintages don’t have minimum positions adjusted.

Set the minimum damper position based on OA rate of the space and the building vintage. Zones with low OA per area get lower initial guesses. Final position will be adjusted upward as necessary by Standards.AirLoopHVAC.adjust_minimum_vav_damper_positions

Parameters:

  • building_vintage (String)

    the building vintage

  • zone_oa_per_area (Double)

    the zone outdoor air per area, m^3/s

  • has_ddc (Bool) (defaults to: true)

    whether or not there is DDC control of the VAV terminal

Returns:

  • (Bool)

    returns true if successful, false if not



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb', line 14

def set_minimum_damper_position(building_vintage, zone_oa_per_area, has_ddc = true)
 
  # Minimum damper position is based on prototype
  # assumptions, which are not clearly documented.
  min_damper_position = nil
  case building_vintage       
  when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004', '90.1-2004'
    min_damper_position = 0.3
  when '90.1-2007'
    min_damper_position = 0.3
  when '90.1-2010', '90.1-2013'
    if has_ddc
      min_damper_position = 0.2
    else
      min_damper_position = 0.3
    end
  end
  
  # TODO remove the template conditional; doesn't make sense
  # Determine whether or not to use the high minimum guess.
  # Cutoff was determined by correlating apparent minimum guesses
  # to OA rates in prototypes since not well documented in papers.
  if zone_oa_per_area > 0.001 # 0.001 m^3/s*m^2 = .196 cfm/ft2
    # High OA zones
    self.setConstantMinimumAirFlowFraction(0.7)
  else
    # Low OA zones
    self.setConstantMinimumAirFlowFraction(min_damper_position)
  end

  return true

end