urbanopt-reopt 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.github/release.yml +25 -0
 - data/.github/workflows/{nightly_build.yml → nightly_ci_build.yml} +14 -9
 - data/CHANGELOG.md +24 -7
 - data/Gemfile +1 -1
 - data/LICENSE.md +26 -11
 - data/RDOC_MAIN.md +13 -13
 - data/README.md +15 -14
 - data/developer_nrel_key.rb +2 -27
 - data/doc_templates/LICENSE.md +26 -11
 - data/doc_templates/copyright_erb.txt +32 -16
 - data/doc_templates/copyright_js.txt +2 -2
 - data/doc_templates/copyright_ruby.txt +2 -27
 - data/docs/README.md +12 -12
 - data/docs/package-lock.json +4806 -4836
 - data/index.md +13 -13
 - data/lib/urbanopt/reopt/extension.rb +2 -27
 - data/lib/urbanopt/reopt/feature_report_adapter.rb +14 -39
 - data/lib/urbanopt/reopt/reopt_lite_api.rb +24 -49
 - data/lib/urbanopt/reopt/reopt_logger.rb +2 -27
 - data/lib/urbanopt/reopt/reopt_post_processor.rb +25 -50
 - data/lib/urbanopt/reopt/reopt_schema/reopt_input_schema.json +1 -1
 - data/lib/urbanopt/reopt/reopt_schema/reopt_output_schema.json +1 -1
 - data/lib/urbanopt/reopt/scenario/reopt_scenario_csv.rb +9 -34
 - data/lib/urbanopt/reopt/scenario_report_adapter.rb +17 -42
 - data/lib/urbanopt/reopt/utilities.rb +2 -27
 - data/lib/urbanopt/reopt/version.rb +3 -28
 - data/lib/urbanopt/reopt.rb +2 -27
 - data/lib/urbanopt/reopt_scenario.rb +2 -27
 - data/lib/urbanopt-reopt.rb +2 -27
 - data/urbanopt-reopt.gemspec +6 -5
 - metadata +33 -20
 - data/Jenkinsfile +0 -10
 
    
        data/docs/README.md
    CHANGED
    
    | 
         @@ -2,8 +2,8 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            ### <StaticLink target="\_blank" href="rdoc/">Rdocs</StaticLink>
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            The **URBANopt<sup>™</sup> REopt Gem** extends a **URBANopt::Reporting::DefaultReports::ScenarioReport** and **URBANopt::Reporting::DefaultReports::FeatureReport** with the ability to derive cost-optimal distributed energy resource (DER) technology sizes and annual dispatch strageties via the <StaticLink target="\_blank" href="https://reopt.nrel.gov/tool">REopt 
     | 
| 
       6 
     | 
    
         
            -
            REopt  
     | 
| 
      
 5 
     | 
    
         
            +
            The **URBANopt<sup>™</sup> REopt Gem** extends a **URBANopt::Reporting::DefaultReports::ScenarioReport** and **URBANopt::Reporting::DefaultReports::FeatureReport** with the ability to derive cost-optimal distributed energy resource (DER) technology sizes and annual dispatch strageties via the <StaticLink target="\_blank" href="https://reopt.nrel.gov/tool">REopt</StaticLink> decision support platform.
         
     | 
| 
      
 6 
     | 
    
         
            +
            REopt is a technoeconomic model which leverages mixed integer linear programming to identify the cost-optimal sizing of solar PV, Wind, Storage and/or diesel generation given an electric load profile, a utility rate tariff and other technoeconomic parameters. See <StaticLink target="\_blank" href="https://developer.nrel.gov/docs/energy-optimization/reopt/v2/">https://developer.nrel.gov/docs/energy-optimization/reopt/v2/</StaticLink> for more detailed information on input parameters and default assumptions.
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            The REopt Gem accomplishes three basic functions (described more below in the _Functionality_ section):
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
         @@ -49,7 +49,7 @@ Or install it yourself as: 
     | 
|
| 
       49 
49 
     | 
    
         | 
| 
       50 
50 
     | 
    
         
             
            ## Functionality
         
     | 
| 
       51 
51 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
            This gem is used to call the REopt  
     | 
| 
      
 52 
     | 
    
         
            +
            This gem is used to call the REopt API on a Scenario Report or Feature Report to update the object's Distributed Generation attributes (including system financial and sizing metrics) as shown in an example below:
         
     | 
| 
       53 
53 
     | 
    
         
             
            ```
         
     | 
| 
       54 
54 
     | 
    
         
             
            	"distributed_generation": {
         
     | 
| 
       55 
55 
     | 
    
         
             
            	      "lcc_us_dollars": 100000000.0,
         
     | 
| 
         @@ -99,7 +99,7 @@ Moreover, the following optimal dispatch fields are added to its timeseries CSV. 
     | 
|
| 
       99 
99 
     | 
    
         
             
            | ElectricityProduced:Wind:ToGrid          | kWh     |
         
     | 
| 
       100 
100 
     | 
    
         | 
| 
       101 
101 
     | 
    
         | 
| 
       102 
     | 
    
         
            -
            The REopt  
     | 
| 
      
 102 
     | 
    
         
            +
            The REopt has default values for all non-required input parameters that are used unless the user specifies custom assumptions. See <StaticLink target="\_blank" href="https://developer.nrel.gov/docs/energy-optimization/reopt/v2/">https://developer.nrel.gov/docs/energy-optimization/reopt/v2/</StaticLink> for more detailed information on input parameters and default assumptions.
         
     | 
| 
       103 
103 
     | 
    
         | 
| 
       104 
104 
     | 
    
         
             
            <b>Note:</b> Required attributes for a REopt run include latitude and longitude, parsed from the Feature or Scenario Report attributes. If no utility rate is specified in your assumptions, then a constant rate of $0.13 is assumed without demand charges. Also, by default, only solar PV and storage are considered in the analysis (i.e. Wind and Generators are excluded from consideration).
         
     | 
| 
       105 
105 
     | 
    
         | 
| 
         @@ -120,19 +120,19 @@ feature_reports_hash = {} # <insert a valid Feature Report hash here with latitu 
     | 
|
| 
       120 
120 
     | 
    
         
             
            #Create a Feature Report
         
     | 
| 
       121 
121 
     | 
    
         
             
            feature_report = URBANopt::Reporting::DefaultReports::FeatureReport.new(feature_reports_hash)
         
     | 
| 
       122 
122 
     | 
    
         | 
| 
       123 
     | 
    
         
            -
            #Specify a file name where REopt  
     | 
| 
      
 123 
     | 
    
         
            +
            #Specify a file name where REopt results will be written in JSON format
         
     | 
| 
       124 
124 
     | 
    
         
             
            reopt_output_file = File.join(feature_report.directory_name, 'feature_report_reopt_run.json')
         
     | 
| 
       125 
125 
     | 
    
         | 
| 
       126 
     | 
    
         
            -
            #Specify a file name where the new timeseries CSV will be written after REopt  
     | 
| 
      
 126 
     | 
    
         
            +
            #Specify a file name where the new timeseries CSV will be written after REopt has determined cost optimal dispatch
         
     | 
| 
       127 
127 
     | 
    
         
             
            timeseries_output_file = File.join(feature_report.directory_name, 'feature_report_timeseries.csv')
         
     | 
| 
       128 
128 
     | 
    
         | 
| 
       129 
     | 
    
         
            -
            #Specify non-default REopt  
     | 
| 
      
 129 
     | 
    
         
            +
            #Specify non-default REopt assumptions, saved in JSON format, to be used in calling the API
         
     | 
| 
       130 
130 
     | 
    
         
             
            reopt_assumptions_file = File.join(File.dirname(__FILE__), '../files/reopt_assumptions_basic.json')
         
     | 
| 
       131 
131 
     | 
    
         | 
| 
       132 
     | 
    
         
            -
            #Create a REopt  
     | 
| 
      
 132 
     | 
    
         
            +
            #Create a REopt Post Processor to call the API, note you will need a Developer.nrel.gov API key in this step
         
     | 
| 
       133 
133 
     | 
    
         
             
            reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(nil, nil, nil, DEVELOPER_NREL_KEY)
         
     | 
| 
       134 
134 
     | 
    
         | 
| 
       135 
     | 
    
         
            -
            #Call REopt  
     | 
| 
      
 135 
     | 
    
         
            +
            #Call REopt with the post processor to update the feature's distributed generation attributes and timeseries CSV.
         
     | 
| 
       136 
136 
     | 
    
         
             
            updated_feature_report = reopt_post_processor.run_feature_report(feature_report,reopt_assumptions_file,reopt_output_file,timeseries_output_file)
         
     | 
| 
       137 
137 
     | 
    
         | 
| 
       138 
138 
     | 
    
         
             
            ```
         
     | 
| 
         @@ -162,13 +162,13 @@ scenario_report = URBANopt::Reporting::DefaultReports::ScenarioReport.new({:dire 
     | 
|
| 
       162 
162 
     | 
    
         
             
              scenario_report.add_feature_report(feature_report)
         
     | 
| 
       163 
163 
     | 
    
         
             
            end
         
     | 
| 
       164 
164 
     | 
    
         | 
| 
       165 
     | 
    
         
            -
            #Specify non-default REopt  
     | 
| 
      
 165 
     | 
    
         
            +
            #Specify non-default REopt assumptions, saved in JSON format, to be used in calling the API
         
     | 
| 
       166 
166 
     | 
    
         
             
            reopt_assumptions_file = File.join(File.dirname(__FILE__), 'files/reopt_assumptions_basic.json')
         
     | 
| 
       167 
167 
     | 
    
         | 
| 
       168 
     | 
    
         
            -
            #Create a REopt  
     | 
| 
      
 168 
     | 
    
         
            +
            #Create a REopt Post Processor to call the API, note you will need a Developer.nrel.gov API key in this step
         
     | 
| 
       169 
169 
     | 
    
         
             
            reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(scenario_report, reopt_assumptions_file, nil, DEVELOPER_NREL_KEY)
         
     | 
| 
       170 
170 
     | 
    
         | 
| 
       171 
     | 
    
         
            -
            #Call REopt  
     | 
| 
      
 171 
     | 
    
         
            +
            #Call REopt with the post processor once on the sceanrio's aggregated load to update the scenario's distributed generation attributes and timeseries CSV.
         
     | 
| 
       172 
172 
     | 
    
         
             
            updated_scenario_report = reopt_post_processor.run_scenario_report(scenario_report)
         
     | 
| 
       173 
173 
     | 
    
         | 
| 
       174 
174 
     | 
    
         
             
            ```
         
     |