Class: AddMeter
- Inherits:
-
OpenStudio::Measure::ModelMeasure
- Object
- OpenStudio::Measure::ModelMeasure
- AddMeter
- Defined in:
- lib/measures/AddMeter/measure.rb
Overview
start the measure
Instance Method Summary collapse
-
#arguments(model) ⇒ Object
define the arguments that the user will input.
-
#description ⇒ Object
human readable description.
-
#modeler_description ⇒ Object
human readable description of modeling approach.
-
#name ⇒ Object
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.
-
#run(model, runner, user_arguments) ⇒ Object
define what happens when the measure is run.
Instance Method Details
#arguments(model) ⇒ Object
define the arguments that the user will input
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/measures/AddMeter/measure.rb', line 31 def arguments(model) args = OpenStudio::Measure::OSArgumentVector.new # make an argument for the meter name meter_name = OpenStudio::Measure::OSArgument.makeStringArgument('meter_name', true) meter_name.setDisplayName('Enter Meter Name') meter_name.setDefaultValue('Electricity:Facility') args << meter_name # make an argument for the electric tariff reporting_frequency_chs = OpenStudio::StringVector.new reporting_frequency_chs << 'detailed' reporting_frequency_chs << 'timestep' reporting_frequency_chs << 'hourly' reporting_frequency_chs << 'daily' reporting_frequency_chs << 'monthly' reporting_frequency = OpenStudio::Measure::OSArgument.makeChoiceArgument('reporting_frequency', reporting_frequency_chs, true) reporting_frequency.setDisplayName('Reporting Frequency') reporting_frequency.setDefaultValue('hourly') args << reporting_frequency return args end |
#description ⇒ Object
human readable description
21 22 23 |
# File 'lib/measures/AddMeter/measure.rb', line 21 def description return 'This measure adds an meter at the requested reporting frequency.' end |
#modeler_description ⇒ Object
human readable description of modeling approach
26 27 28 |
# File 'lib/measures/AddMeter/measure.rb', line 26 def modeler_description return 'The measure just passes in the string and does not validate that it is a proper meter name. It is up to the user to know this or to look at the .mdd file from a previous simulation run.' end |
#name ⇒ Object
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
16 17 18 |
# File 'lib/measures/AddMeter/measure.rb', line 16 def name return 'Add Meter' end |
#run(model, runner, user_arguments) ⇒ Object
define what happens when the measure is run
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 105 |
# File 'lib/measures/AddMeter/measure.rb', line 56 def run(model, runner, user_arguments) super(model, runner, user_arguments) # use the built-in error checking if !runner.validateUserArguments(arguments(model), user_arguments) return false end # assign the user inputs to variables meter_name = runner.getStringArgumentValue('meter_name', user_arguments) reporting_frequency = runner.getStringArgumentValue('reporting_frequency', user_arguments) # check the user_name for reasonableness if meter_name == '' runner.registerError('No meter name was entered.') return false end meters = model.getOutputMeters # reporting initial condition of model runner.registerInitialCondition("The model started with #{meters.size} meter objects.") # flag to add meter add_flag = true # OpenStudio doesn't seemt to like two meters of the same name, even if they have different reporting frequencies. meters.each do |meter| if meter.name == meter_name runner.registerWarning("A meter named #{meter_name} already exists. One will not be added to the model.") if meter.reportingFrequency != reporting_frequency meter.setReportingFrequency(reporting_frequency) runner.registerInfo("Changing reporting frequency of existing meter to #{reporting_frequency}.") end add_flag = false end end if add_flag meter = OpenStudio::Model::OutputMeter.new(model) meter.setName(meter_name) meter.setReportingFrequency(reporting_frequency) runner.registerInfo("Adding meter for #{meter.name} reporting #{reporting_frequency}") end meters = model.getOutputMeters # reporting final condition of model runner.registerFinalCondition("The model finished with #{meters.size} meter objects.") return true end |