diff --git a/src/asset.rs b/src/asset.rs index 0efd02488..489c29c0a 100644 --- a/src/asset.rs +++ b/src/asset.rs @@ -872,6 +872,21 @@ impl Asset { } } + /// Whether this asset is a parent of divided assets + pub fn is_parent(&self) -> bool { + matches!(self.state, AssetState::Parent { .. }) + } + + /// Get the number of children this asset has. + /// + /// If this asset is not a parent, then `None` is returned. + pub fn num_children(&self) -> Option { + match &self.state { + AssetState::Parent { .. } => Some(self.capacity().n_units().unwrap()), + _ => None, + } + } + /// Get the group ID for this asset, if any pub fn group_id(&self) -> Option { match &self.state { diff --git a/src/simulation/optimisation.rs b/src/simulation/optimisation.rs index 7b082c873..4d168c7f3 100644 --- a/src/simulation/optimisation.rs +++ b/src/simulation/optimisation.rs @@ -11,13 +11,15 @@ use crate::region::RegionID; use crate::simulation::CommodityPrices; use crate::time_slice::{TimeSliceID, TimeSliceInfo, TimeSliceSelection}; use crate::units::{ - Activity, Capacity, Flow, Money, MoneyPerActivity, MoneyPerCapacity, MoneyPerFlow, Year, + Activity, Capacity, Dimensionless, Flow, Money, MoneyPerActivity, MoneyPerCapacity, + MoneyPerFlow, Year, }; use anyhow::{Result, bail, ensure}; use highs::{HighsModelStatus, HighsStatus, RowProblem as Problem, Sense}; use indexmap::{IndexMap, IndexSet}; -use itertools::{chain, iproduct}; -use std::collections::HashMap; +use itertools::{Itertools, chain, iproduct}; +use std::cell::Cell; +use std::collections::{HashMap, HashSet}; use std::error::Error; use std::fmt; use std::ops::Range; @@ -179,6 +181,48 @@ impl VariableMap { } } +/// Create a map of commodity flows for each asset's coeffs at every time slice. +/// +/// Note that this only includes commodity flows which relate to existing assets, so not every +/// commodity in the simulation will necessarily be represented. +fn create_flow_map<'a>( + existing_assets: &[AssetRef], + time_slice_info: &TimeSliceInfo, + activity: impl IntoIterator, +) -> FlowMap { + // The decision variables represent assets' activity levels, not commodity flows. We + // multiply this value by the flow coeffs to get commodity flows. + let mut flows = FlowMap::new(); + for (asset, time_slice, activity) in activity { + let n_units = Dimensionless(asset.num_children().unwrap_or(1) as f64); + for flow in asset.iter_flows() { + let flow_key = (asset.clone(), flow.commodity.id.clone(), time_slice.clone()); + let flow_value = activity * flow.coeff / n_units; + flows.insert(flow_key, flow_value); + } + } + + // Copy flows for each child asset + for asset in existing_assets { + if let Some(parent) = asset.parent() { + for commodity_id in asset.iter_flows().map(|flow| &flow.commodity.id) { + for time_slice in time_slice_info.iter_ids() { + let flow = flows[&(parent.clone(), commodity_id.clone(), time_slice.clone())]; + flows.insert( + (asset.clone(), commodity_id.clone(), time_slice.clone()), + flow, + ); + } + } + } + } + + // Remove all the parent assets + flows.retain(|(asset, _, _), _| !asset.is_parent()); + + flows +} + /// The solution to the dispatch optimisation problem #[allow(clippy::struct_field_names)] pub struct Solution<'a> { @@ -186,6 +230,7 @@ pub struct Solution<'a> { variables: VariableMap, time_slice_info: &'a TimeSliceInfo, constraint_keys: ConstraintKeys, + flow_map: Cell>, /// The objective value for the solution pub objective_value: Money, } @@ -195,19 +240,13 @@ impl Solution<'_> { /// /// Note that this only includes commodity flows which relate to existing assets, so not every /// commodity in the simulation will necessarily be represented. + /// + /// Note: The flow map is actually already created and is taken from `self` when this method is + /// called (hence it can only be called once). The reason for this is because we need to convert + /// back from parent assets to child assets. We can remove this hack once we have updated all + /// the users of this interface to be able to handle parent assets correctly. pub fn create_flow_map(&self) -> FlowMap { - // The decision variables represent assets' activity levels, not commodity flows. We - // multiply this value by the flow coeffs to get commodity flows. - let mut flows = FlowMap::new(); - for (asset, time_slice, activity) in self.iter_activity_for_existing() { - for flow in asset.iter_flows() { - let flow_key = (asset.clone(), flow.commodity.id.clone(), time_slice.clone()); - let flow_value = activity * flow.coeff; - flows.insert(flow_key, flow_value); - } - } - - flows + self.flow_map.take().expect("Flow map already created") } /// Activity for all assets (existing and candidate, if present) @@ -381,6 +420,21 @@ fn filter_input_prices( .collect() } +/// Get the parent for each asset. +/// +/// Child assets are converted to their parents and non-divisible assets are returned as is. Each +/// parent asset is returned only once. +fn convert_assets_to_parents(assets: &[AssetRef]) -> impl Iterator { + let mut parents = HashSet::new(); + assets + .iter() + .filter_map(move |asset| match asset.parent() { + Some(parent) => parents.insert(parent.clone()).then_some(parent), + None => Some(asset), + }) + .cloned() +} + /// Provides the interface for running the dispatch optimisation. /// /// The run will attempt to meet unmet demand: if the solver reports infeasibility @@ -557,13 +611,15 @@ impl<'model, 'run> DispatchRun<'model, 'run> { allow_unmet_demand: bool, input_prices: Option<&CommodityPrices>, ) -> Result, ModelError> { + let parent_assets = convert_assets_to_parents(self.existing_assets).collect_vec(); + // Set up problem let mut problem = Problem::default(); let mut variables = VariableMap::new_with_activity_vars( &mut problem, self.model, input_prices, - self.existing_assets, + &parent_assets, self.candidate_assets, self.year, ); @@ -577,7 +633,7 @@ impl<'model, 'run> DispatchRun<'model, 'run> { // Check flexible capacity assets is a subset of existing assets for asset in self.flexible_capacity_assets { assert!( - self.existing_assets.contains(asset), + parent_assets.contains(asset), "Flexible capacity assets must be a subset of existing assets. Offending asset: {asset:?}" ); } @@ -594,7 +650,7 @@ impl<'model, 'run> DispatchRun<'model, 'run> { } // Add constraints - let all_assets = chain(self.existing_assets.iter(), self.candidate_assets.iter()); + let all_assets = chain(parent_assets.iter(), self.candidate_assets.iter()); let constraint_keys = add_model_constraints( &mut problem, &variables, @@ -607,13 +663,20 @@ impl<'model, 'run> DispatchRun<'model, 'run> { // Solve model let solution = solve_optimal(problem.optimise(Sense::Minimise))?; - Ok(Solution { + let solution = Solution { solution: solution.get_solution(), variables, time_slice_info: &self.model.time_slice_info, constraint_keys, + flow_map: Cell::default(), objective_value: Money(solution.objective_value()), - }) + }; + solution.flow_map.set(Some(create_flow_map( + self.existing_assets, + &self.model.time_slice_info, + solution.iter_activity(), + ))); + Ok(solution) } } diff --git a/tests/data/simple_divisible/commodity_flows.csv b/tests/data/simple_divisible/commodity_flows.csv index ac1117a1c..03b9efc40 100644 --- a/tests/data/simple_divisible/commodity_flows.csv +++ b/tests/data/simple_divisible/commodity_flows.csv @@ -11,8 +11,8 @@ milestone_year,asset_id,commodity_id,time_slice,flow 2020,0,CO2EMT,peak.night,0.0 2020,0,GASPRD,peak.day,0.0 2020,0,CO2EMT,peak.day,0.0 -2020,0,GASPRD,peak.peak,58.675825622557085 -2020,0,CO2EMT,peak.peak,300.0094964081344 +2020,0,GASPRD,peak.peak,58.67582562255717 +2020,0,CO2EMT,peak.peak,300.00949640813485 2020,0,GASPRD,peak.evening,166.76083466742 2020,0,CO2EMT,peak.evening,852.6481476545185 2020,0,GASPRD,summer.night,0.0 @@ -49,9 +49,9 @@ milestone_year,asset_id,commodity_id,time_slice,flow 2020,1,GASPRD,peak.day,-0.0 2020,1,GASNAT,peak.day,0.0 2020,1,CO2EMT,peak.day,0.0 -2020,1,GASPRD,peak.peak,-59.9684714662316 -2020,1,GASNAT,peak.peak,57.112829967839616 -2020,1,CO2EMT,peak.peak,146.008949812782 +2020,1,GASPRD,peak.peak,-59.96847146623166 +2020,1,GASNAT,peak.peak,57.11282996783967 +2020,1,CO2EMT,peak.peak,146.00894981278213 2020,1,GASPRD,peak.evening,-165.4681888237455 2020,1,GASNAT,peak.evening,157.58875126070998 2020,1,CO2EMT,peak.evening,402.87564259800513 @@ -143,150 +143,6 @@ milestone_year,asset_id,commodity_id,time_slice,flow 2020,3,GASNAT,autumn.evening,-4.790137538321099 2020,3,ELCTRI,autumn.evening,3.1934250255473997 2020,3,CO2EMT,autumn.evening,244.9197323343578 -2020,4,GASNAT,winter.night,-0.0 -2020,4,RSHEAT,winter.night,0.0 -2020,4,CO2EMT,winter.night,0.0 -2020,4,GASNAT,winter.day,-0.0 -2020,4,RSHEAT,winter.day,0.0 -2020,4,CO2EMT,winter.day,0.0 -2020,4,GASNAT,winter.peak,-32.34372974118598 -2020,4,RSHEAT,winter.peak,28.12498238363999 -2020,4,CO2EMT,winter.peak,1653.7349016668395 -2020,4,GASNAT,winter.evening,-0.0 -2020,4,RSHEAT,winter.evening,0.0 -2020,4,CO2EMT,winter.evening,0.0 -2020,4,GASNAT,peak.night,-0.0 -2020,4,RSHEAT,peak.night,0.0 -2020,4,CO2EMT,peak.night,0.0 -2020,4,GASNAT,peak.day,-0.0 -2020,4,RSHEAT,peak.day,0.0 -2020,4,CO2EMT,peak.day,0.0 -2020,4,GASNAT,peak.peak,-0.0 -2020,4,RSHEAT,peak.peak,0.0 -2020,4,CO2EMT,peak.peak,0.0 -2020,4,GASNAT,peak.evening,-0.0 -2020,4,RSHEAT,peak.evening,0.0 -2020,4,CO2EMT,peak.evening,0.0 -2020,4,GASNAT,summer.night,-0.0 -2020,4,RSHEAT,summer.night,0.0 -2020,4,CO2EMT,summer.night,0.0 -2020,4,GASNAT,summer.day,-0.0 -2020,4,RSHEAT,summer.day,0.0 -2020,4,CO2EMT,summer.day,0.0 -2020,4,GASNAT,summer.peak,-0.0 -2020,4,RSHEAT,summer.peak,0.0 -2020,4,CO2EMT,summer.peak,0.0 -2020,4,GASNAT,summer.evening,-0.0 -2020,4,RSHEAT,summer.evening,0.0 -2020,4,CO2EMT,summer.evening,0.0 -2020,4,GASNAT,autumn.night,-0.0 -2020,4,RSHEAT,autumn.night,0.0 -2020,4,CO2EMT,autumn.night,0.0 -2020,4,GASNAT,autumn.day,-0.0 -2020,4,RSHEAT,autumn.day,0.0 -2020,4,CO2EMT,autumn.day,0.0 -2020,4,GASNAT,autumn.peak,-0.0 -2020,4,RSHEAT,autumn.peak,0.0 -2020,4,CO2EMT,autumn.peak,0.0 -2020,4,GASNAT,autumn.evening,-0.0 -2020,4,RSHEAT,autumn.evening,0.0 -2020,4,CO2EMT,autumn.evening,0.0 -2020,5,GASNAT,winter.night,-0.0 -2020,5,RSHEAT,winter.night,0.0 -2020,5,CO2EMT,winter.night,0.0 -2020,5,GASNAT,winter.day,-73.47806748857997 -2020,5,RSHEAT,winter.day,63.893971729199976 -2020,5,CO2EMT,winter.day,3756.933590691094 -2020,5,GASNAT,winter.peak,-35.9375 -2020,5,RSHEAT,winter.peak,31.25 -2020,5,CO2EMT,winter.peak,1837.484375 -2020,5,GASNAT,winter.evening,-14.704802914679998 -2020,5,RSHEAT,winter.evening,12.7867851432 -2020,5,CO2EMT,winter.evening,751.8565730275884 -2020,5,GASNAT,peak.night,-0.0 -2020,5,RSHEAT,peak.night,0.0 -2020,5,CO2EMT,peak.night,0.0 -2020,5,GASNAT,peak.day,-0.0 -2020,5,RSHEAT,peak.day,0.0 -2020,5,CO2EMT,peak.day,0.0 -2020,5,GASNAT,peak.peak,-22.353777616306004 -2020,5,RSHEAT,peak.peak,19.438067492440005 -2020,5,CO2EMT,peak.peak,1142.948649521726 -2020,5,GASNAT,peak.evening,-0.0 -2020,5,RSHEAT,peak.evening,0.0 -2020,5,CO2EMT,peak.evening,0.0 -2020,5,GASNAT,summer.night,-0.0 -2020,5,RSHEAT,summer.night,0.0 -2020,5,CO2EMT,summer.night,0.0 -2020,5,GASNAT,summer.day,-0.0 -2020,5,RSHEAT,summer.day,0.0 -2020,5,CO2EMT,summer.day,0.0 -2020,5,GASNAT,summer.peak,-0.0 -2020,5,RSHEAT,summer.peak,0.0 -2020,5,CO2EMT,summer.peak,0.0 -2020,5,GASNAT,summer.evening,-0.0 -2020,5,RSHEAT,summer.evening,0.0 -2020,5,CO2EMT,summer.evening,0.0 -2020,5,GASNAT,autumn.night,-0.0 -2020,5,RSHEAT,autumn.night,0.0 -2020,5,CO2EMT,autumn.night,0.0 -2020,5,GASNAT,autumn.day,-0.0 -2020,5,RSHEAT,autumn.day,0.0 -2020,5,CO2EMT,autumn.day,0.0 -2020,5,GASNAT,autumn.peak,-8.442726050956358 -2020,5,RSHEAT,autumn.peak,7.341500913875095 -2020,5,CO2EMT,autumn.peak,431.6765829853986 -2020,5,GASNAT,autumn.evening,-0.0 -2020,5,RSHEAT,autumn.evening,0.0 -2020,5,CO2EMT,autumn.evening,0.0 -2020,6,GASNAT,winter.night,-36.31286857370999 -2020,6,RSHEAT,winter.night,31.576407455399995 -2020,6,CO2EMT,winter.night,1856.6769701737921 -2020,6,GASNAT,winter.day,-119.79166705 -2020,6,RSHEAT,winter.day,104.166667 -2020,6,CO2EMT,winter.day,6124.947936266501 -2020,6,GASNAT,winter.peak,-35.9375 -2020,6,RSHEAT,winter.peak,31.25 -2020,6,CO2EMT,winter.peak,1837.484375 -2020,6,GASNAT,winter.evening,-47.916667049999994 -2020,6,RSHEAT,winter.evening,41.666667 -2020,6,CO2EMT,winter.evening,2449.9791862664997 -2020,6,GASNAT,peak.night,-19.52227251698524 -2020,6,RSHEAT,peak.night,16.975889145204558 -2020,6,CO2EMT,peak.night,998.1737937934555 -2020,6,GASNAT,peak.day,-82.18418839575197 -2020,6,RSHEAT,peak.day,71.46451164847998 -2020,6,CO2EMT,peak.day,4202.077552674799 -2020,6,GASNAT,peak.peak,-35.9375 -2020,6,RSHEAT,peak.peak,31.25 -2020,6,CO2EMT,peak.peak,1837.484375 -2020,6,GASNAT,peak.evening,-26.943315907602276 -2020,6,RSHEAT,peak.evening,23.428970354436764 -2020,6,CO2EMT,peak.evening,1377.6117423557046 -2020,6,GASNAT,summer.night,-0.0 -2020,6,RSHEAT,summer.night,0.0 -2020,6,CO2EMT,summer.night,0.0 -2020,6,GASNAT,summer.day,-0.0 -2020,6,RSHEAT,summer.day,0.0 -2020,6,CO2EMT,summer.day,0.0 -2020,6,GASNAT,summer.peak,-0.0 -2020,6,RSHEAT,summer.peak,0.0 -2020,6,CO2EMT,summer.peak,0.0 -2020,6,GASNAT,summer.evening,-0.0 -2020,6,RSHEAT,summer.evening,0.0 -2020,6,CO2EMT,summer.evening,0.0 -2020,6,GASNAT,autumn.night,-9.10896122967321 -2020,6,RSHEAT,autumn.night,7.920835851889748 -2020,6,CO2EMT,autumn.night,465.7411876731913 -2020,6,GASNAT,autumn.day,-56.69422338503598 -2020,6,RSHEAT,autumn.day,49.29932468263999 -2020,6,CO2EMT,autumn.day,2898.7756416768902 -2020,6,GASNAT,autumn.peak,-35.9375 -2020,6,RSHEAT,autumn.peak,31.25 -2020,6,CO2EMT,autumn.peak,1837.484375 -2020,6,GASNAT,autumn.evening,-17.037675338040994 -2020,6,RSHEAT,autumn.evening,14.815369859166085 -2020,6,CO2EMT,autumn.evening,871.1363400340363 2020,7,ELCTRI,winter.night,-9.624518793997803 2020,7,RSHEAT,winter.night,29.165208466660005 2020,7,ELCTRI,winter.day,-13.749312543997803 @@ -319,6 +175,150 @@ milestone_year,asset_id,commodity_id,time_slice,flow 2020,7,RSHEAT,autumn.peak,11.9512367653449 2020,7,ELCTRI,autumn.evening,-5.094273376920391 2020,7,RSHEAT,autumn.evening,15.437192051273913 +2020,4,GASNAT,winter.night,-12.104289524569998 +2020,4,GASNAT,winter.day,-64.42324484619333 +2020,4,GASNAT,winter.peak,-34.73957658039533 +2020,4,GASNAT,winter.evening,-20.873823321559996 +2020,4,GASNAT,peak.night,-6.507424172328413 +2020,4,GASNAT,peak.day,-27.39472946525066 +2020,4,GASNAT,peak.peak,-19.430425872102003 +2020,4,GASNAT,peak.evening,-8.981105302534091 +2020,4,GASNAT,summer.night,-0.0 +2020,4,GASNAT,summer.day,-0.0 +2020,4,GASNAT,summer.peak,-0.0 +2020,4,GASNAT,summer.evening,-0.0 +2020,4,GASNAT,autumn.night,-3.03632040989107 +2020,4,GASNAT,autumn.day,-18.89807446167866 +2020,4,GASNAT,autumn.peak,-14.793408683652117 +2020,4,GASNAT,autumn.evening,-5.6792251126803315 +2020,4,RSHEAT,winter.night,10.525469151799998 +2020,4,RSHEAT,winter.day,56.020212909733324 +2020,4,RSHEAT,winter.peak,30.20832746121333 +2020,4,RSHEAT,winter.evening,18.1511507144 +2020,4,RSHEAT,peak.night,5.658629715068186 +2020,4,RSHEAT,peak.day,23.82150388282666 +2020,4,RSHEAT,peak.peak,16.89602249748 +2020,4,RSHEAT,peak.evening,7.809656784812255 +2020,4,RSHEAT,summer.night,0.0 +2020,4,RSHEAT,summer.day,0.0 +2020,4,RSHEAT,summer.peak,0.0 +2020,4,RSHEAT,summer.evening,0.0 +2020,4,RSHEAT,autumn.night,2.6402786172965826 +2020,4,RSHEAT,autumn.day,16.433108227546665 +2020,4,RSHEAT,autumn.peak,12.863833637958365 +2020,4,RSHEAT,autumn.evening,4.938456619722028 +2020,4,CO2EMT,winter.night,618.8923233912641 +2020,4,CO2EMT,winter.day,3293.960508985865 +2020,4,CO2EMT,winter.peak,1776.2345505556132 +2020,4,CO2EMT,winter.evening,1067.2785864313628 +2020,4,CO2EMT,peak.night,332.72459793115183 +2020,4,CO2EMT,peak.day,1400.6925175582664 +2020,4,CO2EMT,peak.peak,993.4776748405753 +2020,4,CO2EMT,peak.evening,459.2039141185682 +2020,4,CO2EMT,summer.night,0.0 +2020,4,CO2EMT,summer.day,0.0 +2020,4,CO2EMT,summer.peak,0.0 +2020,4,CO2EMT,summer.evening,0.0 +2020,4,CO2EMT,autumn.night,155.24706255773043 +2020,4,CO2EMT,autumn.day,966.2585472256301 +2020,4,CO2EMT,autumn.peak,756.3869859951329 +2020,4,CO2EMT,autumn.evening,290.37878001134544 +2020,5,GASNAT,winter.night,-12.104289524569998 +2020,5,GASNAT,winter.day,-64.42324484619333 +2020,5,GASNAT,winter.peak,-34.73957658039533 +2020,5,GASNAT,winter.evening,-20.873823321559996 +2020,5,GASNAT,peak.night,-6.507424172328413 +2020,5,GASNAT,peak.day,-27.39472946525066 +2020,5,GASNAT,peak.peak,-19.430425872102003 +2020,5,GASNAT,peak.evening,-8.981105302534091 +2020,5,GASNAT,summer.night,-0.0 +2020,5,GASNAT,summer.day,-0.0 +2020,5,GASNAT,summer.peak,-0.0 +2020,5,GASNAT,summer.evening,-0.0 +2020,5,GASNAT,autumn.night,-3.03632040989107 +2020,5,GASNAT,autumn.day,-18.89807446167866 +2020,5,GASNAT,autumn.peak,-14.793408683652117 +2020,5,GASNAT,autumn.evening,-5.6792251126803315 +2020,5,RSHEAT,winter.night,10.525469151799998 +2020,5,RSHEAT,winter.day,56.020212909733324 +2020,5,RSHEAT,winter.peak,30.20832746121333 +2020,5,RSHEAT,winter.evening,18.1511507144 +2020,5,RSHEAT,peak.night,5.658629715068186 +2020,5,RSHEAT,peak.day,23.82150388282666 +2020,5,RSHEAT,peak.peak,16.89602249748 +2020,5,RSHEAT,peak.evening,7.809656784812255 +2020,5,RSHEAT,summer.night,0.0 +2020,5,RSHEAT,summer.day,0.0 +2020,5,RSHEAT,summer.peak,0.0 +2020,5,RSHEAT,summer.evening,0.0 +2020,5,RSHEAT,autumn.night,2.6402786172965826 +2020,5,RSHEAT,autumn.day,16.433108227546665 +2020,5,RSHEAT,autumn.peak,12.863833637958365 +2020,5,RSHEAT,autumn.evening,4.938456619722028 +2020,5,CO2EMT,winter.night,618.8923233912641 +2020,5,CO2EMT,winter.day,3293.960508985865 +2020,5,CO2EMT,winter.peak,1776.2345505556132 +2020,5,CO2EMT,winter.evening,1067.2785864313628 +2020,5,CO2EMT,peak.night,332.72459793115183 +2020,5,CO2EMT,peak.day,1400.6925175582664 +2020,5,CO2EMT,peak.peak,993.4776748405753 +2020,5,CO2EMT,peak.evening,459.2039141185682 +2020,5,CO2EMT,summer.night,0.0 +2020,5,CO2EMT,summer.day,0.0 +2020,5,CO2EMT,summer.peak,0.0 +2020,5,CO2EMT,summer.evening,0.0 +2020,5,CO2EMT,autumn.night,155.24706255773043 +2020,5,CO2EMT,autumn.day,966.2585472256301 +2020,5,CO2EMT,autumn.peak,756.3869859951329 +2020,5,CO2EMT,autumn.evening,290.37878001134544 +2020,6,GASNAT,winter.night,-12.104289524569998 +2020,6,GASNAT,winter.day,-64.42324484619333 +2020,6,GASNAT,winter.peak,-34.73957658039533 +2020,6,GASNAT,winter.evening,-20.873823321559996 +2020,6,GASNAT,peak.night,-6.507424172328413 +2020,6,GASNAT,peak.day,-27.39472946525066 +2020,6,GASNAT,peak.peak,-19.430425872102003 +2020,6,GASNAT,peak.evening,-8.981105302534091 +2020,6,GASNAT,summer.night,-0.0 +2020,6,GASNAT,summer.day,-0.0 +2020,6,GASNAT,summer.peak,-0.0 +2020,6,GASNAT,summer.evening,-0.0 +2020,6,GASNAT,autumn.night,-3.03632040989107 +2020,6,GASNAT,autumn.day,-18.89807446167866 +2020,6,GASNAT,autumn.peak,-14.793408683652117 +2020,6,GASNAT,autumn.evening,-5.6792251126803315 +2020,6,RSHEAT,winter.night,10.525469151799998 +2020,6,RSHEAT,winter.day,56.020212909733324 +2020,6,RSHEAT,winter.peak,30.20832746121333 +2020,6,RSHEAT,winter.evening,18.1511507144 +2020,6,RSHEAT,peak.night,5.658629715068186 +2020,6,RSHEAT,peak.day,23.82150388282666 +2020,6,RSHEAT,peak.peak,16.89602249748 +2020,6,RSHEAT,peak.evening,7.809656784812255 +2020,6,RSHEAT,summer.night,0.0 +2020,6,RSHEAT,summer.day,0.0 +2020,6,RSHEAT,summer.peak,0.0 +2020,6,RSHEAT,summer.evening,0.0 +2020,6,RSHEAT,autumn.night,2.6402786172965826 +2020,6,RSHEAT,autumn.day,16.433108227546665 +2020,6,RSHEAT,autumn.peak,12.863833637958365 +2020,6,RSHEAT,autumn.evening,4.938456619722028 +2020,6,CO2EMT,winter.night,618.8923233912641 +2020,6,CO2EMT,winter.day,3293.960508985865 +2020,6,CO2EMT,winter.peak,1776.2345505556132 +2020,6,CO2EMT,winter.evening,1067.2785864313628 +2020,6,CO2EMT,peak.night,332.72459793115183 +2020,6,CO2EMT,peak.day,1400.6925175582664 +2020,6,CO2EMT,peak.peak,993.4776748405753 +2020,6,CO2EMT,peak.evening,459.2039141185682 +2020,6,CO2EMT,summer.night,0.0 +2020,6,CO2EMT,summer.day,0.0 +2020,6,CO2EMT,summer.peak,0.0 +2020,6,CO2EMT,summer.evening,0.0 +2020,6,CO2EMT,autumn.night,155.24706255773043 +2020,6,CO2EMT,autumn.day,966.2585472256301 +2020,6,CO2EMT,autumn.peak,756.3869859951329 +2020,6,CO2EMT,autumn.evening,290.37878001134544 2030,0,GASPRD,winter.night,0.0 2030,0,CO2EMT,winter.night,0.0 2030,0,GASPRD,winter.day,165.01914749860276 @@ -463,150 +463,6 @@ milestone_year,asset_id,commodity_id,time_slice,flow 2030,3,GASNAT,autumn.evening,-4.790137538321099 2030,3,ELCTRI,autumn.evening,3.1934250255473997 2030,3,CO2EMT,autumn.evening,244.9197323343578 -2030,4,GASNAT,winter.night,-0.0 -2030,4,RSHEAT,winter.night,0.0 -2030,4,CO2EMT,winter.night,0.0 -2030,4,GASNAT,winter.day,-0.0 -2030,4,RSHEAT,winter.day,0.0 -2030,4,CO2EMT,winter.day,0.0 -2030,4,GASNAT,winter.peak,-35.9375 -2030,4,RSHEAT,winter.peak,31.25 -2030,4,CO2EMT,winter.peak,1837.484375 -2030,4,GASNAT,winter.evening,-0.0 -2030,4,RSHEAT,winter.evening,0.0 -2030,4,CO2EMT,winter.evening,0.0 -2030,4,GASNAT,peak.night,-0.0 -2030,4,RSHEAT,peak.night,0.0 -2030,4,CO2EMT,peak.night,0.0 -2030,4,GASNAT,peak.day,-0.0 -2030,4,RSHEAT,peak.day,0.0 -2030,4,CO2EMT,peak.day,0.0 -2030,4,GASNAT,peak.peak,-0.0 -2030,4,RSHEAT,peak.peak,0.0 -2030,4,CO2EMT,peak.peak,0.0 -2030,4,GASNAT,peak.evening,-0.0 -2030,4,RSHEAT,peak.evening,0.0 -2030,4,CO2EMT,peak.evening,0.0 -2030,4,GASNAT,summer.night,-0.0 -2030,4,RSHEAT,summer.night,0.0 -2030,4,CO2EMT,summer.night,0.0 -2030,4,GASNAT,summer.day,-0.0 -2030,4,RSHEAT,summer.day,0.0 -2030,4,CO2EMT,summer.day,0.0 -2030,4,GASNAT,summer.peak,-0.0 -2030,4,RSHEAT,summer.peak,0.0 -2030,4,CO2EMT,summer.peak,0.0 -2030,4,GASNAT,summer.evening,-0.0 -2030,4,RSHEAT,summer.evening,0.0 -2030,4,CO2EMT,summer.evening,0.0 -2030,4,GASNAT,autumn.night,-0.0 -2030,4,RSHEAT,autumn.night,0.0 -2030,4,CO2EMT,autumn.night,0.0 -2030,4,GASNAT,autumn.day,-0.0 -2030,4,RSHEAT,autumn.day,0.0 -2030,4,CO2EMT,autumn.day,0.0 -2030,4,GASNAT,autumn.peak,-0.0 -2030,4,RSHEAT,autumn.peak,0.0 -2030,4,CO2EMT,autumn.peak,0.0 -2030,4,GASNAT,autumn.evening,-0.0 -2030,4,RSHEAT,autumn.evening,0.0 -2030,4,CO2EMT,autumn.evening,0.0 -2030,5,GASNAT,winter.night,-0.0 -2030,5,RSHEAT,winter.night,0.0 -2030,5,CO2EMT,winter.night,0.0 -2030,5,GASNAT,winter.day,-68.83778950822192 -2030,5,RSHEAT,winter.day,59.85894739845385 -2030,5,CO2EMT,winter.day,3519.6761775553873 -2030,5,GASNAT,winter.peak,-35.9375 -2030,5,RSHEAT,winter.peak,31.25 -2030,5,CO2EMT,winter.peak,1837.484375 -2030,5,GASNAT,winter.evening,-11.265044856693935 -2030,5,RSHEAT,winter.evening,9.795691179733858 -2030,5,CO2EMT,winter.evening,575.981743522761 -2030,5,GASNAT,peak.night,-0.0 -2030,5,RSHEAT,peak.night,0.0 -2030,5,CO2EMT,peak.night,0.0 -2030,5,GASNAT,peak.day,-0.0 -2030,5,RSHEAT,peak.day,0.0 -2030,5,CO2EMT,peak.day,0.0 -2030,5,GASNAT,peak.peak,-20.995160275120003 -2030,5,RSHEAT,peak.peak,18.256661108800003 -2030,5,CO2EMT,peak.peak,1073.4825448668857 -2030,5,GASNAT,peak.evening,-0.0 -2030,5,RSHEAT,peak.evening,0.0 -2030,5,CO2EMT,peak.evening,0.0 -2030,5,GASNAT,summer.night,-0.0 -2030,5,RSHEAT,summer.night,0.0 -2030,5,CO2EMT,summer.night,0.0 -2030,5,GASNAT,summer.day,-0.0 -2030,5,RSHEAT,summer.day,0.0 -2030,5,CO2EMT,summer.day,0.0 -2030,5,GASNAT,summer.peak,-0.0 -2030,5,RSHEAT,summer.peak,0.0 -2030,5,CO2EMT,summer.peak,0.0 -2030,5,GASNAT,summer.evening,-0.0 -2030,5,RSHEAT,summer.evening,0.0 -2030,5,CO2EMT,summer.evening,0.0 -2030,5,GASNAT,autumn.night,-0.0 -2030,5,RSHEAT,autumn.night,0.0 -2030,5,CO2EMT,autumn.night,0.0 -2030,5,GASNAT,autumn.day,-0.0 -2030,5,RSHEAT,autumn.day,0.0 -2030,5,CO2EMT,autumn.day,0.0 -2030,5,GASNAT,autumn.peak,-4.8857398049169865 -2030,5,RSHEAT,autumn.peak,4.248469395579988 -2030,5,CO2EMT,autumn.peak,249.80787622540552 -2030,5,GASNAT,autumn.evening,-0.0 -2030,5,RSHEAT,autumn.evening,0.0 -2030,5,CO2EMT,autumn.evening,0.0 -2030,6,GASNAT,winter.night,-22.392032154537905 -2030,6,RSHEAT,winter.night,19.47133230829383 -2030,6,CO2EMT,winter.night,1144.9046040615233 -2030,6,GASNAT,winter.day,-119.79166705 -2030,6,RSHEAT,winter.day,104.166667 -2030,6,CO2EMT,winter.day,6124.947936266501 -2030,6,GASNAT,winter.peak,-35.9375 -2030,6,RSHEAT,winter.peak,31.25 -2030,6,CO2EMT,winter.peak,1837.484375 -2030,6,GASNAT,winter.evening,-47.916667049999994 -2030,6,RSHEAT,winter.evening,41.666667 -2030,6,CO2EMT,winter.evening,2449.9791862664997 -2030,6,GASNAT,peak.night,-0.0 -2030,6,RSHEAT,peak.night,0.0 -2030,6,CO2EMT,peak.night,0.0 -2030,6,GASNAT,peak.day,-65.56548235539387 -2030,6,RSHEAT,peak.day,57.013462917733804 -2030,6,CO2EMT,peak.day,3352.363112831289 -2030,6,GASNAT,peak.peak,-35.9375 -2030,6,RSHEAT,peak.peak,31.25 -2030,6,CO2EMT,peak.peak,1837.484375 -2030,6,GASNAT,peak.evening,-17.411576464977927 -2030,6,RSHEAT,peak.evening,15.14050127389385 -2030,6,CO2EMT,peak.evening,890.2539046543214 -2030,6,GASNAT,summer.night,-0.0 -2030,6,RSHEAT,summer.night,0.0 -2030,6,CO2EMT,summer.night,0.0 -2030,6,GASNAT,summer.day,-0.0 -2030,6,RSHEAT,summer.day,0.0 -2030,6,CO2EMT,summer.day,0.0 -2030,6,GASNAT,summer.peak,-0.0 -2030,6,RSHEAT,summer.peak,0.0 -2030,6,CO2EMT,summer.peak,0.0 -2030,6,GASNAT,summer.evening,-0.0 -2030,6,RSHEAT,summer.evening,0.0 -2030,6,CO2EMT,summer.evening,0.0 -2030,6,GASNAT,autumn.night,-0.0 -2030,6,RSHEAT,autumn.night,0.0 -2030,6,CO2EMT,autumn.night,0.0 -2030,6,GASNAT,autumn.day,-37.32691752467789 -2030,6,RSHEAT,autumn.day,32.45818915189382 -2030,6,CO2EMT,autumn.day,1908.5252930367808 -2030,6,GASNAT,autumn.peak,-35.9375 -2030,6,RSHEAT,autumn.peak,31.25 -2030,6,CO2EMT,autumn.peak,1837.484375 -2030,6,GASNAT,autumn.evening,-7.117290867360921 -2030,6,RSHEAT,autumn.evening,6.188948580313845 -2030,6,CO2EMT,autumn.evening,363.90708204816394 2030,7,ELCTRI,winter.night,-9.624518793997803 2030,7,RSHEAT,winter.night,29.165208466660005 2030,7,ELCTRI,winter.day,-13.749312543997803 @@ -719,6 +575,150 @@ milestone_year,asset_id,commodity_id,time_slice,flow 2030,9,GASNAT,autumn.evening,-5.88484466403186 2030,9,ELCTRI,autumn.evening,3.9232297760212402 2030,9,CO2EMT,autumn.evening,300.892107671949 +2030,4,GASNAT,winter.night,-7.464010718179302 +2030,4,GASNAT,winter.day,-62.876485519407304 +2030,4,GASNAT,winter.peak,-35.93749999999999 +2030,4,GASNAT,winter.evening,-19.72723730223131 +2030,4,GASNAT,peak.night,-0.0 +2030,4,GASNAT,peak.day,-21.85516078513129 +2030,4,GASNAT,peak.peak,-18.97755342504 +2030,4,GASNAT,peak.evening,-5.8038588216593086 +2030,4,GASNAT,summer.night,-0.0 +2030,4,GASNAT,summer.day,-0.0 +2030,4,GASNAT,summer.peak,-0.0 +2030,4,GASNAT,summer.evening,-0.0 +2030,4,GASNAT,autumn.night,-0.0 +2030,4,GASNAT,autumn.day,-12.442305841559296 +2030,4,GASNAT,autumn.peak,-13.607746601638993 +2030,4,GASNAT,autumn.evening,-2.3724302891203073 +2030,4,RSHEAT,winter.night,6.49044410276461 +2030,4,RSHEAT,winter.day,54.67520479948462 +2030,4,RSHEAT,winter.peak,31.25 +2030,4,RSHEAT,winter.evening,17.154119393244617 +2030,4,RSHEAT,peak.night,0.0 +2030,4,RSHEAT,peak.day,19.0044876392446 +2030,4,RSHEAT,peak.peak,16.5022203696 +2030,4,RSHEAT,peak.evening,5.046833757964617 +2030,4,RSHEAT,summer.night,0.0 +2030,4,RSHEAT,summer.day,0.0 +2030,4,RSHEAT,summer.peak,0.0 +2030,4,RSHEAT,summer.evening,0.0 +2030,4,RSHEAT,autumn.night,0.0 +2030,4,RSHEAT,autumn.day,10.819396383964607 +2030,4,RSHEAT,autumn.peak,11.832823131859996 +2030,4,RSHEAT,autumn.evening,2.062982860104615 +2030,4,CO2EMT,winter.night,381.6348680205078 +2030,4,CO2EMT,winter.day,3214.8747046072963 +2030,4,CO2EMT,winter.peak,1837.484375 +2030,4,CO2EMT,winter.evening,1008.6536432630869 +2030,4,CO2EMT,peak.night,0.0 +2030,4,CO2EMT,peak.day,1117.454370943763 +2030,4,CO2EMT,peak.peak,970.3223066222953 +2030,4,CO2EMT,peak.evening,296.75130155144046 +2030,4,CO2EMT,summer.night,0.0 +2030,4,CO2EMT,summer.day,0.0 +2030,4,CO2EMT,summer.peak,0.0 +2030,4,CO2EMT,summer.evening,0.0 +2030,4,CO2EMT,autumn.night,0.0 +2030,4,CO2EMT,autumn.day,636.1750976789269 +2030,4,CO2EMT,autumn.peak,695.7640837418018 +2030,4,CO2EMT,autumn.evening,121.30236068272131 +2030,5,GASNAT,winter.night,-7.464010718179302 +2030,5,GASNAT,winter.day,-62.876485519407304 +2030,5,GASNAT,winter.peak,-35.93749999999999 +2030,5,GASNAT,winter.evening,-19.72723730223131 +2030,5,GASNAT,peak.night,-0.0 +2030,5,GASNAT,peak.day,-21.85516078513129 +2030,5,GASNAT,peak.peak,-18.97755342504 +2030,5,GASNAT,peak.evening,-5.8038588216593086 +2030,5,GASNAT,summer.night,-0.0 +2030,5,GASNAT,summer.day,-0.0 +2030,5,GASNAT,summer.peak,-0.0 +2030,5,GASNAT,summer.evening,-0.0 +2030,5,GASNAT,autumn.night,-0.0 +2030,5,GASNAT,autumn.day,-12.442305841559296 +2030,5,GASNAT,autumn.peak,-13.607746601638993 +2030,5,GASNAT,autumn.evening,-2.3724302891203073 +2030,5,RSHEAT,winter.night,6.49044410276461 +2030,5,RSHEAT,winter.day,54.67520479948462 +2030,5,RSHEAT,winter.peak,31.25 +2030,5,RSHEAT,winter.evening,17.154119393244617 +2030,5,RSHEAT,peak.night,0.0 +2030,5,RSHEAT,peak.day,19.0044876392446 +2030,5,RSHEAT,peak.peak,16.5022203696 +2030,5,RSHEAT,peak.evening,5.046833757964617 +2030,5,RSHEAT,summer.night,0.0 +2030,5,RSHEAT,summer.day,0.0 +2030,5,RSHEAT,summer.peak,0.0 +2030,5,RSHEAT,summer.evening,0.0 +2030,5,RSHEAT,autumn.night,0.0 +2030,5,RSHEAT,autumn.day,10.819396383964607 +2030,5,RSHEAT,autumn.peak,11.832823131859996 +2030,5,RSHEAT,autumn.evening,2.062982860104615 +2030,5,CO2EMT,winter.night,381.6348680205078 +2030,5,CO2EMT,winter.day,3214.8747046072963 +2030,5,CO2EMT,winter.peak,1837.484375 +2030,5,CO2EMT,winter.evening,1008.6536432630869 +2030,5,CO2EMT,peak.night,0.0 +2030,5,CO2EMT,peak.day,1117.454370943763 +2030,5,CO2EMT,peak.peak,970.3223066222953 +2030,5,CO2EMT,peak.evening,296.75130155144046 +2030,5,CO2EMT,summer.night,0.0 +2030,5,CO2EMT,summer.day,0.0 +2030,5,CO2EMT,summer.peak,0.0 +2030,5,CO2EMT,summer.evening,0.0 +2030,5,CO2EMT,autumn.night,0.0 +2030,5,CO2EMT,autumn.day,636.1750976789269 +2030,5,CO2EMT,autumn.peak,695.7640837418018 +2030,5,CO2EMT,autumn.evening,121.30236068272131 +2030,6,GASNAT,winter.night,-7.464010718179302 +2030,6,GASNAT,winter.day,-62.876485519407304 +2030,6,GASNAT,winter.peak,-35.93749999999999 +2030,6,GASNAT,winter.evening,-19.72723730223131 +2030,6,GASNAT,peak.night,-0.0 +2030,6,GASNAT,peak.day,-21.85516078513129 +2030,6,GASNAT,peak.peak,-18.97755342504 +2030,6,GASNAT,peak.evening,-5.8038588216593086 +2030,6,GASNAT,summer.night,-0.0 +2030,6,GASNAT,summer.day,-0.0 +2030,6,GASNAT,summer.peak,-0.0 +2030,6,GASNAT,summer.evening,-0.0 +2030,6,GASNAT,autumn.night,-0.0 +2030,6,GASNAT,autumn.day,-12.442305841559296 +2030,6,GASNAT,autumn.peak,-13.607746601638993 +2030,6,GASNAT,autumn.evening,-2.3724302891203073 +2030,6,RSHEAT,winter.night,6.49044410276461 +2030,6,RSHEAT,winter.day,54.67520479948462 +2030,6,RSHEAT,winter.peak,31.25 +2030,6,RSHEAT,winter.evening,17.154119393244617 +2030,6,RSHEAT,peak.night,0.0 +2030,6,RSHEAT,peak.day,19.0044876392446 +2030,6,RSHEAT,peak.peak,16.5022203696 +2030,6,RSHEAT,peak.evening,5.046833757964617 +2030,6,RSHEAT,summer.night,0.0 +2030,6,RSHEAT,summer.day,0.0 +2030,6,RSHEAT,summer.peak,0.0 +2030,6,RSHEAT,summer.evening,0.0 +2030,6,RSHEAT,autumn.night,0.0 +2030,6,RSHEAT,autumn.day,10.819396383964607 +2030,6,RSHEAT,autumn.peak,11.832823131859996 +2030,6,RSHEAT,autumn.evening,2.062982860104615 +2030,6,CO2EMT,winter.night,381.6348680205078 +2030,6,CO2EMT,winter.day,3214.8747046072963 +2030,6,CO2EMT,winter.peak,1837.484375 +2030,6,CO2EMT,winter.evening,1008.6536432630869 +2030,6,CO2EMT,peak.night,0.0 +2030,6,CO2EMT,peak.day,1117.454370943763 +2030,6,CO2EMT,peak.peak,970.3223066222953 +2030,6,CO2EMT,peak.evening,296.75130155144046 +2030,6,CO2EMT,summer.night,0.0 +2030,6,CO2EMT,summer.day,0.0 +2030,6,CO2EMT,summer.peak,0.0 +2030,6,CO2EMT,summer.evening,0.0 +2030,6,CO2EMT,autumn.night,0.0 +2030,6,CO2EMT,autumn.day,636.1750976789269 +2030,6,CO2EMT,autumn.peak,695.7640837418018 +2030,6,CO2EMT,autumn.evening,121.30236068272131 2040,0,GASPRD,winter.night,0.0 2040,0,CO2EMT,winter.night,0.0 2040,0,GASPRD,winter.day,291.6944707979391 @@ -754,9 +754,9 @@ milestone_year,asset_id,commodity_id,time_slice,flow 2040,1,GASPRD,winter.night,-0.0 2040,1,GASNAT,winter.night,0.0 2040,1,CO2EMT,winter.night,0.0 -2040,1,GASPRD,winter.day,-293.95660101661366 -2040,1,GASNAT,winter.day,279.95866763487015 -2040,1,CO2EMT,winter.day,715.7143338085456 +2040,1,GASPRD,winter.day,-293.95660101661355 +2040,1,GASNAT,winter.day,279.95866763487004 +2040,1,CO2EMT,winter.day,715.7143338085453 2040,1,GASPRD,winter.peak,-124.10114062500001 2040,1,GASNAT,winter.peak,118.1915625 2040,1,CO2EMT,winter.peak,302.15672953125005 @@ -895,195 +895,195 @@ milestone_year,asset_id,commodity_id,time_slice,flow 2040,8,RSHEAT,autumn.peak,7.9949501836400145 2040,8,ELCTRI,autumn.evening,-3.5177781089438307 2040,8,RSHEAT,autumn.evening,10.659933663466154 -2040,10,GASNAT,winter.night,-0.0 -2040,10,RSHEAT,winter.night,0.0 -2040,10,CO2EMT,winter.night,0.0 -2040,10,GASNAT,winter.day,-0.0 -2040,10,RSHEAT,winter.day,0.0 -2040,10,CO2EMT,winter.day,0.0 -2040,10,GASNAT,winter.peak,-27.162244219999994 -2040,10,RSHEAT,winter.peak,23.6193428 -2040,10,CO2EMT,winter.peak,1388.8055469685999 -2040,10,GASNAT,winter.evening,-0.0 -2040,10,RSHEAT,winter.evening,0.0 -2040,10,CO2EMT,winter.evening,0.0 -2040,10,GASNAT,peak.night,-0.0 -2040,10,RSHEAT,peak.night,0.0 -2040,10,CO2EMT,peak.night,0.0 -2040,10,GASNAT,peak.day,-0.0 -2040,10,RSHEAT,peak.day,0.0 -2040,10,CO2EMT,peak.day,0.0 -2040,10,GASNAT,peak.peak,-0.0 -2040,10,RSHEAT,peak.peak,0.0 -2040,10,CO2EMT,peak.peak,0.0 -2040,10,GASNAT,peak.evening,-0.0 -2040,10,RSHEAT,peak.evening,0.0 -2040,10,CO2EMT,peak.evening,0.0 +2040,10,GASNAT,winter.night,-15.866075474049227 +2040,10,GASNAT,winter.day,-65.63768967497022 +2040,10,GASNAT,winter.peak,-33.743686055 +2040,10,GASNAT,winter.evening,-21.791646512088235 +2040,10,GASNAT,peak.night,-9.508385860215228 +2040,10,GASNAT,peak.day,-31.877089109263224 +2040,10,GASNAT,peak.peak,-19.785629223779996 +2040,10,GASNAT,peak.evening,-10.332688946659232 2040,10,GASNAT,summer.night,-0.0 -2040,10,RSHEAT,summer.night,0.0 -2040,10,CO2EMT,summer.night,0.0 2040,10,GASNAT,summer.day,-0.0 -2040,10,RSHEAT,summer.day,0.0 -2040,10,CO2EMT,summer.day,0.0 2040,10,GASNAT,summer.peak,-0.0 -2040,10,RSHEAT,summer.peak,0.0 -2040,10,CO2EMT,summer.peak,0.0 2040,10,GASNAT,summer.evening,-0.0 +2040,10,GASNAT,autumn.night,-6.716433193768477 +2040,10,GASNAT,autumn.day,-24.13029794658422 +2040,10,GASNAT,autumn.peak,-15.366271622479246 +2040,10,GASNAT,autumn.evening,-7.50861905600498 +2040,10,RSHEAT,winter.night,13.796587368738459 +2040,10,RSHEAT,winter.day,57.07625189127846 +2040,10,RSHEAT,winter.peak,29.3423357 +2040,10,RSHEAT,winter.evening,18.949257836598466 +2040,10,RSHEAT,peak.night,8.268161617578459 +2040,10,RSHEAT,peak.day,27.71920792109846 +2040,10,RSHEAT,peak.peak,17.2048949772 +2040,10,RSHEAT,peak.evening,8.984946910138463 +2040,10,RSHEAT,summer.night,0.0 +2040,10,RSHEAT,summer.day,0.0 +2040,10,RSHEAT,summer.peak,0.0 2040,10,RSHEAT,summer.evening,0.0 +2040,10,RSHEAT,autumn.night,5.840376690233459 +2040,10,RSHEAT,autumn.day,20.982867779638454 +2040,10,RSHEAT,autumn.peak,13.361975323894997 +2040,10,RSHEAT,autumn.evening,6.529233961743461 +2040,10,CO2EMT,winter.night,811.232438988137 +2040,10,CO2EMT,winter.day,3356.055073081228 +2040,10,CO2EMT,winter.peak,1725.3146679921501 +2040,10,CO2EMT,winter.evening,1114.2068861630717 +2040,10,CO2EMT,peak.night,486.1637690328046 +2040,10,CO2EMT,peak.day,1629.8755661566288 +2040,10,CO2EMT,peak.peak,1011.6392222118714 +2040,10,CO2EMT,peak.evening,528.3103858426866 +2040,10,CO2EMT,summer.night,0.0 +2040,10,CO2EMT,summer.day,0.0 +2040,10,CO2EMT,summer.peak,0.0 2040,10,CO2EMT,summer.evening,0.0 -2040,10,GASNAT,autumn.night,-0.0 -2040,10,RSHEAT,autumn.night,0.0 -2040,10,CO2EMT,autumn.night,0.0 -2040,10,GASNAT,autumn.day,-0.0 -2040,10,RSHEAT,autumn.day,0.0 -2040,10,CO2EMT,autumn.day,0.0 -2040,10,GASNAT,autumn.peak,-0.0 -2040,10,RSHEAT,autumn.peak,0.0 -2040,10,CO2EMT,autumn.peak,0.0 -2040,10,GASNAT,autumn.evening,-0.0 -2040,10,RSHEAT,autumn.evening,0.0 -2040,10,CO2EMT,autumn.evening,0.0 -2040,11,GASNAT,winter.night,-0.0 -2040,11,RSHEAT,winter.night,0.0 -2040,11,CO2EMT,winter.night,0.0 -2040,11,GASNAT,winter.day,-22.967424599880907 -2040,11,RSHEAT,winter.day,19.971673565113832 -2040,11,CO2EMT,winter.day,1174.3244197919107 -2040,11,GASNAT,winter.peak,-35.9375 -2040,11,RSHEAT,winter.peak,31.25 -2040,11,CO2EMT,winter.peak,1837.484375 -2040,11,GASNAT,winter.evening,-0.0 -2040,11,RSHEAT,winter.evening,0.0 -2040,11,CO2EMT,winter.evening,0.0 -2040,11,GASNAT,peak.night,-0.0 -2040,11,RSHEAT,peak.night,0.0 -2040,11,CO2EMT,peak.night,0.0 -2040,11,GASNAT,peak.day,-0.0 -2040,11,RSHEAT,peak.day,0.0 -2040,11,CO2EMT,peak.day,0.0 -2040,11,GASNAT,peak.peak,-7.267516895119993 -2040,11,RSHEAT,peak.peak,6.319579908799994 -2040,11,CO2EMT,peak.peak,371.5881388474853 -2040,11,GASNAT,peak.evening,-0.0 -2040,11,RSHEAT,peak.evening,0.0 -2040,11,CO2EMT,peak.evening,0.0 +2040,10,CO2EMT,autumn.night,343.4112291973823 +2040,10,CO2EMT,autumn.day,1233.7821340088512 +2040,10,CO2EMT,autumn.peak,785.677468057364 +2040,10,CO2EMT,autumn.evening,383.91569233353465 +2040,11,GASNAT,winter.night,-15.866075474049227 +2040,11,GASNAT,winter.day,-65.63768967497022 +2040,11,GASNAT,winter.peak,-33.743686055 +2040,11,GASNAT,winter.evening,-21.791646512088235 +2040,11,GASNAT,peak.night,-9.508385860215228 +2040,11,GASNAT,peak.day,-31.877089109263224 +2040,11,GASNAT,peak.peak,-19.785629223779996 +2040,11,GASNAT,peak.evening,-10.332688946659232 2040,11,GASNAT,summer.night,-0.0 -2040,11,RSHEAT,summer.night,0.0 -2040,11,CO2EMT,summer.night,0.0 2040,11,GASNAT,summer.day,-0.0 -2040,11,RSHEAT,summer.day,0.0 -2040,11,CO2EMT,summer.day,0.0 2040,11,GASNAT,summer.peak,-0.0 -2040,11,RSHEAT,summer.peak,0.0 -2040,11,CO2EMT,summer.peak,0.0 2040,11,GASNAT,summer.evening,-0.0 +2040,11,GASNAT,autumn.night,-6.716433193768477 +2040,11,GASNAT,autumn.day,-24.13029794658422 +2040,11,GASNAT,autumn.peak,-15.366271622479246 +2040,11,GASNAT,autumn.evening,-7.50861905600498 +2040,11,RSHEAT,winter.night,13.796587368738459 +2040,11,RSHEAT,winter.day,57.07625189127846 +2040,11,RSHEAT,winter.peak,29.3423357 +2040,11,RSHEAT,winter.evening,18.949257836598466 +2040,11,RSHEAT,peak.night,8.268161617578459 +2040,11,RSHEAT,peak.day,27.71920792109846 +2040,11,RSHEAT,peak.peak,17.2048949772 +2040,11,RSHEAT,peak.evening,8.984946910138463 +2040,11,RSHEAT,summer.night,0.0 +2040,11,RSHEAT,summer.day,0.0 +2040,11,RSHEAT,summer.peak,0.0 2040,11,RSHEAT,summer.evening,0.0 +2040,11,RSHEAT,autumn.night,5.840376690233459 +2040,11,RSHEAT,autumn.day,20.982867779638454 +2040,11,RSHEAT,autumn.peak,13.361975323894997 +2040,11,RSHEAT,autumn.evening,6.529233961743461 +2040,11,CO2EMT,winter.night,811.232438988137 +2040,11,CO2EMT,winter.day,3356.055073081228 +2040,11,CO2EMT,winter.peak,1725.3146679921501 +2040,11,CO2EMT,winter.evening,1114.2068861630717 +2040,11,CO2EMT,peak.night,486.1637690328046 +2040,11,CO2EMT,peak.day,1629.8755661566288 +2040,11,CO2EMT,peak.peak,1011.6392222118714 +2040,11,CO2EMT,peak.evening,528.3103858426866 +2040,11,CO2EMT,summer.night,0.0 +2040,11,CO2EMT,summer.day,0.0 +2040,11,CO2EMT,summer.peak,0.0 2040,11,CO2EMT,summer.evening,0.0 -2040,11,GASNAT,autumn.night,-0.0 -2040,11,RSHEAT,autumn.night,0.0 -2040,11,CO2EMT,autumn.night,0.0 -2040,11,GASNAT,autumn.day,-0.0 -2040,11,RSHEAT,autumn.day,0.0 -2040,11,CO2EMT,autumn.day,0.0 -2040,11,GASNAT,autumn.peak,-0.0 -2040,11,RSHEAT,autumn.peak,0.0 -2040,11,CO2EMT,autumn.peak,0.0 -2040,11,GASNAT,autumn.evening,-0.0 -2040,11,RSHEAT,autumn.evening,0.0 -2040,11,CO2EMT,autumn.evening,0.0 -2040,12,GASNAT,winter.night,-0.0 -2040,12,RSHEAT,winter.night,0.0 -2040,12,CO2EMT,winter.night,0.0 -2040,12,GASNAT,winter.day,-119.79166705 -2040,12,RSHEAT,winter.day,104.166667 -2040,12,CO2EMT,winter.day,6124.947936266501 -2040,12,GASNAT,winter.peak,-35.9375 -2040,12,RSHEAT,winter.peak,31.25 -2040,12,CO2EMT,winter.peak,1837.484375 -2040,12,GASNAT,winter.evening,-39.249918998352946 -2040,12,RSHEAT,winter.evening,34.13036434639387 -2040,12,CO2EMT,winter.evening,2006.8483583857862 -2040,12,GASNAT,peak.night,-0.0 -2040,12,RSHEAT,peak.night,0.0 -2040,12,CO2EMT,peak.night,0.0 -2040,12,GASNAT,peak.day,-7.716689387052905 -2040,12,RSHEAT,peak.day,6.710164684393831 -2040,12,CO2EMT,peak.day,394.55432836001506 -2040,12,GASNAT,peak.peak,-35.9375 -2040,12,RSHEAT,peak.peak,31.25 -2040,12,CO2EMT,peak.peak,1837.484375 -2040,12,GASNAT,peak.evening,-0.0 -2040,12,RSHEAT,peak.evening,0.0 -2040,12,CO2EMT,peak.evening,0.0 +2040,11,CO2EMT,autumn.night,343.4112291973823 +2040,11,CO2EMT,autumn.day,1233.7821340088512 +2040,11,CO2EMT,autumn.peak,785.677468057364 +2040,11,CO2EMT,autumn.evening,383.91569233353465 +2040,12,GASNAT,winter.night,-15.866075474049227 +2040,12,GASNAT,winter.day,-65.63768967497022 +2040,12,GASNAT,winter.peak,-33.743686055 +2040,12,GASNAT,winter.evening,-21.791646512088235 +2040,12,GASNAT,peak.night,-9.508385860215228 +2040,12,GASNAT,peak.day,-31.877089109263224 +2040,12,GASNAT,peak.peak,-19.785629223779996 +2040,12,GASNAT,peak.evening,-10.332688946659232 2040,12,GASNAT,summer.night,-0.0 -2040,12,RSHEAT,summer.night,0.0 -2040,12,CO2EMT,summer.night,0.0 2040,12,GASNAT,summer.day,-0.0 -2040,12,RSHEAT,summer.day,0.0 -2040,12,CO2EMT,summer.day,0.0 2040,12,GASNAT,summer.peak,-0.0 -2040,12,RSHEAT,summer.peak,0.0 -2040,12,CO2EMT,summer.peak,0.0 2040,12,GASNAT,summer.evening,-0.0 +2040,12,GASNAT,autumn.night,-6.716433193768477 +2040,12,GASNAT,autumn.day,-24.13029794658422 +2040,12,GASNAT,autumn.peak,-15.366271622479246 +2040,12,GASNAT,autumn.evening,-7.50861905600498 +2040,12,RSHEAT,winter.night,13.796587368738459 +2040,12,RSHEAT,winter.day,57.07625189127846 +2040,12,RSHEAT,winter.peak,29.3423357 +2040,12,RSHEAT,winter.evening,18.949257836598466 +2040,12,RSHEAT,peak.night,8.268161617578459 +2040,12,RSHEAT,peak.day,27.71920792109846 +2040,12,RSHEAT,peak.peak,17.2048949772 +2040,12,RSHEAT,peak.evening,8.984946910138463 +2040,12,RSHEAT,summer.night,0.0 +2040,12,RSHEAT,summer.day,0.0 +2040,12,RSHEAT,summer.peak,0.0 2040,12,RSHEAT,summer.evening,0.0 +2040,12,RSHEAT,autumn.night,5.840376690233459 +2040,12,RSHEAT,autumn.day,20.982867779638454 +2040,12,RSHEAT,autumn.peak,13.361975323894997 +2040,12,RSHEAT,autumn.evening,6.529233961743461 +2040,12,CO2EMT,winter.night,811.232438988137 +2040,12,CO2EMT,winter.day,3356.055073081228 +2040,12,CO2EMT,winter.peak,1725.3146679921501 +2040,12,CO2EMT,winter.evening,1114.2068861630717 +2040,12,CO2EMT,peak.night,486.1637690328046 +2040,12,CO2EMT,peak.day,1629.8755661566288 +2040,12,CO2EMT,peak.peak,1011.6392222118714 +2040,12,CO2EMT,peak.evening,528.3103858426866 +2040,12,CO2EMT,summer.night,0.0 +2040,12,CO2EMT,summer.day,0.0 +2040,12,CO2EMT,summer.peak,0.0 2040,12,CO2EMT,summer.evening,0.0 -2040,12,GASNAT,autumn.night,-0.0 -2040,12,RSHEAT,autumn.night,0.0 -2040,12,CO2EMT,autumn.night,0.0 -2040,12,GASNAT,autumn.day,-0.0 -2040,12,RSHEAT,autumn.day,0.0 -2040,12,CO2EMT,autumn.day,0.0 -2040,12,GASNAT,autumn.peak,-25.527586489916985 -2040,12,RSHEAT,autumn.peak,22.19790129557999 -2040,12,CO2EMT,autumn.peak,1305.2254972294556 -2040,12,GASNAT,autumn.evening,-0.0 -2040,12,RSHEAT,autumn.evening,0.0 -2040,12,CO2EMT,autumn.evening,0.0 -2040,13,GASNAT,winter.night,-63.46430189619691 -2040,13,RSHEAT,winter.night,55.186349474953836 -2040,13,CO2EMT,winter.night,3244.929755952548 -2040,13,GASNAT,winter.day,-119.79166705 -2040,13,RSHEAT,winter.day,104.166667 -2040,13,CO2EMT,winter.day,6124.947936266501 -2040,13,GASNAT,winter.peak,-35.9375 -2040,13,RSHEAT,winter.peak,31.25 -2040,13,CO2EMT,winter.peak,1837.484375 -2040,13,GASNAT,winter.evening,-47.916667049999994 -2040,13,RSHEAT,winter.evening,41.666667 -2040,13,CO2EMT,winter.evening,2449.9791862664997 -2040,13,GASNAT,peak.night,-38.03354344086091 -2040,13,RSHEAT,peak.night,33.072646470313835 -2040,13,CO2EMT,peak.night,1944.6550761312185 -2040,13,GASNAT,peak.day,-119.79166705 -2040,13,RSHEAT,peak.day,104.166667 -2040,13,CO2EMT,peak.day,6124.947936266501 -2040,13,GASNAT,peak.peak,-35.9375 -2040,13,RSHEAT,peak.peak,31.25 -2040,13,CO2EMT,peak.peak,1837.484375 -2040,13,GASNAT,peak.evening,-41.33075578663693 -2040,13,RSHEAT,peak.evening,35.93978764055385 -2040,13,CO2EMT,peak.evening,2113.2415433707465 +2040,12,CO2EMT,autumn.night,343.4112291973823 +2040,12,CO2EMT,autumn.day,1233.7821340088512 +2040,12,CO2EMT,autumn.peak,785.677468057364 +2040,12,CO2EMT,autumn.evening,383.91569233353465 +2040,13,GASNAT,winter.night,-15.866075474049227 +2040,13,GASNAT,winter.day,-65.63768967497022 +2040,13,GASNAT,winter.peak,-33.743686055 +2040,13,GASNAT,winter.evening,-21.791646512088235 +2040,13,GASNAT,peak.night,-9.508385860215228 +2040,13,GASNAT,peak.day,-31.877089109263224 +2040,13,GASNAT,peak.peak,-19.785629223779996 +2040,13,GASNAT,peak.evening,-10.332688946659232 2040,13,GASNAT,summer.night,-0.0 -2040,13,RSHEAT,summer.night,0.0 -2040,13,CO2EMT,summer.night,0.0 2040,13,GASNAT,summer.day,-0.0 -2040,13,RSHEAT,summer.day,0.0 -2040,13,CO2EMT,summer.day,0.0 2040,13,GASNAT,summer.peak,-0.0 -2040,13,RSHEAT,summer.peak,0.0 -2040,13,CO2EMT,summer.peak,0.0 2040,13,GASNAT,summer.evening,-0.0 +2040,13,GASNAT,autumn.night,-6.716433193768477 +2040,13,GASNAT,autumn.day,-24.13029794658422 +2040,13,GASNAT,autumn.peak,-15.366271622479246 +2040,13,GASNAT,autumn.evening,-7.50861905600498 +2040,13,RSHEAT,winter.night,13.796587368738459 +2040,13,RSHEAT,winter.day,57.07625189127846 +2040,13,RSHEAT,winter.peak,29.3423357 +2040,13,RSHEAT,winter.evening,18.949257836598466 +2040,13,RSHEAT,peak.night,8.268161617578459 +2040,13,RSHEAT,peak.day,27.71920792109846 +2040,13,RSHEAT,peak.peak,17.2048949772 +2040,13,RSHEAT,peak.evening,8.984946910138463 +2040,13,RSHEAT,summer.night,0.0 +2040,13,RSHEAT,summer.day,0.0 +2040,13,RSHEAT,summer.peak,0.0 2040,13,RSHEAT,summer.evening,0.0 +2040,13,RSHEAT,autumn.night,5.840376690233459 +2040,13,RSHEAT,autumn.day,20.982867779638454 +2040,13,RSHEAT,autumn.peak,13.361975323894997 +2040,13,RSHEAT,autumn.evening,6.529233961743461 +2040,13,CO2EMT,winter.night,811.232438988137 +2040,13,CO2EMT,winter.day,3356.055073081228 +2040,13,CO2EMT,winter.peak,1725.3146679921501 +2040,13,CO2EMT,winter.evening,1114.2068861630717 +2040,13,CO2EMT,peak.night,486.1637690328046 +2040,13,CO2EMT,peak.day,1629.8755661566288 +2040,13,CO2EMT,peak.peak,1011.6392222118714 +2040,13,CO2EMT,peak.evening,528.3103858426866 +2040,13,CO2EMT,summer.night,0.0 +2040,13,CO2EMT,summer.day,0.0 +2040,13,CO2EMT,summer.peak,0.0 2040,13,CO2EMT,summer.evening,0.0 -2040,13,GASNAT,autumn.night,-26.86573277507391 -2040,13,RSHEAT,autumn.night,23.361506760933835 -2040,13,CO2EMT,autumn.night,1373.6449167895291 -2040,13,GASNAT,autumn.day,-96.52119178633689 -2040,13,RSHEAT,autumn.day,83.93147111855382 -2040,13,CO2EMT,autumn.day,4935.128536035405 -2040,13,GASNAT,autumn.peak,-35.9375 -2040,13,RSHEAT,autumn.peak,31.25 -2040,13,CO2EMT,autumn.peak,1837.484375 -2040,13,GASNAT,autumn.evening,-30.03447622401992 -2040,13,RSHEAT,autumn.evening,26.116935846973846 -2040,13,CO2EMT,autumn.evening,1535.6627693341386 +2040,13,CO2EMT,autumn.night,343.4112291973823 +2040,13,CO2EMT,autumn.day,1233.7821340088512 +2040,13,CO2EMT,autumn.peak,785.677468057364 +2040,13,CO2EMT,autumn.evening,383.91569233353465