Skip to content

Models ~ derUtilityCost

Bri Mills edited this page Feb 7, 2025 · 10 revisions

omf.models.derUtilityCost is a new model currently under development. Check back in the coming months for updates!

Table of Contents

Introduction

(Describes the purpose of the model and the use cases it was developed to address.)

The derUtilityCost model evaluates the financial costs of enrolling and controlling behind-the-meter distributed energy resources (DERs) using the National Renewable Energy Laboratory (NREL) Renewable Energy Optimization Tool (REopt) and the OMF virtual battery dispatch module (vbatDispatch).

The estimated runtime of the model (for the first time; including building and compiling the REopt Julia system image) is about 8.5 minutes for MacOS running with an Apple M2 cpu. On a Windows machine, building the REopt Julia system image can take about 1.5 hours. Fortunately, after this initial run the model should compile much faster (on the order of 30 seconds to 1 min for the same MacOS system).

Walkthrough

(Descriptions of required input formats, how to prepare a custom model. Inputs from the default model are used as illustrative examples.)

Inputs

General Model Inputs

  • Demand Curve (.csv file) — Default: utility_2018_kW_load.csv. The demand curve should be formatted as a .csv file with a length of 8760 values representing the hourly demand for one entire year. The demand curve should account for any existing photovoltaic installations and/or existing chemical battery storage systems owned by the utility such that net demand is portrayed. (.csv file) — Default: utility_2018_kW_load.csv. The demand curve should be formatted as a .csv file with a length of 8760 values representing the hourly demand for one entire year. Power generation from any existing photovoltaic installations and/or existing chemical battery storage systems owned by the utility should be removed such that only the remaining (net) demand is portrayed.
  • Temperature Curve (.csv file) — Default: open-meteo-denverCO-noheaders.csv. This is assumed to be the outdoor air temperature corresponding to the utility’s service area and time of the provided Demand Curve. The format is the same as the Demand Curve: a .csv file with a length of 8760 values representing the hourly temperature data in degrees Fahrenheit for the entire year. To acquire a temperature curve, go to:

    OpenMeteo Historical Weather Data API

    • Enter the latitude and longitude of the utility or cooperative service area.
    • The timezone should be the local time corresponding to the Demand Curve data.
    • Enter the Start Date (ex. 2018-01-01) and End Date (ex. 2018-12-31).
    • Under the Hourly Weather Variables section, select “Temperature” only.
    • Under Settings, select the Temperature Unit to be Fahrenheit. The other options may be left as the default values.
    • Under API Response, reload the chart by pressing the “Reload Chart” button.
    • Download the .csv file by clicking the “Download CSV” button located under the API Response Chart that was just reloaded.

    • AFTER DOWNLOADING THE .CSV, YOU MUST EDIT THE .CSV FILE BY DOING THE FOLLOWING:
      • Open the .csv file after downloading. It may be in your Downloads folder, or wherever your files go when they are downloaded. You want to be able to make changes and edit the file (e.g. the easiest way would be to open the file in Excel, Google Sheets, CryptPad Spreadsheet, OnlyOffice Spreadsheet, or some other spreadsheet program). The .csv file should look like this:
      • open-meteo-googlesheet-example
      • Delete the header rows and the timestamp column. The .csv file should look like this when you upload it to derUtilityCost:
      • open-meteo-googlesheets-example-edited
      • Be sure that there are 8760 rows total. Save the file (e.g. if you’re using Google Sheets, go to File > Download > Comma Separated Values (.csv). Now you can upload the .csv file to the Temperature Curve input!
  • Latitude (decimal) — The latitude coordinate of the utility’s approximate service area.
  • Longitude (decimal) — The longitude coordinate of the utility’s approximate service area.
  • Year (int) — The corresponding year for the Demand Curve values.

Financial Inputs

  • URDB Label (string) — The string of letters and numbers found at the end of the URDB Rate URL. The URDB label is required for REopt to run a financial analysis using this utility rate information. To obtain a URDB label for your utility rate of interest, go to the OpenEI Utility Rate Database and look up the utility rate by entering the zip code, utility name, or country.
    OpenEI_URDB OpenEI_URDB_example

For example, this URDB rate webpage https://openei.org/apps/IURDB/rate/view/5b75cfe95457a3454faf0aea would yield the URDB label 5b75cfe95457a3454faf0aea.

  • Demand Charge Cost ($/kW) (decimal) - User-defined demand charge that the utility pays per kWh.
  • Financial Projection Length (years) — Default: 25. The number of years to project out estimated financial savings. Must be between 1 and 75 years.
  • Energy Cost ($/kWh) — Cost of energy bought by the utility. i.e. wholesale (not retail) cost.
  • Energy Compensation ($/kWh) — The dollar amount per kWh compensated to the member-consumer.
  • Subsidy Amount ($) — The total subsidy amount for the entire analysis duration.

Home Diesel Generator Device Inputs

  • Number of Home Diesel Generators (int) — Default: 1000. Total number of home diesel generators to model.
  • Average Generator Capacity (kW) (float) — Default: 20. The average capacity size (kW) of each home diesel generator. The default value is based on a Generac 20 kW diesel generator.
  • Available Fuel (btu) (float) — Default: 13051195. Specify the maximum amount of generator fuel available (btu) per device. The default value is based on a Generac 20 kW diesel model with a fuel tank capacity of 95 gallons (95 gal x 137381 btu/gal = 13051195 btu).
    • The model assumes that 1 gallon of diesel fuel = 137,381 BTU according to https://www.eia.gov/energyexplained/units-and-calculators/.
  • Fuel Cost ($/mbtu) (float) — Default: 25.4. Specify the cost in USD per million BTU of fuel used for the generator.
    • Similar to the Available Fuel btu to gallon conversion, the model will convert the available fuel cost amount from dollars per btu to dollars per gallon (as the REopt model requires units of dollars per gallons) assuming that 1 gallon = 85,098 Btu. For example: $25.4/mbtu divided by 1,000,000 (to convert mbtu to btu) then multiplied by 137,381 btu/gal gives about $3.49/gallon for diesel fuel.

Chemical Energy Storage Device Inputs

  • Number of Home Chemical Batteries (int) — Default: 100. Total number of residential chemical batteries to model.
  • Can grid charge? (Yes/No) — Total number of residential chemical batteries to model.
  • Operational Power Capacity Cost ($/kW) — Default: 20. Specify the operational cost per kW of enrolling and controlling a member-consumer's battery (e.g. the API usage cost).
  • Operational Energy Capacity Cost ($/kWh) — Default: 60. Specify the operational cost per kWh of enrolling and controlling a member-consumer's battery (e.g. the API usage cost).
  • Battery Power Capacity (kW) — Default: 5 kW. Specify the battery power capacity in kW for each individual battery enrolled by a member-consumer.
  • Battery Energy Capacity (kWh) — Default: 13.5 kWh. Specify the battery energy capacity in kWh for each individual battery enrolled by a member-consumer.

Thermal Energy Storage Inputs

  • Load Type (None, Air Conditioner, Heat Pump, Water Heater) — Specify which thermal energy load type to model.
  • Number of Devices (int) — Total number of "Load Type" devices to simulate.
  • Rated Power (kW) —
  • Thermal Capacitance (kWh/°C) —
  • Thermal Resistance (°C/kW) —
  • Coefficient of Performance (decimal) — A ratio that measures the efficiency of devices such as heat pumps, air conditioners, refrigerators, etc. It is defined as the amount of useful heating or cooling provided divided by the amount of electrical energy consumed. Must be a number between 1 and 3.5.
  • Temperature Setpoint (°C) —
  • Temperature Deadband (°C) —
  • Unit Cost ($/unit) —
  • Upkeep Cost ($/unit/year) —
  • Demand Charge Cost ($/kW) —
  • Energy Cost ($/kWh) —
  • Financial Projection Length (years) —
  • Discount Rate (%) —

Model Results

(Descriptions of model outputs and how to interpret them in context of the model use case(s).)

Plot: DER Serving Load Overview

Plot: Thermal Battery Power Profile

Plot: Chemical BESS State of Charge

Table: Monthly Cost Comparison

Plot: Cash Flow Projection

Raw Input and Output Files

  • vbatResults.json
  • temp.csv
  • demand.csv
  • Scenario_test_POST.json (need to remove)
  • REoptInputs.json
  • reopt_input_scenario.json
  • results.json
  • Plot_DerServingLoadOverview.html
  • PPID.txt
  • allInputData.json
  • allOutputData.json
Clone this wiki locally