Skip to content

Commit 1fd764b

Browse files
committed
Rename energy limits to activity limits
1 parent db02ff5 commit 1fd764b

6 files changed

Lines changed: 41 additions & 47 deletions

File tree

src/asset.rs

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,11 @@ impl Asset {
8585
self.commission_year + self.process_parameter.lifetime
8686
}
8787

88-
/// Get the energy limits for this asset in a particular time slice
89-
///
90-
/// This is an absolute max and min on the energy produced/consumed in that time slice.
91-
pub fn get_energy_limits(&self, time_slice: &TimeSliceID) -> RangeInclusive<f64> {
88+
/// Get the activity limits for this asset in a particular time slice
89+
pub fn get_activity_limits(&self, time_slice: &TimeSliceID) -> RangeInclusive<f64> {
9290
let limits = self
9391
.process
94-
.energy_limits
92+
.activity_limits
9593
.get(&(
9694
self.region_id.clone(),
9795
self.commission_year,
@@ -100,12 +98,11 @@ impl Asset {
10098
.unwrap();
10199
let max_act = self.maximum_activity();
102100

103-
// Multiply the fractional energy limits by this asset's maximum activity to get energy
104101
// limits in real units (which are user defined)
105102
(max_act * limits.start())..=(max_act * limits.end())
106103
}
107104

108-
/// Maximum activity for this asset (energy produced/consumed per year)
105+
/// Maximum activity for this asset
109106
pub fn maximum_activity(&self) -> f64 {
110107
self.capacity * self.process_parameter.capacity_to_activity
111108
}
@@ -312,7 +309,7 @@ mod tests {
312309
use super::*;
313310
use crate::fixture::{assert_error, process};
314311
use crate::process::{
315-
Process, ProcessEnergyLimitsMap, ProcessFlowsMap, ProcessParameter, ProcessParameterMap,
312+
Process, ProcessActivityLimitsMap, ProcessFlowsMap, ProcessParameter, ProcessParameterMap,
316313
};
317314
use itertools::{assert_equal, Itertools};
318315
use rstest::{fixture, rstest};
@@ -387,7 +384,7 @@ mod tests {
387384
id: "process1".into(),
388385
description: "Description".into(),
389386
years: vec![2010, 2020],
390-
energy_limits: ProcessEnergyLimitsMap::new(),
387+
activity_limits: ProcessActivityLimitsMap::new(),
391388
flows: ProcessFlowsMap::new(),
392389
parameters: process_parameter_map,
393390
regions: HashSet::from(["GBR".into()]),
@@ -410,7 +407,7 @@ mod tests {
410407
}
411408

412409
#[test]
413-
fn test_asset_get_energy_limits() {
410+
fn test_asset_get_activity_limits() {
414411
let time_slice = TimeSliceID {
415412
season: "winter".into(),
416413
time_of_day: "day".into(),
@@ -429,9 +426,9 @@ mod tests {
429426
.map(|&year| (("GBR".into(), year), process_param.clone()))
430427
.collect();
431428
let fraction_limits = 1.0..=f64::INFINITY;
432-
let mut energy_limits = ProcessEnergyLimitsMap::new();
429+
let mut activity_limits = ProcessActivityLimitsMap::new();
433430
for year in [2010, 2020] {
434-
energy_limits.insert(
431+
activity_limits.insert(
435432
("GBR".into(), year, time_slice.clone()),
436433
fraction_limits.clone(),
437434
);
@@ -440,7 +437,7 @@ mod tests {
440437
id: "process1".into(),
441438
description: "Description".into(),
442439
years: vec![2010, 2020],
443-
energy_limits,
440+
activity_limits,
444441
flows: ProcessFlowsMap::new(),
445442
parameters: process_parameter_map,
446443
regions: HashSet::from(["GBR".into()]),
@@ -454,7 +451,7 @@ mod tests {
454451
)
455452
.unwrap();
456453

457-
assert_eq!(asset.get_energy_limits(&time_slice), 6.0..=f64::INFINITY);
454+
assert_eq!(asset.get_activity_limits(&time_slice), 6.0..=f64::INFINITY);
458455
}
459456

460457
#[rstest]

src/fixture.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use crate::agent::{
77
use crate::asset::{Asset, AssetPool};
88
use crate::commodity::{Commodity, CommodityID, CommodityLevyMap, CommodityType, DemandMap};
99
use crate::process::{
10-
Process, ProcessEnergyLimitsMap, ProcessFlowsMap, ProcessMap, ProcessParameter,
10+
Process, ProcessActivityLimitsMap, ProcessFlowsMap, ProcessMap, ProcessParameter,
1111
ProcessParameterMap,
1212
};
1313
use crate::region::RegionID;
@@ -114,7 +114,7 @@ pub fn process(
114114
id: "process1".into(),
115115
description: "Description".into(),
116116
years: vec![2010, 2020],
117-
energy_limits: ProcessEnergyLimitsMap::new(),
117+
activity_limits: ProcessActivityLimitsMap::new(),
118118
flows: ProcessFlowsMap::new(),
119119
parameters: process_parameter_map,
120120
regions: region_ids,

src/input/agent/search_space.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,9 @@ where
157157
mod tests {
158158
use super::*;
159159
use crate::fixture::{agents, assert_error, region_ids};
160-
use crate::process::{ProcessEnergyLimitsMap, ProcessFlowsMap, ProcessID, ProcessParameterMap};
160+
use crate::process::{
161+
ProcessActivityLimitsMap, ProcessFlowsMap, ProcessID, ProcessParameterMap,
162+
};
161163
use crate::region::RegionID;
162164
use rstest::{fixture, rstest};
163165
use std::iter;
@@ -171,7 +173,7 @@ mod tests {
171173
id: id.clone(),
172174
description: "Description".into(),
173175
years: vec![2010, 2020],
174-
energy_limits: ProcessEnergyLimitsMap::new(),
176+
activity_limits: ProcessActivityLimitsMap::new(),
175177
flows: ProcessFlowsMap::new(),
176178
parameters: ProcessParameterMap::new(),
177179
regions: region_ids.clone(),

src/input/process.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
use super::*;
33
use crate::commodity::{Commodity, CommodityID, CommodityMap, CommodityType};
44
use crate::process::{
5-
Process, ProcessEnergyLimitsMap, ProcessFlowsMap, ProcessID, ProcessMap, ProcessParameterMap,
5+
Process, ProcessActivityLimitsMap, ProcessFlowsMap, ProcessID, ProcessMap, ProcessParameterMap,
66
};
77
use crate::region::{parse_region_str, RegionID};
88
use crate::time_slice::{TimeSliceInfo, TimeSliceSelection};
@@ -55,7 +55,7 @@ pub fn read_processes(
5555
let mut processes = read_processes_file(model_dir, milestone_years, region_ids)?;
5656
let process_ids = processes.keys().cloned().collect();
5757

58-
let mut energy_limits =
58+
let mut activity_limits =
5959
read_process_availabilities(model_dir, &process_ids, &processes, time_slice_info)?;
6060
let mut flows = read_process_flows(model_dir, &process_ids, &processes, commodities)?;
6161
let mut parameters = read_process_parameters(model_dir, &process_ids, &processes)?;
@@ -64,15 +64,15 @@ pub fn read_processes(
6464
validate_commodities(
6565
commodities,
6666
&flows,
67-
&energy_limits,
67+
&activity_limits,
6868
region_ids,
6969
milestone_years,
7070
time_slice_info,
7171
)?;
7272

7373
// Add data to Process objects
7474
for (id, process) in processes.iter_mut() {
75-
process.energy_limits = energy_limits
75+
process.activity_limits = activity_limits
7676
.remove(id)
7777
.with_context(|| format!("Missing availabilities for process {id}"))?;
7878
process.flows = flows
@@ -139,7 +139,7 @@ where
139139
id: process_raw.id.clone(),
140140
description: process_raw.description,
141141
years,
142-
energy_limits: ProcessEnergyLimitsMap::new(),
142+
activity_limits: ProcessActivityLimitsMap::new(),
143143
flows: ProcessFlowsMap::new(),
144144
parameters: ProcessParameterMap::new(),
145145
regions,
@@ -158,7 +158,7 @@ where
158158
fn validate_commodities(
159159
commodities: &CommodityMap,
160160
flows: &HashMap<ProcessID, ProcessFlowsMap>,
161-
availabilities: &HashMap<ProcessID, ProcessEnergyLimitsMap>,
161+
availabilities: &HashMap<ProcessID, ProcessActivityLimitsMap>,
162162
region_ids: &HashSet<RegionID>,
163163
milestone_years: &[u32],
164164
time_slice_info: &TimeSliceInfo,
@@ -227,7 +227,7 @@ fn validate_svd_commodity(
227227
time_slice_info: &TimeSliceInfo,
228228
commodity: &Commodity,
229229
flows: &HashMap<ProcessID, ProcessFlowsMap>,
230-
availabilities: &HashMap<ProcessID, ProcessEnergyLimitsMap>,
230+
availabilities: &HashMap<ProcessID, ProcessActivityLimitsMap>,
231231
region_id: &RegionID,
232232
year: &u32,
233233
ts_selection: &TimeSliceSelection,
@@ -395,7 +395,7 @@ mod tests {
395395
) {
396396
let availabilities = HashMap::from_iter(vec![(
397397
"process1".into(),
398-
ProcessEnergyLimitsMap::from_iter(vec![(
398+
ProcessActivityLimitsMap::from_iter(vec![(
399399
("GBR".into(), 2010, time_slice.clone()),
400400
0.1..=0.9,
401401
)]),
@@ -424,7 +424,7 @@ mod tests {
424424
// Invalid scenario: no availability
425425
let availabilities = HashMap::from_iter(vec![(
426426
"process1".into(),
427-
ProcessEnergyLimitsMap::from_iter(vec![(
427+
ProcessActivityLimitsMap::from_iter(vec![(
428428
("GBR".into(), 2010, time_slice.clone()),
429429
0.0..=0.0,
430430
)]),

src/input/process/availability.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! Code for reading process availabilities CSV file
22
use super::super::*;
33
use crate::id::IDCollection;
4-
use crate::process::{Process, ProcessEnergyLimitsMap, ProcessID};
4+
use crate::process::{Process, ProcessActivityLimitsMap, ProcessID};
55
use crate::region::parse_region_str;
66
use crate::time_slice::TimeSliceInfo;
77
use crate::year::parse_year_str;
@@ -82,7 +82,7 @@ pub fn read_process_availabilities(
8282
process_ids: &IndexSet<ProcessID>,
8383
processes: &HashMap<ProcessID, Process>,
8484
time_slice_info: &TimeSliceInfo,
85-
) -> Result<HashMap<ProcessID, ProcessEnergyLimitsMap>> {
85+
) -> Result<HashMap<ProcessID, ProcessActivityLimitsMap>> {
8686
let file_path = model_dir.join(PROCESS_AVAILABILITIES_FILE_NAME);
8787
let process_availabilities_csv = read_csv(&file_path)?;
8888
read_process_availabilities_from_iter(
@@ -100,7 +100,7 @@ fn read_process_availabilities_from_iter<I>(
100100
process_ids: &IndexSet<ProcessID>,
101101
processes: &HashMap<ProcessID, Process>,
102102
time_slice_info: &TimeSliceInfo,
103-
) -> Result<HashMap<ProcessID, ProcessEnergyLimitsMap>>
103+
) -> Result<HashMap<ProcessID, ProcessActivityLimitsMap>>
104104
where
105105
I: Iterator<Item = ProcessAvailabilityRaw>,
106106
{
@@ -130,10 +130,10 @@ where
130130
// Get timeslices
131131
let ts_selection = time_slice_info.get_selection(&record.time_slice)?;
132132

133-
// Insert the energy limit into the map
133+
// Insert the activity limit into the map
134134
let entry = map
135135
.entry(id.clone())
136-
.or_insert_with(ProcessEnergyLimitsMap::new);
136+
.or_insert_with(ProcessActivityLimitsMap::new);
137137
for (time_slice, ts_length) in ts_selection.iter(time_slice_info) {
138138
let bounds = record.to_bounds(ts_length);
139139

@@ -149,14 +149,14 @@ where
149149
}
150150
}
151151

152-
validate_energy_limits_maps(&map, processes, time_slice_info)?;
152+
validate_activity_limits_maps(&map, processes, time_slice_info)?;
153153

154154
Ok(map)
155155
}
156156

157-
/// Check that every energy limits covers every time slice, and all regions/years of the process
158-
fn validate_energy_limits_maps(
159-
map: &HashMap<ProcessID, ProcessEnergyLimitsMap>,
157+
/// Check that the activity limits cover every time slice and all regions/years of the process
158+
fn validate_activity_limits_maps(
159+
map: &HashMap<ProcessID, ProcessActivityLimitsMap>,
160160
processes: &HashMap<ProcessID, Process>,
161161
time_slice_info: &TimeSliceInfo,
162162
) -> Result<()> {

src/process.rs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,11 @@ define_id_type! {ProcessID}
1515
/// A map of [`Process`]es, keyed by process ID
1616
pub type ProcessMap = IndexMap<ProcessID, Rc<Process>>;
1717

18-
/// A map indicating relative energy limits for a [`Process`] throughout the year.
18+
/// A map indicating activity limits for a [`Process`] throughout the year.
1919
///
20-
/// The value is calculated as availability multiplied by time slice length. Note that it is a
21-
/// **fraction** of energy for the year; to calculate **actual** energy limits for a given time
22-
/// slice you need to know the maximum activity (energy per year) for the specific instance of a
23-
/// [`Process`] in use.
24-
///
25-
/// The limits are given as ranges, depending on the user-specified limit type and value for
26-
/// availability.
27-
pub type ProcessEnergyLimitsMap = HashMap<(RegionID, u32, TimeSliceID), RangeInclusive<f64>>;
20+
/// The value is calculated as availability multiplied by time slice length. The limits are given as
21+
/// ranges, depending on the user-specified limit type and value for availability.
22+
pub type ProcessActivityLimitsMap = HashMap<(RegionID, u32, TimeSliceID), RangeInclusive<f64>>;
2823

2924
/// A map of [`ProcessParameter`]s, keyed by region and year
3025
pub type ProcessParameterMap = HashMap<(RegionID, u32), Rc<ProcessParameter>>;
@@ -43,8 +38,8 @@ pub struct Process {
4338
pub description: String,
4439
/// The years in which this process is available for investment
4540
pub years: Vec<u32>,
46-
/// Limits on energy consumption/production for each time slice (as a fraction of maximum)
47-
pub energy_limits: ProcessEnergyLimitsMap,
41+
/// Limits on activity for each time slice (as a fraction of maximum)
42+
pub activity_limits: ProcessActivityLimitsMap,
4843
/// Maximum annual commodity flows for this process
4944
pub flows: ProcessFlowsMap,
5045
/// Additional parameters for this process

0 commit comments

Comments
 (0)