EnergyInnovation / eps-us

Energy Policy Simulator - United States
GNU General Public License v3.0
22 stars 7 forks source link

Add industries and subprocesses to SHELF #344

Open robbieorvis opened 1 day ago

robbieorvis commented 1 day ago

Currently, we use the elec/SHELF file to convert from annual electricity demand to hourly demand in the EPS. For industry, we aggregate all industries and all electricity demand into a single value. However, in a future electrified industry sector, we would expect the shape of the curve to differ significantly from today and to vary by process level (e.g. today's electricity demand in industry is primarily from machine drive and lighting, but in the future it might be boilers and process heat).

@jrissman pointed to a potentially useful dataset in developing these parameters in an email exchange with Tom Brown. Relevant text below:

I know of some data that might get at this question. Take a look at this dataset from the National Renewable Energy Laboratory, specifically the data tables called:

Process_heat_load_shapes.gzipBoiler_load_shapes.gzip

These files give hourly behavior for boiler and for non-boiler industrial process heating, by month of the year, day of the week, and hour of the day. It also is broken out by subindustry (using “NAICS” code, but you can convert that to ISIC code or any other system of industrial classification you like) and size of the firm (by number of employees, or with “ghgrp” for firms that report their data to the EPA, which are the larger firms. It also looks like they have average, low, and high estimates of activity. For example, for the first industry (with NAICS code 311919, snack foods manufacturing) on rows 2-25, it looks like in the first month of the year, on the first day of the week, the industry operates at 20% of peak load from midnight – 6 am, gradually ramps up to full capacity from 6 am – 8 am, and operates at full capacity (1, or 100%) until 10 pm, then ramps down again to midnight.

Though these are U.S. data, I think that similar industries (like snack foods manufacturing) would have similar hourly profiles in Europe. And even if there are some differences, it’s probably more accurate to use U.S. hourly profiles than to assume baseload operation for all industries in all hours.

jrissman commented 1 day ago

I think using this dataset would be an upgrade from the simple assumption we use now. One straightforward way to use the NREL dataset would be:

Perform all the steps above twice: once for the boilers and once for the non-boiler process heating NREL tables.

This manipulation should all be done outside of Vensim, e.g., in Excel or Python or some program for manipulating large datasets. The final set of numbers we read into Vensim should have four subscripts: Industrial End Use (e.g., boilers or other process heating), Timeslice, Industry Category, and Hour of the Day. Each CSV file should probably use Industry Category and Hour of the Day on its X and Y axes, so we'll need separate CSV files for each timeslice and for the boiler and non-boiler industrial end uses.

The EPS divided non-boiler end uses up by temperature band. In Vensim, don't read the same CSV file multiple times, for each temperature band. Read the CSV file once for the first temperature band, then use an equation in Vensim to set the other temperature bands equal to the one you read the CSV file for.

For the industrial end uses that are neither boilers nor non-boiler process heating, like cooling or electrochemistry, you'll need to make an assumption that their activity profiles are identical to either the boiler or the non-boiler process heating activity profile. That mirroring should be handled in Vensim rather than reading in dozens of extra, duplicative CSV files. (We sometimes do choose to use duplicative CSV files for certain variables where we think that non-U.S. regions might have more disaggregated data than the U.S. does and want to make a distinction that we don't make in the U.S., but that's not the case here, and it would be too many excessive duplicate CSV files anyway.)

I hope that was helpful. Let me know if anything doesn't make sense or if you have any questions, @dobrien13.