Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
ejhw committed Aug 21, 2017
2 parents dfd0916 + 6faf350 commit 77290e0
Show file tree
Hide file tree
Showing 45 changed files with 10,729 additions and 3,829 deletions.
3 changes: 2 additions & 1 deletion Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ task :copy_beopt_files do
project_dir_names = get_all_project_dir_names()
extra_files = [
File.join("seeds", "EmptySeedModel.osm"),
File.join("workflows", "measure-info.json"),
File.join("resources", "geometry.rb"), # Needed by SimulationOutputReport
File.join("resources", "constants.rb") # Needed by geometry.rb
]
Expand All @@ -31,7 +32,7 @@ task :copy_beopt_files do
FileUtils.cp(beopt_file, buildstock_file)
end
else # Copy to resources dir
buildstock_file = File.join(File.dirname(__FILE__), extra_file)
buildstock_file = File.join(File.dirname(__FILE__), "resources", File.basename(extra_file))
if File.exists?(buildstock_file)
FileUtils.rm(buildstock_file)
end
Expand Down
21 changes: 8 additions & 13 deletions measures/ApplyUpgrade/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,12 @@ def run(model, runner, user_arguments)
# Load helper_methods
require File.join(File.dirname(helper_methods_file), File.basename(helper_methods_file, File.extname(helper_methods_file)))

# Retrieve workflow_json from BuildExistingModel measure if provided
workflow_json = get_value_from_runner_past_results(runner, "workflow_json", "build_existing_model", false)
if not workflow_json.nil?
workflow_json = File.join(resources_dir, workflow_json)
end

# Process package apply logic if provided
apply_package_upgrade = true
if not package_apply_logic.nil?
Expand Down Expand Up @@ -270,19 +276,8 @@ def run(model, runner, user_arguments)

end

# Call each measure for sample to build up model
measures.keys.each do |measure_subdir|
# Gather measure arguments and call measure
full_measure_path = File.join(measures_dir, measure_subdir, "measure.rb")
check_file_exists(full_measure_path, runner)

measure_instance = get_measure_instance(full_measure_path)
argument_map = get_argument_map(model, measure_instance, measures[measure_subdir], lookup_file, measure_subdir, runner)
print_measure_call(measures[measure_subdir], measure_subdir, runner)

if not run_measure(model, measure_instance, argument_map, runner)
return false
end
if not apply_measures(measures_dir, measures, runner, model, workflow_json, "measures-upgrade.osw", true)
return false
end

end # apply_package_upgrade
Expand Down
6 changes: 3 additions & 3 deletions measures/ApplyUpgrade/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
<schema_version>3.0</schema_version>
<name>apply_upgrade</name>
<uid>33f1654c-f734-43d1-b35d-9d2856e41b5a</uid>
<version_id>719747de-3cff-4241-aab0-2a8dfd6a55ff</version_id>
<version_modified>20170627T180334Z</version_modified>
<version_id>7aefe40e-5ffe-4456-a55e-2cd5ef57f931</version_id>
<version_modified>20170819T133725Z</version_modified>
<xml_checksum>9339BE01</xml_checksum>
<class_name>ApplyUpgrade</class_name>
<display_name>Apply Upgrade</display_name>
Expand Down Expand Up @@ -4255,7 +4255,7 @@
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>B3146D8C</checksum>
<checksum>0A5497D6</checksum>
</file>
</files>
</measure>
48 changes: 17 additions & 31 deletions measures/BuildExistingModel/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ def arguments(model)
building_id.setDescription("The building number (between 1 and the number of samples).")
args << building_id

workflow_json = OpenStudio::Ruleset::OSArgument.makeStringArgument("workflow_json", false)
workflow_json.setDisplayName("Workflow JSON")
workflow_json.setDescription("The name of the JSON file (in the resources dir) that dictates the order in which measures are to be run. If not provided, the order specified in resources/options_lookup.tsv will be used.")
args << workflow_json

number_of_buildings_represented = OpenStudio::Ruleset::OSArgument.makeIntegerArgument("number_of_buildings_represented", false)
number_of_buildings_represented.setDisplayName("Number of Buildings Represented")
number_of_buildings_represented.setDescription("The total number of buildings represented by the existing building models.")
Expand All @@ -49,6 +54,7 @@ def run(model, runner, user_arguments)
end

building_id = runner.getIntegerArgumentValue("building_id",user_arguments)
workflow_json = runner.getOptionalStringArgumentValue("workflow_json",user_arguments)
number_of_buildings_represented = runner.getOptionalIntegerArgumentValue("number_of_buildings_represented",user_arguments)

# Get file/dir paths
Expand All @@ -57,8 +63,12 @@ def run(model, runner, user_arguments)
helper_methods_file = File.join(resources_dir, "helper_methods.rb")
measures_dir = File.join(resources_dir, "measures")
lookup_file = File.join(resources_dir, "options_lookup.tsv")
# FIXME: Temporary
buildstock_csv = File.absolute_path(File.join(characteristics_dir, "buildstock.csv")) # Should have been generated by the Worker Initialization Script (run_sampling.rb) or provided by the project
if workflow_json.is_initialized
workflow_json = File.join(resources_dir, workflow_json.get)
else
workflow_json = nil
end

# Load helper_methods
require File.join(File.dirname(helper_methods_file), File.basename(helper_methods_file, File.extname(helper_methods_file)))
Expand Down Expand Up @@ -97,38 +107,10 @@ def run(model, runner, user_arguments)

end

# Create a workflow based on the measures we're going to call. Convenient for debugging.
workflowJSON = OpenStudio::WorkflowJSON.new
workflowJSON.setOswPath(File.expand_path("../measures.osw"))
workflowJSON.addMeasurePath("measures")
workflowJSON.setSeedFile("seeds/EmptySeedModel.osm")
steps = OpenStudio::WorkflowStepVector.new
measures.keys.each do |measure_subdir|
step = OpenStudio::MeasureStep.new(measure_subdir)
measures[measure_subdir].each do |k,v|
next if v.nil?
step.setArgument(k, v)
end
steps.push(step)
if not apply_measures(measures_dir, measures, runner, model, workflow_json, "measures.osw", true)
return false
end
workflowJSON.setWorkflowSteps(steps)
workflowJSON.save

# Call each measure for sample to build up model
measures.keys.each do |measure_subdir|
# Gather measure arguments and call measure
full_measure_path = File.join(measures_dir, measure_subdir, "measure.rb")
check_file_exists(full_measure_path, runner)

measure_instance = get_measure_instance(full_measure_path)
argument_map = get_argument_map(model, measure_instance, measures[measure_subdir], lookup_file, measure_subdir, runner)
print_measure_call(measures[measure_subdir], measure_subdir, runner)

if not run_measure(model, measure_instance, argument_map, runner)
return false
end
end

# Determine weight
if not number_of_buildings_represented.nil?
total_samples = nil
Expand All @@ -146,6 +128,10 @@ def run(model, runner, user_arguments)
weight = number_of_buildings_represented.get / total_samples
register_value(runner, "weight", weight.to_s)
end

if not workflow_json.nil?
register_value(runner, "workflow_json", workflow_json)
end

return true

Expand Down
14 changes: 11 additions & 3 deletions measures/BuildExistingModel/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
<schema_version>3.0</schema_version>
<name>build_existing_model</name>
<uid>943cde68-f4bf-4e2e-a984-ab70cba2669c</uid>
<version_id>f426c5a1-9242-44fe-9017-818889b077b5</version_id>
<version_modified>20170512T141603Z</version_modified>
<version_id>9a86220c-b13b-4877-a5da-e6e5485d5c67</version_id>
<version_modified>20170819T140746Z</version_modified>
<xml_checksum>9339BE01</xml_checksum>
<class_name>BuildExistingModel</class_name>
<display_name>Build Existing Model</display_name>
Expand All @@ -18,6 +18,14 @@
<required>true</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>workflow_json</name>
<display_name>Workflow JSON</display_name>
<description>The name of the JSON file (in the resources dir) that dictates the order in which measures are to be run. If not provided, the order specified in resources/options_lookup.tsv will be used.</description>
<type>String</type>
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>number_of_buildings_represented</name>
<display_name>Number of Buildings Represented</display_name>
Expand Down Expand Up @@ -94,7 +102,7 @@
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>79944522</checksum>
<checksum>7885B981</checksum>
</file>
</files>
</measure>
82 changes: 82 additions & 0 deletions measures/ServerDirectoryCleanup/measure.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
#start the measure
class ServerDirectoryCleanup < OpenStudio::Ruleset::ReportingUserScript

#define the name that a user will see, this method may be deprecated as
#the display name in PAT comes from the name field in measure.xml
def name
"Server Directory Cleanup"
end

#define the arguments that the user will input
def arguments()
args = OpenStudio::Ruleset::OSArgumentVector.new
end #end the arguments method

#define what happens when the measure is run
def run(runner, user_arguments)
super(runner, user_arguments)

#use the built-in error checking
unless runner.validateUserArguments(arguments, user_arguments)
false
end

initial_string = "The following files were in the local run directory prior to the execution of this measure: "
Dir.entries("./../").each do |f|
initial_string << "#{f}, "
end
initial_string = initial_string[0..(initial_string.length-3)]+"."
runner.registerInitialCondition(initial_string)

Dir.glob("./../*.sql").each do |f|
File.delete(f)
runner.registerInfo("Deleted #{f} from the run directory.") if !File.exist?(f)
end
Dir.glob("./../*.audit").each do |f|
File.delete(f)
runner.registerInfo("Deleted #{f} from the run directory.") if !File.exist?(f)
end
Dir.glob("./../in.osm").each do |f|
File.delete(f)
runner.registerInfo("Deleted #{f} from the run directory.") if !File.exist?(f)
end
Dir.glob("./../*.bnd").each do |f|
File.delete(f)
runner.registerInfo("Deleted #{f} from the run directory.") if !File.exist?(f)
end
Dir.glob("./../*.eio").each do |f|
File.delete(f)
runner.registerInfo("Deleted #{f} from the run directory.") if !File.exist?(f)
end
Dir.glob("./../*.shd").each do |f|
File.delete(f)
runner.registerInfo("Deleted #{f} from the run directory.") if !File.exist?(f)
end
Dir.glob("./../*.mdd").each do |f|
File.delete(f)
runner.registerInfo("Deleted #{f} from the run directory.") if !File.exist?(f)
end
Dir.glob("./../*.eso").each do |f|
File.delete(f)
runner.registerInfo("Deleted #{f} from the run directory.") if !File.exist?(f)
end
Dir.glob("./../pre-preprocess.idf").each do |f|
File.delete(f)
runner.registerInfo("Deleted #{f} from the run directory.") if !File.exist?(f)
end

final_string = "The following files were in the local run directory following the execution of this measure: "
Dir.entries("./..").each do |f|
final_string << "#{f}, "
end
final_string = final_string[0..(final_string.length-3)]+"."
runner.registerFinalCondition(final_string)

true

end #end the run method

end #end the measure

#this allows the measure to be use by the application
ServerDirectoryCleanup.new.registerWithApplication
43 changes: 43 additions & 0 deletions measures/ServerDirectoryCleanup/measure.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<measure>
<schema_version>3.0</schema_version>
<name>server_directory_cleanup</name>
<uid>ec7d04ad-0b7b-495b-825a-e1b6d28d1d3f</uid>
<version_id>06036ce2-8e98-45e1-9043-78e2aa60a26a</version_id>
<version_modified>20170511T212356Z</version_modified>
<xml_checksum>5F1EDF75</xml_checksum>
<class_name>ServerDirectoryCleanup</class_name>
<display_name>Server Directory Cleanup</display_name>
<description>Removes a significant portion of the saved results from each run, helping to alleviate memory problems.</description>
<modeler_description>Use during large server runs, when individual sequel files and the like will not be needed.</modeler_description>
<arguments/>
<outputs/>
<provenances/>
<tags>
<tag>Calibration</tag>
</tags>
<attributes>
<attribute>
<name>Measure Type</name>
<value>ReportingMeasure</value>
<datatype>string</datatype>
</attribute>
<attribute>
<name>Uses SketchUp API</name>
<value>false</value>
<datatype>boolean</datatype>
</attribute>
</attributes>
<files>
<file>
<version>
<software_program>OpenStudio</software_program>
<identifier>1.11.5</identifier>
<min_compatible>1.11.5</min_compatible>
</version>
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>942440CE</checksum>
</file>
</files>
</measure>

This file was deleted.

0 comments on commit 77290e0

Please sign in to comment.