Class: Honeybee::DesignDay
- Inherits:
-
ModelObject
show all
- Defined in:
- lib/honeybee/simulation/design_day.rb,
lib/to_openstudio/simulation/design_day.rb,
lib/from_openstudio/simulation/design_day.rb
Instance Attribute Summary
Attributes inherited from ModelObject
#errors, #openstudio_object, #warnings
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from ModelObject
#allowable_types, clean_identifier, clean_name, #initialize, #method_missing, read_from_disk, truncate
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
in the class Honeybee::ModelObject
Class Method Details
.ashrae_clear_sky_from_design_day(design_day) ⇒ Object
96
97
98
99
100
101
102
103
|
# File 'lib/from_openstudio/simulation/design_day.rb', line 96
def self.ashrae_clear_sky_from_design_day(design_day)
hash = {}
hash[:type] = 'ASHRAEClearSky'
hash[:date] = [design_day.month, design_day.dayOfMonth]
hash[:clearness] = design_day.skyClearness
hash[:daylight_savings] = design_day.daylightSavingTimeIndicator
hash
end
|
.ashrae_tau_from_design_day(design_day) ⇒ Object
105
106
107
108
109
110
111
112
113
|
# File 'lib/from_openstudio/simulation/design_day.rb', line 105
def self.ashrae_tau_from_design_day(design_day)
hash = {}
hash[:type] = 'ASHRAETau'
hash[:date] = [design_day.month, design_day.dayOfMonth]
hash[:tau_b] = design_day.ashraeTaub
hash[:tau_d] = design_day.ashraeTaud
hash[:daylight_savings] = design_day.daylightSavingTimeIndicator
hash
end
|
.day_type_from_design_day(design_day) ⇒ Object
50
51
52
|
# File 'lib/from_openstudio/simulation/design_day.rb', line 50
def self.day_type_from_design_day(design_day)
design_day.dayType
end
|
.dry_bulb_condition_from_design_day(design_day) ⇒ Object
54
55
56
57
58
59
60
|
# File 'lib/from_openstudio/simulation/design_day.rb', line 54
def self.dry_bulb_condition_from_design_day(design_day)
hash = {}
hash[:type] = 'DryBulbCondition'
hash[:dry_bulb_max] = design_day.maximumDryBulbTemperature
hash[:dry_bulb_range] = design_day.dailyDryBulbTemperatureRange
hash
end
|
.from_design_day(design_day) ⇒ Object
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/from_openstudio/simulation/design_day.rb', line 37
def self.from_design_day(design_day)
hash = {}
hash[:type] = 'DesignDay'
hash[:name] = clean_identifier(design_day.nameString)
hash[:day_type] = day_type_from_design_day(design_day)
hash[:dry_bulb_condition] = dry_bulb_condition_from_design_day(design_day)
hash[:humidity_condition] = humidity_condition_from_design_day(design_day)
hash[:wind_condition] = wind_condition_from_design_day(design_day)
hash[:sky_condition] = sky_condition_from_design_day(design_day)
hash
end
|
.humidity_condition_from_design_day(design_day) ⇒ Object
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
# File 'lib/from_openstudio/simulation/design_day.rb', line 71
def self.humidity_condition_from_design_day(design_day)
hash = {}
hash[:type] = 'HumidityCondition'
hash[:humidity_type] = humidity_type_from_design_day(design_day)
if hash[:humidity_type] == 'HumidityRatio'
hash[:humidity_value] = design_day.humidityRatioAtMaximumDryBulb
elsif hash[:humidity_type] == 'Enthalpy'
hash[:humidity_value] = design_day.enthalpyAtMaximumDryBulb
else
hash[:humidity_value] = design_day.wetBulbOrDewPointAtMaximumDryBulb
end
hash[:barometric_pressure] = design_day.barometricPressure
hash[:rain] = design_day.rainIndicator
hash[:snow_on_ground] = design_day.snowIndicator
hash
end
|
.humidity_type_from_design_day(design_day) ⇒ Object
62
63
64
65
66
67
68
69
|
# File 'lib/from_openstudio/simulation/design_day.rb', line 62
def self.humidity_type_from_design_day(design_day)
humidity_type = design_day.humidityConditionType
allowed_types = ['WetBulb', 'Dewpoint', 'HumidityRatio', 'Enthalpy']
if !allowed_types.any?{ |s| s.casecmp(humidity_type)==0 }
raise "'#{humidity_type}' is not an allowed humidity type"
end
humidity_type.gsub('WetBulb', 'Wetbulb')
end
|
.sky_condition_from_design_day(design_day) ⇒ Object
115
116
117
118
119
120
121
122
123
124
125
126
|
# File 'lib/from_openstudio/simulation/design_day.rb', line 115
def self.sky_condition_from_design_day(design_day)
solar_model_indicator = design_day.solarModelIndicator
allowed_types = ['ASHRAEClearSky', 'ASHRAETau', 'ASHRAETau2017']
if !allowed_types.any?{ |s| s.casecmp(solar_model_indicator)==0 }
raise "'#{solar_model_indicator}' is not an allowed solar model indicator"
end
if solar_model_indicator == 'ASHRAEClearSky'
return ashrae_clear_sky_from_design_day(design_day)
else
return ashrae_tau_from_design_day(design_day)
end
end
|
.wind_condition_from_design_day(design_day) ⇒ Object
88
89
90
91
92
93
94
|
# File 'lib/from_openstudio/simulation/design_day.rb', line 88
def self.wind_condition_from_design_day(design_day)
hash = {}
hash[:type] = 'WindCondition'
hash[:wind_speed] = design_day.windSpeed
hash[:wind_direction] = design_day.windDirection
hash
end
|
Instance Method Details
#defaults ⇒ Object
37
38
39
|
# File 'lib/honeybee/simulation/design_day.rb', line 37
def defaults
@@schema[:components][:schemas][:DesignDay][:properties]
end
|
#find_existing_openstudio_object(openstudio_model) ⇒ Object
39
40
41
42
43
|
# File 'lib/to_openstudio/simulation/design_day.rb', line 39
def find_existing_openstudio_object(openstudio_model)
object = openstudio_model.getDesignDayByName(@hash[:name])
return object.get if object.is_initialized
nil
end
|
#to_openstudio(openstudio_model) ⇒ Object
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# File 'lib/to_openstudio/simulation/design_day.rb', line 45
def to_openstudio(openstudio_model)
os_des_day = OpenStudio::Model::DesignDay.new(openstudio_model)
os_des_day.setName(@hash[:name])
os_des_day.setDayType(@hash[:day_type])
os_des_day.setMaximumDryBulbTemperature(@hash[:dry_bulb_condition][:dry_bulb_max])
os_des_day.setDailyDryBulbTemperatureRange(@hash[:dry_bulb_condition][:dry_bulb_range])
humid_type = @hash[:humidity_condition][:humidity_type]
os_des_day.setHumidityConditionType(@hash[:humidity_condition][:humidity_type])
if humid_type == 'HumidityRatio'
os_des_day.setHumidityRatioAtMaximumDryBulb(@hash[:humidity_condition][:humidity_value])
elsif humid_type == 'Enthalpy'
os_des_day.setEnthalpyAtMaximumDryBulb(@hash[:humidity_condition][:humidity_value])
else
os_des_day.setWetBulbOrDewPointAtMaximumDryBulb(@hash[:humidity_condition][:humidity_value])
end
if @hash[:humidity_condition][:barometric_pressure]
os_des_day.setBarometricPressure(@hash[:humidity_condition][:barometric_pressure])
end
if @hash[:humidity_condition][:rain]
os_des_day.setRainIndicator(@hash[:humidity_condition][:rain])
end
if @hash[:humidity_condition][:snow_on_ground]
os_des_day.setSnowIndicator(@hash[:humidity_condition][:snow_on_ground])
end
os_des_day.setWindSpeed(@hash[:wind_condition][:wind_speed])
if @hash[:wind_condition][:wind_direction]
os_des_day.setWindDirection(@hash[:wind_condition][:wind_direction])
end
os_des_day.setMonth(@hash[:sky_condition][:date][0])
os_des_day.setDayOfMonth(@hash[:sky_condition][:date][1])
os_des_day.setSolarModelIndicator(@hash[:sky_condition][:type])
if @hash[:sky_condition][:daylight_savings]
os_des_day.setDaylightSavingTimeIndicator(@hash[:sky_condition][:daylight_savings])
end
if @hash[:sky_condition][:type] == "ASHRAEClearSky"
os_des_day.setSkyClearness(@hash[:sky_condition][:clearness])
end
if @hash[:sky_condition][:type] == "ASHRAETau"
os_des_day.setAshraeClearSkyOpticalDepthForBeamIrradiance(@hash[:sky_condition][:tau_b])
os_des_day.setAshraeClearSkyOpticalDepthForDiffuseIrradiance(@hash[:sky_condition][:tau_d])
if @hash[:sky_condition][:use_2017] == true
os_des_day.setSolarModelIndicator("ASHRAETau2017")
end
end
os_des_day
end
|