lib/from_openstudio/model.rb in honeybee-openstudio-2.28.9 vs lib/from_openstudio/model.rb in honeybee-openstudio-2.29.0
- old
+ new
@@ -47,10 +47,11 @@
require 'from_openstudio/construction/shade'
require 'from_openstudio/construction_set'
require 'from_openstudio/schedule/type_limit'
require 'from_openstudio/schedule/ruleset'
require 'from_openstudio/schedule/fixed_interval'
+require 'from_openstudio/program_type'
require 'openstudio'
module Honeybee
class Model
@@ -63,21 +64,30 @@
hash[:display_name] = 'Model'
hash[:units] = 'Meters'
hash[:tolerance] = 0.01
hash[:angle_tolerance] = 1.0
- # Hashes for all shcedules and constructions in the model
+ # Hashes for various model properties
$schedules = {}
$opaque_constructions = {}
$window_constructions = {}
$shade_constructions = {}
hash[:properties] = properties_from_model(openstudio_model)
rooms = rooms_from_model(openstudio_model)
hash[:rooms] = rooms if !rooms.empty?
+ # Add schedule created at the room level to the array of schedules in the model
+ unless $heating_setpoint_schedule.nil?
+ hash[:properties][:energy][:schedules] << $heating_setpoint_schedule
+ end
+ # Add schedule created at the room level to the array of schedules in the model
+ unless $cooling_setpoint_schedule.nil?
+ hash[:properties][:energy][:schedules] << $cooling_setpoint_schedule
+ end
+
orphaned_shades = orphaned_shades_from_model(openstudio_model)
hash[:orphaned_shades] = orphaned_shades if !orphaned_shades.empty?
unless $shade_constructions.empty?
shade_constructions_from_model($shade_constructions).each do |shade_const|
@@ -132,12 +142,12 @@
hash[:type] = 'ModelEnergyProperties'
hash[:constructions] = constructions_from_model(openstudio_model)
hash[:materials] = materials_from_model(openstudio_model)
hash[:construction_sets] = constructionsets_from_model(openstudio_model)
hash[:schedule_type_limits] = schedtypelimits_from_model(openstudio_model)
- hash[:schedules] = scheduleruleset_from_model(openstudio_model)
- hash[:schedules].push(*schedulefixedinterval_from_model(openstudio_model))
+ hash[:schedules] = schedules_from_model(openstudio_model)
+ hash[:program_types] = programtype_from_model(openstudio_model)
hash
end
def self.rooms_from_model(openstudio_model)
@@ -261,15 +271,14 @@
result
end
def self.shade_constructions_from_model(shade_constructions)
result = []
+ shade_constructions.each do |key, value|
+ result << ShadeConstruction.from_construction(value)
+ end
- shade_constructions.each do |key, value|
- result << ShadeConstruction.from_construction(value)
- end
-
result
end
# Create HB Schedule Type Limits from OpenStudio Schedule Type Limits
def self.schedtypelimits_from_model(openstudio_model)
@@ -279,29 +288,32 @@
end
result
end
- # Create HB Schedule Ruleset from OpenStudio Ruleset
- def self.scheduleruleset_from_model(openstudio_model)
+ def self.schedules_from_model(openstudio_model)
result = []
openstudio_model.getScheduleRulesets.each do |sch_ruleset|
sched_hash = ScheduleRulesetAbridged.from_schedule_ruleset(sch_ruleset)
$schedules[sched_hash[:identifier]] = sched_hash
result << sched_hash
end
- result
- end
-
- # Create HB Schedule Fixed Interval from OpenStudio Schedule Fixed Interval
- def self.schedulefixedinterval_from_model(openstudio_model)
- result = []
# check if it is a leap year
is_leap_year = openstudio_model.getYearDescription.isLeapYear
openstudio_model.getScheduleFixedIntervals.each do |sch_fix_int|
sched_fixed_hash = ScheduleFixedIntervalAbridged.from_schedule_fixedinterval(sch_fix_int, is_leap_year)
$schedules[sched_fixed_hash[:identifier]] = sched_fixed_hash
result << sched_fixed_hash
+ end
+
+ result
+ end
+
+ # Create HB Program Type from OpenStudio Space Type
+ def self.programtype_from_model(openstudio_model)
+ result = []
+ openstudio_model.getSpaceTypes.each do |space_type|
+ result << ProgramTypeAbridged.from_programtype(space_type)
end
result
end
end # Model